Lines Matching refs:VirtReg
72 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) {
73 DEBUG(dbgs() << "assigning " << PrintReg(VirtReg.reg, TRI)
75 assert(!VRM->hasPhys(VirtReg.reg) && "Duplicate VirtReg assignment");
76 VRM->assignVirt2Phys(VirtReg.reg, PhysReg);
80 Matrix[*Units].unify(VirtReg);
86 void LiveRegMatrix::unassign(LiveInterval &VirtReg) {
87 unsigned PhysReg = VRM->getPhys(VirtReg.reg);
88 DEBUG(dbgs() << "unassigning " << PrintReg(VirtReg.reg, TRI)
90 VRM->clearVirt(VirtReg.reg);
93 Matrix[*Units].extract(VirtReg);
99 bool LiveRegMatrix::checkRegMaskInterference(LiveInterval &VirtReg,
104 if (RegMaskVirtReg != VirtReg.reg || RegMaskTag != UserTag) {
105 RegMaskVirtReg = VirtReg.reg;
108 LIS->checkRegMaskInterference(VirtReg, RegMaskUsable);
117 bool LiveRegMatrix::checkRegUnitInterference(LiveInterval &VirtReg,
119 if (VirtReg.empty())
121 CoalescerPair CP(VirtReg.reg, PhysReg, *TRI);
124 if (VirtReg.overlaps(UnitRange, CP, *LIS->getSlotIndexes()))
130 LiveIntervalUnion::Query &LiveRegMatrix::query(LiveInterval &VirtReg,
133 Q.init(UserTag, &VirtReg, &Matrix[RegUnit]);
138 LiveRegMatrix::checkInterference(LiveInterval &VirtReg, unsigned PhysReg) {
139 if (VirtReg.empty())
143 if (checkRegMaskInterference(VirtReg, PhysReg))
147 if (checkRegUnitInterference(VirtReg, PhysReg))
152 if (query(VirtReg, *Units).checkInterference())