LLVM: llvm::GCNDownwardRPTracker Class Reference (original) (raw)

#include "[Target/AMDGPU/GCNRegPressure.h](GCNRegPressure%5F8h%5Fsource.html)"

Public Member Functions
GCNDownwardRPTracker (const LiveIntervals &LIS_)
MachineBasicBlock::const_iterator getNext () const
GCNRegPressure moveMaxPressure ()
return MaxPressure and clear it.
bool reset (const MachineInstr &MI, const LiveRegSet *LiveRegs=nullptr)
Reset tracker to the point before the MI filling LiveRegs upon this point using LIS.
bool advanceBeforeNext (MachineInstr *MI=nullptr, bool UseInternalIterator=true)
Move to the state right before the next MI or after the end of MBB.
void advanceToNext (MachineInstr *MI=nullptr, bool UseInternalIterator=true)
Move to the state at the MI, advanceBeforeNext has to be called first.
bool advance (MachineInstr *MI=nullptr, bool UseInternalIterator=true)
Move to the state at the next MI.
bool advance (MachineBasicBlock::const_iterator End)
Advance instructions until before End.
bool advance (MachineBasicBlock::const_iterator Begin, MachineBasicBlock::const_iterator End, const LiveRegSet *LiveRegsCopy=nullptr)
Reset to Begin and advance to End.
GCNRegPressure bumpDownwardPressure (const MachineInstr *MI, const SIRegisterInfo *TRI) const
Mostly copy/paste from CodeGen/RegisterPressure.cpp Calculate the impact MI will have on CurPressure and.
void reset (const MachineInstr &MI, const LiveRegSet *LiveRegsCopy, bool After)
void reset (const MachineRegisterInfo &MRI_, const LiveRegSet &LiveRegs_)
Public Member Functions inherited from llvm::GCNRPTracker
void reset (const MachineRegisterInfo &MRI_, const LiveRegSet &LiveRegs_)
const decltype(LiveRegs) & getLiveRegs () const
const MachineInstr * getLastTrackedMI () const
void clearMaxPressure ()
GCNRegPressure getPressure () const
decltype(LiveRegs) moveLiveRegs ()
Additional Inherited Members
Public Types inherited from llvm::GCNRPTracker
using LiveRegSet = DenseMap<unsigned, LaneBitmask>
Protected Member Functions inherited from llvm::GCNRPTracker
GCNRPTracker (const LiveIntervals &LIS_)
void reset (const MachineInstr &MI, const LiveRegSet *LiveRegsCopy, bool After)
void bumpDeadDefs (ArrayRef< VRegMaskOrUnit > DeadDefs)
Mostly copy/paste from CodeGen/RegisterPressure.cpp.
LaneBitmask getLastUsedLanes (Register Reg, SlotIndex Pos) const
Mostly copy/paste from CodeGen/RegisterPressure.cpp.
Protected Attributes inherited from llvm::GCNRPTracker
const LiveIntervals & LIS
LiveRegSet LiveRegs
GCNRegPressure CurPressure
GCNRegPressure MaxPressure
const MachineInstr * LastTrackedMI = nullptr
const MachineRegisterInfo * MRI = nullptr

Definition at line 366 of file GCNRegPressure.h.

advance() [1/3]

advance() [2/3]

advance() [3/3]

Move to the state at the next MI.

returns false if reached end of block. If UseInternalIterator is true, then internal iterators are used and set to process in program order. If UseInternalIterator is false, then it is assumed that the tracker is using an externally managed iterator, and advance* calls will not update the state of the iterator. In such cases, the tracker will move to the state right before the provided MI and use LIS for RP calculations.

Definition at line 678 of file GCNRegPressure.cpp.

References advanceBeforeNext(), advanceToNext(), and MI.

Referenced by advance(), and advance().

advanceBeforeNext()

bool GCNDownwardRPTracker::advanceBeforeNext ( MachineInstr * MI = nullptr,
bool UseInternalIterator = true )

Move to the state right before the next MI or after the end of MBB.

returns false if reached end of the block. If UseInternalIterator is true, then internal iterators are used and set to process in program order. If UseInternalIterator is false, then it is assumed that the tracker is using an externally managed iterator, and advance* calls will not update the state of the iterator. In such cases, the tracker will move to the state right before the provided MI and use LIS for RP calculations.

UseInternalIterator

Definition at line 587 of file GCNRegPressure.cpp.

References assert(), llvm::GCNRPTracker::CurPressure, llvm::LaneBitmask::getNone(), llvm::LiveInterval::hasSubRanges(), llvm::SmallSet< T, N, C >::insert(), llvm::GCNRPTracker::LastTrackedMI, llvm::GCNRPTracker::LIS, llvm::LiveRange::liveAt(), llvm::GCNRPTracker::LiveRegs, llvm_unreachable, llvm::max(), llvm::GCNRPTracker::MaxPressure, MI, llvm::GCNRPTracker::MRI, llvm::MachineInstr::operands(), and llvm::LiveInterval::subranges().

Referenced by advance(), and llvm::GCNRegPressurePrinter::runOnMachineFunction().

advanceToNext()

void GCNDownwardRPTracker::advanceToNext ( MachineInstr * MI = nullptr,
bool UseInternalIterator = true )

Move to the state at the MI, advanceBeforeNext has to be called first.

If UseInternalIterator is true, then internal iterators are used and set to process in program order. If UseInternalIterator is false, then it is assumed that the tracker is using an externally managed iterator, and advance* calls will not update the state of the iterator. In such cases, the tracker will move to the state at the provided MI .

Definition at line 653 of file GCNRegPressure.cpp.

References llvm::MachineInstr::all_defs(), llvm::GCNRPTracker::CurPressure, getDefRegMask(), llvm::GCNRPTracker::LastTrackedMI, llvm::GCNRPTracker::LiveRegs, llvm::max(), llvm::GCNRPTracker::MaxPressure, MI, llvm::GCNRPTracker::MRI, and llvm::skipDebugInstructionsForward().

Referenced by advance(), and llvm::GCNRegPressurePrinter::runOnMachineFunction().

bumpDownwardPressure()

Mostly copy/paste from CodeGen/RegisterPressure.cpp Calculate the impact MI will have on CurPressure and.

Returns

the speculated pressure. In order to support RP Speculation, this does not rely on the implicit program ordering in the LiveIntervals.

Definition at line 730 of file GCNRegPressure.cpp.

References llvm::RegisterOperands::adjustLaneLiveness(), assert(), llvm::RegisterOperands::collect(), llvm::GCNRPTracker::CurPressure, llvm::RegisterOperands::Defs, findUseBetween(), llvm::GCNRPTracker::getLastUsedLanes(), llvm::GCNRegPressure::inc(), llvm::GCNRPTracker::LastTrackedMI, llvm::GCNRPTracker::LIS, llvm::GCNRPTracker::LiveRegs, MBB, MI, llvm::GCNRPTracker::MRI, llvm::LaneBitmask::none(), llvm::skipDebugInstructionsForward(), TRI, and llvm::RegisterOperands::Uses.

Referenced by getRegisterPressures().

getNext()

moveMaxPressure()

reset() [1/3]

reset() [2/3]

reset() [3/3]


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