From 5d20a612051fac3ca6d99abe3cd7e0e3370e5b67 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 10 Apr 2024 23:20:02 +0300 Subject: [PATCH] liblzma: CRC: Simplify table omission macros A macro is useful to prevent a single #if directive from getting too ugly but only one macro is needed for all archs. (cherry picked from commit 6286c1900c2d2ca33d9b1b397122c7bcdb9a4d59) --- src/liblzma/check/crc32_table.c | 10 ++++------ src/liblzma/check/crc64_table.c | 4 ++-- src/liblzma/check/crc_common.h | 5 +++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/liblzma/check/crc32_table.c b/src/liblzma/check/crc32_table.c index a78a629e..c141cefe 100644 --- a/src/liblzma/check/crc32_table.c +++ b/src/liblzma/check/crc32_table.c @@ -17,18 +17,16 @@ #if defined(HAVE_USABLE_CLMUL) && ((defined(__x86_64__) && defined(__SSSE3__) \ && defined(__SSE4_1__) && defined(__PCLMUL__)) \ || (defined(__e2k__) && __iset__ >= 6)) -# define X86_CLMUL_NO_TABLE 1 -#endif +# define NO_CRC32_TABLE -#if defined(HAVE_ARM64_CRC32) \ +#elif defined(HAVE_ARM64_CRC32) \ && !defined(WORDS_BIGENDIAN) \ && defined(__ARM_FEATURE_CRC32) -# define ARM64_CRC32_NO_TABLE 1 +# define NO_CRC32_TABLE #endif -#if !defined(HAVE_ENCODERS) && (defined(X86_CLMUL_NO_TABLE) \ - || defined(ARM64_CRC32_NO_TABLE)) +#if !defined(HAVE_ENCODERS) && defined(NO_CRC32_TABLE) // No table needed. Use a typedef to avoid an empty translation unit. typedef void lzma_crc32_dummy; diff --git a/src/liblzma/check/crc64_table.c b/src/liblzma/check/crc64_table.c index 6dee387a..78e42759 100644 --- a/src/liblzma/check/crc64_table.c +++ b/src/liblzma/check/crc64_table.c @@ -17,11 +17,11 @@ #if defined(HAVE_USABLE_CLMUL) && ((defined(__x86_64__) && defined(__SSSE3__) \ && defined(__SSE4_1__) && defined(__PCLMUL__)) \ || (defined(__e2k__) && __iset__ >= 6)) -# define X86_CLMUL_NO_TABLE 1 +# define NO_CRC64_TABLE #endif -#ifdef X86_CLMUL_NO_TABLE +#ifdef NO_CRC64_TABLE // No table needed. Use a typedef to avoid an empty translation unit. typedef void lzma_crc64_dummy; diff --git a/src/liblzma/check/crc_common.h b/src/liblzma/check/crc_common.h index a700f03c..63a7b5ce 100644 --- a/src/liblzma/check/crc_common.h +++ b/src/liblzma/check/crc_common.h @@ -74,7 +74,7 @@ // endian machine. // // NOTE: Keep this and the next check in sync with the macro -// ARM64_CRC32_NO_TABLE in crc32_table.c +// NO_CRC32_TABLE in crc32_table.c #if defined(HAVE_ARM64_CRC32) && !defined(WORDS_BIGENDIAN) // Allow ARM64 CRC32 instruction without a runtime check if // __ARM_FEATURE_CRC32 is defined. GCC and Clang only define this if the @@ -94,7 +94,8 @@ // generic version can be omitted. Note that this doesn't work with MSVC // as I don't know how to detect the features here. // -// NOTE: Keep this in sync with the CLMUL_NO_TABLE macro in crc32_table.c. +// NOTE: Keep this in sync with the NO_CRC32_TABLE macro in crc32_table.c +// and NO_CRC64_TABLE in crc64_table.c. # if (defined(__SSSE3__) && defined(__SSE4_1__) && defined(__PCLMUL__)) \ || (defined(__e2k__) && __iset__ >= 6) # define CRC32_ARCH_OPTIMIZED 1