LLVM: lib/CodeGen/AllocationOrder.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

23

24using namespace llvm;

25

26#define DEBUG_TYPE "regalloc"

27

28

36 bool HardHints =

37 TRI->getRegAllocationHints(VirtReg, Order, Hints, MF, &VRM, Matrix);

38

40 if (!Hints.empty()) {

41 dbgs() << "hints:";

44 dbgs() << '\n';

45 }

46 });

49 "Target hint is outside allocation order.");

50 return AllocationOrder(std::move(Hints), Order, HardHints);

51}

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

Register const TargetRegisterInfo * TRI

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

Create a new AllocationOrder for VirtReg.

Definition AllocationOrder.cpp:29

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

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

MachineRegisterInfo & getRegInfo()

getRegInfo - Return information about the registers currently in use.

const TargetRegisterClass * getRegClass(Register Reg) const

Return the register class of the specified virtual register.

ArrayRef< MCPhysReg > getOrder(const TargetRegisterClass *RC) const

getOrder - Returns the preferred allocation order for RC.

Wrapper class representing virtual and physical registers.

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...

MachineFunction & getMachineFunction() const

const TargetRegisterInfo & getTargetRegInfo() const

This is an optimization pass for GlobalISel generic memory operations.

bool all_of(R &&range, UnaryPredicate P)

Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly.

LLVM_ABI raw_ostream & dbgs()

dbgs() - This returns a reference to a raw_ostream for debugging messages.

uint16_t MCPhysReg

An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...

bool is_contained(R &&Range, const E &Element)

Returns true if Element is found in Range.

LLVM_ABI Printable printReg(Register Reg, const TargetRegisterInfo *TRI=nullptr, unsigned SubIdx=0, const MachineRegisterInfo *MRI=nullptr)

Prints virtual and physical registers with or without a TRI instance.