LLVM 19.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

Public Member Functions

 R600Subtarget (const Triple &TT, StringRef CPU, StringRef FS, const TargetMachine &TM)
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
- Public Member Functions inherited from llvm::AMDGPUSubtarget
 AMDGPUSubtarget (const 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 hasMadMixInsts () 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
unsigned getAddressableLocalMemorySize () const
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 ,
  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 EnableRealTrue16Insts = 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 29 of file R600Subtarget.h.

Constructor & Destructor Documentation

◆ R600Subtarget()

R600Subtarget::R600Subtarget ( const Triple TT,
StringRef  CPU,
StringRef  FS,
const TargetMachine TM 

Member Function Documentation

◆ enableMachineScheduler()

bool llvm::R600Subtarget::enableMachineScheduler ( ) const

Definition at line 127 of file R600Subtarget.h.

◆ enableSubRegLiveness()

bool llvm::R600Subtarget::enableSubRegLiveness ( ) const

Definition at line 131 of file R600Subtarget.h.

◆ getFrameLowering()

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

Definition at line 52 of file R600Subtarget.h.

◆ getGeneration()

Generation llvm::R600Subtarget::getGeneration ( ) const

◆ getInstrInfo()

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

◆ getInstrItineraryData()

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

Definition at line 64 of file R600Subtarget.h.

◆ getMaxFlatWorkGroupSize()

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

Implements llvm::AMDGPUSubtarget.

Definition at line 147 of file R600Subtarget.h.

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

◆ getMaxWorkGroupsPerCU()

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

Implements llvm::AMDGPUSubtarget.

Definition at line 137 of file R600Subtarget.h.

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

◆ getMinFlatWorkGroupSize()

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

Implements llvm::AMDGPUSubtarget.

Definition at line 142 of file R600Subtarget.h.

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

◆ getMinWavesPerEU()

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

Implements llvm::AMDGPUSubtarget.

Definition at line 160 of file R600Subtarget.h.

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

◆ getRegisterInfo()

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

◆ getSelectionDAGInfo()

const SelectionDAGTargetInfo * llvm::R600Subtarget::getSelectionDAGInfo ( ) const

Definition at line 69 of file R600Subtarget.h.

◆ getStackAlignment()

Align llvm::R600Subtarget::getStackAlignment ( ) const

Definition at line 79 of file R600Subtarget.h.

◆ getTargetLowering()

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

Definition at line 56 of file R600Subtarget.h.

◆ getTexVTXClauseSize()

short llvm::R600Subtarget::getTexVTXClauseSize ( ) const

Definition at line 125 of file R600Subtarget.h.

◆ getWavesPerEUForWorkGroup()

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

Implements llvm::AMDGPUSubtarget.

Definition at line 154 of file R600Subtarget.h.

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

◆ hasBCNT()

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

◆ hasBFE()

bool llvm::R600Subtarget::hasBFE ( ) const

◆ hasBFI()

bool llvm::R600Subtarget::hasBFI ( ) const

◆ hasBORROW()

bool llvm::R600Subtarget::hasBORROW ( ) const

◆ hasCARRY()

bool llvm::R600Subtarget::hasCARRY ( ) const

◆ hasCaymanISA()

bool llvm::R600Subtarget::hasCaymanISA ( ) const

◆ hasCFAluBug()

bool llvm::R600Subtarget::hasCFAluBug ( ) const

Definition at line 121 of file R600Subtarget.h.

◆ hasFFBH()

bool llvm::R600Subtarget::hasFFBH ( ) const

◆ hasFFBL()

bool llvm::R600Subtarget::hasFFBL ( ) const

◆ hasFMA()

bool llvm::R600Subtarget::hasFMA ( ) const

Definition at line 119 of file R600Subtarget.h.

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

◆ hasVertexCache()

bool llvm::R600Subtarget::hasVertexCache ( ) const

◆ initializeSubtargetDependencies()

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

◆ ParseSubtargetFeatures()

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

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