LLVM 17.0.0git
|
Implementation of the target library information. More...
#include "llvm/Analysis/TargetLibraryInfo.h"
Public Types | |
enum | VectorLibrary { NoLibrary , Accelerate , DarwinLibSystemM , LIBMVEC_X86 , MASSV , SVML , SLEEFGNUABI } |
List of known vector-functions libraries. More... | |
Public Member Functions | |
TargetLibraryInfoImpl () | |
TargetLibraryInfoImpl (const Triple &T) | |
TargetLibraryInfoImpl (const TargetLibraryInfoImpl &TLI) | |
TargetLibraryInfoImpl (TargetLibraryInfoImpl &&TLI) | |
TargetLibraryInfoImpl & | operator= (const TargetLibraryInfoImpl &TLI) |
TargetLibraryInfoImpl & | operator= (TargetLibraryInfoImpl &&TLI) |
bool | getLibFunc (StringRef funcName, LibFunc &F) const |
Searches for a particular function name. | |
bool | getLibFunc (const Function &FDecl, LibFunc &F) const |
Searches for a particular function name, also checking that its type is valid for the library function matching that name. | |
void | setUnavailable (LibFunc F) |
Forces a function to be marked as unavailable. | |
void | setAvailable (LibFunc F) |
Forces a function to be marked as available. | |
void | setAvailableWithName (LibFunc F, StringRef Name) |
Forces a function to be marked as available and provide an alternate name that must be used. | |
void | disableAllFunctions () |
Disables all builtins. | |
void | addVectorizableFunctions (ArrayRef< VecDesc > Fns) |
Add a set of scalar -> vector mappings, queryable via getVectorizedFunction and getScalarizedFunction. | |
void | addVectorizableFunctionsFromVecLib (enum VectorLibrary VecLib, const llvm::Triple &TargetTriple) |
Calls addVectorizableFunctions with a known preset of functions for the given vector library. | |
bool | isFunctionVectorizable (StringRef F, const ElementCount &VF) const |
Return true if the function F has a vector equivalent with vectorization factor VF. | |
bool | isFunctionVectorizable (StringRef F) const |
Return true if the function F has a vector equivalent with any vectorization factor. | |
StringRef | getVectorizedFunction (StringRef F, const ElementCount &VF) const |
Return the name of the equivalent of F, vectorized with factor VF. | |
void | setShouldExtI32Param (bool Val) |
Set to true iff i32 parameters to library functions should have signext or zeroext attributes if they correspond to C-level int or unsigned int, respectively. | |
void | setShouldExtI32Return (bool Val) |
Set to true iff i32 results from library functions should have signext or zeroext attributes if they correspond to C-level int or unsigned int, respectively. | |
void | setShouldSignExtI32Param (bool Val) |
Set to true iff i32 parameters to library functions should have signext attribute if they correspond to C-level int or unsigned int. | |
void | setShouldSignExtI32Return (bool Val) |
Set to true iff i32 results from library functions should have signext attribute if they correspond to C-level int or unsigned int. | |
unsigned | getWCharSize (const Module &M) const |
Returns the size of the wchar_t type in bytes or 0 if the size is unknown. | |
unsigned | getSizeTSize (const Module &M) const |
Returns the size of the size_t type in bits. | |
unsigned | getIntSize () const |
Get size of a C-level int or unsigned int, in bits. | |
void | setIntSize (unsigned Bits) |
Initialize the C-level size of an integer. | |
void | getWidestVF (StringRef ScalarF, ElementCount &FixedVF, ElementCount &Scalable) const |
Returns the largest vectorization factor used in the list of vector functions. | |
Static Public Member Functions | |
static bool | isCallingConvCCompatible (CallBase *CI) |
Returns true if call site / callee has cdecl-compatible calling conventions. | |
static bool | isCallingConvCCompatible (Function *Callee) |
Friends | |
class | TargetLibraryInfo |
Implementation of the target library information.
This class constructs tables that hold the target library information and make it available. However, it is somewhat expensive to compute and only depends on the triple. So users typically interact with the TargetLibraryInfo
wrapper below.
Definition at line 50 of file TargetLibraryInfo.h.
List of known vector-functions libraries.
The vector-functions library defines, which functions are vectorizable and with which factor. The library can be specified by either frontend, or a commandline option, and then used by addVectorizableFunctionsFromVecLib for filling up the tables of vectorizable functions.
Enumerator | |
---|---|
NoLibrary | |
Accelerate | |
DarwinLibSystemM | |
LIBMVEC_X86 | |
MASSV | |
SVML | |
SLEEFGNUABI |
Definition at line 91 of file TargetLibraryInfo.h.
TargetLibraryInfoImpl::TargetLibraryInfoImpl | ( | ) |
Definition at line 860 of file TargetLibraryInfo.cpp.
References initialize().
Definition at line 867 of file TargetLibraryInfo.cpp.
References initialize().
TargetLibraryInfoImpl::TargetLibraryInfoImpl | ( | const TargetLibraryInfoImpl & | TLI | ) |
Definition at line 874 of file TargetLibraryInfo.cpp.
TargetLibraryInfoImpl::TargetLibraryInfoImpl | ( | TargetLibraryInfoImpl && | TLI | ) |
Definition at line 885 of file TargetLibraryInfo.cpp.
Add a set of scalar -> vector mappings, queryable via getVectorizedFunction and getScalarizedFunction.
Definition at line 1130 of file TargetLibraryInfo.cpp.
References llvm::append_range(), compareByScalarFnName(), compareByVectorFnName(), and llvm::sort().
Referenced by addVectorizableFunctionsFromVecLib().
void TargetLibraryInfoImpl::addVectorizableFunctionsFromVecLib | ( | enum VectorLibrary | VecLib, |
const llvm::Triple & | TargetTriple | ||
) |
Calls addVectorizableFunctions with a known preset of functions for the given vector library.
Definition at line 1138 of file TargetLibraryInfo.cpp.
References llvm::Triple::aarch64, llvm::Triple::aarch64_be, Accelerate, addVectorizableFunctions(), DarwinLibSystemM, llvm::Triple::getArch(), LIBMVEC_X86, MASSV, NoLibrary, SLEEFGNUABI, and SVML.
Referenced by initialize().
void TargetLibraryInfoImpl::disableAllFunctions | ( | ) |
Disables all builtins.
This can be used for options like -fno-builtin.
Definition at line 1114 of file TargetLibraryInfo.cpp.
Referenced by initialize().
|
inline |
Get size of a C-level int or unsigned int, in bits.
Definition at line 209 of file TargetLibraryInfo.h.
Referenced by llvm::TargetLibraryInfo::getIntSize().
Searches for a particular function name, also checking that its type is valid for the library function matching that name.
If it is one of the known library functions, return true and set F to the corresponding value.
FDecl is assumed to have a parent Module when using this function.
Definition at line 1100 of file TargetLibraryInfo.cpp.
References assert(), F, llvm::Function::getFunctionType(), getLibFunc(), llvm::Value::getName(), llvm::GlobalValue::getParent(), and llvm::Function::isIntrinsic().
Searches for a particular function name.
If it is one of the known library functions, return true and set F to the corresponding value.
Definition at line 932 of file TargetLibraryInfo.cpp.
References llvm::StringRef::empty(), F, I, and sanitizeFunctionName().
Referenced by getLibFunc(), and llvm::TargetLibraryInfo::getLibFunc().
Returns the size of the size_t type in bits.
Definition at line 1248 of file TargetLibraryInfo.cpp.
Referenced by llvm::TargetLibraryInfo::getSizeTSize().
StringRef TargetLibraryInfoImpl::getVectorizedFunction | ( | StringRef | F, |
const ElementCount & | VF | ||
) | const |
Return the name of the equivalent of F, vectorized with factor VF.
If no such mapping exists, return the empty string.
Definition at line 1218 of file TargetLibraryInfo.cpp.
References compareWithScalarFnName(), F, I, llvm::lower_bound(), and sanitizeFunctionName().
Referenced by llvm::TargetLibraryInfo::getVectorizedFunction(), and isFunctionVectorizable().
Returns the size of the wchar_t type in bytes or 0 if the size is unknown.
This queries the 'wchar_size' metadata.
Definition at line 1241 of file TargetLibraryInfo.cpp.
Referenced by llvm::TargetLibraryInfo::getWCharSize().
void TargetLibraryInfoImpl::getWidestVF | ( | StringRef | ScalarF, |
ElementCount & | FixedVF, | ||
ElementCount & | Scalable | ||
) | const |
Returns the largest vectorization factor used in the list of vector functions.
Definition at line 1289 of file TargetLibraryInfo.cpp.
References compareWithScalarFnName(), llvm::StringRef::empty(), llvm::ElementCount::getFixed(), llvm::ElementCount::getScalable(), I, llvm::details::FixedOrScalableQuantity< ElementCount, unsigned >::isKnownGT(), llvm::lower_bound(), and sanitizeFunctionName().
Referenced by llvm::TargetLibraryInfo::getWidestVF().
Returns true if call site / callee has cdecl-compatible calling conventions.
Definition at line 137 of file TargetLibraryInfo.cpp.
References llvm::CallBase::getCallingConv(), llvm::CallBase::getFunctionType(), llvm::Instruction::getModule(), and llvm::Module::getTargetTriple().
Referenced by llvm::FortifiedLibCallSimplifier::optimizeCall(), and llvm::LibCallSimplifier::optimizeCall().
Definition at line 143 of file TargetLibraryInfo.cpp.
References F.
Return true if the function F has a vector equivalent with any vectorization factor.
Definition at line 1207 of file TargetLibraryInfo.cpp.
References compareWithScalarFnName(), llvm::StringRef::empty(), I, llvm::lower_bound(), and sanitizeFunctionName().
|
inline |
Return true if the function F has a vector equivalent with vectorization factor VF.
Definition at line 163 of file TargetLibraryInfo.h.
References llvm::StringRef::empty(), F, and getVectorizedFunction().
Referenced by llvm::TargetLibraryInfo::isFunctionVectorizable().
TargetLibraryInfoImpl & TargetLibraryInfoImpl::operator= | ( | const TargetLibraryInfoImpl & | TLI | ) |
Definition at line 898 of file TargetLibraryInfo.cpp.
TargetLibraryInfoImpl & TargetLibraryInfoImpl::operator= | ( | TargetLibraryInfoImpl && | TLI | ) |
Definition at line 909 of file TargetLibraryInfo.cpp.
|
inline |
Forces a function to be marked as available.
Definition at line 131 of file TargetLibraryInfo.h.
References F.
Referenced by initialize().
Forces a function to be marked as available and provide an alternate name that must be used.
Definition at line 137 of file TargetLibraryInfo.h.
References assert(), F, and Name.
Referenced by initialize().
|
inline |
Initialize the C-level size of an integer.
Definition at line 214 of file TargetLibraryInfo.h.
Referenced by initialize().
|
inline |
Set to true iff i32 parameters to library functions should have signext or zeroext attributes if they correspond to C-level int or unsigned int, respectively.
Definition at line 178 of file TargetLibraryInfo.h.
Referenced by initialize().
|
inline |
Set to true iff i32 results from library functions should have signext or zeroext attributes if they correspond to C-level int or unsigned int, respectively.
Definition at line 185 of file TargetLibraryInfo.h.
Referenced by initialize().
|
inline |
Set to true iff i32 parameters to library functions should have signext attribute if they correspond to C-level int or unsigned int.
Definition at line 191 of file TargetLibraryInfo.h.
Referenced by initialize().
|
inline |
Set to true iff i32 results from library functions should have signext attribute if they correspond to C-level int or unsigned int.
Definition at line 197 of file TargetLibraryInfo.h.
Referenced by initialize().
|
inline |
Forces a function to be marked as unavailable.
Definition at line 126 of file TargetLibraryInfo.h.
References F, and Unavailable.
Referenced by initialize().
|
friend |
Definition at line 51 of file TargetLibraryInfo.h.