Lines Matching defs:VirtReg
104 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) {
105 LLVM_DEBUG(dbgs() << "assigning " << printReg(VirtReg.reg, TRI) << " to "
107 assert(!VRM->hasPhys(VirtReg.reg) && "Duplicate VirtReg assignment");
108 VRM->assignVirt2Phys(VirtReg.reg, PhysReg);
111 TRI, VirtReg, PhysReg, [&](unsigned Unit, const LiveRange &Range) {
113 Matrix[Unit].unify(VirtReg, Range);
121 void LiveRegMatrix::unassign(LiveInterval &VirtReg) {
122 Register PhysReg = VRM->getPhys(VirtReg.reg);
123 LLVM_DEBUG(dbgs() << "unassigning " << printReg(VirtReg.reg, TRI) << " from "
125 VRM->clearVirt(VirtReg.reg);
127 foreachUnit(TRI, VirtReg, PhysReg,
130 Matrix[Unit].extract(VirtReg, Range);
146 bool LiveRegMatrix::checkRegMaskInterference(LiveInterval &VirtReg,
151 if (RegMaskVirtReg != VirtReg.reg || RegMaskTag != UserTag) {
152 RegMaskVirtReg = VirtReg.reg;
155 LIS->checkRegMaskInterference(VirtReg, RegMaskUsable);
164 bool LiveRegMatrix::checkRegUnitInterference(LiveInterval &VirtReg,
166 if (VirtReg.empty())
168 CoalescerPair CP(VirtReg.reg, PhysReg, *TRI);
170 bool Result = foreachUnit(TRI, VirtReg, PhysReg, [&](unsigned Unit,
186 LiveRegMatrix::checkInterference(LiveInterval &VirtReg, unsigned PhysReg) {
187 if (VirtReg.empty())
191 if (checkRegMaskInterference(VirtReg, PhysReg))
195 if (checkRegUnitInterference(VirtReg, PhysReg))
199 bool Interference = foreachUnit(TRI, VirtReg, PhysReg,