diff --git a/cmake/OpenCVCompilerOptimizations.cmake b/cmake/OpenCVCompilerOptimizations.cmake index 8aace0eb0c..81f85c045f 100644 --- a/cmake/OpenCVCompilerOptimizations.cmake +++ b/cmake/OpenCVCompilerOptimizations.cmake @@ -227,6 +227,9 @@ if(X86 OR X86_64) # -mavx512f -mavx512pf -mavx512er -mavx512cd -mavx512vl -mavx512bw -mavx512dq -mavx512ifma -mavx512vbmi ocv_update(CPU_AVX_512F_FLAGS_ON "-mavx512f") ocv_update(CPU_AVX512_SKX_FLAGS_ON "-mavx512f -mavx512cd -mavx512vl -mavx512bw -mavx512dq") + else() + ocv_update(CPU_AVX_512F_SUPPORTED OFF) + ocv_update(CPU_AVX512_SKX_SUPPORTED OFF) endif() elseif(MSVC) ocv_update(CPU_AVX2_FLAGS_ON "/arch:AVX2") @@ -247,7 +250,11 @@ if(X86 OR X86_64) endif() if(NOT DEFINED CPU_DISPATCH) - set(CPU_DISPATCH "SSE4_1;SSE4_2;AVX;FP16;AVX2" CACHE STRING "${HELP_CPU_DISPATCH}") + if(X86_64) + set(CPU_DISPATCH "SSE4_1;SSE4_2;AVX;FP16;AVX2;AVX512_SKX" CACHE STRING "${HELP_CPU_DISPATCH}") + else() + set(CPU_DISPATCH "SSE4_1;SSE4_2;AVX;FP16" CACHE STRING "${HELP_CPU_DISPATCH}") + endif() endif() if(NOT DEFINED CPU_BASELINE) @@ -354,16 +361,27 @@ endmacro() foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS}) set(CPU_${OPT}_USAGE_COUNT 0 CACHE INTERNAL "") - if(DEFINED CPU_${OPT}_GROUP) + if("${CPU_${OPT}_FLAGS_ON}" STREQUAL "disabled") + set(CPU_${OPT}_SUPPORTED OFF) + elseif(DEFINED CPU_${OPT}_GROUP) if(NOT DEFINED CPU_${OPT}_IMPLIES) set(CPU_${OPT}_IMPLIES "${CPU_${OPT}_GROUP}") endif() - if(NOT DEFINED CPU_${OPT}_FLAGS_ON) - set(__flags "") - foreach(OPT2 ${CPU_${OPT}_GROUP}) - set(__flags "${__flags} ${CPU_${OPT2}_FLAGS_ON}") - endforeach() - set(CPU_${OPT}_FLAGS_ON "${__flags}") + set(__disabled 0) + set(__flags "") + foreach(OPT2 ${CPU_${OPT}_GROUP}) + if("${CPU_${OPT2}_FLAGS_ON}" STREQUAL "disabled" OR (DEFINED CPU_${OPT2}_SUPPORTED AND NOT CPU_${OPT}_SUPPORTED)) + set(__disabled 1) + endif() + set(__flags "${__flags} ${CPU_${OPT2}_FLAGS_ON}") + string(STRIP "${__flags}" __flags) + endforeach() + if(__disabled) + set(CPU_${OPT}_SUPPORTED OFF) + else() + if(NOT DEFINED CPU_${OPT}_FLAGS_ON) + set(CPU_${OPT}_FLAGS_ON "${__flags}") + endif() endif() endif() if(NOT DEFINED CPU_${OPT}_FORCE)