LLVM  3.7.0
Classes | Public Member Functions | List of all members
llvm::RegScavenger Class Reference

#include <RegisterScavenging.h>

Public Member Functions

 RegScavenger ()
 
void enterBasicBlock (MachineBasicBlock *mbb)
 Start tracking liveness from the begin of the specific basic block. More...
 
void initRegState ()
 Allow resetting register state info for multiple passes over/within the same function. More...
 
void forward ()
 Move the internal MBB iterator and update register states. More...
 
void forward (MachineBasicBlock::iterator I)
 Move the internal MBB iterator and update register states until it has processed the specific iterator. More...
 
void unprocess ()
 Invert the behavior of forward() on the current instruction (undo the changes to the available registers made by forward()). More...
 
void unprocess (MachineBasicBlock::iterator I)
 Unprocess instructions until you reach the provided iterator. More...
 
void skipTo (MachineBasicBlock::iterator I)
 Move the internal MBB iterator but do not update register states. More...
 
MachineBasicBlock::iterator getCurrentPosition () const
 
bool isRegUsed (unsigned Reg, bool includeReserved=true) const
 Return if a specific register is currently used. More...
 
BitVector getRegsAvailable (const TargetRegisterClass *RC)
 Return all available registers in the register class in Mask. More...
 
unsigned FindUnusedReg (const TargetRegisterClass *RegClass) const
 Find an unused register of the specified register class. More...
 
void addScavengingFrameIndex (int FI)
 Add a scavenging frame index. More...
 
bool isScavengingFrameIndex (int FI) const
 Query whether a frame index is a scavenging frame index. More...
 
void getScavengingFrameIndices (SmallVectorImpl< int > &A) const
 Get an array of scavenging frame indices. More...
 
unsigned scavengeRegister (const TargetRegisterClass *RegClass, MachineBasicBlock::iterator I, int SPAdj)
 Make a register of the specific register class available and do the appropriate bookkeeping. More...
 
unsigned scavengeRegister (const TargetRegisterClass *RegClass, int SPAdj)
 
void setRegUsed (unsigned Reg)
 Tell the scavenger a register is used. More...
 

Detailed Description

Definition at line 31 of file RegisterScavenging.h.

Constructor & Destructor Documentation

llvm::RegScavenger::RegScavenger ( )
inline

Definition at line 71 of file RegisterScavenging.h.

Member Function Documentation

void llvm::RegScavenger::addScavengingFrameIndex ( int  FI)
inline
void RegScavenger::enterBasicBlock ( MachineBasicBlock mbb)
unsigned RegScavenger::FindUnusedReg ( const TargetRegisterClass RegClass) const

Find an unused register of the specified register class.

Return 0 if none is found.

Definition at line 261 of file RegisterScavenging.cpp.

References llvm::TargetRegisterClass::begin(), llvm::dbgs(), DEBUG, llvm::TargetRegisterClass::end(), llvm::MCRegisterInfo::getName(), I, and isRegUsed().

void RegScavenger::forward ( )
void llvm::RegScavenger::forward ( MachineBasicBlock::iterator  I)
inline

Move the internal MBB iterator and update register states until it has processed the specific iterator.

Definition at line 86 of file RegisterScavenging.h.

References llvm::MachineBasicBlock::begin(), forward(), and I.

MachineBasicBlock::iterator llvm::RegScavenger::getCurrentPosition ( ) const
inline

Definition at line 107 of file RegisterScavenging.h.

BitVector RegScavenger::getRegsAvailable ( const TargetRegisterClass RC)

Return all available registers in the register class in Mask.

getRegsAvailable - Return all available registers in the register class in Mask.

Definition at line 274 of file RegisterScavenging.cpp.

References llvm::TargetRegisterClass::begin(), llvm::TargetRegisterClass::end(), llvm::MCRegisterInfo::getNumRegs(), I, isRegUsed(), and llvm::BitVector::set().

Referenced by llvm::Mips16InstrInfo::loadImmediate(), and scavengeRegister().

void llvm::RegScavenger::getScavengingFrameIndices ( SmallVectorImpl< int > &  A) const
inline
void RegScavenger::initRegState ( )
bool RegScavenger::isRegUsed ( unsigned  Reg,
bool  includeReserved = true 
) const

Return if a specific register is currently used.

Definition at line 252 of file RegisterScavenging.cpp.

References llvm::MCRegisterInfo::DiffListIterator::isValid(), and llvm::BitVector::test().

Referenced by FindUnusedReg(), forward(), getRegsAvailable(), and scavengeRegister().

bool llvm::RegScavenger::isScavengingFrameIndex ( int  FI) const
inline
unsigned RegScavenger::scavengeRegister ( const TargetRegisterClass RegClass,
MachineBasicBlock::iterator  I,
int  SPAdj 
)
unsigned llvm::RegScavenger::scavengeRegister ( const TargetRegisterClass RegClass,
int  SPAdj 
)
inline

Definition at line 150 of file RegisterScavenging.h.

References scavengeRegister().

void RegScavenger::setRegUsed ( unsigned  Reg)

Tell the scavenger a register is used.

setUsed - Set the register units of this register as used.

Definition at line 34 of file RegisterScavenging.cpp.

References llvm::MCRegisterInfo::DiffListIterator::isValid(), and llvm::BitVector::reset().

Referenced by initRegState(), InsertFPConstInst(), and InsertSPConstInst().

void llvm::RegScavenger::skipTo ( MachineBasicBlock::iterator  I)
inline

Move the internal MBB iterator but do not update register states.

Definition at line 101 of file RegisterScavenging.h.

References I.

void RegScavenger::unprocess ( )

Invert the behavior of forward() on the current instruction (undo the changes to the available registers made by forward()).

Definition at line 147 of file RegisterScavenging.cpp.

References llvm::MachineBasicBlock::begin(), and llvm::MachineInstr::isDebugValue().

Referenced by unprocess().

void llvm::RegScavenger::unprocess ( MachineBasicBlock::iterator  I)
inline

Unprocess instructions until you reach the provided iterator.

Definition at line 96 of file RegisterScavenging.h.

References unprocess().


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