aboutsummaryrefslogtreecommitdiff
path: root/libc/cmake/modules
diff options
context:
space:
mode:
authorSchrodinger ZHU Yifan <yifanzhu@rochester.edu>2024-01-27 14:32:22 -0500
committerGitHub <noreply@github.com>2024-01-27 14:32:22 -0500
commit517063e0f3d3387babc500b112aaa90b5c42da38 (patch)
tree77c727d8cd764027ae15b644d4f5f59f2d596b63 /libc/cmake/modules
parente976053a63c251e9b65733ed3574e5c3de62084c (diff)
downloadllvm-517063e0f3d3387babc500b112aaa90b5c42da38.zip
llvm-517063e0f3d3387babc500b112aaa90b5c42da38.tar.gz
llvm-517063e0f3d3387babc500b112aaa90b5c42da38.tar.bz2
[libc] change PREFER_GENERIC to EXPLICIT_SIMD_OPT (#79486)
fixes #79474.
Diffstat (limited to 'libc/cmake/modules')
-rw-r--r--libc/cmake/modules/LLVMLibCFlagRules.cmake11
-rw-r--r--libc/cmake/modules/LLVMLibCObjectRules.cmake18
2 files changed, 17 insertions, 12 deletions
diff --git a/libc/cmake/modules/LLVMLibCFlagRules.cmake b/libc/cmake/modules/LLVMLibCFlagRules.cmake
index 7d663f0..9a48d38 100644
--- a/libc/cmake/modules/LLVMLibCFlagRules.cmake
+++ b/libc/cmake/modules/LLVMLibCFlagRules.cmake
@@ -132,9 +132,8 @@ endfunction(get_fq_dep_list_without_flag)
# Special flags
set(FMA_OPT_FLAG "FMA_OPT")
set(ROUND_OPT_FLAG "ROUND_OPT")
-# This flag will define macros that gated away vectorization code such that
-# one can always test the fallback generic code path.
-set(PREFER_GENERIC_FLAG "PREFER_GENERIC")
+# This flag controls whether we use explicit SIMD instructions or not.
+set(EXPLICIT_SIMD_OPT_FLAG "EXPLICIT_SIMD_OPT")
# Skip FMA_OPT flag for targets that don't support fma.
if(NOT((LIBC_TARGET_ARCHITECTURE_IS_X86 AND (LIBC_CPU_FEATURES MATCHES "FMA")) OR
@@ -142,6 +141,12 @@ if(NOT((LIBC_TARGET_ARCHITECTURE_IS_X86 AND (LIBC_CPU_FEATURES MATCHES "FMA")) O
set(SKIP_FLAG_EXPANSION_FMA_OPT TRUE)
endif()
+# Skip EXPLICIT_SIMD_OPT flag for targets that don't support SSE2.
+# Note: one may want to revisit it if they want to control other explicit SIMD
+if(NOT(LIBC_TARGET_ARCHITECTURE_IS_X86 AND (LIBC_CPU_FEATURES MATCHES "SSE2")))
+ set(SKIP_FLAG_EXPANSION_EXPLICIT_SIMD_OPT TRUE)
+endif()
+
# Skip ROUND_OPT flag for targets that don't support SSE 4.2.
if(NOT(LIBC_TARGET_ARCHITECTURE_IS_X86 AND (LIBC_CPU_FEATURES MATCHES "SSE4_2")))
set(SKIP_FLAG_EXPANSION_ROUND_OPT TRUE)
diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake
index 667d754..c5c9f7c 100644
--- a/libc/cmake/modules/LLVMLibCObjectRules.cmake
+++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake
@@ -18,12 +18,12 @@ function(_get_common_compile_options output_var flags)
set(ADD_SSE4_2_FLAG TRUE)
endif()
- list(FIND flags ${PREFER_GENERIC_FLAG} prefer_generic)
- if(${prefer_generic} LESS 0)
- list(FIND flags "${PREFER_GENERIC_FLAG}__ONLY" prefer_generic)
+ list(FIND flags ${EXPLICIT_SIMD_OPT_FLAG} explicit_simd)
+ if(${explicit_simd} LESS 0)
+ list(FIND flags "${EXPLICIT_SIMD_OPT_FLAG}__ONLY" explicit_simd)
endif()
- if(${prefer_generic} GREATER -1)
- set(ADD_PREFER_GENERIC_FLAG TRUE)
+ if(${explicit_simd} GREATER -1)
+ set(ADD_EXPLICIT_SIMD_OPT_FLAG TRUE)
endif()
set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT})
@@ -73,8 +73,8 @@ function(_get_common_compile_options output_var flags)
if(ADD_SSE4_2_FLAG)
list(APPEND compile_options "-msse4.2")
endif()
- if(ADD_PREFER_GENERIC_FLAG)
- list(APPEND compile_options "-D__LIBC_PREFER_GENERIC")
+ if(ADD_EXPLICIT_SIMD_OPT_FLAG)
+ list(APPEND compile_options "-D__LIBC_EXPLICIT_SIMD_OPT")
endif()
elseif(MSVC)
list(APPEND compile_options "/EHs-c-")
@@ -82,8 +82,8 @@ function(_get_common_compile_options output_var flags)
if(ADD_FMA_FLAG)
list(APPEND compile_options "/arch:AVX2")
endif()
- if(ADD_PREFER_GENERIC_FLAG)
- list(APPEND compile_options "/D__LIBC_PREFER_GENERIC")
+ if(ADD_EXPLICIT_SIMD_OPT_FLAG)
+ list(APPEND compile_options "/D__LIBC_EXPLICIT_SIMD_OPT")
endif()
endif()
if (LIBC_TARGET_ARCHITECTURE_IS_GPU)