From 7d45cf5a1dbe9d34f9fb18e2f485efda83019493 Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Sat, 11 Feb 2012 00:26:38 -0800 Subject: Use optimized byte swap operations for Microsoft and GNU [Snyder]. --- crc32.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'crc32.c') diff --git a/crc32.c b/crc32.c index ddf0025..95225ef 100644 --- a/crc32.c +++ b/crc32.c @@ -59,8 +59,6 @@ /* Definitions for doing the crc four data bytes at a time. */ #ifdef BYFOUR typedef u4 crc_table_t; -# define REV(w) ((((w)>>24)&0xff)+(((w)>>8)&0xff00)+ \ - (((w)&0xff00)<<8)+(((w)&0xff)<<24)) local unsigned long crc32_little OF((unsigned long, const unsigned char FAR *, unsigned)); local unsigned long crc32_big OF((unsigned long, @@ -145,11 +143,11 @@ local void make_crc_table() and then the byte reversal of those as well as the first table */ for (n = 0; n < 256; n++) { c = crc_table[0][n]; - crc_table[4][n] = REV(c); + crc_table[4][n] = ZSWAP32(c); for (k = 1; k < 4; k++) { c = crc_table[0][c & 0xff] ^ (c >> 8); crc_table[k][n] = c; - crc_table[k + 4][n] = REV(c); + crc_table[k + 4][n] = ZSWAP32(c); } } #endif /* BYFOUR */ @@ -317,7 +315,7 @@ local unsigned long crc32_big(crc, buf, len) register u4 c; register const u4 FAR *buf4; - c = REV((u4)crc); + c = ZSWAP32((u4)crc); c = ~c; while (len && ((ptrdiff_t)buf & 3)) { c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); @@ -341,7 +339,7 @@ local unsigned long crc32_big(crc, buf, len) c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); } while (--len); c = ~c; - return (unsigned long)(REV(c)); + return (unsigned long)(ZSWAP32(c)); } #endif /* BYFOUR */ -- cgit v1.2.3-55-g6feb