LLVM: lib/Target/AMDGPU/AMDGPUMCResourceInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUMCRESOURCEINFO_H
16#define LLVM_LIB_TARGET_AMDGPU_AMDGPUMCRESOURCEINFO_H
17
20
21namespace llvm {
22
27
29public:
42
43private:
44 int32_t MaxVGPR = 0;
45 int32_t MaxAGPR = 0;
46 int32_t MaxSGPR = 0;
47 int32_t MaxNamedBarrier = 0;
48
49
50
51
52 bool Finalized = false;
53
54 void assignResourceInfoExpr(int64_t localValue, ResourceInfoKind RIK,
59
60
61 void assignMaxRegs(MCContext &OutContext);
62
63
64
65
68
69public:
72 MaxVGPR = std::max(MaxVGPR, candidate);
73 }
75 MaxAGPR = std::max(MaxAGPR, candidate);
76 }
78 MaxSGPR = std::max(MaxSGPR, candidate);
79 }
81 MaxNamedBarrier = std::max(MaxNamedBarrier, candidate);
82 }
83
85 MCContext &OutContext, bool IsLocal);
88
90
91
92
94
99
100
101
102
103
104
109
113};
114}
115
116#endif
Analyzes how many registers and other resources are used by functions.
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
MCSymbol * getMaxNamedBarrierSymbol(MCContext &OutContext)
void addMaxSGPRCandidate(int32_t candidate)
Definition AMDGPUMCResourceInfo.h:77
MCSymbol * getMaxSGPRSymbol(MCContext &OutContext)
const MCExpr * getSymRefExpr(StringRef FuncName, ResourceInfoKind RIK, MCContext &Ctx, bool IsLocal)
void addMaxNamedBarrierCandidate(int32_t candidate)
Definition AMDGPUMCResourceInfo.h:80
MCSymbol * getMaxAGPRSymbol(MCContext &OutContext)
const MCExpr * createTotalNumVGPRs(const MachineFunction &MF, MCContext &Ctx)
MCSymbol * getSymbol(StringRef FuncName, ResourceInfoKind RIK, MCContext &OutContext, bool IsLocal)
void addMaxAGPRCandidate(int32_t candidate)
Definition AMDGPUMCResourceInfo.h:74
MCSymbol * getMaxVGPRSymbol(MCContext &OutContext)
const MCExpr * createTotalNumSGPRs(const MachineFunction &MF, bool hasXnack, MCContext &Ctx)
void addMaxVGPRCandidate(int32_t candidate)
Definition AMDGPUMCResourceInfo.h:71
ResourceInfoKind
Definition AMDGPUMCResourceInfo.h:30
@ RIK_HasRecursion
Definition AMDGPUMCResourceInfo.h:39
@ RIK_PrivateSegSize
Definition AMDGPUMCResourceInfo.h:35
@ RIK_NumNamedBarrier
Definition AMDGPUMCResourceInfo.h:34
@ RIK_UsesVCC
Definition AMDGPUMCResourceInfo.h:36
@ RIK_NumAGPR
Definition AMDGPUMCResourceInfo.h:32
@ RIK_UsesFlatScratch
Definition AMDGPUMCResourceInfo.h:37
@ RIK_HasDynSizedStack
Definition AMDGPUMCResourceInfo.h:38
@ RIK_NumVGPR
Definition AMDGPUMCResourceInfo.h:31
@ RIK_HasIndirectCall
Definition AMDGPUMCResourceInfo.h:40
@ RIK_NumSGPR
Definition AMDGPUMCResourceInfo.h:33
void gatherResourceInfo(const MachineFunction &MF, const AMDGPUResourceUsageAnalysisWrapperPass::FunctionResourceInfo &FRI, MCContext &OutContext)
AMDGPUResourceUsageAnalysis gathers resource usage on a per-function granularity.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
This is an optimization pass for GlobalISel generic memory operations.
AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo FunctionResourceInfo