diff --git a/lib/x86/adler32_impl.h b/lib/x86/adler32_impl.h index cc118c76..f1102b5e 100644 --- a/lib/x86/adler32_impl.h +++ b/lib/x86/adler32_impl.h @@ -72,6 +72,7 @@ #endif #if (GCC_PREREQ(8, 1) || CLANG_PREREQ(6, 0, 10000000) || MSVC_PREREQ(1920)) && \ + !(CLANG_PREREQ(18, 0, 18000000) && !CLANG_PREREQ(19, 0, 19000000)) && \ !defined(LIBDEFLATE_ASSEMBLER_DOES_NOT_SUPPORT_AVX512VNNI) /* * AVX512VNNI implementation using 256-bit vectors. This is very similar to the @@ -82,7 +83,7 @@ */ # define adler32_x86_avx512_vl256_vnni adler32_x86_avx512_vl256_vnni # define SUFFIX _avx512_vl256_vnni -# define ATTRIBUTES _target_attribute("avx512bw,avx512vl,avx512vnni" NO_EVEX512) +# define ATTRIBUTES _target_attribute("avx512bw,avx512vl,avx512vnni") # define VL 32 # define USE_VNNI 1 # define USE_AVX512 1 @@ -94,7 +95,7 @@ */ # define adler32_x86_avx512_vl512_vnni adler32_x86_avx512_vl512_vnni # define SUFFIX _avx512_vl512_vnni -# define ATTRIBUTES _target_attribute("avx512bw,avx512vnni" EVEX512) +# define ATTRIBUTES _target_attribute("avx512bw,avx512vnni") # define VL 64 # define USE_VNNI 1 # define USE_AVX512 1 diff --git a/lib/x86/cpu_features.h b/lib/x86/cpu_features.h index 032896a7..cb225b98 100644 --- a/lib/x86/cpu_features.h +++ b/lib/x86/cpu_features.h @@ -165,15 +165,6 @@ static inline u32 get_x86_cpu_features(void) { return 0; } # define HAVE_AVXVNNI(features) ((features) & X86_CPU_FEATURE_AVXVNNI) #endif -#if ((CLANG_PREREQ(18, 0, 18000000) && !CLANG_PREREQ(19, 0, 19000000))) \ - && !defined(__EVEX512__) /* avoid subtracting the evex512 feature */ -# define EVEX512 ",evex512" /* needed to override potential -mno-evex512 */ -# define NO_EVEX512 ",no-evex512" -#else -# define EVEX512 "" -# define NO_EVEX512 "" -#endif - #endif /* ARCH_X86_32 || ARCH_X86_64 */ #endif /* LIB_X86_CPU_FEATURES_H */ diff --git a/lib/x86/crc32_impl.h b/lib/x86/crc32_impl.h index 47551c5f..4fbdef7e 100644 --- a/lib/x86/crc32_impl.h +++ b/lib/x86/crc32_impl.h @@ -92,6 +92,7 @@ static const u8 MAYBE_UNUSED shift_tab[48] = { #endif #if (GCC_PREREQ(10, 1) || CLANG_PREREQ(6, 0, 10000000) || MSVC_PREREQ(1920)) && \ + !(CLANG_PREREQ(18, 0, 18000000) && !CLANG_PREREQ(19, 0, 19000000)) && \ !defined(LIBDEFLATE_ASSEMBLER_DOES_NOT_SUPPORT_VPCLMULQDQ) /* * VPCLMULQDQ/AVX512 implementation using 256-bit vectors. This is very similar @@ -104,7 +105,7 @@ static const u8 MAYBE_UNUSED shift_tab[48] = { */ # define crc32_x86_vpclmulqdq_avx512_vl256 crc32_x86_vpclmulqdq_avx512_vl256 # define SUFFIX _vpclmulqdq_avx512_vl256 -# define ATTRIBUTES _target_attribute("vpclmulqdq,pclmul,avx512bw,avx512vl" NO_EVEX512) +# define ATTRIBUTES _target_attribute("vpclmulqdq,pclmul,avx512bw,avx512vl") # define VL 32 # define USE_AVX512 1 # include "crc32_pclmul_template.h" @@ -117,7 +118,7 @@ static const u8 MAYBE_UNUSED shift_tab[48] = { */ # define crc32_x86_vpclmulqdq_avx512_vl512 crc32_x86_vpclmulqdq_avx512_vl512 # define SUFFIX _vpclmulqdq_avx512_vl512 -# define ATTRIBUTES _target_attribute("vpclmulqdq,pclmul,avx512bw,avx512vl" EVEX512) +# define ATTRIBUTES _target_attribute("vpclmulqdq,pclmul,avx512bw,avx512vl") # define VL 64 # define USE_AVX512 1 # include "crc32_pclmul_template.h"