class TargetLibraryInfo
Declaration
class TargetLibraryInfo { /* full declaration omitted */ };
Description
Provides information about what library functions are available for the current target. This both allows optimizations to handle them specially and frontends to disable such optimizations through -fno-builtin etc.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:222
Member Variables
- private const llvm::TargetLibraryInfoImpl* Impl
- The global (module level) TLI info.
- Support for -fno-builtin* options as function attributes, overrides information in global TargetLibraryInfoImpl.
Method Overview
- public TargetLibraryInfo(const llvm::TargetLibraryInfo & TLI)
- public TargetLibraryInfo(llvm::TargetLibraryInfo && TLI)
- public TargetLibraryInfo(const llvm::TargetLibraryInfoImpl & Impl, Optional<const llvm::Function *> F = None)
- public bool areInlineCompatible(const llvm::TargetLibraryInfo & CalleeTLI, bool AllowCallerSuperset) const
- public void disableAllFunctions()
- public Attribute::AttrKind getExtAttrForI32Param(bool Signed = true) const
- public Attribute::AttrKind getExtAttrForI32Return(bool Signed = true) const
- public unsigned int getIntSize() const
- public bool getLibFunc(const llvm::CallBase & CB, llvm::LibFunc & F) const
- public bool getLibFunc(const llvm::Function & FDecl, llvm::LibFunc & F) const
- public bool getLibFunc(llvm::StringRef funcName, llvm::LibFunc & F) const
- public llvm::StringRef getName(llvm::LibFunc F) const
- public TargetLibraryInfoImpl::AvailabilityState getState(llvm::LibFunc F) const
- public llvm::StringRef getVectorizedFunction(llvm::StringRef F, const llvm::ElementCount & VF) const
- public unsigned int getWCharSize(const llvm::Module & M) const
- public void getWidestVF(llvm::StringRef ScalarF, llvm::ElementCount & FixedVF, llvm::ElementCount & ScalableVF) const
- public bool has(llvm::LibFunc F) const
- public bool hasOptimizedCodeGen(llvm::LibFunc F) const
- public bool invalidate(llvm::Function &, const llvm::PreservedAnalyses &, FunctionAnalysisManager::Invalidator &)
- public bool invalidate(llvm::Module &, const llvm::PreservedAnalyses &, ModuleAnalysisManager::Invalidator &)
- public bool isFunctionVectorizable(llvm::StringRef F, const llvm::ElementCount & VF) const
- public bool isFunctionVectorizable(llvm::StringRef F) const
- public bool isKnownVectorFunctionInLibrary(llvm::StringRef F) const
- public bool isValidProtoForLibFunc(const llvm::FunctionType & FTy, llvm::LibFunc F, const llvm::Module & M) const
- public void setUnavailable(llvm::LibFunc F)
Methods
¶TargetLibraryInfo(
const llvm::TargetLibraryInfo& TLI)
TargetLibraryInfo(
const llvm::TargetLibraryInfo& TLI)
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:258
Parameters
- const llvm::TargetLibraryInfo& TLI
¶TargetLibraryInfo(llvm::TargetLibraryInfo&& TLI)
TargetLibraryInfo(llvm::TargetLibraryInfo&& TLI)
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:259
Parameters
- llvm::TargetLibraryInfo&& TLI
¶TargetLibraryInfo(
const llvm::TargetLibraryInfoImpl& Impl,
Optional<const llvm::Function*> F = None)
TargetLibraryInfo(
const llvm::TargetLibraryInfoImpl& Impl,
Optional<const llvm::Function*> F = None)
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:234
Parameters
- const llvm::TargetLibraryInfoImpl& Impl
- Optional<const llvm::Function*> F = None
¶bool areInlineCompatible(
const llvm::TargetLibraryInfo& CalleeTLI,
bool AllowCallerSuperset) const
bool areInlineCompatible(
const llvm::TargetLibraryInfo& CalleeTLI,
bool AllowCallerSuperset) const
Description
Determine whether a callee with the given TLI can be inlined into caller with this TLI, based on 'nobuiltin' attributes. When requested, allow inlining into a caller with a superset of the callee's nobuiltin attributes, which is conservatively correct.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:272
Parameters
- const llvm::TargetLibraryInfo& CalleeTLI
- bool AllowCallerSuperset
¶void disableAllFunctions()
void disableAllFunctions()
Description
Disables all builtins. This can be used for options like -fno-builtin.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:312
¶Attribute::AttrKind getExtAttrForI32Param(
bool Signed = true) const
Attribute::AttrKind getExtAttrForI32Param(
bool Signed = true) const
Description
Returns extension attribute kind to be used for i32 parameters corresponding to C-level int or unsigned int. May be zeroext, signext, or none.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:387
Parameters
- bool Signed = true
¶Attribute::AttrKind getExtAttrForI32Return(
bool Signed = true) const
Attribute::AttrKind getExtAttrForI32Return(
bool Signed = true) const
Description
Returns extension attribute kind to be used for i32 return values corresponding to C-level int or unsigned int. May be zeroext, signext, or none.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:398
Parameters
- bool Signed = true
¶unsigned int getIntSize() const
unsigned int getIntSize() const
Description
\copydoc TargetLibraryInfoImpl::getIntSize()
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:410
¶bool getLibFunc(const llvm::CallBase& CB,
llvm::LibFunc& F) const
bool getLibFunc(const llvm::CallBase& CB,
llvm::LibFunc& F) const
Description
If a callbase does not have the 'nobuiltin' attribute, return if the called function is a known library function and set F to that function.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:304
Parameters
- const llvm::CallBase& CB
- llvm::LibFunc& F
¶bool getLibFunc(const llvm::Function& FDecl,
llvm::LibFunc& F) const
bool getLibFunc(const llvm::Function& FDecl,
llvm::LibFunc& F) const
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:298
Parameters
- const llvm::Function& FDecl
- llvm::LibFunc& F
¶bool getLibFunc(llvm::StringRef funcName,
llvm::LibFunc& F) const
bool getLibFunc(llvm::StringRef funcName,
llvm::LibFunc& F) const
Description
Searches for a particular function name. If it is one of the known library functions, return true and set F to the corresponding value.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:294
Parameters
- llvm::StringRef funcName
- llvm::LibFunc& F
¶llvm::StringRef getName(llvm::LibFunc F) const
llvm::StringRef getName(llvm::LibFunc F) const
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:374
Parameters
- llvm::LibFunc F
¶TargetLibraryInfoImpl::AvailabilityState getState(
llvm::LibFunc F) const
TargetLibraryInfoImpl::AvailabilityState getState(
llvm::LibFunc F) const
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:321
Parameters
- llvm::LibFunc F
¶llvm::StringRef getVectorizedFunction(
llvm::StringRef F,
const llvm::ElementCount& VF) const
llvm::StringRef getVectorizedFunction(
llvm::StringRef F,
const llvm::ElementCount& VF) const
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:337
Parameters
- llvm::StringRef F
- const llvm::ElementCount& VF
¶unsigned int getWCharSize(
const llvm::Module& M) const
unsigned int getWCharSize(
const llvm::Module& M) const
Description
\copydoc TargetLibraryInfoImpl::getWCharSize()
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:405
Parameters
- const llvm::Module& M
¶void getWidestVF(
llvm::StringRef ScalarF,
llvm::ElementCount& FixedVF,
llvm::ElementCount& ScalableVF) const
void getWidestVF(
llvm::StringRef ScalarF,
llvm::ElementCount& FixedVF,
llvm::ElementCount& ScalableVF) const
Description
Returns the largest vectorization factor used in the list of vector functions.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:428
Parameters
- llvm::StringRef ScalarF
- llvm::ElementCount& FixedVF
- llvm::ElementCount& ScalableVF
¶bool has(llvm::LibFunc F) const
bool has(llvm::LibFunc F) const
Description
Tests whether a library function is available.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:328
Parameters
- llvm::LibFunc F
¶bool hasOptimizedCodeGen(llvm::LibFunc F) const
bool hasOptimizedCodeGen(llvm::LibFunc F) const
Description
Tests if the function is both available and a candidate for optimized code generation.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:343
Parameters
- llvm::LibFunc F
¶bool invalidate(
llvm::Function&,
const llvm::PreservedAnalyses&,
FunctionAnalysisManager::Invalidator&)
bool invalidate(
llvm::Function&,
const llvm::PreservedAnalyses&,
FunctionAnalysisManager::Invalidator&)
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:422
Parameters
- llvm::Function&
- const llvm::PreservedAnalyses&
- FunctionAnalysisManager::Invalidator&
¶bool invalidate(
llvm::Module&,
const llvm::PreservedAnalyses&,
ModuleAnalysisManager::Invalidator&)
bool invalidate(
llvm::Module&,
const llvm::PreservedAnalyses&,
ModuleAnalysisManager::Invalidator&)
Description
Handle invalidation from the pass manager. If we try to invalidate this info, just return false. It cannot become invalid even if the module or function changes.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:418
Parameters
- llvm::Module&
- const llvm::PreservedAnalyses&
- ModuleAnalysisManager::Invalidator&
¶bool isFunctionVectorizable(
llvm::StringRef F,
const llvm::ElementCount& VF) const
bool isFunctionVectorizable(
llvm::StringRef F,
const llvm::ElementCount& VF) const
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:331
Parameters
- llvm::StringRef F
- const llvm::ElementCount& VF
¶bool isFunctionVectorizable(
llvm::StringRef F) const
bool isFunctionVectorizable(
llvm::StringRef F) const
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:334
Parameters
¶bool isKnownVectorFunctionInLibrary(
llvm::StringRef F) const
bool isKnownVectorFunctionInLibrary(
llvm::StringRef F) const
Description
Check if the function "F" is listed in a library known to LLVM.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:434
Parameters
¶bool isValidProtoForLibFunc(
const llvm::FunctionType& FTy,
llvm::LibFunc F,
const llvm::Module& M) const
bool isValidProtoForLibFunc(
const llvm::FunctionType& FTy,
llvm::LibFunc F,
const llvm::Module& M) const
Description
Return true if the function type FTy is valid for the library function F, regardless of whether the function is available.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:285
Parameters
- const llvm::FunctionType& FTy
- llvm::LibFunc F
- const llvm::Module& M
¶void setUnavailable(llvm::LibFunc F)
void setUnavailable(llvm::LibFunc F)
Description
Forces a function to be marked as unavailable.
Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:317
Parameters
- llvm::LibFunc F