LLVM 19.0.0git
Public Types | Public Member Functions | Friends | List of all members
llvm::GCNRegPressure Struct Reference

#include "Target/AMDGPU/GCNRegPressure.h"

Public Types

enum  RegKind {
  SGPR32 , SGPR_TUPLE , VGPR32 , VGPR_TUPLE ,
  AGPR32 , AGPR_TUPLE , TOTAL_KINDS
}
 

Public Member Functions

 GCNRegPressure ()
 
bool empty () const
 
void clear ()
 
unsigned getSGPRNum () const
 
unsigned getVGPRNum (bool UnifiedVGPRFile) const
 
unsigned getAGPRNum () const
 
unsigned getVGPRTuplesWeight () const
 
unsigned getSGPRTuplesWeight () const
 
unsigned getOccupancy (const GCNSubtarget &ST) const
 
void inc (unsigned Reg, LaneBitmask PrevMask, LaneBitmask NewMask, const MachineRegisterInfo &MRI)
 
bool higherOccupancy (const GCNSubtarget &ST, const GCNRegPressure &O) const
 
bool less (const MachineFunction &MF, const GCNRegPressure &O, unsigned MaxOccupancy=std::numeric_limits< unsigned >::max()) const
 Compares this GCNRegpressure to O, returning true if this is less.
 
bool operator== (const GCNRegPressure &O) const
 
bool operator!= (const GCNRegPressure &O) const
 
GCNRegPressureoperator+= (const GCNRegPressure &RHS)
 
GCNRegPressureoperator-= (const GCNRegPressure &RHS)
 
void dump () const
 

Friends

GCNRegPressure max (const GCNRegPressure &P1, const GCNRegPressure &P2)
 
Printable print (const GCNRegPressure &RP, const GCNSubtarget *ST)
 

Detailed Description

Definition at line 30 of file GCNRegPressure.h.

Member Enumeration Documentation

◆ RegKind

Enumerator
SGPR32 
SGPR_TUPLE 
VGPR32 
VGPR_TUPLE 
AGPR32 
AGPR_TUPLE 
TOTAL_KINDS 

Definition at line 31 of file GCNRegPressure.h.

Constructor & Destructor Documentation

◆ GCNRegPressure()

llvm::GCNRegPressure::GCNRegPressure ( )
inline

Definition at line 41 of file GCNRegPressure.h.

References clear().

Member Function Documentation

◆ clear()

void llvm::GCNRegPressure::clear ( )
inline

◆ dump()

void GCNRegPressure::dump ( ) const

Definition at line 588 of file GCNRegPressure.cpp.

References llvm::dbgs(), and print.

◆ empty()

bool llvm::GCNRegPressure::empty ( ) const
inline

Definition at line 45 of file GCNRegPressure.h.

References getSGPRNum(), and getVGPRNum().

Referenced by llvm::GCNIterativeScheduler::scheduleRegion().

◆ getAGPRNum()

unsigned llvm::GCNRegPressure::getAGPRNum ( ) const
inline

Definition at line 57 of file GCNRegPressure.h.

References AGPR32.

Referenced by llvm::GCNSchedStage::checkScheduling(), and less().

◆ getOccupancy()

unsigned llvm::GCNRegPressure::getOccupancy ( const GCNSubtarget ST) const
inline

◆ getSGPRNum()

unsigned llvm::GCNRegPressure::getSGPRNum ( ) const
inline

Definition at line 49 of file GCNRegPressure.h.

References SGPR32.

Referenced by llvm::GCNSchedStage::checkScheduling(), empty(), getOccupancy(), and less().

◆ getSGPRTuplesWeight()

unsigned llvm::GCNRegPressure::getSGPRTuplesWeight ( ) const
inline

Definition at line 61 of file GCNRegPressure.h.

References SGPR_TUPLE.

Referenced by less().

◆ getVGPRNum()

unsigned llvm::GCNRegPressure::getVGPRNum ( bool  UnifiedVGPRFile) const
inline

Definition at line 50 of file GCNRegPressure.h.

References AGPR32, llvm::alignTo(), and VGPR32.

Referenced by llvm::GCNSchedStage::checkScheduling(), empty(), getOccupancy(), and less().

◆ getVGPRTuplesWeight()

unsigned llvm::GCNRegPressure::getVGPRTuplesWeight ( ) const
inline

Definition at line 59 of file GCNRegPressure.h.

References AGPR_TUPLE, and VGPR_TUPLE.

Referenced by less().

◆ higherOccupancy()

bool llvm::GCNRegPressure::higherOccupancy ( const GCNSubtarget ST,
const GCNRegPressure O 
) const
inline

Definition at line 73 of file GCNRegPressure.h.

References getOccupancy().

◆ inc()

void GCNRegPressure::inc ( unsigned  Reg,
LaneBitmask  PrevMask,
LaneBitmask  NewMask,
const MachineRegisterInfo MRI 
)

◆ less()

bool GCNRegPressure::less ( const MachineFunction MF,
const GCNRegPressure O,
unsigned  MaxOccupancy = std::numeric_limits<unsigned>::max() 
) const

Compares this GCNRegpressure to O, returning true if this is less.

Since GCNRegpressure contains different types of pressures, and due to target-specific pecularities (e.g. we care about occupancy rather than raw register usage), we determine if this GCNRegPressure is less than O based on the following tiered comparisons (in order order of precedence):

  1. Better occupancy
  2. Less spilling (first preference to VGPR spills, then to SGPR spills)
  3. Less tuple register pressure (first preference to VGPR tuples if we determine that SGPR pressure is not important)
  4. Less raw register pressure (first preference to VGPR tuples if we determine that SGPR pressure is not important)

Definition at line 91 of file GCNRegPressure.cpp.

References getAGPRNum(), getSGPRNum(), getSGPRTuplesWeight(), llvm::MachineFunction::getSubtarget(), getVGPRNum(), getVGPRTuplesWeight(), and I.

Referenced by llvm::GCNSchedStage::mayCauseSpilling().

◆ operator!=()

bool llvm::GCNRegPressure::operator!= ( const GCNRegPressure O) const
inline

Definition at line 96 of file GCNRegPressure.h.

◆ operator+=()

GCNRegPressure & llvm::GCNRegPressure::operator+= ( const GCNRegPressure RHS)
inline

Definition at line 100 of file GCNRegPressure.h.

References I, RHS, and TOTAL_KINDS.

◆ operator-=()

GCNRegPressure & llvm::GCNRegPressure::operator-= ( const GCNRegPressure RHS)
inline

Definition at line 106 of file GCNRegPressure.h.

References I, RHS, and TOTAL_KINDS.

◆ operator==()

bool llvm::GCNRegPressure::operator== ( const GCNRegPressure O) const
inline

Definition at line 92 of file GCNRegPressure.h.

References TOTAL_KINDS.

Friends And Related Function Documentation

◆ max

GCNRegPressure max ( const GCNRegPressure P1,
const GCNRegPressure P2 
)
friend

Definition at line 125 of file GCNRegPressure.h.

◆ print

Printable print ( const GCNRegPressure RP,
const GCNSubtarget ST 
)
friend

Referenced by dump().


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