diff options
Diffstat (limited to 'intern/cycles/CMakeLists.txt')
-rw-r--r-- | intern/cycles/CMakeLists.txt | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt index 06a6120f41a..fc80a6ef126 100644 --- a/intern/cycles/CMakeLists.txt +++ b/intern/cycles/CMakeLists.txt @@ -18,6 +18,8 @@ if(NOT WITH_CPU_SSE) set(CXX_HAS_SSE FALSE) elseif(WIN32 AND MSVC) set(CXX_HAS_SSE TRUE) + set(CXX_HAS_AVX TRUE) + set(CXX_HAS_AVX2 TRUE) # /arch:AVX for VC2012 and above if(NOT MSVC_VERSION LESS 1700) @@ -49,21 +51,33 @@ elseif(WIN32 AND MSVC) set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Ox") elseif(CMAKE_COMPILER_IS_GNUCC) check_cxx_compiler_flag(-msse CXX_HAS_SSE) + check_cxx_compiler_flag(-mavx CXX_HAS_AVX) + check_cxx_compiler_flag(-mavx2 CXX_HAS_AVX2) if(CXX_HAS_SSE) set(CYCLES_SSE2_KERNEL_FLAGS "-ffast-math -msse -msse2 -mfpmath=sse") set(CYCLES_SSE3_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -mfpmath=sse") set(CYCLES_SSE41_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -msse4.1 -mfpmath=sse") + endif() + if(CXX_HAS_AVX) set(CYCLES_AVX_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -msse4.1 -mavx -mfpmath=sse") + endif() + if(CXX_HAS_AVX2) set(CYCLES_AVX2_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mfma -mlzcnt -mbmi -mbmi2 -mfpmath=sse") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math") elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") check_cxx_compiler_flag(-msse CXX_HAS_SSE) + check_cxx_compiler_flag(-mavx CXX_HAS_AVX) + check_cxx_compiler_flag(-mavx2 CXX_HAS_AVX2) if(CXX_HAS_SSE) set(CYCLES_SSE2_KERNEL_FLAGS "-ffast-math -msse -msse2") set(CYCLES_SSE3_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3") set(CYCLES_SSE41_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -msse4.1") + endif() + if(CXX_HAS_AVX) set(CYCLES_AVX_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -msse4.1 -mavx") + endif() + if(CXX_HAS_AVX2) set(CYCLES_AVX2_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mfma -mlzcnt -mbmi -mbmi2") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math") @@ -74,11 +88,17 @@ if(CXX_HAS_SSE) -DWITH_KERNEL_SSE2 -DWITH_KERNEL_SSE3 -DWITH_KERNEL_SSE41 - -DWITH_KERNEL_AVX - -DWITH_KERNEL_AVX2 ) endif() +if(CXX_HAS_AVX) + add_definitions(-DWITH_KERNEL_AVX) +endif() + +if(CXX_HAS_AVX2) + add_definitions(-DWITH_KERNEL_AVX2) +endif() + if(WITH_CYCLES_OSL) if(WIN32 AND MSVC) set(RTTI_DISABLE_FLAGS "/GR- -DBOOST_NO_RTTI -DBOOST_NO_TYPEID") |