LLVM: llvm::MCResourceInfo Class Reference (original) (raw)

#include "[Target/AMDGPU/AMDGPUMCResourceInfo.h](AMDGPUMCResourceInfo%5F8h%5Fsource.html)"

Public Member Functions
MCResourceInfo ()=default
void addMaxVGPRCandidate (int32_t candidate)
void addMaxAGPRCandidate (int32_t candidate)
void addMaxSGPRCandidate (int32_t candidate)
void addMaxNamedBarrierCandidate (int32_t candidate)
MCSymbol * getSymbol (StringRef FuncName, ResourceInfoKind RIK, MCContext &OutContext, bool IsLocal)
const MCExpr * getSymRefExpr (StringRef FuncName, ResourceInfoKind RIK, MCContext &Ctx, bool IsLocal)
void reset ()
void finalize (MCContext &OutContext)
MCSymbol * getMaxVGPRSymbol (MCContext &OutContext)
MCSymbol * getMaxAGPRSymbol (MCContext &OutContext)
MCSymbol * getMaxSGPRSymbol (MCContext &OutContext)
MCSymbol * getMaxNamedBarrierSymbol (MCContext &OutContext)
void gatherResourceInfo (const MachineFunction &MF, const AMDGPUResourceUsageAnalysisWrapperPass::FunctionResourceInfo &FRI, MCContext &OutContext)
AMDGPUResourceUsageAnalysis gathers resource usage on a per-function granularity.
const MCExpr * createTotalNumVGPRs (const MachineFunction &MF, MCContext &Ctx)
const MCExpr * createTotalNumSGPRs (const MachineFunction &MF, bool hasXnack, MCContext &Ctx)

Definition at line 28 of file AMDGPUMCResourceInfo.h.

ResourceInfoKind

Enumerator
RIK_NumVGPR
RIK_NumAGPR
RIK_NumSGPR
RIK_NumNamedBarrier
RIK_PrivateSegSize
RIK_UsesVCC
RIK_UsesFlatScratch
RIK_HasDynSizedStack
RIK_HasRecursion
RIK_HasIndirectCall

Definition at line 30 of file AMDGPUMCResourceInfo.h.

llvm::MCResourceInfo::MCResourceInfo ( ) default

addMaxAGPRCandidate()

void llvm::MCResourceInfo::addMaxAGPRCandidate ( int32_t candidate) inline

addMaxNamedBarrierCandidate()

void llvm::MCResourceInfo::addMaxNamedBarrierCandidate ( int32_t candidate) inline

addMaxSGPRCandidate()

void llvm::MCResourceInfo::addMaxSGPRCandidate ( int32_t candidate) inline

addMaxVGPRCandidate()

void llvm::MCResourceInfo::addMaxVGPRCandidate ( int32_t candidate) inline

createTotalNumSGPRs()

Definition at line 400 of file AMDGPUMCResourceInfo.cpp.

References llvm::MCBinaryExpr::createAdd(), llvm::AMDGPUMCExpr::createExtraSGPRs(), llvm::MachineFunction::getFunction(), llvm::MCSymbol::getName(), llvm::TargetMachine::getSymbol(), getSymRefExpr(), llvm::MachineFunction::getTarget(), llvm::GlobalValue::hasLocalLinkage(), RIK_NumSGPR, RIK_UsesFlatScratch, and RIK_UsesVCC.

createTotalNumVGPRs()

finalize()

void MCResourceInfo::finalize ( MCContext & OutContext )

gatherResourceInfo()

AMDGPUResourceUsageAnalysis gathers resource usage on a per-function granularity.

However, some resource info has to be assigned the call transitive maximum or accumulative. For example, if A calls B and B's VGPR usage exceeds A's, A should be assigned B's VGPR usage. Furthermore, functions with indirect calls should be assigned the module level maximum.

Definition at line 251 of file AMDGPUMCResourceInfo.cpp.

References addMaxAGPRCandidate(), addMaxNamedBarrierCandidate(), addMaxSGPRCandidate(), addMaxVGPRCandidate(), llvm::AMDGPUMCExpr::AGVK_Max, llvm::AMDGPUMCExpr::AGVK_Or, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::Callees, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::CalleeSegmentSize, llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), llvm::AMDGPUMCExpr::createMax(), llvm::dbgs(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), getMaxAGPRSymbol(), getMaxNamedBarrierSymbol(), getMaxSGPRSymbol(), getMaxVGPRSymbol(), llvm::MCSymbol::getName(), getSymbol(), llvm::TargetMachine::getSymbol(), llvm::MachineFunction::getTarget(), llvm::MCSymbol::getVariableValue(), llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::HasDynamicallySizedStack, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::HasIndirectCall, llvm::GlobalValue::hasLocalLinkage(), llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::HasRecursion, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::AMDGPU::isEntryFunctionCC(), llvm::AMDGPUMCExpr::isSymbolUsedInExpression(), llvm::MCSymbol::isVariable(), LLVM_DEBUG, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::NumAGPR, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::NumExplicitSGPR, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::NumNamedBarrier, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::NumVGPR, llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::PrivateSegmentSize, llvm::SmallVectorTemplateBase< T, bool >::push_back(), RIK_HasDynSizedStack, RIK_HasIndirectCall, RIK_HasRecursion, RIK_NumAGPR, RIK_NumNamedBarrier, RIK_NumSGPR, RIK_NumVGPR, RIK_PrivateSegSize, RIK_UsesFlatScratch, RIK_UsesVCC, llvm::MCSymbol::setVariableValue(), llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::UsesFlatScratch, and llvm::AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo::UsesVCC.

getMaxAGPRSymbol()

getMaxNamedBarrierSymbol()

getMaxSGPRSymbol()

getMaxVGPRSymbol()

getSymbol()

Definition at line 27 of file AMDGPUMCResourceInfo.cpp.

References llvm::MCContext::getAsmInfo(), llvm::MCContext::getOrCreateSymbol(), llvm::MCAsmInfo::getPrivateGlobalPrefix(), llvm_unreachable, RIK_HasDynSizedStack, RIK_HasIndirectCall, RIK_HasRecursion, RIK_NumAGPR, RIK_NumNamedBarrier, RIK_NumSGPR, RIK_NumVGPR, RIK_PrivateSegSize, RIK_UsesFlatScratch, and RIK_UsesVCC.

Referenced by gatherResourceInfo(), and getSymRefExpr().

getSymRefExpr()

reset()

void MCResourceInfo::reset ( )

The documentation for this class was generated from the following files: