From be628c705594a36f6aa649613ddf6c86039192a1 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 19 Mar 2020 21:45:12 +0100 Subject: [SHARED] crc32: Don't skip table lookup if PCLMUL is unavailable --- src/shared/crc32.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/shared') diff --git a/src/shared/crc32.c b/src/shared/crc32.c index 098615f..c3e566f 100644 --- a/src/shared/crc32.c +++ b/src/shared/crc32.c @@ -682,19 +682,20 @@ uint32_t crc32(crc, buf, len) c = crc32pclmul(c, buf, len & ~PCLMUL_ALIGN_MASK); buf += len & ~PCLMUL_ALIGN_MASK; len &= PCLMUL_ALIGN_MASK; - } -#else - const uint32_t *buf4 = (const uint32_t *)(const void *)buf; - while (len >= 32) { - DOLIT32; - len -= 32; - } - while (len >= 4) { - DOLIT4; - len -= 4; - } - buf = (const uint8_t *)buf4; + } else #endif + do { + const uint32_t *buf4 = (const uint32_t *)(const void *)buf; + while (len >= 32) { + DOLIT32; + len -= 32; + } + while (len >= 4) { + DOLIT4; + len -= 4; + } + buf = (const uint8_t *)buf4; + } while (0); if (len) do { c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); -- cgit v1.2.3-55-g7522