|
LLVM
4.0.0
|
RegAllocBase provides the register allocation driver and interface that can be extended to add interesting heuristics. More...
#include <RegAllocBase.h>
Static Public Attributes | |
| static bool | VerifyEnabled = false |
| VerifyEnabled - True when -verify-regalloc is given. More... | |
Protected Member Functions | |
| RegAllocBase () | |
| virtual | ~RegAllocBase () |
| void | init (VirtRegMap &vrm, LiveIntervals &lis, LiveRegMatrix &mat) |
| void | allocatePhysRegs () |
| virtual void | postOptimization () |
| virtual Spiller & | spiller ()=0 |
| virtual void | enqueue (LiveInterval *LI)=0 |
| enqueue - Add VirtReg to the priority queue of unassigned registers. More... | |
| virtual LiveInterval * | dequeue ()=0 |
| dequeue - Return the next unassigned register, or NULL. More... | |
| virtual unsigned | selectOrSplit (LiveInterval &VirtReg, SmallVectorImpl< unsigned > &splitLVRs)=0 |
| virtual void | aboutToRemoveInterval (LiveInterval &LI) |
| Method called when the allocator is about to remove a LiveInterval. More... | |
Protected Attributes | |
| const TargetRegisterInfo * | TRI |
| MachineRegisterInfo * | MRI |
| VirtRegMap * | VRM |
| LiveIntervals * | LIS |
| LiveRegMatrix * | Matrix |
| RegisterClassInfo | RegClassInfo |
| SmallPtrSet< MachineInstr *, 32 > | DeadRemats |
| Inst which is a def of an original reg and whose defs are already all dead after remat is saved in DeadRemats. More... | |
Static Protected Attributes | |
| static const char | TimerGroupName [] = "regalloc" |
| static const char | TimerGroupDescription [] = "Register Allocation" |
RegAllocBase provides the register allocation driver and interface that can be extended to add interesting heuristics.
Register allocators must override the selectOrSplit() method to implement live range splitting. They must also override enqueue/dequeue to provide an assignment order.
Definition at line 58 of file RegAllocBase.h.
|
inlineprotected |
Definition at line 74 of file RegAllocBase.h.
|
inlineprotectedvirtual |
Definition at line 77 of file RegAllocBase.h.
|
inlineprotectedvirtual |
Method called when the allocator is about to remove a LiveInterval.
Definition at line 111 of file RegAllocBase.h.
Referenced by allocatePhysRegs().
|
protected |
Definition at line 83 of file RegAllocBase.cpp.
References aboutToRemoveInterval(), assert(), llvm::LiveRegMatrix::assign(), llvm::VirtRegMap::assignVirt2Phys(), llvm::dbgs(), DEBUG, dequeue(), E, llvm::MachineInstr::emitError(), llvm::LiveRange::empty(), enqueue(), llvm::LiveIntervals::getInterval(), llvm::RegisterClassInfo::getOrder(), llvm::MachineRegisterInfo::getRegClass(), llvm::TargetRegisterInfo::getRegClassName(), llvm::VirtRegMap::hasPhys(), I, llvm::LiveRegMatrix::invalidateVirtRegs(), llvm::MachineInstr::isInlineAsm(), llvm::TargetRegisterInfo::isVirtualRegister(), LIS, Matrix, MI, MRI, llvm::LiveInterval::reg, llvm::MachineRegisterInfo::reg_instr_begin(), llvm::MachineRegisterInfo::reg_instr_end(), llvm::MachineRegisterInfo::reg_nodbg_empty(), RegClassInfo, llvm::LiveIntervals::removeInterval(), llvm::report_fatal_error(), selectOrSplit(), TRI, and VRM.
|
protectedpure virtual |
dequeue - Return the next unassigned register, or NULL.
Referenced by allocatePhysRegs().
|
protectedpure virtual |
enqueue - Add VirtReg to the priority queue of unassigned registers.
Referenced by allocatePhysRegs().
|
protected |
Definition at line 55 of file RegAllocBase.cpp.
References llvm::MachineRegisterInfo::freezeReservedRegs(), llvm::VirtRegMap::getMachineFunction(), llvm::VirtRegMap::getRegInfo(), llvm::VirtRegMap::getTargetRegInfo(), LIS, Matrix, MRI, RegClassInfo, llvm::RegisterClassInfo::runOnMachineFunction(), TRI, and VRM.
|
protectedvirtual |
Definition at line 157 of file RegAllocBase.cpp.
References DeadRemats, LIS, llvm::Spiller::postOptimization(), llvm::LiveIntervals::RemoveMachineInstrFromMaps(), and spiller().
|
protectedpure virtual |
Referenced by allocatePhysRegs().
|
protectedpure virtual |
Referenced by postOptimization().
|
protected |
Inst which is a def of an original reg and whose defs are already all dead after remat is saved in DeadRemats.
The deletion of such inst is postponed till all the allocations are done, so its remat expr is always available for the remat of all the siblings of the original reg.
Definition at line 72 of file RegAllocBase.h.
Referenced by postOptimization().
|
protected |
Definition at line 64 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), init(), and postOptimization().
|
protected |
Definition at line 65 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
protected |
Definition at line 62 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
protected |
Definition at line 66 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
staticprotected |
Definition at line 108 of file RegAllocBase.h.
|
staticprotected |
Definition at line 107 of file RegAllocBase.h.
|
protected |
Definition at line 61 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
VerifyEnabled - True when -verify-regalloc is given.
Definition at line 115 of file RegAllocBase.h.
|
protected |
Definition at line 63 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
1.8.6