mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
merge multiple features specified at once
* follow the comment
This commit is contained in:
parent
e9f35610a5
commit
bc12e4fe55
@ -353,7 +353,7 @@ elseif(ARM OR AARCH64)
|
||||
ocv_update(CPU_NEON_DOTPROD_IMPLIES "NEON")
|
||||
ocv_update(CPU_NEON_FP16_FLAGS_ON "-march=armv8.2-a+fp16")
|
||||
ocv_update(CPU_NEON_FP16_IMPLIES "NEON")
|
||||
ocv_update(CPU_NEON_BF16_FLAGS_ON "-march=armv8.2-a+fp16+bf16")
|
||||
ocv_update(CPU_NEON_BF16_FLAGS_ON "-march=armv8.2-a+bf16")
|
||||
ocv_update(CPU_NEON_BF16_IMPLIES "NEON")
|
||||
set(CPU_BASELINE "NEON;FP16" CACHE STRING "${HELP_CPU_BASELINE}")
|
||||
set(CPU_DISPATCH "NEON_FP16;NEON_BF16;NEON_DOTPROD" CACHE STRING "${HELP_CPU_DISPATCH}")
|
||||
@ -480,6 +480,23 @@ macro(ocv_check_compiler_optimization OPT)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(ocv_cpu_aarch64_baseline_merge_feature_options FEATURE_NAME_LIST FLAG_STRING COMMON_OPTION)
|
||||
unset(_POSTFIX)
|
||||
# Check each feature option
|
||||
foreach(OPT IN LISTS ${FEATURE_NAME_LIST})
|
||||
string(FIND "${${FLAG_STRING}}" "${CPU_${OPT}_FLAGS_ON}" OPT_FOUND)
|
||||
if(NOT ${OPT_FOUND} EQUAL -1)
|
||||
string(REPLACE "${COMMON_OPTION}" "" TRAILING_PART "${CPU_${OPT}_FLAGS_ON}")
|
||||
string(APPEND _POSTFIX "${TRAILING_PART}")
|
||||
string(REPLACE " ${CPU_${OPT}_FLAGS_ON}" "" ${FLAG_STRING} ${${FLAG_STRING}})
|
||||
endif()
|
||||
endforeach()
|
||||
# If more than one option found, merge them
|
||||
if(NOT "x${_POSTFIX}" STREQUAL "x")
|
||||
set(${FLAG_STRING} "${${FLAG_STRING}} ${COMMON_OPTION}${_POSTFIX}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})
|
||||
set(CPU_${OPT}_USAGE_COUNT 0 CACHE INTERNAL "")
|
||||
if("${CPU_${OPT}_FLAGS_ON}" STREQUAL "disabled")
|
||||
@ -573,6 +590,13 @@ foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(AARCH64)
|
||||
# Define the list of NEON options to check
|
||||
set(NEON_OPTIONS_LIST NEON_DOTPROD NEON_FP16 NEON_BF16)
|
||||
set(BASE_ARCHITECTURE "-march=armv8.2-a")
|
||||
ocv_cpu_aarch64_baseline_merge_feature_options(NEON_OPTIONS_LIST CPU_BASELINE_FLAGS ${BASE_ARCHITECTURE})
|
||||
endif()
|
||||
|
||||
foreach(OPT ${CPU_BASELINE_REQUIRE})
|
||||
if(NOT ";${CPU_BASELINE_FINAL};" MATCHES ";${OPT};")
|
||||
message(SEND_ERROR "Required baseline optimization is not supported: ${OPT} (CPU_BASELINE_REQUIRE=${CPU_BASELINE_REQUIRE})")
|
||||
|
Loading…
Reference in New Issue
Block a user