LLVM 22.0.0git
llvm::AllocationOrder Class Reference

#include "CodeGen/AllocationOrder.h"

Classes

class  Iterator
 Forward iterator for an AllocationOrder. More...

Public Member Functions

 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< MCPhysReggetOrder () const
 Get the allocation order without reordered hints.
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.

Detailed Description

Definition at line 30 of file AllocationOrder.h.

Constructor & Destructor Documentation

◆ AllocationOrder()

llvm::AllocationOrder::AllocationOrder ( SmallVector< MCPhysReg, 16 > && Hints,
ArrayRef< MCPhysReg > Order,
bool HardHints )
inline

Create an AllocationOrder given the Hints, Order, and HardHints values.

Use the create method above - the ctor is for unittests.

Definition at line 90 of file AllocationOrder.h.

References llvm::move(), and llvm::size().

Referenced by create(), and llvm::AllocationOrder::Iterator::Iterator().

Member Function Documentation

◆ begin()

Iterator llvm::AllocationOrder::begin ( ) const
inline

Definition at line 95 of file AllocationOrder.h.

◆ create()

AllocationOrder AllocationOrder::create ( Register VirtReg,
const VirtRegMap & VRM,
const RegisterClassInfo & RegClassInfo,
const LiveRegMatrix * Matrix )
static

Create a new AllocationOrder for VirtReg.

Parameters
VirtRegVirtual register to allocate for.
VRMVirtual register map for function.
RegClassInfoInformation about reserved and allocatable registers.

Definition at line 29 of file AllocationOrder.cpp.

References llvm::all_of(), AllocationOrder(), assert(), llvm::dbgs(), llvm::VirtRegMap::getMachineFunction(), llvm::RegisterClassInfo::getOrder(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::VirtRegMap::getTargetRegInfo(), llvm::is_contained(), LLVM_DEBUG, Matrix, llvm::printReg(), and TRI.

Referenced by llvm::RegAllocEvictionAdvisor::canReassign(), and llvm::RABasic::selectOrSplit().

◆ end()

Iterator llvm::AllocationOrder::end ( ) const
inline

Definition at line 99 of file AllocationOrder.h.

Referenced by getOrderLimitEnd().

◆ getOrder()

ArrayRef< MCPhysReg > llvm::AllocationOrder::getOrder ( ) const
inline

Get the allocation order without reordered hints.

Definition at line 111 of file AllocationOrder.h.

Referenced by llvm::RegAllocEvictionAdvisor::getOrderLimit().

◆ getOrderLimitEnd()

Iterator llvm::AllocationOrder::getOrderLimitEnd ( unsigned OrderLimit) const
inline

Definition at line 101 of file AllocationOrder.h.

References assert(), and end().

◆ isHint()

bool llvm::AllocationOrder::isHint ( Register Reg) const
inline

Return true if Reg is a preferred physical register.

Definition at line 114 of file AllocationOrder.h.

References assert(), llvm::is_contained(), and Reg.


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