Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:LI

39   LiveInterval &LI = LIS.createEmptyInterval(VReg);
40 return LI;
99 LiveInterval &li = LIS.getInterval(MO.getReg());
100 const VNInfo *OVNI = li.getVNInfoAt(OrigIdx);
110 if (OVNI != li.getVNInfoAt(UseIdx))
164 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI,
169 for (MachineOperand &MO : MRI.reg_nodbg_operands(LI->reg)) {
206 if (UseMI->readsWritesVirtualRegister(LI->reg, &Ops).second)
215 DefMI->addRegisterDead(LI->reg, nullptr);
221 bool LiveRangeEdit::useIsKill(const LiveInterval &LI,
225 if (LI.Query(Idx).isKill())
230 for (const LiveInterval::SubRange &S : LI.subranges()) {
279 LiveInterval &LI = LIS.getInterval(Reg);
286 (MOI->readsReg() && (MRI.hasOneNonDBGUse(Reg) || useIsKill(LI, *MOI))))
287 ToShrink.insert(&LI);
291 if (TheDelegate && LI.getVNInfoAt(Idx) != nullptr)
292 TheDelegate->LRE_WillShrinkVirtReg(LI.reg);
293 LIS.removeVRegDefAt(LI, Idx);
294 if (LI.empty())
348 LiveInterval *LI = ToShrink.back();
350 if (foldAsLoad(LI, Dead))
352 unsigned VReg = LI->reg;
355 if (!LIS.shrinkToUses(LI, &Dead))
372 // LI may have been separated, create new intervals.
373 LI->RenumberValues();
375 LIS.splitSeparateComponents(*LI, SplitLIs);
381 // If LI is an original interval that hasn't been split yet, make the new
382 // intervals their own originals instead of referring to LI. The original
383 // interval must contain all the split products, and LI doesn't.
409 LiveInterval &LI = LIS.getInterval(get(I));
410 if (MRI.recomputeRegClass(LI.reg))
413 dbgs() << "Inflated " << PrintReg(LI.reg) << " to "
414 << TRI->getRegClassName(MRI.getRegClass(LI.reg)) << '\n';
416 VRAI.calculateSpillWeightAndHint(LI);