9#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUARGUMENTUSAGEINFO_H
10#define LLVM_LIB_TARGET_AMDGPU_AMDGPUARGUMENTUSAGEINFO_H
29 std::variant<std::monostate, MCRegister, unsigned> Val;
39 Ret.Val =
Reg.asMCReg();
56 bool isSet()
const {
return !std::holds_alternative<std::monostate>(Val); }
58 explicit operator bool()
const {
62 bool isRegister()
const {
return std::holds_alternative<MCRegister>(Val); }
70 assert(Mask &&
"Invalid mask.");
163 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
MCRegisterClass - Base class of TargetRegisterClass.
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.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)
MCRegisterClass TargetRegisterClass
@ 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
static MCRegister getPrivateSegmentBufferReg(CallingConv::ID CC)
Returns the register a non-entry function with calling convention CC expects the private segment buff...
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