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.
private llvm::BitVector OverrideAsUnavailable
Support for -fno-builtin* options as function attributes, overrides information in global TargetLibraryInfoImpl.

Method Overview

Methods

TargetLibraryInfo(
    const llvm::TargetLibraryInfo& TLI)

Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:258

Parameters

const 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)

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

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()

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

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

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

Description

\copydoc TargetLibraryInfoImpl::getIntSize()

Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:410

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

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

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

Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:374

Parameters

llvm::LibFunc F

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

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

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

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

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

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&)

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&)

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

Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:331

Parameters

llvm::StringRef F
const llvm::ElementCount& VF

bool isFunctionVectorizable(
    llvm::StringRef F) const

Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:334

Parameters

llvm::StringRef F

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

llvm::StringRef F

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)

Description

Forces a function to be marked as unavailable.

Declared at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:317

Parameters

llvm::LibFunc F