diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2012-03-03 00:03:30 -0800 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2012-03-03 00:03:30 -0800 |
commit | 2547c6c81fbf751e22ab7dcafdc1d1b50c8562a3 (patch) | |
tree | 8ea39dcfcd42f1b01af99f616db7ea34b30f5d87 /zutil.h | |
parent | 513dfcc00ec6c027429504a217a8cb7cb58dbbbf (diff) | |
download | zlib-2547c6c81fbf751e22ab7dcafdc1d1b50c8562a3.tar.gz zlib-2547c6c81fbf751e22ab7dcafdc1d1b50c8562a3.tar.bz2 zlib-2547c6c81fbf751e22ab7dcafdc1d1b50c8562a3.zip |
Don't use library or built-in byte swaps.
Using optimized byte swaps reduced portability for no real benefit,
since they are in parts of the code that represent a tiny fraction
of the execution time. So a simple definition of a byte swap is
now used.
Diffstat (limited to 'zutil.h')
-rw-r--r-- | zutil.h | 15 |
1 files changed, 2 insertions, 13 deletions
@@ -246,18 +246,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ | |||
246 | #define TRY_FREE(s, p) {if (p) ZFREE(s, p);} | 246 | #define TRY_FREE(s, p) {if (p) ZFREE(s, p);} |
247 | 247 | ||
248 | /* Reverse the bytes in a 32-bit value */ | 248 | /* Reverse the bytes in a 32-bit value */ |
249 | #ifndef Z_SOLO | 249 | #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ |
250 | # if defined(_WIN32) && (_MSC_VER >= 1300) && (defined(_M_IX86) || defined(_M_X64)) | 250 | (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) |
251 | # include <stdlib.h> | ||
252 | # pragma intrinsic(_byteswap_ulong) | ||
253 | # define ZSWAP32(q) _byteswap_ulong(q) | ||
254 | # elif defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) | ||
255 | # define ZSWAP32(q) __builtin_bswap32(q) | ||
256 | # endif | ||
257 | #endif | ||
258 | #ifndef ZSWAP32 | ||
259 | # define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ | ||
260 | (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) | ||
261 | #endif | ||
262 | 251 | ||
263 | #endif /* ZUTIL_H */ | 252 | #endif /* ZUTIL_H */ |