Go to the documentation of this file.
23 #ifndef LLVM_CODEGEN_LIVEREGMATRIX_H
24 #define LLVM_CODEGEN_LIVEREGMATRIX_H
36 class MachineFunction;
37 class TargetRegisterInfo;
53 std::unique_ptr<LiveIntervalUnion::Query[]> Queries;
56 unsigned RegMaskTag = 0;
57 unsigned RegMaskVirtReg = 0;
63 void releaseMemory()
override;
164 #endif // LLVM_CODEGEN_LIVEREGMATRIX_H
This is an optimization pass for GlobalISel generic memory operations.
void invalidateVirtRegs()
Invalidate cached interference queries after modifying virtual register live ranges.
void unassign(const LiveInterval &VirtReg)
Unassign VirtReg from its PhysReg.
LiveIntervalUnion * getLiveUnions()
Directly access the live interval unions per regunit.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
static constexpr unsigned NoRegister
LiveSegments::Allocator Allocator
Register getOneVReg(unsigned PhysReg) const
@ IK_RegUnit
Register unit interference.
@ IK_Free
No interference, go ahead and assign.
Represent the analysis usage information of a pass.
bool isPhysRegUsed(MCRegister PhysReg) const
Returns true if the given PhysReg has any live intervals assigned.
LiveInterval - This class represents the liveness of a register, or stack slot.
SlotIndex - An opaque wrapper around machine indexes.
LiveIntervalUnion::Query & query(const LiveRange &LR, MCRegister RegUnit)
Query a line of the assigned virtual register matrix directly.
This class represents the liveness of a register, stack slot, etc.
bool checkRegMaskInterference(const LiveInterval &VirtReg, MCRegister PhysReg=MCRegister::NoRegister)
Check for regmask interference only.
Union of live intervals that are strong candidates for coalescing into a single register (either phys...
bool checkRegUnitInterference(const LiveInterval &VirtReg, MCRegister PhysReg)
Check for regunit interference only.
@ IK_VirtReg
Virtual register interference.
InterferenceKind checkInterference(const LiveInterval &VirtReg, MCRegister PhysReg)
Check for interference before assigning VirtReg to PhysReg.
Wrapper class representing virtual and physical registers.
@ IK_RegMask
RegMask interference.
Query interferences between a single live virtual register and a live interval union.
void assign(const LiveInterval &VirtReg, MCRegister PhysReg)
Assign VirtReg to PhysReg.
Wrapper class representing physical registers. Should be passed by value.