Synopsis

Declared in <llvm/CodeGen/LiveRegMatrix.h>

class LiveRegMatrix;

Enums

Member Functions

Name

Description

LiveRegMatrix [constructor]

Move constructor

assign

Assign VirtReg to PhysReg. This will mark VirtReg's live range as occupied in the LiveRegMatrix and update VirtRegMap. The live range is expected to be available in PhysReg.

checkInterference

checkInterference overloads

checkInterferenceLanes

Check for interference in the segment [Start, End) that may prevent] assignment to PhysReg, like checkInterference. Returns a lane mask of which lanes of the physical register interfere in the segment [Start, End)] of some other interval already assigned to PhysReg.

checkRegMaskInterference

Check for regmask interference only. Return true if VirtReg crosses a regmask operand that clobbers PhysReg. If PhysReg is null, check if VirtReg crosses any regmask operands.

checkRegUnitInterference

Check for regunit interference only. Return true if VirtReg overlaps a fixed assignment of one of PhysRegs's register units.

getLiveUnions

Directly access the live interval unions per regunit. This returns an array indexed by the regunit number.

getOneVReg

init

invalidateVirtRegs

Invalidate cached interference queries after modifying virtual register live ranges. Interference checks may return stale information unless caches are invalidated.

isPhysRegUsed

Returns true if the given PhysReg has any live intervals assigned.

isValid

This checks that each LiveInterval referenced in LiveIntervalUnion actually exists in LiveIntervals and is not a dangling pointer.

query

Query a line of the assigned virtual register matrix directly. Use MCRegUnitIterator to enumerate all regunits in the desired PhysReg. This returns a reference to an internal Query data structure that is only valid until the next query() call.

unassign

Unassign VirtReg from its PhysReg. Assuming that VirtReg was previously assigned to a PhysReg, this undoes the assignment and updates VirtRegMap accordingly. ClearAllReferencingSegments changes the way segments are removed from the matrix: ‐ If false (default), only segments that exactly match VirtReg's live range are removed. ‐ If true, all segments that reference VirtReg are removed. This is useful when VirtReg's live range(s) is already empty.

Friends