diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-03-01 21:15:29 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-03-01 21:43:54 +0300 |
commit | f39143bc2ed4eb33bb85a3d923cb457384141bf8 (patch) | |
tree | fba90399a3c9fe57ed00ce048ba63f45ea65838a | |
parent | 77bc5510a90bbfcc7adaed6a0e4c4768cb236239 (diff) |
CMake: reduce Neon related output on Intel platforms
* Only try to find sse2neon if Neon detected
* Only run Neon support test once
-rw-r--r-- | CMakeLists.txt | 20 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 12 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_apple.cmake | 2 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 2 |
4 files changed, 22 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 24201ae6869..ddfce0a48d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -901,6 +901,18 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Release") endif() endif() +# Test SIMD support, before platform includes to determine if sse2neon is needed. +if(WITH_CPU_SIMD) + set(COMPILER_SSE_FLAG) + set(COMPILER_SSE2_FLAG) + + # Test Neon first since macOS Arm can compile and run x86-64 SSE binaries. + TEST_NEON_SUPPORT() + if(NOT SUPPORT_NEON_BUILD) + TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG) + endif() +endif() + # ---------------------------------------------------------------------------- # Main Platform Checks # @@ -956,16 +968,11 @@ if(WITH_INTERNATIONAL) endif() endif() -# See TEST_SSE_SUPPORT() and TEST_NEON_SUPPORT() for how these are defined. +# Enable SIMD support if detected by TEST_SSE_SUPPORT() or TEST_NEON_SUPPORT(). # # This is done globally, so that all modules can use it if available, and # because these are used in headers used by many modules. if(WITH_CPU_SIMD) - set(COMPILER_SSE_FLAG) - set(COMPILER_SSE2_FLAG) - - # Test Neon first since macOS Arm can compile and run x86-64 SSE binaries. - TEST_NEON_SUPPORT() if(SUPPORT_NEON_BUILD) # Neon if(SSE2NEON_FOUND) @@ -974,7 +981,6 @@ if(WITH_CPU_SIMD) endif() else() # SSE - TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG) if(SUPPORT_SSE_BUILD) string(PREPEND PLATFORM_CFLAGS "${COMPILER_SSE_FLAG} ") add_definitions(-D__SSE__ -D__MMX__) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index b8f92a10761..cad1d86b75a 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -682,11 +682,13 @@ macro(TEST_SSE_SUPPORT endmacro() macro(TEST_NEON_SUPPORT) - include(CheckCXXSourceCompiles) - check_cxx_source_compiles( - "#include <arm_neon.h> - int main() {return vaddvq_s32(vdupq_n_s32(1));}" - SUPPORT_NEON_BUILD) + if(NOT DEFINED SUPPORT_NEON_BUILD) + include(CheckCXXSourceCompiles) + check_cxx_source_compiles( + "#include <arm_neon.h> + int main() {return vaddvq_s32(vdupq_n_s32(1));}" + SUPPORT_NEON_BUILD) + endif() endmacro() # Only print message if running CMake first time diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 12a7a6c504f..be9261798f4 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -324,7 +324,7 @@ if(WITH_NANOVDB) find_package(NanoVDB) endif() -if(WITH_CPU_SIMD) +if(WITH_CPU_SIMD AND SUPPORT_NEON_BUILD) find_package(sse2neon) endif() diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index ef73ef40ac3..47c788c7eb6 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -285,7 +285,7 @@ if(WITH_NANOVDB) endif() endif() -if(WITH_CPU_SIMD) +if(WITH_CPU_SIMD AND SUPPORT_NEON_BUILD) find_package_wrapper(sse2neon) endif() |