9#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUARGUMENTUSAGEINFO_H
10#define LLVM_LIB_TARGET_AMDGPU_AMDGPUARGUMENTUSAGEINFO_H
27 std::variant<std::monostate, MCRegister, unsigned> Val;
37 Ret.Val =
Reg.asMCReg();
54 bool isSet()
const {
return !std::holds_alternative<std::monostate>(Val); }
56 explicit operator bool()
const {
60 bool isRegister()
const {
return std::holds_alternative<MCRegister>(Val); }
68 assert(Mask &&
"Invalid mask.");
161 std::tuple<const ArgDescriptor *, const TargetRegisterClass *, LLT>
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
Provides AMDGPU specific target descriptions.
Register const TargetRegisterInfo * TRI
Wrapper class representing physical registers. Should be passed by value.
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.
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)
@ CLUSTER_WORKGROUP_MAX_ID_X
@ CLUSTER_WORKGROUP_MAX_ID_Z
@ CLUSTER_WORKGROUP_MAX_FLAT_ID
@ CLUSTER_WORKGROUP_MAX_ID_Y
@ PRIVATE_SEGMENT_WAVE_BYTE_OFFSET
ArgDescriptor PrivateSegmentBuffer
ArgDescriptor WorkGroupIDY
ArgDescriptor WorkGroupIDZ
ArgDescriptor PrivateSegmentSize
ArgDescriptor ImplicitArgPtr
SmallDenseMap< int, KernArgPreloadDescriptor > PreloadKernArgs
ArgDescriptor PrivateSegmentWaveByteOffset
ArgDescriptor WorkGroupInfo
static AMDGPUFunctionArgInfo fixedABILayout()
ArgDescriptor WorkItemIDZ
ArgDescriptor WorkItemIDY
ArgDescriptor LDSKernelId
std::tuple< const ArgDescriptor *, const TargetRegisterClass *, LLT > getPreloadedValue(PreloadedValue Value) const
ArgDescriptor KernargSegmentPtr
ArgDescriptor WorkItemIDX
ArgDescriptor FlatScratchInit
ArgDescriptor DispatchPtr
ArgDescriptor ImplicitBufferPtr
static const AMDGPUFunctionArgInfo FixedABIFunctionInfo
Register FirstKernArgPreloadReg
ArgDescriptor WorkGroupIDX
friend struct AMDGPUFunctionArgInfo
static ArgDescriptor createStack(unsigned Offset, unsigned Mask=~0u)
MCRegister getRegister() const
static ArgDescriptor createArg(const ArgDescriptor &Arg, unsigned Mask)
ArgDescriptor(unsigned Mask=~0u)
static ArgDescriptor createRegister(Register Reg, unsigned Mask=~0u)
unsigned getStackOffset() const
void print(raw_ostream &OS, const TargetRegisterInfo *TRI=nullptr) const
KernArgPreloadDescriptor()=default
SmallVector< MCRegister > Regs