diff --git a/CMakeLists.txt b/CMakeLists.txt index cd18945f4be..f5cd60b86dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,7 +133,7 @@ if(CMAKE_COMPILER_IS_MSVC) add_compile_options(/bigobj) if("${CMAKE_CXX_FLAGS}" STREQUAL "${CMAKE_CXX_FLAGS_DEFAULT}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise /wd4800 /wd4521 /wd4251 /wd4275 /wd4305 /wd4355 ${SSE_FLAGS_STR}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise /wd4800 /wd4521 /wd4251 /wd4275 /wd4305 /wd4355 ${SSE_FLAGS_STR} ${AVX_FLAGS}") # Add extra code generation/link optimizations if(CMAKE_MSVC_CODE_LINK_OPTIMIZATION AND (NOT BUILD_CUDA) AND (NOT BUILD_GPU)) diff --git a/cmake/pcl_find_avx.cmake b/cmake/pcl_find_avx.cmake index 245090d2b73..5b30c419d28 100644 --- a/cmake/pcl_find_avx.cmake +++ b/cmake/pcl_find_avx.cmake @@ -1,40 +1,39 @@ ############################################################################### # Check for the presence of AVX and figure out the flags to use for it. macro(PCL_CHECK_FOR_AVX) - set(AVX_FLAGS) - set(AVX_DEFINITIONS) + set(AVX_FLAGS) + set(AVX_DEFINITIONS) - include(CheckCXXSourceRuns) + include(CheckCXXSourceRuns) - check_cxx_source_runs(" - #include - int main() - { - __m256 a; - a = _mm256_set1_ps(0); - return 0; - }" - HAVE_AVX) - - check_cxx_source_runs(" - #include - int main() - { - __m256i a = {0}; - a = _mm256_abs_epi16(a); - return 0; - }" - HAVE_AVX2) - - if(MSVC) - if(HAVE_AVX) - set(AVX_DEFINITIONS "${AVX_DEFINITIONS} -D__AVX__") - add_definitions(/arch:AVX) - endif() - if(HAVE_AVX2) - set(AVX_DEFINITIONS "${AVX_DEFINITIONS} -D__AVX2__") - add_definitions(/arch:AVX2) - endif() + check_cxx_source_runs(" + #include + int main() + { + __m256 a; + a = _mm256_set1_ps(0); + return 0; + }" + HAVE_AVX) + + check_cxx_source_runs(" + #include + int main() + { + __m256i a = {0}; + a = _mm256_abs_epi16(a); + return 0; + }" + HAVE_AVX2) + + if(MSVC) + if(HAVE_AVX) + string(APPEND AVX_DEFINITIONS " -D__AVX__") + set(AVX_FLAGS "/arch:AVX") endif() - + if(HAVE_AVX2) + string(APPEND AVX_DEFINITIONS " -D__AVX2__") + set(AVX_FLAGS "/arch:AVX2") + endif() + endif() endmacro()