Lines Matching refs:LI
197 void LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval() argument
199 assert(LI.empty() && "Should only compute empty intervals."); in computeVirtRegInterval()
200 bool ShouldTrackSubRegLiveness = MRI->shouldTrackSubRegLiveness(LI.reg); in computeVirtRegInterval()
202 LRCalc->calculate(LI, ShouldTrackSubRegLiveness); in computeVirtRegInterval()
203 bool SeparatedComponents = computeDeadValues(LI, nullptr); in computeVirtRegInterval()
208 splitSeparateComponents(LI, SplitLIs); in computeVirtRegInterval()
326 for (const auto &LI : MBB->liveins()) { in computeLiveInRegUnits() local
327 for (MCRegUnitIterator Units(LI.PhysReg, TRI); Units.isValid(); ++Units) { in computeLiveInRegUnits()
476 bool LiveIntervals::computeDeadValues(LiveInterval &LI, in computeDeadValues() argument
479 for (auto VNI : LI.valnos) { in computeDeadValues()
483 LiveRange::iterator I = LI.FindSegmentContaining(Def); in computeDeadValues()
484 assert(I != LI.end() && "Missing segment for VNI"); in computeDeadValues()
489 unsigned VReg = LI.reg; in computeDeadValues()
491 if ((I == LI.begin() || std::prev(I)->end < Def) && !VNI->isPHIDef()) { in computeDeadValues()
503 LI.removeSegment(I); in computeDeadValues()
680 const LiveInterval &LI = getInterval(Reg); in addKillFlags() local
681 if (LI.empty()) in addKillFlags()
692 RU.push_back(std::make_pair(&RURange, RURange.find(LI.begin()->end))); in addKillFlags()
697 for (const LiveInterval::SubRange &SR : LI.subranges()) { in addKillFlags()
698 SRs.push_back(std::make_pair(&SR, SR.find(LI.begin()->end))); in addKillFlags()
704 for (LiveInterval::const_iterator RI = LI.begin(), RE = LI.end(); RI != RE; in addKillFlags()
786 if (N != LI.end() && N->start == RI->end) in addKillFlags()
800 LiveIntervals::intervalIsInOneMBB(const LiveInterval &LI) const { in intervalIsInOneMBB()
808 SlotIndex Start = LI.beginIndex(); in intervalIsInOneMBB()
812 SlotIndex Stop = LI.endIndex(); in intervalIsInOneMBB()
824 LiveIntervals::hasPHIKill(const LiveInterval &LI, const VNInfo *VNI) const { in hasPHIKill() argument
825 for (const VNInfo *PHI : LI.valnos) { in hasPHIKill()
834 if (VNI == LI.getVNInfoBefore(Indexes->getMBBEndIdx(*PI))) in hasPHIKill()
868 bool LiveIntervals::checkRegMaskInterference(LiveInterval &LI, in checkRegMaskInterference() argument
870 if (LI.empty()) in checkRegMaskInterference()
872 LiveInterval::iterator LiveI = LI.begin(), LiveE = LI.end(); in checkRegMaskInterference()
877 if (MachineBasicBlock *MBB = intervalIsInOneMBB(LI)) { in checkRegMaskInterference()
913 LiveI = LI.advanceTo(LiveI, *SlotI); in checkRegMaskInterference()
974 LiveInterval &LI = LIS.getInterval(Reg); in updateAllRanges() local
975 if (LI.hasSubRanges()) { in updateAllRanges()
978 for (LiveInterval::SubRange &S : LI.subranges()) { in updateAllRanges()
984 updateRange(LI, Reg, 0); in updateAllRanges()
1412 LiveInterval &LI = getInterval(Reg); in repairIntervalsInRange() local
1414 if (!LI.hasAtLeastOneValue()) in repairIntervalsInRange()
1417 for (LiveInterval::SubRange &S : LI.subranges()) { in repairIntervalsInRange()
1420 repairOldRegInRange(Begin, End, endIdx, LI, Reg); in repairIntervalsInRange()
1432 void LiveIntervals::removeVRegDefAt(LiveInterval &LI, SlotIndex Pos) { in removeVRegDefAt() argument
1433 VNInfo *VNI = LI.getVNInfoAt(Pos); in removeVRegDefAt()
1436 LI.removeValNo(VNI); in removeVRegDefAt()
1439 for (LiveInterval::SubRange &S : LI.subranges()) { in removeVRegDefAt()
1443 LI.removeEmptySubRanges(); in removeVRegDefAt()
1446 void LiveIntervals::splitSeparateComponents(LiveInterval &LI, in splitSeparateComponents() argument
1449 unsigned NumComp = ConEQ.Classify(&LI); in splitSeparateComponents()
1452 DEBUG(dbgs() << " Split " << NumComp << " components: " << LI << '\n'); in splitSeparateComponents()
1453 unsigned Reg = LI.reg; in splitSeparateComponents()
1460 ConEQ.Distribute(LI, SplitLIs.data(), *MRI); in splitSeparateComponents()