LLVM  8.0.0svn
Enumerations | Functions
llvm::AMDGPU::IsaInfo Namespace Reference

Enumerations

enum  { FIXED_NUM_SGPRS_FOR_INIT_BUG = 96, TRAP_NUM_SGPRS = 16 }
 

Functions

void streamIsaVersion (const MCSubtargetInfo *STI, raw_ostream &Stream)
 Streams isa version string for given subtarget STI into Stream. More...
 
bool hasCodeObjectV3 (const MCSubtargetInfo *STI)
 
unsigned getWavefrontSize (const MCSubtargetInfo *STI)
 
unsigned getLocalMemorySize (const MCSubtargetInfo *STI)
 
unsigned getEUsPerCU (const MCSubtargetInfo *STI)
 
unsigned getMaxWorkGroupsPerCU (const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
 
unsigned getMaxWavesPerCU (const MCSubtargetInfo *STI)
 
unsigned getMaxWavesPerCU (const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
 
unsigned getMinWavesPerEU (const MCSubtargetInfo *STI)
 
unsigned getMaxWavesPerEU ()
 
unsigned getMaxWavesPerEU (const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
 
unsigned getMinFlatWorkGroupSize (const MCSubtargetInfo *STI)
 
unsigned getMaxFlatWorkGroupSize (const MCSubtargetInfo *STI)
 
unsigned getWavesPerWorkGroup (const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
 
unsigned getSGPRAllocGranule (const MCSubtargetInfo *STI)
 
unsigned getSGPREncodingGranule (const MCSubtargetInfo *STI)
 
unsigned getTotalNumSGPRs (const MCSubtargetInfo *STI)
 
unsigned getAddressableNumSGPRs (const MCSubtargetInfo *STI)
 
unsigned getMinNumSGPRs (const MCSubtargetInfo *STI, unsigned WavesPerEU)
 
unsigned getMaxNumSGPRs (const MCSubtargetInfo *STI, unsigned WavesPerEU, bool Addressable)
 
unsigned getNumExtraSGPRs (const MCSubtargetInfo *STI, bool VCCUsed, bool FlatScrUsed, bool XNACKUsed)
 
unsigned getNumExtraSGPRs (const MCSubtargetInfo *STI, bool VCCUsed, bool FlatScrUsed)
 
unsigned getNumSGPRBlocks (const MCSubtargetInfo *STI, unsigned NumSGPRs)
 
unsigned getVGPRAllocGranule (const MCSubtargetInfo *STI)
 
unsigned getVGPREncodingGranule (const MCSubtargetInfo *STI)
 
unsigned getTotalNumVGPRs (const MCSubtargetInfo *STI)
 
unsigned getAddressableNumVGPRs (const MCSubtargetInfo *STI)
 
unsigned getMinNumVGPRs (const MCSubtargetInfo *STI, unsigned WavesPerEU)
 
unsigned getMaxNumVGPRs (const MCSubtargetInfo *STI, unsigned WavesPerEU)
 
unsigned getNumVGPRBlocks (const MCSubtargetInfo *STI, unsigned NumVGPRs)
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FIXED_NUM_SGPRS_FOR_INIT_BUG 
TRAP_NUM_SGPRS 

Definition at line 53 of file AMDGPUBaseInfo.h.

Function Documentation

◆ getAddressableNumSGPRs()

unsigned llvm::AMDGPU::IsaInfo::getAddressableNumSGPRs ( const MCSubtargetInfo STI)

◆ getAddressableNumVGPRs()

unsigned llvm::AMDGPU::IsaInfo::getAddressableNumVGPRs ( const MCSubtargetInfo STI)
Returns
Addressable number of VGPRs for given subtarget STI.

Definition at line 335 of file AMDGPUBaseInfo.cpp.

References getTotalNumVGPRs().

Referenced by llvm::GCNSubtarget::getAddressableNumVGPRs(), getMaxNumVGPRs(), and getMinNumVGPRs().

◆ getEUsPerCU()

unsigned llvm::AMDGPU::IsaInfo::getEUsPerCU ( const MCSubtargetInfo STI)
Returns
Number of execution units per compute unit for given subtarget STI.

Definition at line 181 of file AMDGPUBaseInfo.cpp.

Referenced by llvm::GCNSubtarget::getEUsPerCU(), getMaxWavesPerCU(), and getMaxWavesPerEU().

◆ getLocalMemorySize()

unsigned llvm::AMDGPU::IsaInfo::getLocalMemorySize ( const MCSubtargetInfo STI)
Returns
Local memory size in bytes for given subtarget STI.

Definition at line 172 of file AMDGPUBaseInfo.cpp.

References llvm::MCSubtargetInfo::getFeatureBits().

◆ getMaxFlatWorkGroupSize()

unsigned llvm::AMDGPU::IsaInfo::getMaxFlatWorkGroupSize ( const MCSubtargetInfo STI)
Returns
Maximum flat work group size for given subtarget STI.

Definition at line 224 of file AMDGPUBaseInfo.cpp.

Referenced by llvm::GCNSubtarget::getMaxFlatWorkGroupSize(), and llvm::R600Subtarget::getMaxFlatWorkGroupSize().

◆ getMaxNumSGPRs()

unsigned llvm::AMDGPU::IsaInfo::getMaxNumSGPRs ( const MCSubtargetInfo STI,
unsigned  WavesPerEU,
bool  Addressable 
)

◆ getMaxNumVGPRs()

unsigned llvm::AMDGPU::IsaInfo::getMaxNumVGPRs ( const MCSubtargetInfo STI,
unsigned  WavesPerEU 
)
Returns
Maximum number of VGPRs that meets given number of waves per execution unit requirement for given subtarget STI.

Definition at line 350 of file AMDGPUBaseInfo.cpp.

References llvm::alignDown(), assert(), getAddressableNumVGPRs(), getTotalNumVGPRs(), and getVGPRAllocGranule().

Referenced by llvm::GCNSubtarget::getMaxNumVGPRs().

◆ getMaxWavesPerCU() [1/2]

unsigned llvm::AMDGPU::IsaInfo::getMaxWavesPerCU ( const MCSubtargetInfo STI)
Returns
Maximum number of waves per compute unit for given subtarget STI without any kind of limitation.

Definition at line 196 of file AMDGPUBaseInfo.cpp.

References getEUsPerCU(), and getMaxWavesPerEU().

Referenced by llvm::GCNSubtarget::getMaxWavesPerCU().

◆ getMaxWavesPerCU() [2/2]

unsigned llvm::AMDGPU::IsaInfo::getMaxWavesPerCU ( const MCSubtargetInfo STI,
unsigned  FlatWorkGroupSize 
)
Returns
Maximum number of waves per compute unit for given subtarget STI and limited by given FlatWorkGroupSize.

Definition at line 200 of file AMDGPUBaseInfo.cpp.

References getWavesPerWorkGroup().

Referenced by getMaxWavesPerEU().

◆ getMaxWavesPerEU() [1/2]

unsigned llvm::AMDGPU::IsaInfo::getMaxWavesPerEU ( )
Returns
Maximum number of waves per execution unit for given subtarget STI without any kind of limitation.

Definition at line 209 of file AMDGPUBaseInfo.cpp.

Referenced by llvm::GCNSubtarget::getMaxWavesPerEU(), and llvm::R600Subtarget::getMaxWavesPerEU().

◆ getMaxWavesPerEU() [2/2]

unsigned llvm::AMDGPU::IsaInfo::getMaxWavesPerEU ( const MCSubtargetInfo STI,
unsigned  FlatWorkGroupSize 
)
Returns
Maximum number of waves per execution unit for given subtarget STI and limited by given FlatWorkGroupSize.

Definition at line 214 of file AMDGPUBaseInfo.cpp.

References llvm::alignTo(), getEUsPerCU(), and getMaxWavesPerCU().

Referenced by getMaxWavesPerCU(), getMinNumSGPRs(), and getMinNumVGPRs().

◆ getMaxWorkGroupsPerCU()

unsigned llvm::AMDGPU::IsaInfo::getMaxWorkGroupsPerCU ( const MCSubtargetInfo STI,
unsigned  FlatWorkGroupSize 
)
Returns
Maximum number of work groups per compute unit for given subtarget STI and limited by given FlatWorkGroupSize.

Definition at line 185 of file AMDGPUBaseInfo.cpp.

References llvm::MCSubtargetInfo::getFeatureBits(), getWavesPerWorkGroup(), and N.

Referenced by llvm::GCNSubtarget::getMaxWorkGroupsPerCU(), and llvm::R600Subtarget::getMaxWorkGroupsPerCU().

◆ getMinFlatWorkGroupSize()

unsigned llvm::AMDGPU::IsaInfo::getMinFlatWorkGroupSize ( const MCSubtargetInfo STI)
Returns
Minimum flat work group size for given subtarget STI.

Definition at line 220 of file AMDGPUBaseInfo.cpp.

Referenced by llvm::GCNSubtarget::getMinFlatWorkGroupSize(), and llvm::R600Subtarget::getMinFlatWorkGroupSize().

◆ getMinNumSGPRs()

unsigned llvm::AMDGPU::IsaInfo::getMinNumSGPRs ( const MCSubtargetInfo STI,
unsigned  WavesPerEU 
)
Returns
Minimum number of SGPRs that meets the given number of waves per execution unit requirement for given subtarget STI.

Definition at line 262 of file AMDGPUBaseInfo.cpp.

References llvm::alignDown(), assert(), getAddressableNumSGPRs(), llvm::MCSubtargetInfo::getFeatureBits(), getMaxWavesPerEU(), getSGPRAllocGranule(), getTotalNumSGPRs(), and TRAP_NUM_SGPRS.

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

◆ getMinNumVGPRs()

unsigned llvm::AMDGPU::IsaInfo::getMinNumVGPRs ( const MCSubtargetInfo STI,
unsigned  WavesPerEU 
)
Returns
Minimum number of VGPRs that meets given number of waves per execution unit requirement for given subtarget STI.

Definition at line 339 of file AMDGPUBaseInfo.cpp.

References llvm::alignDown(), assert(), getAddressableNumVGPRs(), getMaxWavesPerEU(), getTotalNumVGPRs(), and getVGPRAllocGranule().

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

◆ getMinWavesPerEU()

unsigned llvm::AMDGPU::IsaInfo::getMinWavesPerEU ( const MCSubtargetInfo STI)
Returns
Minimum number of waves per execution unit for given subtarget STI.

Definition at line 205 of file AMDGPUBaseInfo.cpp.

Referenced by llvm::GCNSubtarget::getMinWavesPerEU(), and llvm::R600Subtarget::getMinWavesPerEU().

◆ getNumExtraSGPRs() [1/2]

unsigned llvm::AMDGPU::IsaInfo::getNumExtraSGPRs ( const MCSubtargetInfo STI,
bool  VCCUsed,
bool  FlatScrUsed,
bool  XNACKUsed 
)
Returns
Number of extra SGPRs implicitly required by given subtarget STI when the given special registers are used.

Definition at line 290 of file AMDGPUBaseInfo.cpp.

References llvm::MCSubtargetInfo::getCPU(), llvm::AMDGPU::getIsaVersion(), llvm::AMDGPU::IsaVersion::Major, and llvm::IndexedInstrProf::Version.

Referenced by llvm::AMDGPUAsmPrinter::EmitFunctionBodyEnd(), getSpecialRegForName(), and hasAnyNonFlatUseOfReg().

◆ getNumExtraSGPRs() [2/2]

unsigned llvm::AMDGPU::IsaInfo::getNumExtraSGPRs ( const MCSubtargetInfo STI,
bool  VCCUsed,
bool  FlatScrUsed 
)
Returns
Number of extra SGPRs implicitly required by given subtarget STI when the given special registers are used. XNACK is inferred from STI.

Definition at line 311 of file AMDGPUBaseInfo.cpp.

References llvm::MCSubtargetInfo::getFeatureBits().

◆ getNumSGPRBlocks()

unsigned llvm::AMDGPU::IsaInfo::getNumSGPRBlocks ( const MCSubtargetInfo STI,
unsigned  NumSGPRs 
)
Returns
Number of SGPR blocks needed for given subtarget STI when NumSGPRs are used. NumSGPRs should already include any special register counts.

Definition at line 317 of file AMDGPUBaseInfo.cpp.

References llvm::alignTo(), getSGPREncodingGranule(), and llvm::max().

Referenced by getSpecialRegForName(), and hasAnyNonFlatUseOfReg().

◆ getNumVGPRBlocks()

unsigned llvm::AMDGPU::IsaInfo::getNumVGPRBlocks ( const MCSubtargetInfo STI,
unsigned  NumSGPRs 
)
Returns
Number of VGPR blocks needed for given subtarget STI when NumVGPRs are used.

Definition at line 359 of file AMDGPUBaseInfo.cpp.

References llvm::alignTo(), getVGPREncodingGranule(), and llvm::max().

Referenced by getSpecialRegForName(), and hasAnyNonFlatUseOfReg().

◆ getSGPRAllocGranule()

unsigned llvm::AMDGPU::IsaInfo::getSGPRAllocGranule ( const MCSubtargetInfo STI)

◆ getSGPREncodingGranule()

unsigned llvm::AMDGPU::IsaInfo::getSGPREncodingGranule ( const MCSubtargetInfo STI)
Returns
SGPR encoding granularity for given subtarget STI.

Definition at line 241 of file AMDGPUBaseInfo.cpp.

Referenced by getNumSGPRBlocks(), and llvm::GCNSubtarget::getSGPREncodingGranule().

◆ getTotalNumSGPRs()

unsigned llvm::AMDGPU::IsaInfo::getTotalNumSGPRs ( const MCSubtargetInfo STI)

◆ getTotalNumVGPRs()

unsigned llvm::AMDGPU::IsaInfo::getTotalNumVGPRs ( const MCSubtargetInfo STI)
Returns
Total number of VGPRs for given subtarget STI.

Definition at line 331 of file AMDGPUBaseInfo.cpp.

Referenced by getAddressableNumVGPRs(), getMaxNumVGPRs(), getMinNumVGPRs(), and llvm::GCNSubtarget::getTotalNumVGPRs().

◆ getVGPRAllocGranule()

unsigned llvm::AMDGPU::IsaInfo::getVGPRAllocGranule ( const MCSubtargetInfo STI)
Returns
VGPR allocation granularity for given subtarget STI.

Definition at line 323 of file AMDGPUBaseInfo.cpp.

Referenced by getMaxNumVGPRs(), getMinNumVGPRs(), llvm::GCNSubtarget::getVGPRAllocGranule(), and getVGPREncodingGranule().

◆ getVGPREncodingGranule()

unsigned llvm::AMDGPU::IsaInfo::getVGPREncodingGranule ( const MCSubtargetInfo STI)
Returns
VGPR encoding granularity for given subtarget STI.

Definition at line 327 of file AMDGPUBaseInfo.cpp.

References getVGPRAllocGranule().

Referenced by getNumVGPRBlocks(), and llvm::GCNSubtarget::getVGPREncodingGranule().

◆ getWavefrontSize()

unsigned llvm::AMDGPU::IsaInfo::getWavefrontSize ( const MCSubtargetInfo STI)
Returns
Wavefront size for given subtarget STI.

Definition at line 163 of file AMDGPUBaseInfo.cpp.

References llvm::MCSubtargetInfo::getFeatureBits().

Referenced by getWavesPerWorkGroup().

◆ getWavesPerWorkGroup()

unsigned llvm::AMDGPU::IsaInfo::getWavesPerWorkGroup ( const MCSubtargetInfo STI,
unsigned  FlatWorkGroupSize 
)
Returns
Number of waves per work group for given subtarget STI and limited by given FlatWorkGroupSize.

Definition at line 228 of file AMDGPUBaseInfo.cpp.

References llvm::alignTo(), and getWavefrontSize().

Referenced by getMaxWavesPerCU(), getMaxWorkGroupsPerCU(), and llvm::GCNSubtarget::getWavesPerWorkGroup().

◆ hasCodeObjectV3()

bool llvm::AMDGPU::IsaInfo::hasCodeObjectV3 ( const MCSubtargetInfo STI)

◆ streamIsaVersion()

void llvm::AMDGPU::IsaInfo::streamIsaVersion ( const MCSubtargetInfo STI,
raw_ostream Stream 
)