LLVM 22.0.0git
llvm::R600Subtarget Class Referencefinal

#include "Target/AMDGPU/R600Subtarget.h"

Inheritance diagram for llvm::R600Subtarget:
[legend]

Public Member Functions

 R600Subtarget (const Triple &TT, StringRef CPU, StringRef FS, const TargetMachine &TM)
 ~R600Subtarget () override
const R600InstrInfogetInstrInfo () const override
const R600FrameLoweringgetFrameLowering () const override
const R600TargetLoweringgetTargetLowering () const override
const R600RegisterInfogetRegisterInfo () const override
const InstrItineraryDatagetInstrItineraryData () const override
const SelectionDAGTargetInfogetSelectionDAGInfo () const override
void ParseSubtargetFeatures (StringRef CPU, StringRef TuneCPU, StringRef FS)
Generation getGeneration () const
Align getStackAlignment () const
R600SubtargetinitializeSubtargetDependencies (const Triple &TT, StringRef GPU, StringRef FS)
bool hasBFE () const
bool hasBFI () const
bool hasBCNT (unsigned Size) const
bool hasBORROW () const
bool hasCARRY () const
bool hasCaymanISA () const
bool hasFFBL () const
bool hasFFBH () const
bool hasFMA () const
bool hasCFAluBug () const
bool hasVertexCache () const
short getTexVTXClauseSize () const
bool enableMachineScheduler () const override
bool enableSubRegLiveness () const override
unsigned getMaxWorkGroupsPerCU (unsigned FlatWorkGroupSize) const override
unsigned getMinFlatWorkGroupSize () const override
unsigned getMaxFlatWorkGroupSize () const override
unsigned getWavesPerEUForWorkGroup (unsigned FlatWorkGroupSize) const override
unsigned getMinWavesPerEU () const override
bool requiresDisjointEarlyClobberAndUndef () const override
Public Member Functions inherited from llvm::AMDGPUSubtarget
 AMDGPUSubtarget (Triple TT)
std::pair< unsigned, unsignedgetDefaultFlatWorkGroupSize (CallingConv::ID CC) const
std::pair< unsigned, unsignedgetFlatWorkGroupSizes (const Function &F) const
std::optional< unsignedgetReqdWorkGroupSize (const Function &F, unsigned Dim) const
bool hasWavefrontsEvenlySplittingXDim (const Function &F, bool REquiresUniformYZ=false) const
std::pair< unsigned, unsignedgetWavesPerEU (const Function &F) const
std::pair< unsigned, unsignedgetWavesPerEU (const Function &F, std::pair< unsigned, unsigned > FlatWorkGroupSizes) const
 Overload which uses the specified values for the flat work group sizes, rather than querying the function itself.
std::pair< unsigned, unsignedgetWavesPerEU (std::pair< unsigned, unsigned > FlatWorkGroupSizes, unsigned LDSBytes, const Function &F) const
 Overload which uses the specified values for the flat workgroup sizes and LDS space rather than querying the function itself.
std::pair< unsigned, unsignedgetEffectiveWavesPerEU (std::pair< unsigned, unsigned > RequestedWavesPerEU, std::pair< unsigned, unsigned > FlatWorkGroupSizes, unsigned LDSBytes) const
 Returns the target minimum/maximum number of waves per EU.
unsigned getMaxLocalMemSizeWithWaveCount (unsigned WaveCount, const Function &) const
 Return the amount of LDS that can be used that will not restrict the occupancy lower than WaveCount.
std::pair< unsigned, unsignedgetOccupancyWithWorkGroupSizes (uint32_t LDSBytes, const Function &F) const
 Subtarget's minimum/maximum occupancy, in number of waves per EU, that can be achieved when the only function running on a CU is F and each workgroup running the function requires LDSBytes bytes of LDS space.
std::pair< unsigned, unsignedgetOccupancyWithWorkGroupSizes (uint32_t LDSBytes, std::pair< unsigned, unsigned > FlatWorkGroupSizes) const
 Overload which uses the specified values for the flat work group sizes, rather than querying the function itself.
std::pair< unsigned, unsignedgetOccupancyWithWorkGroupSizes (const MachineFunction &MF) const
 Subtarget's minimum/maximum occupancy, in number of waves per EU, that can be achieved when the only function running on a CU is MF.
bool isAmdHsaOS () const
bool isAmdPalOS () const
bool isMesa3DOS () const
bool isMesaKernel (const Function &F) const
bool isAmdHsaOrMesa (const Function &F) const
bool isGCN () const
bool isGCN3Encoding () const
bool has16BitInsts () const
bool hasTrue16BitInsts () const
 Return true if the subtarget supports True16 instructions.
bool useRealTrue16Insts () const
 Return true if real (non-fake) variants of True16 instructions using 16-bit registers should be code-generated.
bool hasD16Writes32BitVgpr () const
bool hasBF16TransInsts () const
bool hasBF16ConversionInsts () const
bool hasBF16PackedInsts () const
bool hasMadMixInsts () const
bool hasFP8ConversionScaleInsts () const
bool hasBF8ConversionScaleInsts () const
bool hasFP4ConversionScaleInsts () const
bool hasFP6BF6ConversionScaleInsts () const
bool hasF16BF16ToFP6BF6ConversionScaleInsts () const
bool hasCvtPkF16F32Inst () const
bool hasF32ToF16BF16ConversionSRInsts () const
bool hasMadMacF32Insts () const
bool hasDsSrc2Insts () const
bool hasSDWA () const
bool hasVOP3PInsts () const
bool hasMulI24 () const
bool hasMulU24 () const
bool hasSMulHi () const
bool hasInv2PiInlineImm () const
bool hasFminFmaxLegacy () const
bool hasTrigReducedRange () const
bool hasFastFMAF32 () const
bool isPromoteAllocaEnabled () const
unsigned getWavefrontSize () const
unsigned getWavefrontSizeLog2 () const
unsigned getLocalMemorySize () const
 Return the maximum number of bytes of LDS available for all workgroups running on the same WGP or CU.
unsigned getAddressableLocalMemorySize () const
 Return the maximum number of bytes of LDS that can be allocated to a single workgroup.
unsigned getEUsPerCU () const
 Number of SIMDs/EUs (execution units) per "CU" ("compute unit"), where the "CU" is the unit onto which workgroups are mapped.
Align getAlignmentForImplicitArgPtr () const
unsigned getExplicitKernelArgOffset () const
 Returns the offset in bytes from the start of the input buffer of the first explicit kernel argument.
unsigned getMaxWavesPerEU () const
unsigned getMaxWorkitemID (const Function &Kernel, unsigned Dimension) const
 Return the maximum workitem ID value in the function, for the given (0, 1, 2) dimension.
SmallVector< unsignedgetMaxNumWorkGroups (const Function &F) const
 Return the number of work groups for the function.
bool isSingleLaneExecution (const Function &Kernel) const
 Return true if only a single workitem can be active in a wave.
bool makeLIDRangeMetadata (Instruction *I) const
 Creates value range metadata on an workitemid.* intrinsic call or load.
unsigned getImplicitArgNumBytes (const Function &F) const
uint64_t getExplicitKernArgSize (const Function &F, Align &MaxAlign) const
unsigned getKernArgSegmentSize (const Function &F, Align &MaxAlign) const
AMDGPUDwarfFlavour getAMDGPUDwarfFlavour () const
virtual ~AMDGPUSubtarget ()=default

Additional Inherited Members

Public Types inherited from llvm::AMDGPUSubtarget
enum  Generation {
  INVALID = 0 , R600 = 1 , R700 = 2 , EVERGREEN = 3 ,
  NORTHERN_ISLANDS = 4 , SOUTHERN_ISLANDS = 5 , SEA_ISLANDS = 6 , VOLCANIC_ISLANDS = 7 ,
  GFX9 = 8 , GFX10 = 9 , GFX11 = 10 , GFX12 = 11
}
Static Public Member Functions inherited from llvm::AMDGPUSubtarget
static const AMDGPUSubtargetget (const MachineFunction &MF)
static const AMDGPUSubtargetget (const TargetMachine &TM, const Function &F)
Protected Attributes inherited from llvm::AMDGPUSubtarget
bool GCN3Encoding = false
bool Has16BitInsts = false
bool HasTrue16BitInsts = false
bool HasFP8ConversionScaleInsts = false
bool HasBF8ConversionScaleInsts = false
bool HasFP4ConversionScaleInsts = false
bool HasFP6BF6ConversionScaleInsts = false
bool HasF16BF16ToFP6BF6ConversionScaleInsts = false
bool HasCvtPkF16F32Inst = false
bool HasF32ToF16BF16ConversionSRInsts = false
bool EnableRealTrue16Insts = false
bool EnableD16Writes32BitVgpr = false
bool HasBF16TransInsts = false
bool HasBF16ConversionInsts = false
bool HasBF16PackedInsts = false
bool HasMadMixInsts = false
bool HasMadMacF32Insts = false
bool HasDsSrc2Insts = false
bool HasSDWA = false
bool HasVOP3PInsts = false
bool HasMulI24 = true
bool HasMulU24 = true
bool HasSMulHi = false
bool HasInv2PiInlineImm = false
bool HasFminFmaxLegacy = true
bool EnablePromoteAlloca = false
bool HasTrigReducedRange = false
bool FastFMAF32 = false
unsigned EUsPerCU = 4
unsigned MaxWavesPerEU = 10
unsigned LocalMemorySize = 0
unsigned AddressableLocalMemorySize = 0
char WavefrontSizeLog2 = 0

Detailed Description

Definition at line 28 of file R600Subtarget.h.

Constructor & Destructor Documentation

◆ R600Subtarget()

◆ ~R600Subtarget()

R600Subtarget::~R600Subtarget ( )
overridedefault

Member Function Documentation

◆ enableMachineScheduler()

bool llvm::R600Subtarget::enableMachineScheduler ( ) const
inlineoverride

Definition at line 125 of file R600Subtarget.h.

◆ enableSubRegLiveness()

bool llvm::R600Subtarget::enableSubRegLiveness ( ) const
inlineoverride

Definition at line 129 of file R600Subtarget.h.

◆ getFrameLowering()

const R600FrameLowering * llvm::R600Subtarget::getFrameLowering ( ) const
inlineoverride

Definition at line 53 of file R600Subtarget.h.

◆ getGeneration()

Generation llvm::R600Subtarget::getGeneration ( ) const
inline

◆ getInstrInfo()

const R600InstrInfo * llvm::R600Subtarget::getInstrInfo ( ) const
inlineoverride

Definition at line 51 of file R600Subtarget.h.

Referenced by llvm::R600AsmPrinter::emitInstruction().

◆ getInstrItineraryData()

const InstrItineraryData * llvm::R600Subtarget::getInstrItineraryData ( ) const
inlineoverride

Definition at line 65 of file R600Subtarget.h.

◆ getMaxFlatWorkGroupSize()

unsigned llvm::R600Subtarget::getMaxFlatWorkGroupSize ( ) const
inlineoverridevirtual
Returns
Maximum flat work group size supported by the subtarget.

Implements llvm::AMDGPUSubtarget.

Definition at line 145 of file R600Subtarget.h.

References llvm::AMDGPU::IsaInfo::getMaxFlatWorkGroupSize().

◆ getMaxWorkGroupsPerCU()

unsigned llvm::R600Subtarget::getMaxWorkGroupsPerCU ( unsigned FlatWorkGroupSize) const
inlineoverridevirtual
Returns
Maximum number of work groups per compute unit supported by the subtarget and limited by given FlatWorkGroupSize.

Implements llvm::AMDGPUSubtarget.

Definition at line 135 of file R600Subtarget.h.

References llvm::AMDGPU::IsaInfo::getMaxWorkGroupsPerCU().

◆ getMinFlatWorkGroupSize()

unsigned llvm::R600Subtarget::getMinFlatWorkGroupSize ( ) const
inlineoverridevirtual
Returns
Minimum flat work group size supported by the subtarget.

Implements llvm::AMDGPUSubtarget.

Definition at line 140 of file R600Subtarget.h.

References llvm::AMDGPU::IsaInfo::getMinFlatWorkGroupSize().

◆ getMinWavesPerEU()

unsigned llvm::R600Subtarget::getMinWavesPerEU ( ) const
inlineoverridevirtual
Returns
Minimum number of waves per execution unit supported by the subtarget.

Implements llvm::AMDGPUSubtarget.

Definition at line 158 of file R600Subtarget.h.

References llvm::AMDGPU::IsaInfo::getMinWavesPerEU().

◆ getRegisterInfo()

const R600RegisterInfo * llvm::R600Subtarget::getRegisterInfo ( ) const
inlineoverride

Definition at line 61 of file R600Subtarget.h.

◆ getSelectionDAGInfo()

const SelectionDAGTargetInfo * R600Subtarget::getSelectionDAGInfo ( ) const
override

Definition at line 39 of file R600Subtarget.cpp.

◆ getStackAlignment()

Align llvm::R600Subtarget::getStackAlignment ( ) const
inline

Definition at line 77 of file R600Subtarget.h.

Referenced by R600Subtarget().

◆ getTargetLowering()

const R600TargetLowering * llvm::R600Subtarget::getTargetLowering ( ) const
inlineoverride

Definition at line 57 of file R600Subtarget.h.

◆ getTexVTXClauseSize()

short llvm::R600Subtarget::getTexVTXClauseSize ( ) const
inline

Definition at line 123 of file R600Subtarget.h.

◆ getWavesPerEUForWorkGroup()

unsigned llvm::R600Subtarget::getWavesPerEUForWorkGroup ( unsigned FlatWorkGroupSize) const
inlineoverridevirtual
Returns
Number of waves per execution unit required to support the given FlatWorkGroupSize.

Implements llvm::AMDGPUSubtarget.

Definition at line 152 of file R600Subtarget.h.

References llvm::AMDGPU::IsaInfo::getWavesPerEUForWorkGroup().

◆ hasBCNT()

bool llvm::R600Subtarget::hasBCNT ( unsigned Size) const
inline

Definition at line 90 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, getGeneration(), and Size.

◆ hasBFE()

bool llvm::R600Subtarget::hasBFE ( ) const
inline

Definition at line 82 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, and getGeneration().

◆ hasBFI()

bool llvm::R600Subtarget::hasBFI ( ) const
inline

Definition at line 86 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, and getGeneration().

◆ hasBORROW()

bool llvm::R600Subtarget::hasBORROW ( ) const
inline

Definition at line 97 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, and getGeneration().

◆ hasCARRY()

bool llvm::R600Subtarget::hasCARRY ( ) const
inline

Definition at line 101 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, and getGeneration().

◆ hasCaymanISA()

bool llvm::R600Subtarget::hasCaymanISA ( ) const
inline

Definition at line 105 of file R600Subtarget.h.

Referenced by initializeSubtargetDependencies().

◆ hasCFAluBug()

bool llvm::R600Subtarget::hasCFAluBug ( ) const
inline

Definition at line 119 of file R600Subtarget.h.

◆ hasFFBH()

bool llvm::R600Subtarget::hasFFBH ( ) const
inline

Definition at line 113 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, and getGeneration().

◆ hasFFBL()

bool llvm::R600Subtarget::hasFFBL ( ) const
inline

Definition at line 109 of file R600Subtarget.h.

References llvm::AMDGPUSubtarget::EVERGREEN, and getGeneration().

◆ hasFMA()

bool llvm::R600Subtarget::hasFMA ( ) const
inline

Definition at line 117 of file R600Subtarget.h.

◆ hasVertexCache()

bool llvm::R600Subtarget::hasVertexCache ( ) const
inline

Definition at line 121 of file R600Subtarget.h.

◆ initializeSubtargetDependencies()

◆ ParseSubtargetFeatures()

void llvm::R600Subtarget::ParseSubtargetFeatures ( StringRef CPU,
StringRef TuneCPU,
StringRef FS )

◆ requiresDisjointEarlyClobberAndUndef()

bool llvm::R600Subtarget::requiresDisjointEarlyClobberAndUndef ( ) const
inlineoverride

Definition at line 162 of file R600Subtarget.h.


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