|
LLVM 24.0.0git
|
#include "CodeGen/AllocationOrder.h"
Classes | |
| class | Iterator |
| Forward iterator for an AllocationOrder. More... | |
Public Member Functions | |
| AllocationOrder (SmallVector< MCPhysReg, 16 > &&HintsAndCustomOrder, int NumHints, ArrayRef< MCPhysReg > Order, bool HardHints) | |
| Create an AllocationOrder from HintsAndCustomOrder that contains NumHints Hints optionally followed by a custom order. | |
| AllocationOrder (SmallVector< MCPhysReg, 16 > &&Hints, ArrayRef< MCPhysReg > Order, bool HardHints) | |
| Create an AllocationOrder given the Hints, Order, and HardHints values. | |
| Iterator | begin () const |
| Iterator | end () const |
| Iterator | getOrderLimitEnd (unsigned OrderLimit) const |
| ArrayRef< MCPhysReg > | getOrder () const |
| Get the allocation order without reordered hints. | |
| bool | hasCustomOrder () const |
| Return true if a custom order replaced the RegisterClassInfo order. | |
| bool | isHint (Register Reg) const |
| Return true if Reg is a preferred physical register. | |
Static Public Member Functions | |
| static AllocationOrder | create (Register VirtReg, const VirtRegMap &VRM, const RegisterClassInfo &RegClassInfo, const LiveRegMatrix *Matrix) |
| Create a new AllocationOrder for VirtReg. | |
Definition at line 31 of file AllocationOrder.h.
|
inline |
Create an AllocationOrder from HintsAndCustomOrder that contains NumHints Hints optionally followed by a custom order.
When that custom order is present it becomes the allocation order otherwise Order is used as-is.
Definition at line 100 of file AllocationOrder.h.
References llvm::move(), and llvm::size().
Referenced by AllocationOrder(), create(), and llvm::AllocationOrder::Iterator::Iterator().
|
inline |
Create an AllocationOrder given the Hints, Order, and HardHints values.
Use the create method above - the ctor is for unittests.
Definition at line 111 of file AllocationOrder.h.
References AllocationOrder(), llvm::move(), and llvm::size().
|
inline |
Definition at line 116 of file AllocationOrder.h.
|
static |
Create a new AllocationOrder for VirtReg.
| VirtReg | Virtual register to allocate for. |
| VRM | Virtual register map for function. |
| RegClassInfo | Information about reserved and allocatable registers. |
Definition at line 49 of file AllocationOrder.cpp.
References llvm::all_of(), AllocationOrder(), assert(), llvm::dbgs(), getBitVecRegAntiHints(), llvm::VirtRegMap::getMachineFunction(), llvm::RegisterClassInfo::getOrder(), llvm::VirtRegMap::getPhys(), llvm::MachineRegisterInfo::getRegAllocationAntiHints(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::VirtRegMap::getTargetRegInfo(), llvm::VirtRegMap::hasPhys(), LLVM_DEBUG, Matrix, llvm::printReg(), and TRI.
Referenced by llvm::RegAllocEvictionAdvisor::canReassign(), and llvm::RABasic::selectOrSplit().
|
inline |
Definition at line 118 of file AllocationOrder.h.
Referenced by getOrderLimitEnd().
Get the allocation order without reordered hints.
Definition at line 130 of file AllocationOrder.h.
Referenced by llvm::RegAllocEvictionAdvisor::getOrderLimit().
Definition at line 120 of file AllocationOrder.h.
|
inline |
Return true if a custom order replaced the RegisterClassInfo order.
Definition at line 133 of file AllocationOrder.h.
Referenced by llvm::RegAllocEvictionAdvisor::getOrderLimit().
Return true if Reg is a preferred physical register.
Definition at line 138 of file AllocationOrder.h.
References assert(), llvm::is_contained(), and Reg.