LLVM API Documentation
#include <RegisterScavenging.h>

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) |
Definition at line 31 of file RegisterScavenging.h.
| llvm::RegScavenger::RegScavenger | ( | ) | [inline] |
Definition at line 85 of file RegisterScavenging.h.
| void RegScavenger::enterBasicBlock | ( | MachineBasicBlock * | mbb | ) |
enterBasicBlock - Start tracking liveness from the begin of the specific basic block.
Definition at line 84 of file RegisterScavenging.cpp.
References E, llvm::TargetRegisterInfo::getCalleeSavedRegs(), llvm::TargetMachine::getInstrInfo(), llvm::TargetRegisterInfo::getNumRegs(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getRegInfo(), llvm::TargetMachine::getRegisterInfo(), llvm::TargetRegisterInfo::getReservedRegs(), llvm::MachineFunction::getTarget(), I, llvm::MachineBasicBlock::livein_begin(), llvm::MachineBasicBlock::livein_empty(), llvm::MachineBasicBlock::livein_end(), MF, llvm::BitVector::reset(), llvm::BitVector::resize(), llvm::BitVector::set(), setUsed(), and TM.
| void RegScavenger::forward | ( | ) |
forward / backward - Move the internal MBB iterator and update register states.
Definition at line 179 of file RegisterScavenging.cpp.
References llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::end(), llvm::TargetInstrDesc::findTiedToSrcOperand(), first, llvm::MachineInstr::getDesc(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), Idx, llvm::TargetInstrInfo::IMPLICIT_DEF, llvm::MachineOperand::isDead(), llvm::MachineOperand::isEarlyClobber(), isImplicitlyDefined(), llvm::MachineOperand::isKill(), isLiveInButUnusedBefore(), llvm::MachineOperand::isReg(), isReserved(), isUnused(), llvm::MachineOperand::isUse(), isUsed(), MI, llvm::next(), llvm::SmallVectorImpl< T >::push_back(), RedefinesSuperRegPart(), Reg, second, llvm::BitVector::set(), setUnused(), setUsed(), and llvm::SmallVectorImpl< T >::size().
Referenced by forward().
| void RegScavenger::backward | ( | ) |
Definition at line 278 of file RegisterScavenging.cpp.
References llvm::MachineBasicBlock::begin(), llvm::TargetInstrDesc::findTiedToSrcOperand(), first, llvm::MachineInstr::getDesc(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), Idx, llvm::MachineOperand::isEarlyClobber(), llvm::MachineOperand::isReg(), isReserved(), isUnused(), llvm::MachineOperand::isUse(), isUsed(), MI, llvm::prior(), llvm::SmallVectorImpl< T >::push_back(), Reg, second, llvm::BitVector::set(), setUnused(), setUsed(), and llvm::SmallVectorImpl< T >::size().
Referenced by 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] |
| 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] |
| bool llvm::RegScavenger::isImplicitlyDefined | ( | unsigned | Reg | ) | const [inline] |
| 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] |
This web site is hosted by the Computer Science Department at the University of Illinois at Urbana-Champaign.