Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2021-03-01 21:15:29 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-03-01 21:43:54 +0300
commitf39143bc2ed4eb33bb85a3d923cb457384141bf8 (patch)
treefba90399a3c9fe57ed00ce048ba63f45ea65838a
parent77bc5510a90bbfcc7adaed6a0e4c4768cb236239 (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.txt20
-rw-r--r--build_files/cmake/macros.cmake12
-rw-r--r--build_files/cmake/platform/platform_apple.cmake2
-rw-r--r--build_files/cmake/platform/platform_unix.cmake2
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()