LLVM 22.0.0git
|
#include "Target/AMDGPU/AMDGPUMCResourceInfo.h"
Public Types | |
enum | ResourceInfoKind { RIK_NumVGPR , RIK_NumAGPR , RIK_NumSGPR , RIK_NumNamedBarrier , RIK_PrivateSegSize , RIK_UsesVCC , RIK_UsesFlatScratch , RIK_HasDynSizedStack , RIK_HasRecursion , RIK_HasIndirectCall } |
Definition at line 28 of file AMDGPUMCResourceInfo.h.
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.
|
default |
Referenced by reset().
|
inline |
Definition at line 74 of file AMDGPUMCResourceInfo.h.
Referenced by gatherResourceInfo().
|
inline |
Definition at line 80 of file AMDGPUMCResourceInfo.h.
Referenced by gatherResourceInfo().
|
inline |
Definition at line 77 of file AMDGPUMCResourceInfo.h.
Referenced by gatherResourceInfo().
|
inline |
Definition at line 71 of file AMDGPUMCResourceInfo.h.
Referenced by gatherResourceInfo().
const MCExpr * MCResourceInfo::createTotalNumSGPRs | ( | const MachineFunction & | MF, |
bool | hasXnack, | ||
MCContext & | Ctx ) |
Definition at line 400 of file AMDGPUMCResourceInfo.cpp.
References llvm::MCBinaryExpr::createAdd(), llvm::AMDGPUMCExpr::createExtraSGPRs(), llvm::MachineFunction::getFunction(), llvm::MCSymbol::getName(), getSymRefExpr(), llvm::MachineFunction::getTarget(), llvm::GlobalValue::hasLocalLinkage(), RIK_NumSGPR, RIK_UsesFlatScratch, and RIK_UsesVCC.
const MCExpr * MCResourceInfo::createTotalNumVGPRs | ( | const MachineFunction & | MF, |
MCContext & | Ctx ) |
Definition at line 390 of file AMDGPUMCResourceInfo.cpp.
References llvm::AMDGPUMCExpr::createTotalNumVGPR(), llvm::MachineFunction::getFunction(), llvm::MCSymbol::getName(), getSymRefExpr(), llvm::MachineFunction::getTarget(), llvm::GlobalValue::hasLocalLinkage(), RIK_NumAGPR, and RIK_NumVGPR.
void MCResourceInfo::finalize | ( | MCContext & | OutContext | ) |
Definition at line 86 of file AMDGPUMCResourceInfo.cpp.
References assert().
void MCResourceInfo::gatherResourceInfo | ( | const MachineFunction & | MF, |
const AMDGPUResourceUsageAnalysisWrapperPass::FunctionResourceInfo & | FRI, | ||
MCContext & | OutContext ) |
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::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.
Definition at line 96 of file AMDGPUMCResourceInfo.cpp.
References llvm::MCContext::getOrCreateSymbol().
Referenced by gatherResourceInfo().
Definition at line 104 of file AMDGPUMCResourceInfo.cpp.
References llvm::MCContext::getOrCreateSymbol().
Referenced by gatherResourceInfo().
Definition at line 100 of file AMDGPUMCResourceInfo.cpp.
References llvm::MCContext::getOrCreateSymbol().
Referenced by gatherResourceInfo().
Definition at line 92 of file AMDGPUMCResourceInfo.cpp.
References llvm::MCContext::getOrCreateSymbol().
Referenced by gatherResourceInfo().
MCSymbol * MCResourceInfo::getSymbol | ( | StringRef | FuncName, |
ResourceInfoKind | RIK, | ||
MCContext & | OutContext, | ||
bool | IsLocal ) |
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().
const MCExpr * MCResourceInfo::getSymRefExpr | ( | StringRef | FuncName, |
ResourceInfoKind | RIK, | ||
MCContext & | Ctx, | ||
bool | IsLocal ) |
Definition at line 60 of file AMDGPUMCResourceInfo.cpp.
References llvm::MCSymbolRefExpr::create(), and getSymbol().
Referenced by createTotalNumSGPRs(), and createTotalNumVGPRs().
void MCResourceInfo::reset | ( | ) |
Definition at line 84 of file AMDGPUMCResourceInfo.cpp.
References MCResourceInfo().