Lines Matching defs:LI

40   LiveInterval &LI = LIS.createEmptyInterval(VReg);
42 LI.markNotSpillable();
50 LI.createSubRange(Alloc, S.LaneMask);
52 return LI;
207 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI,
212 for (MachineOperand &MO : MRI.reg_nodbg_operands(LI->reg())) {
248 if (UseMI->readsWritesVirtualRegister(LI->reg(), &Ops).second)
260 DefMI->addRegisterDead(LI->reg(), nullptr);
266 bool LiveRangeEdit::useIsKill(const LiveInterval &LI,
270 if (LI.Query(Idx).isKill())
275 for (const LiveInterval::SubRange &S : LI.subranges()) {
349 LiveInterval &LI = LIS.getInterval(Reg);
357 (MO.readsReg() && (MRI.hasOneNonDBGUse(Reg) || useIsKill(LI, MO))))
358 ToShrink.insert(&LI);
364 if (TheDelegate && LI.getVNInfoAt(Idx) != nullptr)
365 TheDelegate->LRE_WillShrinkVirtReg(LI.reg());
366 LIS.removeVRegDefAt(LI, Idx);
367 if (LI.empty())
451 LiveInterval *LI = ToShrink.pop_back_val();
452 if (foldAsLoad(LI, Dead))
454 Register VReg = LI->reg();
457 if (!LIS.shrinkToUses(LI, &Dead))
467 // LI may have been separated, create new intervals.
468 LI->RenumberValues();
470 LIS.splitSeparateComponents(*LI, SplitLIs);
476 // If LI is an original interval that hasn't been split yet, make the new
477 // intervals their own originals instead of referring to LI. The original
478 // interval must contain all the split products, and LI doesn't.
500 LiveInterval &LI = LIS.getInterval(get(I));
501 if (MRI.recomputeRegClass(LI.reg()))
504 dbgs() << "Inflated " << printReg(LI.reg()) << " to "
505 << TRI->getRegClassName(MRI.getRegClass(LI.reg())) << '\n';
507 VRAI.calculateSpillWeightAndHint(LI);