LLVM 20.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 getArchVGPRNum () 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 31 of file GCNRegPressure.h.

Member Enumeration Documentation

◆ RegKind

Enumerator
SGPR32 
SGPR_TUPLE 
VGPR32 
VGPR_TUPLE 
AGPR32 
AGPR_TUPLE 
TOTAL_KINDS 

Definition at line 32 of file GCNRegPressure.h.

Constructor & Destructor Documentation

◆ GCNRegPressure()

llvm::GCNRegPressure::GCNRegPressure ( )
inline

Definition at line 42 of file GCNRegPressure.h.

References clear().

Member Function Documentation

◆ clear()

void llvm::GCNRegPressure::clear ( )
inline

◆ dump()

void GCNRegPressure::dump ( ) const

Definition at line 752 of file GCNRegPressure.cpp.

References llvm::dbgs(), and print.

◆ empty()

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

Definition at line 46 of file GCNRegPressure.h.

References getSGPRNum(), and getVGPRNum().

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

◆ getAGPRNum()

unsigned llvm::GCNRegPressure::getAGPRNum ( ) const
inline
Returns
the AccVGPR32 pressure

Definition at line 64 of file GCNRegPressure.h.

References AGPR32.

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

◆ getArchVGPRNum()

unsigned llvm::GCNRegPressure::getArchVGPRNum ( ) const
inline
Returns
the ArchVGPR32 pressure

Definition at line 62 of file GCNRegPressure.h.

References VGPR32.

Referenced by getRegisterPressures().

◆ getOccupancy()

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

◆ getSGPRNum()

unsigned llvm::GCNRegPressure::getSGPRNum ( ) const
inline
Returns
the SGPR32 pressure

Definition at line 51 of file GCNRegPressure.h.

References SGPR32.

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

◆ getSGPRTuplesWeight()

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

Definition at line 68 of file GCNRegPressure.h.

References SGPR_TUPLE.

◆ getVGPRNum()

unsigned llvm::GCNRegPressure::getVGPRNum ( bool  UnifiedVGPRFile) const
inline
Returns
the aggregated ArchVGPR32, AccVGPR32 pressure dependent upon UnifiedVGPRFile

Definition at line 54 of file GCNRegPressure.h.

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

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

◆ getVGPRTuplesWeight()

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

Definition at line 66 of file GCNRegPressure.h.

References AGPR_TUPLE, and VGPR_TUPLE.

◆ higherOccupancy()

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

Definition at line 80 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 92 of file GCNRegPressure.cpp.

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

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

◆ operator!=()

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

Definition at line 103 of file GCNRegPressure.h.

◆ operator+=()

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

Definition at line 107 of file GCNRegPressure.h.

References I, RHS, and TOTAL_KINDS.

◆ operator-=()

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

Definition at line 113 of file GCNRegPressure.h.

References I, RHS, and TOTAL_KINDS.

◆ operator==()

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

Definition at line 99 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 132 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: