aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik S. Gaßmann <[email protected]>2024-07-02 13:10:39 +0200
committerJack O'Connor <[email protected]>2024-07-09 13:20:22 -0400
commit330af75f5ba7fcb73b9333d1e2e52017a4430654 (patch)
tree4e3cf25b3ce687b52f700f74dc44dcca9bf04b95
parent73d0ffacc964116405d4f7d5e499cf1f8cbc92e9 (diff)
build(CMake): Fix SIMD type detection
Refs: #402
-rw-r--r--c/CMakeLists.txt17
1 files changed, 16 insertions, 1 deletions
diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt
index dc57699..0ea7eb8 100644
--- a/c/CMakeLists.txt
+++ b/c/CMakeLists.txt
@@ -72,7 +72,22 @@ endif()
mark_as_advanced(BLAKE3_CFLAGS_SSE2 BLAKE3_CFLAGS_SSE4.1 BLAKE3_CFLAGS_AVX2 BLAKE3_CFLAGS_AVX512 BLAKE3_CFLAGS_NEON)
mark_as_advanced(BLAKE3_AMD64_ASM_SOURCES)
-if(CMAKE_SYSTEM_PROCESSOR IN_LIST BLAKE3_AMD64_NAMES)
+message(STATUS "BLAKE3 SIMD configuration: ${CMAKE_C_COMPILER_ARCHITECTURE_ID}")
+if(MSVC AND DEFINED CMAKE_C_COMPILER_ARCHITECTURE_ID)
+ if(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "[Xx]86")
+ set(BLAKE3_SIMD_TYPE "x86-intrinsics" CACHE STRING "the SIMD acceleration type to use")
+
+ elseif(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "[Xx]64")
+ set(BLAKE3_SIMD_TYPE "amd64-asm" CACHE STRING "the SIMD acceleration type to use")
+
+ elseif(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "[Aa][Rr][Mm]64")
+ set(BLAKE3_SIMD_TYPE "neon-intrinsics" CACHE STRING "the SIMD acceleration type to use")
+
+ else()
+ set(BLAKE3_SIMD_TYPE "none" CACHE STRING "the SIMD acceleration type to use")
+ endif()
+
+elseif(CMAKE_SYSTEM_PROCESSOR IN_LIST BLAKE3_AMD64_NAMES)
set(BLAKE3_SIMD_TYPE "amd64-asm" CACHE STRING "the SIMD acceleration type to use")
elseif(CMAKE_SYSTEM_PROCESSOR IN_LIST BLAKE3_X86_NAMES