diff --git a/src/gallium/tests/unit/translate_test.c b/src/gallium/tests/unit/translate_test.c index 823aa684698..717b7532044 100644 --- a/src/gallium/tests/unit/translate_test.c +++ b/src/gallium/tests/unit/translate_test.c @@ -79,7 +79,7 @@ int main(int argc, char** argv) else { const char *translate_options[] = { - "nosse", "sse", "sse2", "sse3", "sse4.1", + "nosse", "sse", "sse2", "sse3", "ssse3", "sse4.1", "avx", NULL }; const char **option; @@ -99,7 +99,7 @@ int main(int argc, char** argv) if (!create_fn) { - printf("Usage: ./translate_test [default|generic|x86|nosse|sse|sse2|sse3|sse4.1]\n"); + printf("Usage: ./translate_test [default|generic|x86|nosse|sse|sse2|sse3|ssse3|sse4.1|avx]\n"); return 2; } diff --git a/src/util/u_cpu_detect.c b/src/util/u_cpu_detect.c index 9fc1e648dbd..9282a731ff4 100644 --- a/src/util/u_cpu_detect.c +++ b/src/util/u_cpu_detect.c @@ -615,9 +615,13 @@ void check_cpu_caps_override(void) } else if (!strcmp(override_cpu_caps, "sse2")) { util_cpu_caps.has_sse3 = 0; } else if (!strcmp(override_cpu_caps, "sse3")) { + util_cpu_caps.has_ssse3 = 0; + } else if (!strcmp(override_cpu_caps, "ssse3")) { util_cpu_caps.has_sse4_1 = 0; } else if (!strcmp(override_cpu_caps, "sse4.1")) { util_cpu_caps.has_avx = 0; + } else if (!strcmp(override_cpu_caps, "avx")) { + util_cpu_caps.has_avx512f = 0; } #endif /* PIPE_ARCH_X86 || PIPE_ARCH_X86_64 */ } @@ -631,6 +635,8 @@ void check_cpu_caps_override(void) } if (!util_cpu_caps.has_sse3) { util_cpu_caps.has_ssse3 = 0; + } + if (!util_cpu_caps.has_ssse3) { util_cpu_caps.has_sse4_1 = 0; } if (!util_cpu_caps.has_sse4_1) { @@ -641,9 +647,10 @@ void check_cpu_caps_override(void) util_cpu_caps.has_avx2 = 0; util_cpu_caps.has_f16c = 0; util_cpu_caps.has_fma = 0; - + util_cpu_caps.has_avx512f = 0; + } + if (!util_cpu_caps.has_avx512f) { /* avx512 are cleared */ - util_cpu_caps.has_avx512f = 0; util_cpu_caps.has_avx512dq = 0; util_cpu_caps.has_avx512ifma = 0; util_cpu_caps.has_avx512pf = 0;