LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | List of all members
llvm::RegScavenger Class Reference

#include <RegisterScavenging.h>

Public Member Functions

 RegScavenger ()
 
void enterBasicBlock (MachineBasicBlock *mbb)
 
void initRegState ()
 
void forward ()
 forward - Move the internal MBB iterator and update register states. More...
 
void forward (MachineBasicBlock::iterator I)
 
void unprocess ()
 
void unprocess (MachineBasicBlock::iterator I)
 Unprocess instructions until you reach the provided iterator. More...
 
void skipTo (MachineBasicBlock::iterator I)
 skipTo - Move the internal MBB iterator but do not update register states. More...
 
MachineBasicBlock::iterator getCurrentPosition () const
 
void getRegsUsed (BitVector &used, bool includeReserved)
 getRegsUsed - return all registers currently in use in used. More...
 
BitVector getRegsAvailable (const TargetRegisterClass *RC)
 
unsigned FindUnusedReg (const TargetRegisterClass *RegClass) const
 
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)
 
unsigned scavengeRegister (const TargetRegisterClass *RegClass, int SPAdj)
 
void setUsed (unsigned Reg)
 setUsed - Set the register and its sub-registers as being used. More...
 

Detailed Description

Definition at line 31 of file RegisterScavenging.h.

Constructor & Destructor Documentation

llvm::RegScavenger::RegScavenger ( )
inline

Definition at line 75 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

FindUnusedReg - Find a unused register of the specified register class. Return 0 if none is found.

Definition at line 258 of file RegisterScavenging.cpp.

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

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

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

Definition at line 91 of file RegisterScavenging.h.

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

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

Definition at line 112 of file RegisterScavenging.h.

BitVector RegScavenger::getRegsAvailable ( const TargetRegisterClass RC)

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

Definition at line 271 of file RegisterScavenging.cpp.

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

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

void RegScavenger::getRegsUsed ( BitVector used,
bool  includeReserved 
)

getRegsUsed - return all registers currently in use in used.

Definition at line 249 of file RegisterScavenging.cpp.

References llvm::BitVector::flip(), llvm::MachineRegisterInfo::getReservedRegs(), and llvm::BitVector::reset().

void llvm::RegScavenger::getScavengingFrameIndices ( SmallVectorImpl< int > &  A) const
inline
void RegScavenger::initRegState ( )
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 156 of file RegisterScavenging.h.

References scavengeRegister().

void RegScavenger::setUsed ( unsigned  Reg)

setUsed - Set the register and its sub-registers as being used.

setUsed - Tell the scavenger a register is used.

Definition at line 33 of file RegisterScavenging.cpp.

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

Referenced by forward(), initRegState(), and unprocess().

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

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

Definition at line 106 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 152 of file RegisterScavenging.cpp.

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

Referenced by unprocess().

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

Unprocess instructions until you reach the provided iterator.

Definition at line 101 of file RegisterScavenging.h.

References unprocess().


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