mirror of
https://github.com/opencv/opencv.git
synced 2025-06-08 01:53:19 +08:00
Merge pull request #10700 from alalek:cpu_dispatch_axv512
* cmake: enable CPU dispatching for AVX512 (SKX) * cmake: update handling of unsupported flags/modes
This commit is contained in:
parent
fe4fbc2c3b
commit
73891d619a
@ -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…
Reference in New Issue
Block a user