LLVM API Documentation

Classes | Public Member Functions
llvm::RegScavenger Class Reference

#include <RegisterScavenging.h>

List of all members.

Classes

struct  ScavengedInfo
 Information on scavenged registers (held in a spill slot).

Public Member Functions

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

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.

Referenced by llvm::Mips16InstrInfo::loadImmediate().

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 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(), llvm::Mips16InstrInfo::loadImmediate(), 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: