mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 00:56:04 +00:00
[libc] change PREFER_GENERIC to EXPLICIT_SIMD_OPT (#79486)
fixes #79474.
This commit is contained in:
parent
e976053a63
commit
517063e0f3
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -3,7 +3,7 @@ add_header_library(
|
||||
HDRS
|
||||
bitmask.h
|
||||
FLAGS
|
||||
PREFER_GENERIC
|
||||
EXPLICIT_SIMD_OPT
|
||||
DEPENDS
|
||||
libc.src.__support.common
|
||||
libc.src.__support.CPP.bit
|
||||
|
@ -83,7 +83,7 @@ template <class BitMask> struct IteratableBitMaskAdaptor : public BitMask {
|
||||
} // namespace internal
|
||||
} // namespace LIBC_NAMESPACE
|
||||
|
||||
#if defined(LIBC_TARGET_CPU_HAS_SSE2) && !defined(__LIBC_PREFER_GENERIC)
|
||||
#if defined(LIBC_TARGET_CPU_HAS_SSE2) && defined(__LIBC_EXPLICIT_SIMD_OPT)
|
||||
#include "sse2/bitmask_impl.inc"
|
||||
#else
|
||||
#include "generic/bitmask_impl.inc"
|
||||
|
Loading…
x
Reference in New Issue
Block a user