CFLAGS="${CFLAGS} -DUNALIGNED_OK"
SFLAGS="${SFLAGS} -DUNALIGNED_OK"
- CFLAGS="${CFLAGS} -DADLER32_UNROLL_LESS"
- SFLAGS="${SFLAGS} -DADLER32_UNROLL_LESS"
+ CFLAGS="${CFLAGS} -DADLER32_UNROLL_LESS -DCRC32_UNROLL_LESS"
+ SFLAGS="${SFLAGS} -DADLER32_UNROLL_LESS -DCRC32_UNROLL_LESS"
;;
i386 | i486 | i586 | i686)
OBJC="${OBJC} x86.o"
CFLAGS="${CFLAGS} -DUNALIGNED_OK"
SFLAGS="${SFLAGS} -DUNALIGNED_OK"
- CFLAGS="${CFLAGS} -DADLER32_UNROLL_LESS"
- SFLAGS="${SFLAGS} -DADLER32_UNROLL_LESS"
+ CFLAGS="${CFLAGS} -DADLER32_UNROLL_LESS -DCRC32_UNROLL_LESS"
+ SFLAGS="${SFLAGS} -DADLER32_UNROLL_LESS -DCRC32_UNROLL_LESS"
;;
esac
/* ========================================================================= */
#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
+#define DO4 DO1; DO1; DO1; DO1
/* ========================================================================= */
unsigned long ZEXPORT crc32(crc, buf, len)
}
#endif /* BYFOUR */
crc = crc ^ 0xffffffffUL;
+
+#ifdef CRC32_UNROLL_LESS
+ while (len >= 4) {
+ DO4;
+ len -= 4;
+ }
+#else
while (len >= 8) {
DO8;
len -= 8;
}
+#endif
+
if (len) do {
DO1;
} while (--len);
}
buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
+
+#ifndef CRC32_UNROLL_LESS
while (len >= 32) {
DOLIT32;
len -= 32;
}
+#endif
+
while (len >= 4) {
DOLIT4;
len -= 4;