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

#include "[llvm/CodeGen/RegisterScavenging.h](RegisterScavenging%5F8h%5Fsource.html)"

Public Member Functions
RegScavenger ()=default
void assignRegToScavengingIndex (int FI, Register Reg, MachineInstr *Restore=nullptr)
Record that Reg is in use at scavenging index FI.
void enterBasicBlock (MachineBasicBlock &MBB)
Start tracking liveness from the begin of basic block MBB.
void enterBasicBlockEnd (MachineBasicBlock &MBB)
Start tracking liveness from the end of basic block MBB.
void backward ()
Update internal register state and move MBB iterator backwards.
void backward (MachineBasicBlock::iterator I)
Call backward() to update internal register state to just before *I.
bool isRegUsed (Register Reg, bool includeReserved=true) const
Return if a specific register is currently used.
BitVector getRegsAvailable (const TargetRegisterClass *RC)
Return all available registers in the register class in Mask.
Register FindUnusedReg (const TargetRegisterClass *RC) const
Find an unused register of the specified register class.
void addScavengingFrameIndex (int FI)
Add a scavenging frame index.
bool isScavengingFrameIndex (int FI) const
Query whether a frame index is a scavenging frame index.
void getScavengingFrameIndices (SmallVectorImpl< int > &A) const
Get an array of scavenging frame indices.
Register scavengeRegisterBackwards (const TargetRegisterClass &RC, MachineBasicBlock::iterator To, bool RestoreAfter, int SPAdj, bool AllowSpill=true)
Make a register of the specific register class available from the current position backwards to the place before To.
void setRegUsed (Register Reg, LaneBitmask LaneMask=LaneBitmask::getAll())
Tell the scavenger a register is used.

Definition at line 34 of file RegisterScavenging.h.

llvm::RegScavenger::RegScavenger ( ) default

addScavengingFrameIndex()

void llvm::RegScavenger::addScavengingFrameIndex ( int FI) inline

assignRegToScavengingIndex()

void llvm::RegScavenger::assignRegToScavengingIndex ( int FI, Register Reg, MachineInstr * Restore = nullptr ) inline

Record that Reg is in use at scavenging index FI.

This is for targets which need to directly manage the spilling process, and need to update the scavenger's internal state. It's expected this be called a second time with Restore set to a non-null value, so that the externally inserted restore instruction resets the scavenged slot liveness when encountered.

Definition at line 70 of file RegisterScavenging.h.

References assert(), llvm_unreachable, and Reg.

backward() [1/2]

void RegScavenger::backward ( )

backward() [2/2]

enterBasicBlock()

enterBasicBlockEnd()

FindUnusedReg()

getRegsAvailable()

getScavengingFrameIndices()

void llvm::RegScavenger::getScavengingFrameIndices ( SmallVectorImpl< int > & A) const inline

isRegUsed()

bool RegScavenger::isRegUsed ( Register Reg,
bool includeReserved = true ) const

isScavengingFrameIndex()

bool llvm::RegScavenger::isScavengingFrameIndex ( int FI) const inline

scavengeRegisterBackwards()

setRegUsed()


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