LLVM: lib/Analysis/TargetLibraryInfo.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define TLI_DEFINE_STRING
#define TLI_DEFINE_SIG
#define TLI_DEFINE_ACCELERATE_VECFUNCS
#define TLI_DEFINE_DARWIN_LIBSYSTEM_M_VECFUNCS
#define TLI_DEFINE_LIBMVEC_X86_VECFUNCS
#define TLI_DEFINE_MASSV_VECFUNCS
#define TLI_DEFINE_SVML_VECFUNCS
#define TLI_DEFINE_SLEEFGNUABI_VF2_VECFUNCS
#define TLI_DEFINE_VECFUNC(SCAL, VEC, VF, VABI_PREFIX) {SCAL, VEC, VF, /* MASK = */ false, VABI_PREFIX},
#define TLI_DEFINE_SLEEFGNUABI_VF4_VECFUNCS
#define TLI_DEFINE_VECFUNC(SCAL, VEC, VF, VABI_PREFIX) {SCAL, VEC, VF, /* MASK = */ false, VABI_PREFIX},
#define TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS
#define TLI_DEFINE_VECFUNC(SCAL, VEC, VF, MASK, VABI_PREFIX) {SCAL, VEC, VF, MASK, VABI_PREFIX},
#define TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS_RISCV
#define TLI_DEFINE_VECFUNC(SCAL, VEC, VF, MASK, VABI_PREFIX) {SCAL, VEC, VF, MASK, VABI_PREFIX},
#define TLI_DEFINE_ARMPL_VECFUNCS
#define TLI_DEFINE_VECFUNC(SCAL, VEC, VF, MASK, VABI_PREFIX) {SCAL, VEC, VF, MASK, VABI_PREFIX},
#define TLI_DEFINE_AMDLIBM_VECFUNCS
#define TLI_DEFINE_VECFUNC(SCAL, VEC, VF, MASK, VABI_PREFIX) {SCAL, VEC, VF, MASK, VABI_PREFIX},
Enumerations
enum FuncArgTypeID : char { Void = 0 , Bool, Int16, Int32, Int, IntPlus, Long, IntX, Int64, LLong, SizeT, SSizeT, Flt, Dbl, LDbl, Floating, Ptr, Struct, Ellip, Same }
Functions
static bool hasSinCosPiStret (const Triple &T)
static bool hasBcmp (const Triple &TT)
static bool isCallingConvCCompatible (CallingConv::ID CC, StringRef TT, FunctionType *FuncTy)
static void initializeBase (TargetLibraryInfoImpl &TLI, const Triple &T)
static void initializeLibCalls (TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringLiteral > StandardNames)
Initialize the set of available library functions based on the specified target triple.
static void initialize (TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringLiteral > StandardNames)
Initialize the set of available library functions based on the specified target triple.
static StringRef sanitizeFunctionName (StringRef funcName)
static DenseMap< StringRef, LibFunc > buildIndexMap (ArrayRef< StringLiteral > StandardNames)
static bool matchType (FuncArgTypeID ArgTy, const Type *Ty, unsigned IntBits, unsigned SizeTBits)
static bool isValidProtoForSizeReturningNew (const FunctionType &FTy, LibFunc F, const Module &M, int SizeTSizeBits)
static bool compareByScalarFnName (const VecDesc &LHS, const VecDesc &RHS)
static bool compareByVectorFnName (const VecDesc &LHS, const VecDesc &RHS)
static bool compareWithScalarFnName (const VecDesc &LHS, StringRef S)
Variables
static cl::opt< TargetLibraryInfoImpl::VectorLibrary > ClVectorLibrary ("vector-library", cl::Hidden, cl::desc("Vector functions library"), cl::init(TargetLibraryInfoImpl::NoLibrary), cl::values(clEnumValN(TargetLibraryInfoImpl::NoLibrary, "none", "No vector functions library"), clEnumValN(TargetLibraryInfoImpl::Accelerate, "Accelerate", "Accelerate framework"), clEnumValN(TargetLibraryInfoImpl::DarwinLibSystemM, "Darwin_libsystem_m", "Darwin libsystem_m"), clEnumValN(TargetLibraryInfoImpl::LIBMVEC_X86, "LIBMVEC-X86", "GLIBC Vector Math library"), clEnumValN(TargetLibraryInfoImpl::MASSV, "MASSV", "IBM MASS vector library"), clEnumValN(TargetLibraryInfoImpl::SVML, "SVML", "Intel SVML library"), clEnumValN(TargetLibraryInfoImpl::SLEEFGNUABI, "sleefgnuabi", "SIMD Library for Evaluating Elementary Functions"), clEnumValN(TargetLibraryInfoImpl::ArmPL, "ArmPL", "Arm Performance Libraries"), clEnumValN(TargetLibraryInfoImpl::AMDLIBM, "AMDLIBM", "AMD vector math library")))
static const FuncProtoTy Signatures []
static const VecDesc VecFuncs_Accelerate []
static const VecDesc VecFuncs_DarwinLibSystemM []
static const VecDesc VecFuncs_LIBMVEC_X86 []
static const VecDesc VecFuncs_MASSV []
static const VecDesc VecFuncs_SVML []
static const VecDesc VecFuncs_SLEEFGNUABI_VF2 []
static const VecDesc VecFuncs_SLEEFGNUABI_VF4 []
static const VecDesc VecFuncs_SLEEFGNUABI_VFScalable []
static const VecDesc VecFuncs_SLEEFGNUABI_VFScalableRISCV []
static const VecDesc VecFuncs_ArmPL []
const VecDesc VecFuncs_AMDLIBM []

TLI_DEFINE_ACCELERATE_VECFUNCS

#define TLI_DEFINE_ACCELERATE_VECFUNCS

TLI_DEFINE_AMDLIBM_VECFUNCS

#define TLI_DEFINE_AMDLIBM_VECFUNCS

TLI_DEFINE_ARMPL_VECFUNCS

#define TLI_DEFINE_ARMPL_VECFUNCS

TLI_DEFINE_DARWIN_LIBSYSTEM_M_VECFUNCS

#define TLI_DEFINE_DARWIN_LIBSYSTEM_M_VECFUNCS

TLI_DEFINE_LIBMVEC_X86_VECFUNCS

#define TLI_DEFINE_LIBMVEC_X86_VECFUNCS

TLI_DEFINE_MASSV_VECFUNCS

#define TLI_DEFINE_MASSV_VECFUNCS

TLI_DEFINE_SIG

TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS

#define TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS

TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS_RISCV

#define TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS_RISCV

TLI_DEFINE_SLEEFGNUABI_VF2_VECFUNCS

#define TLI_DEFINE_SLEEFGNUABI_VF2_VECFUNCS

TLI_DEFINE_SLEEFGNUABI_VF4_VECFUNCS

#define TLI_DEFINE_SLEEFGNUABI_VF4_VECFUNCS

TLI_DEFINE_STRING

#define TLI_DEFINE_STRING

TLI_DEFINE_SVML_VECFUNCS

#define TLI_DEFINE_SVML_VECFUNCS

TLI_DEFINE_VECFUNC [1/6]

| #define TLI_DEFINE_VECFUNC | ( | | SCAL, | | ---------------------------- | ------------------------------------ | | ----- | | | VEC, | | | | | | VF, | | | | | | MASK, | | | | | | VABI_PREFIX | | | | | ) | {SCAL, VEC, VF, MASK, VABI_PREFIX}, | | |

TLI_DEFINE_VECFUNC [2/6]

| #define TLI_DEFINE_VECFUNC | ( | | SCAL, | | ---------------------------- | ------------------------------------ | | ----- | | | VEC, | | | | | | VF, | | | | | | MASK, | | | | | | VABI_PREFIX | | | | | ) | {SCAL, VEC, VF, MASK, VABI_PREFIX}, | | |

TLI_DEFINE_VECFUNC [3/6]

| #define TLI_DEFINE_VECFUNC | ( | | SCAL, | | ---------------------------- | ------------------------------------ | | ----- | | | VEC, | | | | | | VF, | | | | | | MASK, | | | | | | VABI_PREFIX | | | | | ) | {SCAL, VEC, VF, MASK, VABI_PREFIX}, | | |

TLI_DEFINE_VECFUNC [4/6]

| #define TLI_DEFINE_VECFUNC | ( | | SCAL, | | ---------------------------- | ------------------------------------ | | ----- | | | VEC, | | | | | | VF, | | | | | | MASK, | | | | | | VABI_PREFIX | | | | | ) | {SCAL, VEC, VF, MASK, VABI_PREFIX}, | | |

TLI_DEFINE_VECFUNC [5/6]

| #define TLI_DEFINE_VECFUNC | ( | | SCAL, | | ---------------------------- | ---------------------------------------------------- | | ----- | | | VEC, | | | | | | VF, | | | | | | VABI_PREFIX | | | | | ) | {SCAL, VEC, VF, /* MASK = */ false, VABI_PREFIX}, | | |

TLI_DEFINE_VECFUNC [6/6]

| #define TLI_DEFINE_VECFUNC | ( | | SCAL, | | ---------------------------- | ---------------------------------------------------- | | ----- | | | VEC, | | | | | | VF, | | | | | | VABI_PREFIX | | | | | ) | {SCAL, VEC, VF, /* MASK = */ false, VABI_PREFIX}, | | |

FuncProtoTy

FuncArgTypeID

Enumerator
Void
Bool
Int16
Int32
Int
IntPlus
Long
IntX
Int64
LLong
SizeT
SSizeT
Flt
Dbl
LDbl
Floating
Ptr
Struct
Ellip
Same

Definition at line 60 of file TargetLibraryInfo.cpp.

buildIndexMap()

compareByScalarFnName()

compareByVectorFnName()

compareWithScalarFnName()

hasBcmp()

hasSinCosPiStret()

initialize()

initializeBase()

initializeLibCalls()

Initialize the set of available library functions based on the specified target triple.

This should be carefully written so that a missing target triple gets a sane set of defaults.

Definition at line 184 of file TargetLibraryInfo.cpp.

References llvm::Triple::aarch64, llvm::TargetLibraryInfoImpl::addVectorizableFunctionsFromVecLib(), llvm::Triple::arm, ClVectorLibrary, llvm::Triple::Darwin, llvm::TargetLibraryInfoImpl::disableAllFunctions(), llvm::Triple::Emscripten, llvm::Triple::FreeBSD, hasBcmp(), hasSinCosPiStret(), llvm::Triple::IOS, llvm::Triple::Linux, llvm::Triple::MacOSX, llvm::TargetLibraryInfoImpl::setAvailable(), llvm::TargetLibraryInfoImpl::setAvailableWithName(), llvm::TargetLibraryInfoImpl::setUnavailable(), llvm::Triple::tce, llvm::Triple::TvOS, llvm::Version, llvm::Triple::WatchOS, llvm::Triple::x86, llvm::Triple::x86_64, llvm::Triple::xcore, and llvm::Triple::XROS.

Referenced by initialize().

isCallingConvCCompatible()

isValidProtoForSizeReturningNew()

matchType()

Definition at line 1021 of file TargetLibraryInfo.cpp.

References Bool, Dbl, Floating, Flt, llvm::Type::getPrimitiveSizeInBits(), Int, Int16, Int32, Int64, IntPlus, IntX, llvm::Type::isDoubleTy(), llvm::Type::isFloatingPointTy(), llvm::Type::isFloatTy(), llvm::Type::isIntegerTy(), llvm::Type::isPointerTy(), llvm::Type::isStructTy(), llvm::Type::isVoidTy(), LDbl, LLong, llvm_unreachable, Long, Ptr, SizeT, SSizeT, Struct, and Void.

sanitizeFunctionName()

ClVectorLibrary

cl::opt< TargetLibraryInfoImpl::VectorLibrary > ClVectorLibrary("vector-library", cl::Hidden, cl::desc("Vector functions library"), cl::init(TargetLibraryInfoImpl::NoLibrary), cl::values(clEnumValN(TargetLibraryInfoImpl::NoLibrary, "none", "No vector functions library"), clEnumValN(TargetLibraryInfoImpl::Accelerate, "Accelerate", "Accelerate framework"), clEnumValN(TargetLibraryInfoImpl::DarwinLibSystemM, "Darwin_libsystem_m", "Darwin libsystem_m"), clEnumValN(TargetLibraryInfoImpl::LIBMVEC_X86, "LIBMVEC-X86", "GLIBC Vector Math library"), clEnumValN(TargetLibraryInfoImpl::MASSV, "MASSV", "IBM MASS vector library"), clEnumValN(TargetLibraryInfoImpl::SVML, "SVML", "Intel SVML library"), clEnumValN(TargetLibraryInfoImpl::SLEEFGNUABI, "sleefgnuabi", "SIMD Library for Evaluating Elementary Functions"), clEnumValN(TargetLibraryInfoImpl::ArmPL, "ArmPL", "Arm Performance Libraries"), clEnumValN(TargetLibraryInfoImpl::AMDLIBM, "AMDLIBM", "AMD vector math library"))) ( "vector-library" , cl::Hidden , cl::desc("Vector functions library") , cl::init(TargetLibraryInfoImpl::NoLibrary) , cl::values(clEnumValN(TargetLibraryInfoImpl::NoLibrary, "none", "No vector functions library"), clEnumValN(TargetLibraryInfoImpl::Accelerate, "Accelerate", "Accelerate framework"), clEnumValN(TargetLibraryInfoImpl::DarwinLibSystemM, "Darwin_libsystem_m", "Darwin libsystem_m"), clEnumValN(TargetLibraryInfoImpl::LIBMVEC_X86, "LIBMVEC-X86", "GLIBC Vector Math library"), clEnumValN(TargetLibraryInfoImpl::MASSV, "MASSV", "IBM MASS vector library"), clEnumValN(TargetLibraryInfoImpl::SVML, "SVML", "Intel SVML library"), clEnumValN(TargetLibraryInfoImpl::SLEEFGNUABI, "sleefgnuabi", "SIMD Library for Evaluating Elementary Functions"), clEnumValN(TargetLibraryInfoImpl::ArmPL, "ArmPL", "Arm Performance Libraries"), clEnumValN(TargetLibraryInfoImpl::AMDLIBM, "AMDLIBM", "AMD vector math library")) ) static

Signatures

VecFuncs_Accelerate

VecFuncs_AMDLIBM

VecFuncs_ArmPL

VecFuncs_DarwinLibSystemM

VecFuncs_LIBMVEC_X86

VecFuncs_MASSV

VecFuncs_SLEEFGNUABI_VF2

VecFuncs_SLEEFGNUABI_VF4

VecFuncs_SLEEFGNUABI_VFScalable

VecFuncs_SLEEFGNUABI_VFScalableRISCV

VecFuncs_SVML