Commit 56222f35 authored by Alexander Alekhin's avatar Alexander Alekhin

cmake: fix CPU_BASELINE_FINAL filling

- remove duplicates
- restore "always on" missing entries
- fix FP16 detection on MSVC
parent bf552fdb
...@@ -234,6 +234,7 @@ if(X86 OR X86_64) ...@@ -234,6 +234,7 @@ if(X86 OR X86_64)
elseif(MSVC) elseif(MSVC)
ocv_update(CPU_AVX2_FLAGS_ON "/arch:AVX2") ocv_update(CPU_AVX2_FLAGS_ON "/arch:AVX2")
ocv_update(CPU_AVX_FLAGS_ON "/arch:AVX") ocv_update(CPU_AVX_FLAGS_ON "/arch:AVX")
ocv_update(CPU_FP16_FLAGS_ON "/arch:AVX")
if(NOT MSVC64) if(NOT MSVC64)
# 64-bit MSVC compiler uses SSE/SSE2 by default # 64-bit MSVC compiler uses SSE/SSE2 by default
ocv_update(CPU_SSE_FLAGS_ON "/arch:SSE") ocv_update(CPU_SSE_FLAGS_ON "/arch:SSE")
...@@ -422,6 +423,9 @@ foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS}) ...@@ -422,6 +423,9 @@ foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})
if(__is_disabled) if(__is_disabled)
set(__is_from_baseline 0) set(__is_from_baseline 0)
else() else()
if(CPU_${OPT}_SUPPORTED AND CPU_BASELINE_DETECT)
list(APPEND CPU_BASELINE_FINAL ${OPT})
endif()
ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE_REQUIRE}) ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE_REQUIRE})
if(NOT __is_from_baseline) if(NOT __is_from_baseline)
ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE}) ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE})
...@@ -441,7 +445,9 @@ foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS}) ...@@ -441,7 +445,9 @@ foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})
if(";${CPU_DISPATCH};" MATCHES ";${OPT};" AND NOT __is_from_baseline) if(";${CPU_DISPATCH};" MATCHES ";${OPT};" AND NOT __is_from_baseline)
list(APPEND CPU_DISPATCH_FINAL ${OPT}) list(APPEND CPU_DISPATCH_FINAL ${OPT})
elseif(__is_from_baseline) elseif(__is_from_baseline)
list(APPEND CPU_BASELINE_FINAL ${OPT}) if(NOT ";${CPU_BASELINE_FINAL};" MATCHES ";${OPT};")
list(APPEND CPU_BASELINE_FINAL ${OPT})
endif()
ocv_append_optimization_flag(CPU_BASELINE_FLAGS ${OPT}) ocv_append_optimization_flag(CPU_BASELINE_FLAGS ${OPT})
endif() endif()
endif() endif()
......
#include <stdio.h> #include <stdio.h>
#if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700) || (defined __INTEL_COMPILER && defined __AVX__) #if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700 && defined __AVX__) || (defined __INTEL_COMPILER && defined __AVX__)
#include <immintrin.h> #include <immintrin.h>
int test() int test()
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment