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