LLVM 20.0.0git
Public Member Functions | List of all members
llvm::R600Subtarget Class Referencefinal

#include "Target/AMDGPU/R600Subtarget.h"

Inheritance diagram for llvm::R600Subtarget:
Inheritance graph
[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::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, unsignedgetEffectiveWavesPerEU (std::pair< unsigned, unsigned > WavesPerEU, std::pair< unsigned, unsigned > FlatWorkGroupSizes) const
 
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.
 
unsigned getOccupancyWithLocalMemSize (uint32_t Bytes, const Function &) const
 Inverse of getMaxLocalMemWithWaveCount.
 
unsigned getOccupancyWithLocalMemSize (const MachineFunction &MF) const
 
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 hasBF16ConversionInsts () 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.
 
virtual unsigned getMaxWorkGroupsPerCU (unsigned FlatWorkGroupSize) const =0
 
virtual unsigned getMinFlatWorkGroupSize () const =0
 
virtual unsigned getMaxFlatWorkGroupSize () const =0
 
virtual unsigned getWavesPerEUForWorkGroup (unsigned FlatWorkGroupSize) const =0
 
virtual unsigned getMinWavesPerEU () const =0
 
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 HasBF16ConversionInsts = 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 ( const Triple TT,
StringRef  CPU,
StringRef  FS,
const TargetMachine TM 
)

◆ ~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

◆ 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

◆ 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.

◆ 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

◆ 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

Definition at line 119 of file R600Subtarget.h.

◆ hasFFBH()

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

◆ hasFFBL()

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

◆ hasFMA()

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

Definition at line 117 of file R600Subtarget.h.

Referenced by llvm::R600TargetLowering::R600TargetLowering().

◆ hasVertexCache()

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

◆ initializeSubtargetDependencies()

R600Subtarget & R600Subtarget::initializeSubtargetDependencies ( const Triple TT,
StringRef  GPU,
StringRef  FS 
)

◆ 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: