Lines Matching defs:VirtReg
111 void LiveRegMatrix::assign(const LiveInterval &VirtReg, MCRegister PhysReg) {
112 LLVM_DEBUG(dbgs() << "assigning " << printReg(VirtReg.reg(), TRI) << " to "
114 assert(!VRM->hasPhys(VirtReg.reg()) && "Duplicate VirtReg assignment");
115 VRM->assignVirt2Phys(VirtReg.reg(), PhysReg);
118 TRI, VirtReg, PhysReg, [&](unsigned Unit, const LiveRange &Range) {
120 Matrix[Unit].unify(VirtReg, Range);
128 void LiveRegMatrix::unassign(const LiveInterval &VirtReg) {
129 Register PhysReg = VRM->getPhys(VirtReg.reg());
130 LLVM_DEBUG(dbgs() << "unassigning " << printReg(VirtReg.reg(), TRI)
132 VRM->clearVirt(VirtReg.reg());
134 foreachUnit(TRI, VirtReg, PhysReg,
137 Matrix[Unit].extract(VirtReg, Range);
153 bool LiveRegMatrix::checkRegMaskInterference(const LiveInterval &VirtReg,
158 if (RegMaskVirtReg != VirtReg.reg() || RegMaskTag != UserTag) {
159 RegMaskVirtReg = VirtReg.reg();
162 LIS->checkRegMaskInterference(VirtReg, RegMaskUsable);
172 bool LiveRegMatrix::checkRegUnitInterference(const LiveInterval &VirtReg,
174 if (VirtReg.empty())
176 CoalescerPair CP(VirtReg.reg(), PhysReg, *TRI);
178 bool Result = foreachUnit(TRI, VirtReg, PhysReg, [&](unsigned Unit,
194 LiveRegMatrix::checkInterference(const LiveInterval &VirtReg,
196 if (VirtReg.empty())
200 if (checkRegMaskInterference(VirtReg, PhysReg))
204 if (checkRegUnitInterference(VirtReg, PhysReg))
208 bool Interference = foreachUnit(TRI, VirtReg, PhysReg,