diff options
author | Jia Tan <jiat0218@gmail.com> | 2023-10-14 10:23:03 +0800 |
---|---|---|
committer | Jia Tan <jiat0218@gmail.com> | 2023-10-18 20:41:11 +0800 |
commit | a3ebc2c516b09616638060806c841bd4bcf7bce3 (patch) | |
tree | baf6aec64d7b48ed3c0386a54a25cca0f242b59f | |
parent | liblzma: Added crc32_clmul to crc32_fast.c. (diff) | |
download | xz-a3ebc2c516b09616638060806c841bd4bcf7bce3.tar.xz |
liblzma: Define CRC_USE_IFUNC in crc_common.h.
When ifunc is supported, we can define a simpler macro instead of
repeating the more complex check in both crc32_fast.c and crc64_fast.c.
-rw-r--r-- | src/liblzma/check/crc32_fast.c | 3 | ||||
-rw-r--r-- | src/liblzma/check/crc64_fast.c | 3 | ||||
-rw-r--r-- | src/liblzma/check/crc_common.h | 5 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/liblzma/check/crc32_fast.c b/src/liblzma/check/crc32_fast.c index 5229a4bd..3ac9b6d7 100644 --- a/src/liblzma/check/crc32_fast.c +++ b/src/liblzma/check/crc32_fast.c @@ -272,8 +272,7 @@ crc32_dispatch(const uint8_t *buf, size_t size, uint32_t crc) #endif -#if defined(CRC_GENERIC) && defined(CRC_CLMUL) \ - && defined(HAVE_FUNC_ATTRIBUTE_IFUNC) +#ifdef CRC_USE_IFUNC extern LZMA_API(uint32_t) lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc) __attribute__((__ifunc__("crc32_resolve"))); diff --git a/src/liblzma/check/crc64_fast.c b/src/liblzma/check/crc64_fast.c index 88ba7d33..79b662a4 100644 --- a/src/liblzma/check/crc64_fast.c +++ b/src/liblzma/check/crc64_fast.c @@ -274,8 +274,7 @@ crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc) #endif -#if defined(CRC_GENERIC) && defined(CRC_CLMUL) \ - && defined(HAVE_FUNC_ATTRIBUTE_IFUNC) +#ifdef CRC_USE_IFUNC extern LZMA_API(uint64_t) lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc) __attribute__((__ifunc__("crc64_resolve"))); diff --git a/src/liblzma/check/crc_common.h b/src/liblzma/check/crc_common.h index 867e53d9..55fdd55e 100644 --- a/src/liblzma/check/crc_common.h +++ b/src/liblzma/check/crc_common.h @@ -34,6 +34,7 @@ #undef CRC_GENERIC #undef CRC_CLMUL +#undef CRC_USE_IFUNC #undef CRC_USE_GENERIC_FOR_SMALL_INPUTS // If CLMUL cannot be used then only the generic slice-by-four is built. @@ -54,6 +55,10 @@ # define CRC_GENERIC 1 # define CRC_CLMUL 1 +# ifdef HAVE_FUNC_ATTRIBUTE_IFUNC +# define CRC_USE_IFUNC 1 +# endif + /* // The generic code is much faster with 1-8-byte inputs and has // similar performance up to 16 bytes at least in microbenchmarks |