LLVM API Documentation

llvm::RegScavenger Class Reference

#include <RegisterScavenging.h>

Collaboration diagram for llvm::RegScavenger:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 RegScavenger ()
void enterBasicBlock (MachineBasicBlock *mbb)
void forward ()
void backward ()
void forward (MachineBasicBlock::iterator I)
void backward (MachineBasicBlock::iterator I)
void skipTo (MachineBasicBlock::iterator I)
bool isReserved (unsigned Reg) const
 isReserved - Returns true if a register is reserved. It is never "unused".
bool isUsed (unsigned Reg) const
bool isUnused (unsigned Reg) const
bool isImplicitlyDefined (unsigned Reg) const
void getRegsUsed (BitVector &used, bool includeReserved)
 getRegsUsed - return all registers currently in use in used.
void setUsed (unsigned Reg, bool ImpDef=false)
 setUsed - Set the register and its sub-registers as being used.
void setUsed (BitVector Regs, bool ImpDef=false)
void setUnused (unsigned Reg, const MachineInstr *MI)
 setUnused - Set the register and its sub-registers as being unused.
void setUnused (BitVector Regs)
unsigned FindUnusedReg (const TargetRegisterClass *RegClass, const BitVector &Candidates) const
unsigned FindUnusedReg (const TargetRegisterClass *RegClass, bool ExCalleeSaved=false) const
void setScavengingFrameIndex (int FI)
int getScavengingFrameIndex () const
unsigned scavengeRegister (const TargetRegisterClass *RegClass, MachineBasicBlock::iterator I, int SPAdj)
unsigned scavengeRegister (const TargetRegisterClass *RegClass, int SPAdj)


Detailed Description

Definition at line 31 of file RegisterScavenging.h.


Constructor & Destructor Documentation

llvm::RegScavenger::RegScavenger (  )  [inline]

Definition at line 85 of file RegisterScavenging.h.


Member Function Documentation

void RegScavenger::enterBasicBlock ( MachineBasicBlock mbb  ) 

void RegScavenger::forward (  ) 

void RegScavenger::backward (  ) 

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

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

Definition at line 100 of file RegisterScavenging.h.

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

void llvm::RegScavenger::backward ( MachineBasicBlock::iterator  I  )  [inline]

Definition at line 104 of file RegisterScavenging.h.

References backward().

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

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

Definition at line 110 of file RegisterScavenging.h.

bool llvm::RegScavenger::isReserved ( unsigned  Reg  )  const [inline]

isReserved - Returns true if a register is reserved. It is never "unused".

Definition at line 113 of file RegisterScavenging.h.

Referenced by backward(), and forward().

bool llvm::RegScavenger::isUsed ( unsigned  Reg  )  const [inline]

isUsed / isUsed - Test if a register is currently being used.

Definition at line 117 of file RegisterScavenging.h.

Referenced by backward(), and forward().

bool llvm::RegScavenger::isUnused ( unsigned  Reg  )  const [inline]

Definition at line 118 of file RegisterScavenging.h.

Referenced by backward(), and forward().

bool llvm::RegScavenger::isImplicitlyDefined ( unsigned  Reg  )  const [inline]

Definition at line 120 of file RegisterScavenging.h.

Referenced by forward().

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

getRegsUsed - return all registers currently in use in used.

Definition at line 341 of file RegisterScavenging.cpp.

void RegScavenger::setUsed ( unsigned  Reg,
bool  ImpDef = false 
)

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

setUsed / setUnused - Mark the state of one or a number of registers.

Definition at line 60 of file RegisterScavenging.cpp.

References llvm::TargetRegisterInfo::getSubRegisters(), and llvm::BitVector::reset().

Referenced by backward(), enterBasicBlock(), and forward().

void llvm::RegScavenger::setUsed ( BitVector  Regs,
bool  ImpDef = false 
) [inline]

Definition at line 128 of file RegisterScavenging.h.

void RegScavenger::setUnused ( unsigned  Reg,
const MachineInstr MI 
)

setUnused - Set the register and its sub-registers as being unused.

Definition at line 72 of file RegisterScavenging.cpp.

References llvm::TargetRegisterInfo::getSubRegisters(), RedefinesSuperRegPart(), llvm::BitVector::reset(), and llvm::BitVector::set().

Referenced by backward(), and forward().

void llvm::RegScavenger::setUnused ( BitVector  Regs  )  [inline]

Definition at line 136 of file RegisterScavenging.h.

unsigned RegScavenger::FindUnusedReg ( const TargetRegisterClass RegClass,
const BitVector Candidates 
) const

FindUnusedReg - Find a unused register of the specified register class from the specified set of registers. It return 0 is none is found.

Definition at line 356 of file RegisterScavenging.cpp.

References CreateRegClassMask(), llvm::BitVector::find_first(), and Reg.

Referenced by findScratchRegister().

unsigned RegScavenger::FindUnusedReg ( const TargetRegisterClass RegClass,
bool  ExCalleeSaved = false 
) const

FindUnusedReg - Find a unused register of the specified register class. Exclude callee saved registers if directed. It return 0 is none is found.

Definition at line 371 of file RegisterScavenging.cpp.

References CreateRegClassMask(), llvm::BitVector::find_first(), and Reg.

void llvm::RegScavenger::setScavengingFrameIndex ( int  FI  )  [inline]

setScavengingFrameIndex / getScavengingFrameIndex - accessor and setter of ScavengingFrameIndex.

Definition at line 153 of file RegisterScavenging.h.

Referenced by llvm::XCoreRegisterInfo::processFunctionBeforeCalleeSavedScan(), llvm::PPCRegisterInfo::processFunctionBeforeCalleeSavedScan(), and llvm::ARMRegisterInfo::processFunctionBeforeCalleeSavedScan().

int llvm::RegScavenger::getScavengingFrameIndex (  )  const [inline]

Definition at line 154 of file RegisterScavenging.h.

unsigned RegScavenger::scavengeRegister ( const TargetRegisterClass RegClass,
MachineBasicBlock::iterator  I,
int  SPAdj 
)

scavengeRegister - Make a register of the specific register class available and do the appropriate bookkeeping. SPAdj is the stack adjustment due to call frame, it's passed along to eliminateFrameIndex(). Returns the scavenged register.

Definition at line 421 of file RegisterScavenging.cpp.

References CreateRegClassMask(), llvm::BitVector::find_first(), llvm::BitVector::find_next(), llvm::MachineBasicBlock::getFirstTerminator(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), llvm::TargetInstrInfo::loadRegFromStackSlot(), llvm::prior(), llvm::BitVector::reset(), and llvm::TargetInstrInfo::storeRegToStackSlot().

Referenced by llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::ARMRegisterInfo::eliminateFrameIndex(), findScratchRegister(), and scavengeRegister().

unsigned llvm::RegScavenger::scavengeRegister ( const TargetRegisterClass RegClass,
int  SPAdj 
) [inline]

Definition at line 162 of file RegisterScavenging.h.

References scavengeRegister().


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



This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.