LLVM 17.0.0git
|
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/Constants.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Analysis/TargetLibraryInfo.def"
#include "llvm/Analysis/VecFuncs.def"
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) {SCAL, VEC, VF, /* MASK = */ false}, |
#define | TLI_DEFINE_SLEEFGNUABI_VF4_VECFUNCS |
#define | TLI_DEFINE_VECFUNC(SCAL, VEC, VF) {SCAL, VEC, VF, /* MASK = */ false}, |
#define | TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS |
#define | TLI_DEFINE_VECFUNC(SCAL, VEC, VF, MASK) {SCAL, VEC, VF, MASK}, |
Typedefs | |
typedef std::array< FuncArgTypeID, 8 > | FuncProtoTy |
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 | 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 bool | matchType (FuncArgTypeID ArgTy, const Type *Ty, unsigned IntBits, unsigned SizeTBits) |
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"))) |
static const FuncProtoTy | Signatures [] |
#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_SIG |
#define TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS |
#define TLI_DEFINE_SLEEFGNUABI_VF2_VECFUNCS |
#define TLI_DEFINE_SLEEFGNUABI_VF4_VECFUNCS |
#define TLI_DEFINE_STRING |
#define TLI_DEFINE_SVML_VECFUNCS |
#define TLI_DEFINE_VECFUNC | ( | SCAL, | |
VEC, | |||
VF | |||
) | {SCAL, VEC, VF, /* MASK = */ false}, |
#define TLI_DEFINE_VECFUNC | ( | SCAL, | |
VEC, | |||
VF | |||
) | {SCAL, VEC, VF, /* MASK = */ false}, |
#define TLI_DEFINE_VECFUNC | ( | SCAL, | |
VEC, | |||
VF, | |||
MASK | |||
) | {SCAL, VEC, VF, MASK}, |
typedef std::array<FuncArgTypeID, 8> FuncProtoTy |
Definition at line 68 of file TargetLibraryInfo.cpp.
enum FuncArgTypeID : char |
Enumerator | |
---|---|
Void | |
Bool | |
Int16 | |
Int32 | |
Int | |
IntPlus | |
Long | |
IntX | |
Int64 | |
LLong | |
SizeT | |
SSizeT | |
Flt | |
Dbl | |
LDbl | |
Floating | |
Ptr | |
Struct | |
Ellip | |
Same |
Definition at line 45 of file TargetLibraryInfo.cpp.
Definition at line 1126 of file TargetLibraryInfo.cpp.
Referenced by llvm::TargetLibraryInfoImpl::addVectorizableFunctions().
Definition at line 1130 of file TargetLibraryInfo.cpp.
Referenced by llvm::TargetLibraryInfoImpl::addVectorizableFunctions().
Definition at line 1134 of file TargetLibraryInfo.cpp.
References LHS.
Referenced by llvm::TargetLibraryInfoImpl::getVectorizedFunction(), llvm::TargetLibraryInfoImpl::getWidestVF(), and llvm::TargetLibraryInfoImpl::isFunctionVectorizable().
Definition at line 96 of file TargetLibraryInfo.cpp.
Referenced by initialize().
Definition at line 78 of file TargetLibraryInfo.cpp.
References llvm::Triple::x86.
Referenced by initialize().
|
static |
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 152 of file TargetLibraryInfo.cpp.
References llvm::Triple::aarch64, llvm::TargetLibraryInfoImpl::addVectorizableFunctionsFromVecLib(), llvm::Triple::arm, assert(), ClVectorLibrary, llvm::Triple::Darwin, llvm::TargetLibraryInfoImpl::disableAllFunctions(), llvm::Triple::Emscripten, llvm::Triple::FreeBSD, hasBcmp(), hasSinCosPiStret(), llvm::TargetLibraryInfo::initExtensionsForTriple(), llvm::Triple::IOS, llvm::is_sorted(), LHS, llvm::Triple::Linux, llvm::Triple::MacOSX, RHS, llvm::TargetLibraryInfoImpl::setAvailable(), llvm::TargetLibraryInfoImpl::setAvailableWithName(), llvm::TargetLibraryInfoImpl::setIntSize(), llvm::TargetLibraryInfoImpl::setShouldExtI32Param(), llvm::TargetLibraryInfoImpl::setShouldExtI32Return(), llvm::TargetLibraryInfoImpl::setShouldSignExtI32Param(), llvm::TargetLibraryInfoImpl::setShouldSignExtI32Return(), llvm::TargetLibraryInfoImpl::setUnavailable(), llvm::Triple::tce, llvm::Triple::TvOS, llvm::Triple::WatchOS, llvm::Triple::x86, llvm::Triple::x86_64, and llvm::Triple::xcore.
Referenced by llvm::OProfileWrapper::op_close_agent(), llvm::OProfileWrapper::op_major_version(), llvm::OProfileWrapper::op_minor_version(), llvm::OProfileWrapper::op_open_agent(), llvm::OProfileWrapper::op_unload_native_code(), llvm::OProfileWrapper::op_write_debug_line_info(), llvm::OProfileWrapper::op_write_native_code(), and llvm::TargetLibraryInfoImpl::TargetLibraryInfoImpl().
|
static |
Definition at line 106 of file TargetLibraryInfo.cpp.
References llvm::CallingConv::ARM_AAPCS, llvm::CallingConv::ARM_AAPCS_VFP, llvm::CallingConv::ARM_APCS, llvm::CallingConv::C, and CC.
|
static |
Definition at line 957 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.
Definition at line 929 of file TargetLibraryInfo.cpp.
References llvm::StringRef::contains(), llvm::GlobalValue::dropLLVMManglingEscape(), and llvm::StringRef::empty().
Referenced by llvm::TargetLibraryInfoImpl::getLibFunc(), llvm::TargetLibraryInfoImpl::getVectorizedFunction(), llvm::TargetLibraryInfoImpl::getWidestVF(), and llvm::TargetLibraryInfoImpl::isFunctionVectorizable().
|
static |
Referenced by initialize().
|
static |
Definition at line 70 of file TargetLibraryInfo.cpp.
Referenced by llvm::WebAssemblyAsmPrinter::addSignature(), and llvm::BalancedPartitioning::moveGain().