diff --git a/lib/x86simdsort.cpp b/lib/x86simdsort.cpp index 091d717a..6879657a 100644 --- a/lib/x86simdsort.cpp +++ b/lib/x86simdsort.cpp @@ -7,7 +7,9 @@ static int check_cpu_feature_support(std::string_view cpufeature) { - if (cpufeature == "avx512_spr") + const char* disable_avx512 = std::getenv("XSS_DISABLE_AVX512"); + + if ((cpufeature == "avx512_spr") && (!disable_avx512)) #ifdef __FLT16_MAX__ return __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512fp16") @@ -15,12 +17,12 @@ static int check_cpu_feature_support(std::string_view cpufeature) #else return 0; #endif - else if (cpufeature == "avx512_icl") + else if ((cpufeature == "avx512_icl") && (!disable_avx512)) return __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512vbmi2") && __builtin_cpu_supports("avx512bw") && __builtin_cpu_supports("avx512vl"); - else if (cpufeature == "avx512_skx") + else if ((cpufeature == "avx512_skx") && (!disable_avx512)) return __builtin_cpu_supports("avx512f") && __builtin_cpu_supports("avx512dq") && __builtin_cpu_supports("avx512vl");