summaryrefslogtreecommitdiff
path: root/zutil.h
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2018-12-11 01:11:38 -0800
committerMark Adler <madler@alumni.caltech.edu>2018-12-26 12:26:52 -0800
commitf8719f5ae5acdc31d3794ddfea8ac963359de41e (patch)
tree70327ff8a4953abd605665ecd458a3c4b1a66443 /zutil.h
parent41d86c73b21191a3fa9ea5f476fc9f1fc5e4f8b3 (diff)
downloadzlib-f8719f5ae5acdc31d3794ddfea8ac963359de41e.tar.gz
Speed up software CRC-32 computation by a factor of 1.5 to 3.
Use the interleaved method of Kadatch and Jenkins in order to make use of pipelined instructions through multiple ALUs in a single core. This also speeds up and simplifies the combination of CRCs, and updates the functions to pre-calculate and use an operator for CRC combination.
Diffstat (limited to 'zutil.h')
-rw-r--r--zutil.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/zutil.h b/zutil.h
index 60a0bca..14277bc 100644
--- a/zutil.h
+++ b/zutil.h
@@ -42,6 +42,17 @@ typedef unsigned short ush;
typedef ush FAR ushf;
typedef unsigned long ulg;
+#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
+# include <limits.h>
+# if (ULONG_MAX == 0xffffffffffffffffULL)
+# define Z_U8 unsigned long
+# elif (ULLONG_MAX == 0xffffffffffffffffULL)
+# define Z_U8 unsigned long long
+# elif (UINT_MAX == 0xffffffffffffffffULL)
+# define Z_U8 unsigned
+# endif
+#endif
+
extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */