Lines Matching refs:LI
198 void LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval() argument
200 assert(LI.empty() && "Should only compute empty intervals."); in computeVirtRegInterval()
202 LRCalc->calculate(LI, MRI->shouldTrackSubRegLiveness(LI.reg)); in computeVirtRegInterval()
203 computeDeadValues(LI, nullptr); in computeVirtRegInterval()
457 bool LiveIntervals::computeDeadValues(LiveInterval &LI, in computeDeadValues() argument
460 for (auto VNI : LI.valnos) { in computeDeadValues()
464 LiveRange::iterator I = LI.FindSegmentContaining(Def); in computeDeadValues()
465 assert(I != LI.end() && "Missing segment for VNI"); in computeDeadValues()
469 if (MRI->shouldTrackSubRegLiveness(LI.reg)) { in computeDeadValues()
470 if ((I == LI.begin() || std::prev(I)->end < Def) && !VNI->isPHIDef()) { in computeDeadValues()
472 MI->addRegisterDefReadUndef(LI.reg); in computeDeadValues()
481 LI.removeSegment(I); in computeDeadValues()
488 MI->addRegisterDead(LI.reg, TRI); in computeDeadValues()
650 const LiveInterval &LI = getInterval(Reg); in addKillFlags() local
651 if (LI.empty()) in addKillFlags()
662 RU.push_back(std::make_pair(&RURange, RURange.find(LI.begin()->end))); in addKillFlags()
667 for (const LiveInterval::SubRange &SR : LI.subranges()) { in addKillFlags()
668 SRs.push_back(std::make_pair(&SR, SR.find(LI.begin()->end))); in addKillFlags()
674 for (LiveInterval::const_iterator RI = LI.begin(), RE = LI.end(); RI != RE; in addKillFlags()
756 if (N != LI.end() && N->start == RI->end) in addKillFlags()
770 LiveIntervals::intervalIsInOneMBB(const LiveInterval &LI) const { in intervalIsInOneMBB()
778 SlotIndex Start = LI.beginIndex(); in intervalIsInOneMBB()
782 SlotIndex Stop = LI.endIndex(); in intervalIsInOneMBB()
794 LiveIntervals::hasPHIKill(const LiveInterval &LI, const VNInfo *VNI) const { in hasPHIKill() argument
795 for (const VNInfo *PHI : LI.valnos) { in hasPHIKill()
804 if (VNI == LI.getVNInfoBefore(Indexes->getMBBEndIdx(*PI))) in hasPHIKill()
838 bool LiveIntervals::checkRegMaskInterference(LiveInterval &LI, in checkRegMaskInterference() argument
840 if (LI.empty()) in checkRegMaskInterference()
842 LiveInterval::iterator LiveI = LI.begin(), LiveE = LI.end(); in checkRegMaskInterference()
847 if (MachineBasicBlock *MBB = intervalIsInOneMBB(LI)) { in checkRegMaskInterference()
883 LiveI = LI.advanceTo(LiveI, *SlotI); in checkRegMaskInterference()
944 LiveInterval &LI = LIS.getInterval(Reg); in updateAllRanges() local
945 if (LI.hasSubRanges()) { in updateAllRanges()
948 for (LiveInterval::SubRange &S : LI.subranges()) { in updateAllRanges()
954 updateRange(LI, Reg, 0); in updateAllRanges()
1382 LiveInterval &LI = getInterval(Reg); in repairIntervalsInRange() local
1384 if (!LI.hasAtLeastOneValue()) in repairIntervalsInRange()
1387 for (LiveInterval::SubRange &S : LI.subranges()) { in repairIntervalsInRange()
1390 repairOldRegInRange(Begin, End, endIdx, LI, Reg); in repairIntervalsInRange()
1402 void LiveIntervals::removeVRegDefAt(LiveInterval &LI, SlotIndex Pos) { in removeVRegDefAt() argument
1403 VNInfo *VNI = LI.getVNInfoAt(Pos); in removeVRegDefAt()
1406 LI.removeValNo(VNI); in removeVRegDefAt()
1409 for (LiveInterval::SubRange &S : LI.subranges()) { in removeVRegDefAt()
1413 LI.removeEmptySubRanges(); in removeVRegDefAt()