[Bf-blender-cvs] [f39143bc2ed] master: CMake: reduce Neon related output on Intel platforms

Brecht Van Lommel noreply at git.blender.org
Mon Mar 1 19:44:11 CET 2021


Commit: f39143bc2ed4eb33bb85a3d923cb457384141bf8
Author: Brecht Van Lommel
Date:   Mon Mar 1 19:15:29 2021 +0100
Branches: master
https://developer.blender.org/rBf39143bc2ed4eb33bb85a3d923cb457384141bf8

CMake: reduce Neon related output on Intel platforms

* Only try to find sse2neon if Neon detected
* Only run Neon support test once

===================================================================

M	CMakeLists.txt
M	build_files/cmake/macros.cmake
M	build_files/cmake/platform/platform_apple.cmake
M	build_files/cmake/platform/platform_unix.cmake

===================================================================

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()



More information about the Bf-blender-cvs mailing list