LLVM: lib/Target/AMDGPU/AMDGPUArgumentUsageInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUARGUMENTUSAGEINFO_H
10#define LLVM_LIB_TARGET_AMDGPU_AMDGPUARGUMENTUSAGEINFO_H
11
18#include
19
20namespace llvm {
21
23
29
31private:
34
35 std::variant<std::monostate, MCRegister, unsigned> Val;
36
37
38 unsigned Mask;
39
40public:
42
45 Ret.Val = Reg.asMCReg();
46 return Ret;
47 }
48
54
56
58 Ret.Mask = Mask;
59 return Ret;
60 }
61
62 bool isSet() const { return !std::holds_alternativestd::monostate(Val); }
63
64 explicit operator bool() const {
66 }
67
68 bool isRegister() const { return std::holds_alternative(Val); }
69
71
72 unsigned getStackOffset() const { return std::get(Val); }
73
75
76 assert(Mask && "Invalid mask.");
77 return Mask;
78 }
79
81 return Mask != ~0u;
82 }
83
85};
86
91
96
98
129
130
131
132
133
134
143
144
150
151
152
154
155
157
158
159
163
164
166
168
169 std::tuple<const ArgDescriptor *, const TargetRegisterClass *, LLT>
171
173};
174
176private:
178
179public:
182
184
185 void clear() { ArgInfoMap.clear(); }
186
190
192
194 ModuleAnalysisManager::Invalidator &Inv);
195};
196
198 std::unique_ptr AUIP;
199
200public:
202
207
210
214
216 AUIP = std::make_unique();
217 return false;
218 }
219
221 AUIP->clear();
222 return false;
223 }
224
226 AUIP->print(OS, M);
227 }
228};
229
240
241}
242
243#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
Provides AMDGPU specific target descriptions.
This file defines the DenseMap class.
This header defines various interfaces for pass management in LLVM.
Register const TargetRegisterInfo * TRI
AMDGPUArgumentUsageInfo run(Module &M, ModuleAnalysisManager &)
AMDGPUArgumentUsageInfo Result
Definition AMDGPUArgumentUsageInfo.h:236
const AMDGPUArgumentUsageInfo & getArgUsageInfo() const
Definition AMDGPUArgumentUsageInfo.h:209
bool doFinalization(Module &M) override
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes...
Definition AMDGPUArgumentUsageInfo.h:220
AMDGPUArgumentUsageInfoWrapperLegacy()
Definition AMDGPUArgumentUsageInfo.h:203
void print(raw_ostream &OS, const Module *M=nullptr) const override
print - Print out the internal state of the pass.
Definition AMDGPUArgumentUsageInfo.h:225
static char ID
Definition AMDGPUArgumentUsageInfo.h:201
bool doInitialization(Module &M) override
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before ...
Definition AMDGPUArgumentUsageInfo.h:215
AMDGPUArgumentUsageInfo & getArgUsageInfo()
Definition AMDGPUArgumentUsageInfo.h:208
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
Definition AMDGPUArgumentUsageInfo.h:211
void clear()
Definition AMDGPUArgumentUsageInfo.h:185
static const AMDGPUFunctionArgInfo ExternFunctionInfo
Definition AMDGPUArgumentUsageInfo.h:180
static const AMDGPUFunctionArgInfo FixedABIFunctionInfo
Definition AMDGPUArgumentUsageInfo.h:181
const AMDGPUFunctionArgInfo & lookupFuncArgInfo(const Function &F) const
void print(raw_ostream &OS, const Module *M=nullptr) const
void setFuncArgInfo(const Function &F, const AMDGPUFunctionArgInfo &ArgInfo)
Definition AMDGPUArgumentUsageInfo.h:187
bool invalidate(Module &M, const PreservedAnalyses &PA, ModuleAnalysisManager::Invalidator &Inv)
Represent the analysis usage information of a pass.
void setPreservesAll()
Set by analyses that do not transform their input at all.
Wrapper class representing physical registers. Should be passed by value.
A Module instance is used to store all the information related to an LLVM module.
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
static LLVM_ABI PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
A set of analyses that are preserved following a run of a transformation pass.
Wrapper class representing virtual and physical registers.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
void initializeAMDGPUArgumentUsageInfoWrapperLegacyPass(PassRegistry &)
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
PreloadedValue
Definition AMDGPUArgumentUsageInfo.h:99
@ CLUSTER_WORKGROUP_ID_X
Definition AMDGPUArgumentUsageInfo.h:115
@ CLUSTER_WORKGROUP_ID_Z
Definition AMDGPUArgumentUsageInfo.h:117
@ LDS_KERNEL_ID
Definition AMDGPUArgumentUsageInfo.h:107
@ CLUSTER_WORKGROUP_MAX_ID_X
Definition AMDGPUArgumentUsageInfo.h:118
@ CLUSTER_WORKGROUP_MAX_ID_Z
Definition AMDGPUArgumentUsageInfo.h:120
@ CLUSTER_WORKGROUP_MAX_FLAT_ID
Definition AMDGPUArgumentUsageInfo.h:121
@ QUEUE_PTR
Definition AMDGPUArgumentUsageInfo.h:103
@ CLUSTER_WORKGROUP_ID_Y
Definition AMDGPUArgumentUsageInfo.h:116
@ IMPLICIT_ARG_PTR
Definition AMDGPUArgumentUsageInfo.h:113
@ FIRST_VGPR_VALUE
Definition AMDGPUArgumentUsageInfo.h:127
@ CLUSTER_WORKGROUP_MAX_ID_Y
Definition AMDGPUArgumentUsageInfo.h:119
@ FLAT_SCRATCH_INIT
Definition AMDGPUArgumentUsageInfo.h:106
@ PRIVATE_SEGMENT_WAVE_BYTE_OFFSET
Definition AMDGPUArgumentUsageInfo.h:111
@ PRIVATE_SEGMENT_BUFFER
Definition AMDGPUArgumentUsageInfo.h:101
@ WORKITEM_ID_Y
Definition AMDGPUArgumentUsageInfo.h:125
@ WORKGROUP_ID_Y
Definition AMDGPUArgumentUsageInfo.h:109
@ DISPATCH_ID
Definition AMDGPUArgumentUsageInfo.h:105
@ DISPATCH_PTR
Definition AMDGPUArgumentUsageInfo.h:102
@ WORKGROUP_ID_X
Definition AMDGPUArgumentUsageInfo.h:108
@ IMPLICIT_BUFFER_PTR
Definition AMDGPUArgumentUsageInfo.h:112
@ WORKITEM_ID_X
Definition AMDGPUArgumentUsageInfo.h:124
@ WORKITEM_ID_Z
Definition AMDGPUArgumentUsageInfo.h:126
@ KERNARG_SEGMENT_PTR
Definition AMDGPUArgumentUsageInfo.h:104
@ WORKGROUP_ID_Z
Definition AMDGPUArgumentUsageInfo.h:110
@ PRIVATE_SEGMENT_SIZE
Definition AMDGPUArgumentUsageInfo.h:114
ArgDescriptor PrivateSegmentBuffer
Definition AMDGPUArgumentUsageInfo.h:135
ArgDescriptor WorkGroupIDY
Definition AMDGPUArgumentUsageInfo.h:146
ArgDescriptor WorkGroupIDZ
Definition AMDGPUArgumentUsageInfo.h:147
ArgDescriptor PrivateSegmentSize
Definition AMDGPUArgumentUsageInfo.h:141
ArgDescriptor DispatchID
Definition AMDGPUArgumentUsageInfo.h:139
ArgDescriptor ImplicitArgPtr
Definition AMDGPUArgumentUsageInfo.h:153
SmallDenseMap< int, KernArgPreloadDescriptor > PreloadKernArgs
Definition AMDGPUArgumentUsageInfo.h:165
ArgDescriptor PrivateSegmentWaveByteOffset
Definition AMDGPUArgumentUsageInfo.h:149
ArgDescriptor WorkGroupInfo
Definition AMDGPUArgumentUsageInfo.h:148
static AMDGPUFunctionArgInfo fixedABILayout()
ArgDescriptor WorkItemIDZ
Definition AMDGPUArgumentUsageInfo.h:162
ArgDescriptor WorkItemIDY
Definition AMDGPUArgumentUsageInfo.h:161
ArgDescriptor LDSKernelId
Definition AMDGPUArgumentUsageInfo.h:142
std::tuple< const ArgDescriptor *, const TargetRegisterClass *, LLT > getPreloadedValue(PreloadedValue Value) const
ArgDescriptor QueuePtr
Definition AMDGPUArgumentUsageInfo.h:137
ArgDescriptor KernargSegmentPtr
Definition AMDGPUArgumentUsageInfo.h:138
ArgDescriptor WorkItemIDX
Definition AMDGPUArgumentUsageInfo.h:160
ArgDescriptor FlatScratchInit
Definition AMDGPUArgumentUsageInfo.h:140
ArgDescriptor DispatchPtr
Definition AMDGPUArgumentUsageInfo.h:136
ArgDescriptor ImplicitBufferPtr
Definition AMDGPUArgumentUsageInfo.h:156
Register FirstKernArgPreloadReg
Definition AMDGPUArgumentUsageInfo.h:167
ArgDescriptor WorkGroupIDX
Definition AMDGPUArgumentUsageInfo.h:145
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
friend struct AMDGPUFunctionArgInfo
Definition AMDGPUArgumentUsageInfo.h:32
static ArgDescriptor createStack(unsigned Offset, unsigned Mask=~0u)
Definition AMDGPUArgumentUsageInfo.h:49
MCRegister getRegister() const
Definition AMDGPUArgumentUsageInfo.h:70
bool isRegister() const
Definition AMDGPUArgumentUsageInfo.h:68
static ArgDescriptor createArg(const ArgDescriptor &Arg, unsigned Mask)
Definition AMDGPUArgumentUsageInfo.h:55
ArgDescriptor(unsigned Mask=~0u)
Definition AMDGPUArgumentUsageInfo.h:41
friend class AMDGPUArgumentUsageInfo
Definition AMDGPUArgumentUsageInfo.h:33
void print(raw_ostream &OS, const TargetRegisterInfo *TRI=nullptr) const
bool isMasked() const
Definition AMDGPUArgumentUsageInfo.h:80
bool isSet() const
Definition AMDGPUArgumentUsageInfo.h:62
static ArgDescriptor createRegister(Register Reg, unsigned Mask=~0u)
Definition AMDGPUArgumentUsageInfo.h:43
unsigned getStackOffset() const
Definition AMDGPUArgumentUsageInfo.h:72
unsigned getMask() const
Definition AMDGPUArgumentUsageInfo.h:74
Helper struct shared between Function Specialization and SCCP Solver.
KernArgPreloadDescriptor()=default
SmallVector< MCRegister > Regs
Definition AMDGPUArgumentUsageInfo.h:94