Lines Matching defs:VirtReg
104 void LiveRegMatrix::assign(const LiveInterval &VirtReg, MCRegister 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(const LiveInterval &VirtReg) {
122 Register PhysReg = VRM->getPhys(VirtReg.reg());
123 LLVM_DEBUG(dbgs() << "unassigning " << printReg(VirtReg.reg(), TRI)
125 VRM->clearVirt(VirtReg.reg());
127 foreachUnit(TRI, VirtReg, PhysReg,
130 Matrix[Unit].extract(VirtReg, Range);
146 bool LiveRegMatrix::checkRegMaskInterference(const LiveInterval &VirtReg,
151 if (RegMaskVirtReg != VirtReg.reg() || RegMaskTag != UserTag) {
152 RegMaskVirtReg = VirtReg.reg();
155 LIS->checkRegMaskInterference(VirtReg, RegMaskUsable);
164 bool LiveRegMatrix::checkRegUnitInterference(const 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(const LiveInterval &VirtReg,
188 if (VirtReg.empty())
192 if (checkRegMaskInterference(VirtReg, PhysReg))
196 if (checkRegUnitInterference(VirtReg, PhysReg))
200 bool Interference = foreachUnit(TRI, VirtReg, PhysReg,