Merge pull request #10700 from alalek:cpu_dispatch_axv512

* cmake: enable CPU dispatching for AVX512 (SKX)

* cmake: update handling of unsupported flags/modes
pull/10706/head
Alexander Alekhin 7 years ago committed by GitHub
parent fe4fbc2c3b
commit 73891d619a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 34
      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)

Loading…
Cancel
Save