LLVM 20.0.0git
Classes | Public Member Functions | Friends | List of all members
llvm::SIMachineFunctionInfo Class Referencefinal

This class keeps track of the SPI_SP_INPUT_ADDR config register, which tells the hardware which interpolation parameters to load. More...

#include "Target/AMDGPU/SIMachineFunctionInfo.h"

Inheritance diagram for llvm::SIMachineFunctionInfo:
Inheritance graph
[legend]

Classes

struct  VGPRSpillToAGPR
 

Public Member Functions

Register getVGPRForAGPRCopy () const
 
void setVGPRForAGPRCopy (Register NewVGPRForAGPRCopy)
 
bool isCalleeSavedReg (const MCPhysReg *CSRegs, MCPhysReg Reg) const
 
 SIMachineFunctionInfo (const SIMachineFunctionInfo &MFI)=default
 
 SIMachineFunctionInfo (const Function &F, const GCNSubtarget *STI)
 
MachineFunctionInfoclone (BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
 Make a functionally equivalent copy of this MachineFunctionInfo in MF.
 
bool initializeBaseYamlFields (const yaml::SIMachineFunctionInfo &YamlMFI, const MachineFunction &MF, PerFunctionMIParsingState &PFS, SMDiagnostic &Error, SMRange &SourceRange)
 
void reserveWWMRegister (Register Reg)
 
bool isWWMReg (Register Reg) const
 
void updateNonWWMRegMask (BitVector &RegMask)
 
BitVector getNonWWMRegMask () const
 
void clearNonWWMRegAllocMask ()
 
SIModeRegisterDefaults getMode () const
 
ArrayRef< SIRegisterInfo::SpilledReggetSGPRSpillToVirtualVGPRLanes (int FrameIndex) const
 
ArrayRef< RegistergetSGPRSpillVGPRs () const
 
ArrayRef< RegistergetSGPRSpillPhysVGPRs () const
 
const WWMSpillsMapgetWWMSpills () const
 
const ReservedRegSetgetWWMReservedRegs () const
 
ArrayRef< PrologEpilogSGPRSpill > getPrologEpilogSGPRSpills () const
 
GCNUserSGPRUsageInfogetUserSGPRInfo ()
 
const GCNUserSGPRUsageInfogetUserSGPRInfo () const
 
void addToPrologEpilogSGPRSpills (Register Reg, PrologEpilogSGPRSaveRestoreInfo SI)
 
bool hasPrologEpilogSGPRSpillEntry (Register Reg) const
 
Register getScratchSGPRCopyDstReg (Register Reg) const
 
void getAllScratchSGPRCopyDstRegs (SmallVectorImpl< Register > &Regs) const
 
bool checkIndexInPrologEpilogSGPRSpills (int FI) const
 
const PrologEpilogSGPRSaveRestoreInfogetPrologEpilogSGPRSaveRestoreInfo (Register Reg) const
 
ArrayRef< SIRegisterInfo::SpilledReggetSGPRSpillToPhysicalVGPRLanes (int FrameIndex) const
 
void setFlag (Register Reg, uint8_t Flag)
 
bool checkFlag (Register Reg, uint8_t Flag) const
 
bool hasVRegFlags ()
 
void allocateWWMSpill (MachineFunction &MF, Register VGPR, uint64_t Size=4, Align Alignment=Align(4))
 
void splitWWMSpillRegisters (MachineFunction &MF, SmallVectorImpl< std::pair< Register, int > > &CalleeSavedRegs, SmallVectorImpl< std::pair< Register, int > > &ScratchRegs) const
 
ArrayRef< MCPhysReggetAGPRSpillVGPRs () const
 
Register getSGPRForEXECCopy () const
 
void setSGPRForEXECCopy (Register Reg)
 
ArrayRef< MCPhysReggetVGPRSpillAGPRs () const
 
MCPhysReg getVGPRToAGPRSpill (int FrameIndex, unsigned Lane) const
 
void setVGPRToAGPRSpillDead (int FrameIndex)
 
void shiftWwmVGPRsToLowestRange (MachineFunction &MF, SmallVectorImpl< Register > &WWMVGPRs, BitVector &SavedVGPRs)
 
bool allocateSGPRSpillToVGPRLane (MachineFunction &MF, int FI, bool SpillToPhysVGPRLane=false, bool IsPrologEpilog=false)
 
bool allocateVGPRSpillToAGPR (MachineFunction &MF, int FI, bool isAGPRtoVGPR)
 Reserve AGPRs or VGPRs to support spilling for FrameIndex FI.
 
bool removeDeadFrameIndices (MachineFrameInfo &MFI, bool ResetSGPRSpillStackIDs)
 If ResetSGPRSpillStackIDs is true, reset the stack ID from sgpr-spill to the default stack.
 
int getScavengeFI (MachineFrameInfo &MFI, const SIRegisterInfo &TRI)
 
std::optional< int > getOptionalScavengeFI () const
 
unsigned getBytesInStackArgArea () const
 
void setBytesInStackArgArea (unsigned Bytes)
 
Register addPrivateSegmentBuffer (const SIRegisterInfo &TRI)
 
Register addDispatchPtr (const SIRegisterInfo &TRI)
 
Register addQueuePtr (const SIRegisterInfo &TRI)
 
Register addKernargSegmentPtr (const SIRegisterInfo &TRI)
 
Register addDispatchID (const SIRegisterInfo &TRI)
 
Register addFlatScratchInit (const SIRegisterInfo &TRI)
 
Register addPrivateSegmentSize (const SIRegisterInfo &TRI)
 
Register addImplicitBufferPtr (const SIRegisterInfo &TRI)
 
Register addLDSKernelId ()
 
SmallVectorImpl< MCRegister > * addPreloadedKernArg (const SIRegisterInfo &TRI, const TargetRegisterClass *RC, unsigned AllocSizeDWord, int KernArgIdx, int PaddingSGPRs)
 
Register addReservedUserSGPR ()
 Increment user SGPRs used for padding the argument list only.
 
Register addWorkGroupIDX ()
 
Register addWorkGroupIDY ()
 
Register addWorkGroupIDZ ()
 
Register addWorkGroupInfo ()
 
bool hasLDSKernelId () const
 
void setWorkItemIDX (ArgDescriptor Arg)
 
void setWorkItemIDY (ArgDescriptor Arg)
 
void setWorkItemIDZ (ArgDescriptor Arg)
 
Register addPrivateSegmentWaveByteOffset ()
 
void setPrivateSegmentWaveByteOffset (Register Reg)
 
bool hasWorkGroupIDX () const
 
bool hasWorkGroupIDY () const
 
bool hasWorkGroupIDZ () const
 
bool hasWorkGroupInfo () const
 
bool hasPrivateSegmentWaveByteOffset () const
 
bool hasWorkItemIDX () const
 
bool hasWorkItemIDY () const
 
bool hasWorkItemIDZ () const
 
bool hasImplicitArgPtr () const
 
AMDGPUFunctionArgInfogetArgInfo ()
 
const AMDGPUFunctionArgInfogetArgInfo () const
 
std::tuple< const ArgDescriptor *, const TargetRegisterClass *, LLTgetPreloadedValue (AMDGPUFunctionArgInfo::PreloadedValue Value) const
 
MCRegister getPreloadedReg (AMDGPUFunctionArgInfo::PreloadedValue Value) const
 
unsigned getGITPtrHigh () const
 
Register getGITPtrLoReg (const MachineFunction &MF) const
 
uint32_t get32BitAddressHighBits () const
 
unsigned getNumUserSGPRs () const
 
unsigned getNumPreloadedSGPRs () const
 
unsigned getNumKernargPreloadedSGPRs () const
 
Register getPrivateSegmentWaveByteOffsetSystemSGPR () const
 
Register getScratchRSrcReg () const
 Returns the physical register reserved for use as the resource descriptor for scratch accesses.
 
void setScratchRSrcReg (Register Reg)
 
Register getFrameOffsetReg () const
 
void setFrameOffsetReg (Register Reg)
 
void setStackPtrOffsetReg (Register Reg)
 
void setLongBranchReservedReg (Register Reg)
 
Register getStackPtrOffsetReg () const
 
Register getLongBranchReservedReg () const
 
Register getQueuePtrUserSGPR () const
 
Register getImplicitBufferPtrUserSGPR () const
 
bool hasSpilledSGPRs () const
 
void setHasSpilledSGPRs (bool Spill=true)
 
bool hasSpilledVGPRs () const
 
void setHasSpilledVGPRs (bool Spill=true)
 
bool hasNonSpillStackObjects () const
 
void setHasNonSpillStackObjects (bool StackObject=true)
 
bool isStackRealigned () const
 
void setIsStackRealigned (bool Realigned=true)
 
unsigned getNumSpilledSGPRs () const
 
unsigned getNumSpilledVGPRs () const
 
void addToSpilledSGPRs (unsigned num)
 
void addToSpilledVGPRs (unsigned num)
 
unsigned getPSInputAddr () const
 
unsigned getPSInputEnable () const
 
bool isPSInputAllocated (unsigned Index) const
 
void markPSInputAllocated (unsigned Index)
 
void markPSInputEnabled (unsigned Index)
 
bool returnsVoid () const
 
void setIfReturnsVoid (bool Value)
 
std::pair< unsigned, unsignedgetFlatWorkGroupSizes () const
 
unsigned getMinFlatWorkGroupSize () const
 
unsigned getMaxFlatWorkGroupSize () const
 
std::pair< unsigned, unsignedgetWavesPerEU () const
 
unsigned getMinWavesPerEU () const
 
unsigned getMaxWavesPerEU () const
 
const AMDGPUGWSResourcePseudoSourceValuegetGWSPSV (const AMDGPUTargetMachine &TM)
 
unsigned getOccupancy () const
 
unsigned getMinAllowedOccupancy () const
 
void limitOccupancy (const MachineFunction &MF)
 
void limitOccupancy (unsigned Limit)
 
void increaseOccupancy (const MachineFunction &MF, unsigned Limit)
 
unsigned getMaxMemoryClusterDWords () const
 
bool mayNeedAGPRs () const
 
bool mayUseAGPRs (const Function &F) const
 
bool usesAGPRs (const MachineFunction &MF) const
 
SmallVector< unsignedgetMaxNumWorkGroups () const
 
unsigned getMaxNumWorkGroupsX () const
 
unsigned getMaxNumWorkGroupsY () const
 
unsigned getMaxNumWorkGroupsZ () const
 
- Public Member Functions inherited from llvm::AMDGPUMachineFunction
 AMDGPUMachineFunction (const Function &F, const AMDGPUSubtarget &ST)
 
uint64_t getExplicitKernArgSize () const
 
Align getMaxKernArgAlign () const
 
uint32_t getLDSSize () const
 
uint32_t getGDSSize () const
 
bool isEntryFunction () const
 
bool isModuleEntryFunction () const
 
bool isChainFunction () const
 
bool isBottomOfStack () const
 
bool hasNoSignedZerosFPMath () const
 
bool isMemoryBound () const
 
bool needsWaveLimiter () const
 
bool hasInitWholeWave () const
 
void setInitWholeWave ()
 
unsigned allocateLDSGlobal (const DataLayout &DL, const GlobalVariable &GV)
 
unsigned allocateLDSGlobal (const DataLayout &DL, const GlobalVariable &GV, Align Trailing)
 
Align getDynLDSAlign () const
 
void setDynLDSAlign (const Function &F, const GlobalVariable &GV)
 
void setUsesDynamicLDS (bool DynLDS)
 
bool isDynamicLDSUsed () const
 
- Public Member Functions inherited from llvm::MachineFunctionInfo
virtual ~MachineFunctionInfo ()
 
virtual MachineFunctionInfoclone (BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const
 Make a functionally equivalent copy of this MachineFunctionInfo in MF.
 

Friends

class GCNTargetMachine
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::AMDGPUMachineFunction
static std::optional< uint32_tgetLDSKernelIdMetadata (const Function &F)
 
static std::optional< uint32_tgetLDSAbsoluteAddress (const GlobalValue &GV)
 
- Static Public Member Functions inherited from llvm::MachineFunctionInfo
template<typename FuncInfoTy , typename SubtargetTy = TargetSubtargetInfo>
static FuncInfoTy * create (BumpPtrAllocator &Allocator, const Function &F, const SubtargetTy *STI)
 Factory function: default behavior is to call new using the supplied allocator.
 
template<typename Ty >
static Ty * create (BumpPtrAllocator &Allocator, const Ty &MFI)
 
- Protected Attributes inherited from llvm::AMDGPUMachineFunction
uint64_t ExplicitKernArgSize = 0
 
Align MaxKernArgAlign
 
uint32_t LDSSize = 0
 Number of bytes in the LDS that are being used.
 
uint32_t GDSSize = 0
 
uint32_t StaticLDSSize = 0
 Number of bytes in the LDS allocated statically.
 
uint32_t StaticGDSSize = 0
 
Align DynLDSAlign
 Align for dynamic shared memory if any.
 
bool UsesDynamicLDS = false
 
bool IsEntryFunction = false
 
bool IsModuleEntryFunction = false
 
bool IsChainFunction = false
 
bool NoSignedZerosFPMath = false
 
bool MemoryBound = false
 
bool WaveLimiter = false
 
bool HasInitWholeWave = false
 

Detailed Description

This class keeps track of the SPI_SP_INPUT_ADDR config register, which tells the hardware which interpolation parameters to load.

Definition at line 389 of file SIMachineFunctionInfo.h.

Constructor & Destructor Documentation

◆ SIMachineFunctionInfo() [1/2]

llvm::SIMachineFunctionInfo::SIMachineFunctionInfo ( const SIMachineFunctionInfo MFI)
default

◆ SIMachineFunctionInfo() [2/2]

SIMachineFunctionInfo::SIMachineFunctionInfo ( const Function F,
const GCNSubtarget STI 
)

Member Function Documentation

◆ addDispatchID()

Register SIMachineFunctionInfo::addDispatchID ( const SIRegisterInfo TRI)

Definition at line 223 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addDispatchPtr()

Register SIMachineFunctionInfo::addDispatchPtr ( const SIRegisterInfo TRI)

Definition at line 201 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addFlatScratchInit()

Register SIMachineFunctionInfo::addFlatScratchInit ( const SIRegisterInfo TRI)

Definition at line 230 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addImplicitBufferPtr()

Register SIMachineFunctionInfo::addImplicitBufferPtr ( const SIRegisterInfo TRI)

Definition at line 243 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addKernargSegmentPtr()

Register SIMachineFunctionInfo::addKernargSegmentPtr ( const SIRegisterInfo TRI)

Definition at line 215 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addLDSKernelId()

Register SIMachineFunctionInfo::addLDSKernelId ( )

Definition at line 250 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister().

◆ addPreloadedKernArg()

SmallVectorImpl< MCRegister > * SIMachineFunctionInfo::addPreloadedKernArg ( const SIRegisterInfo TRI,
const TargetRegisterClass RC,
unsigned  AllocSizeDWord,
int  KernArgIdx,
int  PaddingSGPRs 
)

◆ addPrivateSegmentBuffer()

Register SIMachineFunctionInfo::addPrivateSegmentBuffer ( const SIRegisterInfo TRI)

Definition at line 192 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addPrivateSegmentSize()

Register SIMachineFunctionInfo::addPrivateSegmentSize ( const SIRegisterInfo TRI)

Definition at line 237 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister().

◆ addPrivateSegmentWaveByteOffset()

Register llvm::SIMachineFunctionInfo::addPrivateSegmentWaveByteOffset ( )
inline

Definition at line 847 of file SIMachineFunctionInfo.h.

References llvm::ArgDescriptor::createRegister().

◆ addQueuePtr()

Register SIMachineFunctionInfo::addQueuePtr ( const SIRegisterInfo TRI)

Definition at line 208 of file SIMachineFunctionInfo.cpp.

References llvm::ArgDescriptor::createRegister(), and TRI.

◆ addReservedUserSGPR()

Register llvm::SIMachineFunctionInfo::addReservedUserSGPR ( )
inline

Increment user SGPRs used for padding the argument list only.

Definition at line 801 of file SIMachineFunctionInfo.h.

◆ addToPrologEpilogSGPRSpills()

void llvm::SIMachineFunctionInfo::addToPrologEpilogSGPRSpills ( Register  Reg,
PrologEpilogSGPRSaveRestoreInfo  SI 
)
inline

◆ addToSpilledSGPRs()

void llvm::SIMachineFunctionInfo::addToSpilledSGPRs ( unsigned  num)
inline

◆ addToSpilledVGPRs()

void llvm::SIMachineFunctionInfo::addToSpilledVGPRs ( unsigned  num)
inline

◆ addWorkGroupIDX()

Register llvm::SIMachineFunctionInfo::addWorkGroupIDX ( )
inline

Definition at line 808 of file SIMachineFunctionInfo.h.

References llvm::ArgDescriptor::createRegister().

◆ addWorkGroupIDY()

Register llvm::SIMachineFunctionInfo::addWorkGroupIDY ( )
inline

Definition at line 814 of file SIMachineFunctionInfo.h.

References llvm::ArgDescriptor::createRegister().

◆ addWorkGroupIDZ()

Register llvm::SIMachineFunctionInfo::addWorkGroupIDZ ( )
inline

Definition at line 820 of file SIMachineFunctionInfo.h.

References llvm::ArgDescriptor::createRegister().

◆ addWorkGroupInfo()

Register llvm::SIMachineFunctionInfo::addWorkGroupInfo ( )
inline

Definition at line 826 of file SIMachineFunctionInfo.h.

References llvm::ArgDescriptor::createRegister().

◆ allocateSGPRSpillToVGPRLane()

bool SIMachineFunctionInfo::allocateSGPRSpillToVGPRLane ( MachineFunction MF,
int  FI,
bool  SpillToPhysVGPRLane = false,
bool  IsPrologEpilog = false 
)

◆ allocateVGPRSpillToAGPR()

bool SIMachineFunctionInfo::allocateVGPRSpillToAGPR ( MachineFunction MF,
int  FI,
bool  isAGPRtoVGPR 
)

◆ allocateWWMSpill()

void SIMachineFunctionInfo::allocateWWMSpill ( MachineFunction MF,
Register  VGPR,
uint64_t  Size = 4,
Align  Alignment = Align(4) 
)

◆ checkFlag()

bool llvm::SIMachineFunctionInfo::checkFlag ( Register  Reg,
uint8_t  Flag 
) const
inline

◆ checkIndexInPrologEpilogSGPRSpills()

bool llvm::SIMachineFunctionInfo::checkIndexInPrologEpilogSGPRSpills ( int  FI) const
inline

◆ clearNonWWMRegAllocMask()

void llvm::SIMachineFunctionInfo::clearNonWWMRegAllocMask ( )
inline

Definition at line 613 of file SIMachineFunctionInfo.h.

References llvm::BitVector::clear().

◆ clone()

MachineFunctionInfo * SIMachineFunctionInfo::clone ( BumpPtrAllocator Allocator,
MachineFunction DestMF,
const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &  Src2DstMBB 
) const
overridevirtual

Make a functionally equivalent copy of this MachineFunctionInfo in MF.

This requires remapping MachineBasicBlock references from the original parent to values in the new function. Targets may assume that virtual register and frame index values are preserved in the new function.

Reimplemented from llvm::MachineFunctionInfo.

Definition at line 178 of file SIMachineFunctionInfo.cpp.

References llvm::MachineFunction::cloneInfo().

◆ get32BitAddressHighBits()

uint32_t llvm::SIMachineFunctionInfo::get32BitAddressHighBits ( ) const
inline

Definition at line 918 of file SIMachineFunctionInfo.h.

◆ getAGPRSpillVGPRs()

ArrayRef< MCPhysReg > llvm::SIMachineFunctionInfo::getAGPRSpillVGPRs ( ) const
inline

◆ getAllScratchSGPRCopyDstRegs()

void llvm::SIMachineFunctionInfo::getAllScratchSGPRCopyDstRegs ( SmallVectorImpl< Register > &  Regs) const
inline

◆ getArgInfo() [1/2]

AMDGPUFunctionArgInfo & llvm::SIMachineFunctionInfo::getArgInfo ( )
inline

◆ getArgInfo() [2/2]

const AMDGPUFunctionArgInfo & llvm::SIMachineFunctionInfo::getArgInfo ( ) const
inline

Definition at line 898 of file SIMachineFunctionInfo.h.

◆ getBytesInStackArgArea()

unsigned llvm::SIMachineFunctionInfo::getBytesInStackArgArea ( ) const
inline

◆ getFlatWorkGroupSizes()

std::pair< unsigned, unsigned > llvm::SIMachineFunctionInfo::getFlatWorkGroupSizes ( ) const
inline
Returns
A pair of default/requested minimum/maximum flat work group sizes for this function.

Definition at line 1061 of file SIMachineFunctionInfo.h.

◆ getFrameOffsetReg()

Register llvm::SIMachineFunctionInfo::getFrameOffsetReg ( ) const
inline

◆ getGITPtrHigh()

unsigned llvm::SIMachineFunctionInfo::getGITPtrHigh ( ) const
inline

Definition at line 912 of file SIMachineFunctionInfo.h.

Referenced by buildGitPtr().

◆ getGITPtrLoReg()

Register SIMachineFunctionInfo::getGITPtrLoReg ( const MachineFunction MF) const

◆ getGWSPSV()

const AMDGPUGWSResourcePseudoSourceValue * llvm::SIMachineFunctionInfo::getGWSPSV ( const AMDGPUTargetMachine TM)
inline

◆ getImplicitBufferPtrUserSGPR()

Register llvm::SIMachineFunctionInfo::getImplicitBufferPtrUserSGPR ( ) const
inline

Definition at line 979 of file SIMachineFunctionInfo.h.

◆ getLongBranchReservedReg()

Register llvm::SIMachineFunctionInfo::getLongBranchReservedReg ( ) const
inline

◆ getMaxFlatWorkGroupSize()

unsigned llvm::SIMachineFunctionInfo::getMaxFlatWorkGroupSize ( ) const
inline
Returns
Default/requested maximum flat work group size for this function.

Definition at line 1071 of file SIMachineFunctionInfo.h.

◆ getMaxMemoryClusterDWords()

unsigned llvm::SIMachineFunctionInfo::getMaxMemoryClusterDWords ( ) const
inline

Definition at line 1119 of file SIMachineFunctionInfo.h.

Referenced by llvm::SIInstrInfo::shouldClusterMemOps().

◆ getMaxNumWorkGroups()

SmallVector< unsigned > llvm::SIMachineFunctionInfo::getMaxNumWorkGroups ( ) const
inline
Returns
Default/requested number of work groups for this function.

Definition at line 1133 of file SIMachineFunctionInfo.h.

◆ getMaxNumWorkGroupsX()

unsigned llvm::SIMachineFunctionInfo::getMaxNumWorkGroupsX ( ) const
inline

Definition at line 1135 of file SIMachineFunctionInfo.h.

◆ getMaxNumWorkGroupsY()

unsigned llvm::SIMachineFunctionInfo::getMaxNumWorkGroupsY ( ) const
inline

Definition at line 1136 of file SIMachineFunctionInfo.h.

◆ getMaxNumWorkGroupsZ()

unsigned llvm::SIMachineFunctionInfo::getMaxNumWorkGroupsZ ( ) const
inline

Definition at line 1137 of file SIMachineFunctionInfo.h.

◆ getMaxWavesPerEU()

unsigned llvm::SIMachineFunctionInfo::getMaxWavesPerEU ( ) const
inline
Returns
Default/requested maximum number of waves per execution unit.

Definition at line 1087 of file SIMachineFunctionInfo.h.

Referenced by llvm::UnclusteredHighRPStage::initGCNSchedStage(), and limitOccupancy().

◆ getMinAllowedOccupancy()

unsigned llvm::SIMachineFunctionInfo::getMinAllowedOccupancy ( ) const
inline

◆ getMinFlatWorkGroupSize()

unsigned llvm::SIMachineFunctionInfo::getMinFlatWorkGroupSize ( ) const
inline
Returns
Default/requested minimum flat work group size for this function.

Definition at line 1066 of file SIMachineFunctionInfo.h.

◆ getMinWavesPerEU()

unsigned llvm::SIMachineFunctionInfo::getMinWavesPerEU ( ) const
inline
Returns
Default/requested minimum number of waves per execution unit.

Definition at line 1082 of file SIMachineFunctionInfo.h.

Referenced by llvm::GCNSchedStage::mayCauseSpilling().

◆ getMode()

SIModeRegisterDefaults llvm::SIMachineFunctionInfo::getMode ( ) const
inline

◆ getNonWWMRegMask()

BitVector llvm::SIMachineFunctionInfo::getNonWWMRegMask ( ) const
inline

Definition at line 612 of file SIMachineFunctionInfo.h.

Referenced by llvm::SIRegisterInfo::getReservedRegs().

◆ getNumKernargPreloadedSGPRs()

unsigned llvm::SIMachineFunctionInfo::getNumKernargPreloadedSGPRs ( ) const
inline

◆ getNumPreloadedSGPRs()

unsigned llvm::SIMachineFunctionInfo::getNumPreloadedSGPRs ( ) const
inline

◆ getNumSpilledSGPRs()

unsigned llvm::SIMachineFunctionInfo::getNumSpilledSGPRs ( ) const
inline

Definition at line 1015 of file SIMachineFunctionInfo.h.

◆ getNumSpilledVGPRs()

unsigned llvm::SIMachineFunctionInfo::getNumSpilledVGPRs ( ) const
inline

Definition at line 1019 of file SIMachineFunctionInfo.h.

◆ getNumUserSGPRs()

unsigned llvm::SIMachineFunctionInfo::getNumUserSGPRs ( ) const
inline

Definition at line 922 of file SIMachineFunctionInfo.h.

◆ getOccupancy()

unsigned llvm::SIMachineFunctionInfo::getOccupancy ( ) const
inline

Definition at line 1096 of file SIMachineFunctionInfo.h.

Referenced by llvm::GCNSchedStrategy::initialize().

◆ getOptionalScavengeFI()

std::optional< int > llvm::SIMachineFunctionInfo::getOptionalScavengeFI ( ) const
inline

◆ getPreloadedReg()

MCRegister llvm::SIMachineFunctionInfo::getPreloadedReg ( AMDGPUFunctionArgInfo::PreloadedValue  Value) const
inline

◆ getPreloadedValue()

std::tuple< const ArgDescriptor *, const TargetRegisterClass *, LLT > llvm::SIMachineFunctionInfo::getPreloadedValue ( AMDGPUFunctionArgInfo::PreloadedValue  Value) const
inline

◆ getPrivateSegmentWaveByteOffsetSystemSGPR()

Register llvm::SIMachineFunctionInfo::getPrivateSegmentWaveByteOffsetSystemSGPR ( ) const
inline

Definition at line 934 of file SIMachineFunctionInfo.h.

◆ getPrologEpilogSGPRSaveRestoreInfo()

const PrologEpilogSGPRSaveRestoreInfo & llvm::SIMachineFunctionInfo::getPrologEpilogSGPRSaveRestoreInfo ( Register  Reg) const
inline

◆ getPrologEpilogSGPRSpills()

ArrayRef< PrologEpilogSGPRSpill > llvm::SIMachineFunctionInfo::getPrologEpilogSGPRSpills ( ) const
inline

◆ getPSInputAddr()

unsigned llvm::SIMachineFunctionInfo::getPSInputAddr ( ) const
inline

Definition at line 1031 of file SIMachineFunctionInfo.h.

◆ getPSInputEnable()

unsigned llvm::SIMachineFunctionInfo::getPSInputEnable ( ) const
inline

Definition at line 1035 of file SIMachineFunctionInfo.h.

◆ getQueuePtrUserSGPR()

Register llvm::SIMachineFunctionInfo::getQueuePtrUserSGPR ( ) const
inline

Definition at line 975 of file SIMachineFunctionInfo.h.

◆ getScavengeFI()

int SIMachineFunctionInfo::getScavengeFI ( MachineFrameInfo MFI,
const SIRegisterInfo TRI 
)

◆ getScratchRSrcReg()

Register llvm::SIMachineFunctionInfo::getScratchRSrcReg ( ) const
inline

Returns the physical register reserved for use as the resource descriptor for scratch accesses.

Definition at line 940 of file SIMachineFunctionInfo.h.

Referenced by llvm::SIRegisterInfo::buildSpillLoadStore(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::getReservedRegs(), and llvm::AMDGPUCallLowering::handleImplicitCallArguments().

◆ getScratchSGPRCopyDstReg()

Register llvm::SIMachineFunctionInfo::getScratchSGPRCopyDstReg ( Register  Reg) const
inline

◆ getSGPRForEXECCopy()

Register llvm::SIMachineFunctionInfo::getSGPRForEXECCopy ( ) const
inline

◆ getSGPRSpillPhysVGPRs()

ArrayRef< Register > llvm::SIMachineFunctionInfo::getSGPRSpillPhysVGPRs ( ) const
inline

◆ getSGPRSpillToPhysicalVGPRLanes()

ArrayRef< SIRegisterInfo::SpilledReg > llvm::SIMachineFunctionInfo::getSGPRSpillToPhysicalVGPRLanes ( int  FrameIndex) const
inline

◆ getSGPRSpillToVirtualVGPRLanes()

ArrayRef< SIRegisterInfo::SpilledReg > llvm::SIMachineFunctionInfo::getSGPRSpillToVirtualVGPRLanes ( int  FrameIndex) const
inline

◆ getSGPRSpillVGPRs()

ArrayRef< Register > llvm::SIMachineFunctionInfo::getSGPRSpillVGPRs ( ) const
inline

Definition at line 625 of file SIMachineFunctionInfo.h.

◆ getStackPtrOffsetReg()

Register llvm::SIMachineFunctionInfo::getStackPtrOffsetReg ( ) const
inline

◆ getUserSGPRInfo() [1/2]

GCNUserSGPRUsageInfo & llvm::SIMachineFunctionInfo::getUserSGPRInfo ( )
inline

◆ getUserSGPRInfo() [2/2]

const GCNUserSGPRUsageInfo & llvm::SIMachineFunctionInfo::getUserSGPRInfo ( ) const
inline

Definition at line 638 of file SIMachineFunctionInfo.h.

◆ getVGPRForAGPRCopy()

Register llvm::SIMachineFunctionInfo::getVGPRForAGPRCopy ( ) const
inline

◆ getVGPRSpillAGPRs()

ArrayRef< MCPhysReg > llvm::SIMachineFunctionInfo::getVGPRSpillAGPRs ( ) const
inline

◆ getVGPRToAGPRSpill()

MCPhysReg llvm::SIMachineFunctionInfo::getVGPRToAGPRSpill ( int  FrameIndex,
unsigned  Lane 
) const
inline

◆ getWavesPerEU()

std::pair< unsigned, unsigned > llvm::SIMachineFunctionInfo::getWavesPerEU ( ) const
inline
Returns
A pair of default/requested minimum/maximum number of waves per execution unit.

Definition at line 1077 of file SIMachineFunctionInfo.h.

Referenced by llvm::GCNSubtarget::getMaxNumSGPRs(), and llvm::GCNSubtarget::getMaxNumVGPRs().

◆ getWWMReservedRegs()

const ReservedRegSet & llvm::SIMachineFunctionInfo::getWWMReservedRegs ( ) const
inline

◆ getWWMSpills()

const WWMSpillsMap & llvm::SIMachineFunctionInfo::getWWMSpills ( ) const
inline

◆ hasImplicitArgPtr()

bool llvm::SIMachineFunctionInfo::hasImplicitArgPtr ( ) const
inline

Definition at line 890 of file SIMachineFunctionInfo.h.

◆ hasLDSKernelId()

bool llvm::SIMachineFunctionInfo::hasLDSKernelId ( ) const
inline

Definition at line 832 of file SIMachineFunctionInfo.h.

◆ hasNonSpillStackObjects()

bool llvm::SIMachineFunctionInfo::hasNonSpillStackObjects ( ) const
inline

Definition at line 999 of file SIMachineFunctionInfo.h.

◆ hasPrivateSegmentWaveByteOffset()

bool llvm::SIMachineFunctionInfo::hasPrivateSegmentWaveByteOffset ( ) const
inline

Definition at line 874 of file SIMachineFunctionInfo.h.

◆ hasPrologEpilogSGPRSpillEntry()

bool llvm::SIMachineFunctionInfo::hasPrologEpilogSGPRSpillEntry ( Register  Reg) const
inline

◆ hasSpilledSGPRs()

bool llvm::SIMachineFunctionInfo::hasSpilledSGPRs ( ) const
inline

◆ hasSpilledVGPRs()

bool llvm::SIMachineFunctionInfo::hasSpilledVGPRs ( ) const
inline

◆ hasVRegFlags()

bool llvm::SIMachineFunctionInfo::hasVRegFlags ( )
inline

Definition at line 724 of file SIMachineFunctionInfo.h.

◆ hasWorkGroupIDX()

bool llvm::SIMachineFunctionInfo::hasWorkGroupIDX ( ) const
inline

Definition at line 858 of file SIMachineFunctionInfo.h.

◆ hasWorkGroupIDY()

bool llvm::SIMachineFunctionInfo::hasWorkGroupIDY ( ) const
inline

Definition at line 862 of file SIMachineFunctionInfo.h.

◆ hasWorkGroupIDZ()

bool llvm::SIMachineFunctionInfo::hasWorkGroupIDZ ( ) const
inline

Definition at line 866 of file SIMachineFunctionInfo.h.

Referenced by llvm::AMDGPULegalizerInfo::loadInputValue().

◆ hasWorkGroupInfo()

bool llvm::SIMachineFunctionInfo::hasWorkGroupInfo ( ) const
inline

Definition at line 870 of file SIMachineFunctionInfo.h.

◆ hasWorkItemIDX()

bool llvm::SIMachineFunctionInfo::hasWorkItemIDX ( ) const
inline

Definition at line 878 of file SIMachineFunctionInfo.h.

◆ hasWorkItemIDY()

bool llvm::SIMachineFunctionInfo::hasWorkItemIDY ( ) const
inline

Definition at line 882 of file SIMachineFunctionInfo.h.

◆ hasWorkItemIDZ()

bool llvm::SIMachineFunctionInfo::hasWorkItemIDZ ( ) const
inline

Definition at line 886 of file SIMachineFunctionInfo.h.

◆ increaseOccupancy()

void llvm::SIMachineFunctionInfo::increaseOccupancy ( const MachineFunction MF,
unsigned  Limit 
)
inline

◆ initializeBaseYamlFields()

bool SIMachineFunctionInfo::initializeBaseYamlFields ( const yaml::SIMachineFunctionInfo YamlMFI,
const MachineFunction MF,
PerFunctionMIParsingState PFS,
SMDiagnostic Error,
SMRange SourceRange 
)

◆ isCalleeSavedReg()

bool SIMachineFunctionInfo::isCalleeSavedReg ( const MCPhysReg CSRegs,
MCPhysReg  Reg 
) const

Definition at line 321 of file SIMachineFunctionInfo.cpp.

References I.

Referenced by splitWWMSpillRegisters().

◆ isPSInputAllocated()

bool llvm::SIMachineFunctionInfo::isPSInputAllocated ( unsigned  Index) const
inline

Definition at line 1039 of file SIMachineFunctionInfo.h.

References Index.

◆ isStackRealigned()

bool llvm::SIMachineFunctionInfo::isStackRealigned ( ) const
inline

Definition at line 1007 of file SIMachineFunctionInfo.h.

Referenced by llvm::SIFrameLowering::emitEpilogue().

◆ isWWMReg()

bool llvm::SIMachineFunctionInfo::isWWMReg ( Register  Reg) const
inline

◆ limitOccupancy() [1/2]

void SIMachineFunctionInfo::limitOccupancy ( const MachineFunction MF)

◆ limitOccupancy() [2/2]

void llvm::SIMachineFunctionInfo::limitOccupancy ( unsigned  Limit)
inline

Definition at line 1108 of file SIMachineFunctionInfo.h.

◆ markPSInputAllocated()

void llvm::SIMachineFunctionInfo::markPSInputAllocated ( unsigned  Index)
inline

Definition at line 1043 of file SIMachineFunctionInfo.h.

References Index.

◆ markPSInputEnabled()

void llvm::SIMachineFunctionInfo::markPSInputEnabled ( unsigned  Index)
inline

Definition at line 1047 of file SIMachineFunctionInfo.h.

References Index.

◆ mayNeedAGPRs()

bool llvm::SIMachineFunctionInfo::mayNeedAGPRs ( ) const
inline

Definition at line 1121 of file SIMachineFunctionInfo.h.

◆ mayUseAGPRs()

bool SIMachineFunctionInfo::mayUseAGPRs ( const Function F) const

Definition at line 782 of file SIMachineFunctionInfo.cpp.

References F.

Referenced by SIMachineFunctionInfo().

◆ removeDeadFrameIndices()

bool SIMachineFunctionInfo::removeDeadFrameIndices ( MachineFrameInfo MFI,
bool  ResetSGPRSpillStackIDs 
)

◆ reserveWWMRegister()

void llvm::SIMachineFunctionInfo::reserveWWMRegister ( Register  Reg)
inline

◆ returnsVoid()

bool llvm::SIMachineFunctionInfo::returnsVoid ( ) const
inline

Definition at line 1051 of file SIMachineFunctionInfo.h.

Referenced by llvm::AMDGPUCallLowering::lowerReturn().

◆ setBytesInStackArgArea()

void llvm::SIMachineFunctionInfo::setBytesInStackArgArea ( unsigned  Bytes)
inline

Definition at line 781 of file SIMachineFunctionInfo.h.

◆ setFlag()

void llvm::SIMachineFunctionInfo::setFlag ( Register  Reg,
uint8_t  Flag 
)
inline

Definition at line 711 of file SIMachineFunctionInfo.h.

References assert(), and Reg.

Referenced by llvm::GCNTargetMachine::parseMachineFunctionInfo().

◆ setFrameOffsetReg()

void llvm::SIMachineFunctionInfo::setFrameOffsetReg ( Register  Reg)
inline

Definition at line 953 of file SIMachineFunctionInfo.h.

References assert(), and Reg.

◆ setHasNonSpillStackObjects()

void llvm::SIMachineFunctionInfo::setHasNonSpillStackObjects ( bool  StackObject = true)
inline

Definition at line 1003 of file SIMachineFunctionInfo.h.

◆ setHasSpilledSGPRs()

void llvm::SIMachineFunctionInfo::setHasSpilledSGPRs ( bool  Spill = true)
inline

◆ setHasSpilledVGPRs()

void llvm::SIMachineFunctionInfo::setHasSpilledVGPRs ( bool  Spill = true)
inline

Definition at line 995 of file SIMachineFunctionInfo.h.

Referenced by llvm::SIInstrInfo::storeRegToStackSlot().

◆ setIfReturnsVoid()

void llvm::SIMachineFunctionInfo::setIfReturnsVoid ( bool  Value)
inline

Definition at line 1055 of file SIMachineFunctionInfo.h.

Referenced by llvm::AMDGPUCallLowering::lowerReturn().

◆ setIsStackRealigned()

void llvm::SIMachineFunctionInfo::setIsStackRealigned ( bool  Realigned = true)
inline

Definition at line 1011 of file SIMachineFunctionInfo.h.

Referenced by llvm::SIFrameLowering::emitPrologue().

◆ setLongBranchReservedReg()

void llvm::SIMachineFunctionInfo::setLongBranchReservedReg ( Register  Reg)
inline

◆ setPrivateSegmentWaveByteOffset()

void llvm::SIMachineFunctionInfo::setPrivateSegmentWaveByteOffset ( Register  Reg)
inline

Definition at line 854 of file SIMachineFunctionInfo.h.

References llvm::ArgDescriptor::createRegister(), and Reg.

◆ setScratchRSrcReg()

void llvm::SIMachineFunctionInfo::setScratchRSrcReg ( Register  Reg)
inline

Definition at line 944 of file SIMachineFunctionInfo.h.

References assert(), and Reg.

◆ setSGPRForEXECCopy()

void llvm::SIMachineFunctionInfo::setSGPRForEXECCopy ( Register  Reg)
inline

Definition at line 740 of file SIMachineFunctionInfo.h.

References Reg.

Referenced by llvm::SIFrameLowering::determinePrologEpilogSGPRSaves().

◆ setStackPtrOffsetReg()

void llvm::SIMachineFunctionInfo::setStackPtrOffsetReg ( Register  Reg)
inline

Definition at line 958 of file SIMachineFunctionInfo.h.

References assert(), and Reg.

◆ setVGPRForAGPRCopy()

void llvm::SIMachineFunctionInfo::setVGPRForAGPRCopy ( Register  NewVGPRForAGPRCopy)
inline

◆ setVGPRToAGPRSpillDead()

void llvm::SIMachineFunctionInfo::setVGPRToAGPRSpillDead ( int  FrameIndex)
inline

◆ setWorkItemIDX()

void llvm::SIMachineFunctionInfo::setWorkItemIDX ( ArgDescriptor  Arg)
inline

Definition at line 835 of file SIMachineFunctionInfo.h.

◆ setWorkItemIDY()

void llvm::SIMachineFunctionInfo::setWorkItemIDY ( ArgDescriptor  Arg)
inline

Definition at line 839 of file SIMachineFunctionInfo.h.

◆ setWorkItemIDZ()

void llvm::SIMachineFunctionInfo::setWorkItemIDZ ( ArgDescriptor  Arg)
inline

Definition at line 843 of file SIMachineFunctionInfo.h.

◆ shiftWwmVGPRsToLowestRange()

void SIMachineFunctionInfo::shiftWwmVGPRsToLowestRange ( MachineFunction MF,
SmallVectorImpl< Register > &  WWMVGPRs,
BitVector SavedVGPRs 
)

◆ splitWWMSpillRegisters()

void SIMachineFunctionInfo::splitWWMSpillRegisters ( MachineFunction MF,
SmallVectorImpl< std::pair< Register, int > > &  CalleeSavedRegs,
SmallVectorImpl< std::pair< Register, int > > &  ScratchRegs 
) const

◆ updateNonWWMRegMask()

void llvm::SIMachineFunctionInfo::updateNonWWMRegMask ( BitVector RegMask)
inline

Definition at line 611 of file SIMachineFunctionInfo.h.

◆ usesAGPRs()

bool SIMachineFunctionInfo::usesAGPRs ( const MachineFunction MF) const

Friends And Related Function Documentation

◆ GCNTargetMachine

friend class GCNTargetMachine
friend

Definition at line 391 of file SIMachineFunctionInfo.h.


The documentation for this class was generated from the following files: