From e830482cd54668e5b8634f32f3dc11b743eab890 Mon Sep 17 00:00:00 2001 From: Pavel P Date: Mon, 20 Jan 2025 12:35:15 +0200 Subject: [PATCH 1/2] Remove redundant BMI2 check `ZSTD_ENABLE_ASM_X86_64_BMI2` already implies BMI2 by its name, and by the way it's defined --- lib/decompress/huf_decompress.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/decompress/huf_decompress.c b/lib/decompress/huf_decompress.c index f85dd0bee..ae292e030 100644 --- a/lib/decompress/huf_decompress.c +++ b/lib/decompress/huf_decompress.c @@ -913,7 +913,7 @@ static size_t HUF_decompress4X1_usingDTable_internal(void* dst, size_t dstSize, } #endif -#if ZSTD_ENABLE_ASM_X86_64_BMI2 && defined(__BMI2__) +#if ZSTD_ENABLE_ASM_X86_64_BMI2 if (!(flags & HUF_flags_disableAsm)) { loopFn = HUF_decompress4X1_usingDTable_internal_fast_asm_loop; } @@ -1735,7 +1735,7 @@ static size_t HUF_decompress4X2_usingDTable_internal(void* dst, size_t dstSize, } #endif -#if ZSTD_ENABLE_ASM_X86_64_BMI2 && defined(__BMI2__) +#if ZSTD_ENABLE_ASM_X86_64_BMI2 if (!(flags & HUF_flags_disableAsm)) { loopFn = HUF_decompress4X2_usingDTable_internal_fast_asm_loop; } From 5cf64a99292360044bca70b3ad393d78add4541c Mon Sep 17 00:00:00 2001 From: Pavel P Date: Fri, 31 Jan 2025 19:55:18 +0200 Subject: [PATCH 2/2] Check STATIC_BMI2 instead of __BMI2__ --- lib/common/portability_macros.h | 4 ++-- lib/decompress/huf_decompress.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/common/portability_macros.h b/lib/common/portability_macros.h index 860734141..1e339b49a 100644 --- a/lib/common/portability_macros.h +++ b/lib/common/portability_macros.h @@ -95,7 +95,7 @@ || (defined(__GNUC__) \ && (__GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)))) \ && (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)) \ - && !defined(__BMI2__) + && !STATIC_BMI2 # define DYNAMIC_BMI2 1 # else # define DYNAMIC_BMI2 0 @@ -143,7 +143,7 @@ #if !defined(ZSTD_DISABLE_ASM) && \ ZSTD_ASM_SUPPORTED && \ defined(__x86_64__) && \ - (DYNAMIC_BMI2 || defined(__BMI2__)) + (DYNAMIC_BMI2 || STATIC_BMI2) # define ZSTD_ENABLE_ASM_X86_64_BMI2 1 #else # define ZSTD_ENABLE_ASM_X86_64_BMI2 0 diff --git a/lib/decompress/huf_decompress.c b/lib/decompress/huf_decompress.c index ae292e030..b2dc8e070 100644 --- a/lib/decompress/huf_decompress.c +++ b/lib/decompress/huf_decompress.c @@ -913,7 +913,7 @@ static size_t HUF_decompress4X1_usingDTable_internal(void* dst, size_t dstSize, } #endif -#if ZSTD_ENABLE_ASM_X86_64_BMI2 +#if ZSTD_ENABLE_ASM_X86_64_BMI2 && STATIC_BMI2 if (!(flags & HUF_flags_disableAsm)) { loopFn = HUF_decompress4X1_usingDTable_internal_fast_asm_loop; } @@ -1735,7 +1735,7 @@ static size_t HUF_decompress4X2_usingDTable_internal(void* dst, size_t dstSize, } #endif -#if ZSTD_ENABLE_ASM_X86_64_BMI2 +#if ZSTD_ENABLE_ASM_X86_64_BMI2 && STATIC_BMI2 if (!(flags & HUF_flags_disableAsm)) { loopFn = HUF_decompress4X2_usingDTable_internal_fast_asm_loop; }