diff options
author | Schrodinger ZHU Yifan <yifanzhu@rochester.edu> | 2024-01-27 14:32:22 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-27 14:32:22 -0500 |
commit | 517063e0f3d3387babc500b112aaa90b5c42da38 (patch) | |
tree | 77c727d8cd764027ae15b644d4f5f59f2d596b63 /libc/cmake/modules | |
parent | e976053a63c251e9b65733ed3574e5c3de62084c (diff) | |
download | llvm-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.cmake | 11 | ||||
-rw-r--r-- | libc/cmake/modules/LLVMLibCObjectRules.cmake | 18 |
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) |