LLVM: llvm::R600Subtarget Class Reference (original) (raw)

#include "[Target/AMDGPU/R600Subtarget.h](R600Subtarget%5F8h%5Fsource.html)"

Public Member Functions
R600Subtarget (const Triple &TT, StringRef CPU, StringRef FS, const TargetMachine &TM)
~R600Subtarget () override
const R600InstrInfo * getInstrInfo () const override
const R600FrameLowering * getFrameLowering () const override
const R600TargetLowering * getTargetLowering () const override
const R600RegisterInfo * getRegisterInfo () const override
const InstrItineraryData * getInstrItineraryData () const override
const SelectionDAGTargetInfo * getSelectionDAGInfo () const override
void ParseSubtargetFeatures (StringRef CPU, StringRef TuneCPU, StringRef FS)
Generation getGeneration () const
Align getStackAlignment () const
R600Subtarget & initializeSubtargetDependencies (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, unsigned > getDefaultFlatWorkGroupSize (CallingConv::ID CC) const
std::pair< unsigned, unsigned > getFlatWorkGroupSizes (const Function &F) const
std::optional< unsigned > getReqdWorkGroupSize (const Function &F, unsigned Dim) const
bool hasWavefrontsEvenlySplittingXDim (const Function &F, bool REquiresUniformYZ=false) const
std::pair< unsigned, unsigned > getWavesPerEU (const Function &F) const
std::pair< unsigned, unsigned > getWavesPerEU (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, unsigned > getWavesPerEU (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, unsigned > getEffectiveWavesPerEU (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, unsigned > getOccupancyWithWorkGroupSizes (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, unsigned > getOccupancyWithWorkGroupSizes (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, unsigned > getOccupancyWithWorkGroupSizes (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< unsigned > getMaxNumWorkGroups (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 AMDGPUSubtarget & get (const MachineFunction &MF)
static const AMDGPUSubtarget & get (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

Definition at line 28 of file R600Subtarget.h.

~R600Subtarget()

R600Subtarget::~R600Subtarget ( ) overridedefault

enableMachineScheduler()

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

enableSubRegLiveness()

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

getFrameLowering()

getGeneration()

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

getInstrInfo()

getInstrItineraryData()

getMaxFlatWorkGroupSize()

unsigned llvm::R600Subtarget::getMaxFlatWorkGroupSize ( ) const inlineoverridevirtual

getMaxWorkGroupsPerCU()

unsigned llvm::R600Subtarget::getMaxWorkGroupsPerCU ( unsigned FlatWorkGroupSize) const inlineoverridevirtual

getMinFlatWorkGroupSize()

unsigned llvm::R600Subtarget::getMinFlatWorkGroupSize ( ) const inlineoverridevirtual

getMinWavesPerEU()

unsigned llvm::R600Subtarget::getMinWavesPerEU ( ) const inlineoverridevirtual

getRegisterInfo()

getSelectionDAGInfo()

getStackAlignment()

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

getTargetLowering()

getTexVTXClauseSize()

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

getWavesPerEUForWorkGroup()

unsigned llvm::R600Subtarget::getWavesPerEUForWorkGroup ( unsigned FlatWorkGroupSize) const inlineoverridevirtual

hasBCNT()

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

hasBFE()

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

hasBFI()

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

hasBORROW()

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

hasCARRY()

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

hasCaymanISA()

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

hasCFAluBug()

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

hasFFBH()

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

hasFFBL()

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

hasFMA()

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

hasVertexCache()

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

initializeSubtargetDependencies()

ParseSubtargetFeatures()

requiresDisjointEarlyClobberAndUndef()

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

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