Merge pull request #2836 from s98felix:2.4

This commit is contained in:
Vadim Pisarevsky
2014-07-25 12:59:40 +00:00
14 changed files with 1231 additions and 317 deletions

View File

@@ -140,7 +140,11 @@ if(CMAKE_COMPILER_IS_GNUCXX)
# SSE3 and further should be disabled under MingW because it generates compiler errors
if(NOT MINGW)
if(ENABLE_AVX)
add_extra_compiler_option(-mavx)
ocv_check_flag_support(CXX "-mavx" _varname)
endif()
if(ENABLE_AVX2)
ocv_check_flag_support(CXX "-mavx2" _varname)
endif()
# GCC depresses SSEx instructions when -mavx is used. Instead, it generates new AVX instructions or AVX equivalence for all SSEx instructions when needed.
@@ -216,10 +220,6 @@ if(MSVC)
set(OPENCV_EXTRA_FLAGS_RELEASE "${OPENCV_EXTRA_FLAGS_RELEASE} /Zi")
endif()
if(ENABLE_AVX AND NOT MSVC_VERSION LESS 1600)
set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:AVX")
endif()
if(ENABLE_SSE4_1 AND CV_ICC AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:SSE4.1")
endif()
@@ -238,7 +238,7 @@ if(MSVC)
endif()
endif()
if(ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1 OR ENABLE_AVX)
if(ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1 OR ENABLE_AVX OR ENABLE_AVX2)
set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /Oi")
endif()

View File

@@ -526,6 +526,28 @@ macro(ocv_glob_module_sources)
list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp")
endif()
if(ENABLE_AVX)
file(GLOB avx_srcs "src/avx/*.cpp")
foreach(src ${avx_srcs})
if(CMAKE_COMPILER_IS_GNUCXX)
set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS -mavx)
elseif(MSVC AND NOT MSVC_VERSION LESS 1600)
set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS /arch:AVX)
endif()
endforeach()
endif()
if(ENABLE_AVX2)
file(GLOB avx2_srcs "src/avx2/*.cpp")
foreach(src ${avx2_srcs})
if(CMAKE_COMPILER_IS_GNUCXX)
set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS -mavx2)
elseif(MSVC AND NOT MSVC_VERSION LESS 1800)
set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS /arch:AVX2)
endif()
endforeach()
endif()
source_group("Include" FILES ${lib_hdrs})
source_group("Include\\detail" FILES ${lib_hdrs_detail})