[llvm] 23519d3 - [Support/BLAKE3] Re-enable building with the simd-optimized implementations
Argyrios Kyrtzidis via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 29 00:18:33 PDT 2022
Author: Argyrios Kyrtzidis
Date: 2022-03-29T00:18:24-07:00
New Revision: 23519d3000b4703f17e639534a38b4f221fa4f63
URL: https://github.com/llvm/llvm-project/commit/23519d3000b4703f17e639534a38b4f221fa4f63
DIFF: https://github.com/llvm/llvm-project/commit/23519d3000b4703f17e639534a38b4f221fa4f63.diff
LOG: [Support/BLAKE3] Re-enable building with the simd-optimized implementations
Added:
Modified:
llvm/lib/Support/BLAKE3/CMakeLists.txt
Removed:
################################################################################
diff --git a/llvm/lib/Support/BLAKE3/CMakeLists.txt b/llvm/lib/Support/BLAKE3/CMakeLists.txt
index 718dd6421648d..615665becf41e 100644
--- a/llvm/lib/Support/BLAKE3/CMakeLists.txt
+++ b/llvm/lib/Support/BLAKE3/CMakeLists.txt
@@ -4,6 +4,21 @@ set(LLVM_BLAKE3_FILES
blake3_portable.c
)
+set(CAN_USE_ASSEMBLER TRUE)
+# Some LLVM builders set "CC=ccache /path/to/clang" as environment variable,
+# which confuses CMake thinking the assembler to use is the 'ccache' binary.
+# These builders need to also set "ASM=/path/to/clang" in environment, but until
+# this happens check for this case and disable building the assembly files.
+get_filename_component(ASM_BINARY ${CMAKE_ASM_COMPILER} NAME)
+if (ASM_BINARY STREQUAL "ccache")
+ message(WARNING "CMake is set to use '${CMAKE_ASM_COMPILER}' as assembler "
+ "which is likely due to having 'CC=ccache /path/to/clang' in the environment. "
+ "Building the BLAKE3 SIMD-optimized assembly files is disabled, set "
+ "'ASM=/path/to/clang' as environment variable and do a clean re-configure "
+ "to correct this.")
+ set(CAN_USE_ASSEMBLER FALSE)
+endif()
+
# The BLAKE3 team recommends using the assembly versions, from the README:
#
# "For each of the x86 SIMD instruction sets, four versions are available:
@@ -11,13 +26,18 @@ set(LLVM_BLAKE3_FILES
# version using C intrinsics. The assembly versions are generally
# preferred. They perform better, they perform more consistently across
#
diff erent compilers, and they build more quickly."
-# FIXME: Figure out what is wrong with the builders when using the assembly files and neon.
+
if (MSVC)
- enable_language(ASM_MASM)
+ check_symbol_exists(_M_X64 "" IS_X64)
+ check_symbol_exists(_M_ARM64 "" IS_ARM64)
+else()
+ check_symbol_exists(__x86_64__ "" IS_X64)
+ check_symbol_exists(__aarch64__ "" IS_ARM64)
endif()
-if (FALSE)#CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")
+if (IS_X64 AND CAN_USE_ASSEMBLER)
if (MSVC)
+ enable_language(ASM_MASM)
list(APPEND LLVM_BLAKE3_FILES
blake3_sse2_x86-64_windows_msvc.asm
blake3_sse41_x86-64_windows_msvc.asm
@@ -41,14 +61,15 @@ if (FALSE)#CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")
endif()
endif()
-if (FALSE)#CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch)")
+if (IS_ARM64)
list(APPEND LLVM_BLAKE3_FILES
blake3_neon.c
)
endif()
-# FIXME: Figure out what is wrong with the builders when using the assembly files.
-add_definitions(-DBLAKE3_NO_AVX512 -DBLAKE3_NO_AVX2 -DBLAKE3_NO_SSE41 -DBLAKE3_NO_SSE2 -DBLAKE3_USE_NEON=0)
+if (IS_X64 AND NOT CAN_USE_ASSEMBLER)
+ add_definitions(-DBLAKE3_NO_AVX512 -DBLAKE3_NO_AVX2 -DBLAKE3_NO_SSE41 -DBLAKE3_NO_SSE2)
+endif()
add_library(LLVMSupportBlake3 OBJECT EXCLUDE_FROM_ALL ${LLVM_BLAKE3_FILES})
llvm_update_compile_flags(LLVMSupportBlake3)
More information about the llvm-commits
mailing list