LLVM 22.0.0git
llvm::GCNRPTarget Class Reference

Models a register pressure target, allowing to evaluate and track register savings against that target from a starting GCNRegPressure. More...

#include "Target/AMDGPU/GCNRegPressure.h"

Public Member Functions

 GCNRPTarget (const MachineFunction &MF, const GCNRegPressure &RP)
 Sets up the target such that the register pressure starting at RP does not show register spilling on function MF (w.r.t.
 GCNRPTarget (unsigned NumSGPRs, unsigned NumVGPRs, const MachineFunction &MF, const GCNRegPressure &RP)
 Sets up the target such that the register pressure starting at RP does not use more than NumSGPRs SGPRs and NumVGPRs VGPRs on function MF.
 GCNRPTarget (unsigned Occupancy, const MachineFunction &MF, const GCNRegPressure &RP)
 Sets up the target such that the register pressure starting at RP does not prevent achieving an occupancy of at least Occupancy on function MF.
void setTarget (unsigned NumSGPRs, unsigned NumVGPRs)
 Changes the target (same semantics as constructor).
const GCNRegPressuregetCurrentRP () const
void setRP (const GCNRegPressure &NewRP)
bool isSaveBeneficial (Register Reg) const
 Determines whether saving virtual register Reg will be beneficial towards achieving the RP target.
void saveReg (Register Reg, LaneBitmask Mask, const MachineRegisterInfo &MRI)
 Saves virtual register Reg with lanemask Mask.
bool satisfied () const
 Whether the current RP is at or below the defined pressure target.

Friends

raw_ostreamoperator<< (raw_ostream &OS, const GCNRPTarget &Target)

Detailed Description

Models a register pressure target, allowing to evaluate and track register savings against that target from a starting GCNRegPressure.

Definition at line 184 of file GCNRegPressure.h.

Constructor & Destructor Documentation

◆ GCNRPTarget() [1/3]

GCNRPTarget::GCNRPTarget ( const MachineFunction & MF,
const GCNRegPressure & RP )

Sets up the target such that the register pressure starting at RP does not show register spilling on function MF (w.r.t.

the function's mininum target occupancy).

Definition at line 371 of file GCNRegPressure.cpp.

References F, GCNRPTarget(), and setTarget().

Referenced by GCNRPTarget(), GCNRPTarget(), GCNRPTarget(), and operator<<.

◆ GCNRPTarget() [2/3]

GCNRPTarget::GCNRPTarget ( unsigned NumSGPRs,
unsigned NumVGPRs,
const MachineFunction & MF,
const GCNRegPressure & RP )

Sets up the target such that the register pressure starting at RP does not use more than NumSGPRs SGPRs and NumVGPRs VGPRs on function MF.

Definition at line 378 of file GCNRegPressure.cpp.

References GCNRPTarget(), and setTarget().

◆ GCNRPTarget() [3/3]

GCNRPTarget::GCNRPTarget ( unsigned Occupancy,
const MachineFunction & MF,
const GCNRegPressure & RP )

Sets up the target such that the register pressure starting at RP does not prevent achieving an occupancy of at least Occupancy on function MF.

Definition at line 384 of file GCNRegPressure.cpp.

References GCNRPTarget(), llvm::SIMachineFunctionInfo::getDynamicVGPRBlockSize(), and setTarget().

Member Function Documentation

◆ getCurrentRP()

const GCNRegPressure & llvm::GCNRPTarget::getCurrentRP ( ) const
inline

Definition at line 206 of file GCNRegPressure.h.

◆ isSaveBeneficial()

bool GCNRPTarget::isSaveBeneficial ( Register Reg) const

Determines whether saving virtual register Reg will be beneficial towards achieving the RP target.

Definition at line 408 of file GCNRegPressure.cpp.

References llvm::SIRegisterInfo::isAGPRClass(), llvm::SIRegisterInfo::isSGPRClass(), MRI, and TRI.

◆ satisfied()

bool GCNRPTarget::satisfied ( ) const

Whether the current RP is at or below the defined pressure target.

Definition at line 425 of file GCNRegPressure.cpp.

◆ saveReg()

void llvm::GCNRPTarget::saveReg ( Register Reg,
LaneBitmask Mask,
const MachineRegisterInfo & MRI )
inline

Saves virtual register Reg with lanemask Mask.

Definition at line 215 of file GCNRegPressure.h.

References llvm::LaneBitmask::getNone(), MRI, and Reg.

◆ setRP()

void llvm::GCNRPTarget::setRP ( const GCNRegPressure & NewRP)
inline

Definition at line 208 of file GCNRegPressure.h.

◆ setTarget()

void GCNRPTarget::setTarget ( unsigned NumSGPRs,
unsigned NumVGPRs )

Changes the target (same semantics as constructor).

Definition at line 394 of file GCNRegPressure.cpp.

Referenced by GCNRPTarget(), GCNRPTarget(), and GCNRPTarget().

◆ operator<<

raw_ostream & operator<< ( raw_ostream & OS,
const GCNRPTarget & Target )
friend

Definition at line 223 of file GCNRegPressure.h.

References GCNRPTarget().


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