Lines Matching defs:Idx
334 bool SplitAnalysis::isOriginalEndpoint(SlotIndex Idx) const {
338 LiveInterval::const_iterator I = Orig.find(Idx);
340 // Range containing Idx should begin at Idx.
341 if (I != Orig.end() && I->start <= Idx)
342 return I->start == Idx;
344 // Range does not contain Idx, previous must end at Idx.
345 return I != Orig.begin() && (--I)->end == Idx;
473 SlotIndex Idx,
476 assert(Idx.isValid() && "Invalid SlotIndex");
477 assert(Edit->getParent().getVNInfoAt(Idx) == ParentVNI && "Bad Parent VNI");
481 VNInfo *VNI = LI->getNextValue(Idx, LIS.getVNInfoAllocator());
657 void SplitEditor::selectIntv(unsigned Idx) {
658 assert(Idx != 0 && "Cannot select the complement interval");
659 assert(Idx < Edit->size() && "Can only select previously opened interval");
660 LLVM_DEBUG(dbgs() << " selectIntv " << OpenIdx << " -> " << Idx << '\n');
661 OpenIdx = Idx;
664 SlotIndex SplitEditor::enterIntvBefore(SlotIndex Idx) {
666 LLVM_DEBUG(dbgs() << " enterIntvBefore " << Idx);
667 Idx = Idx.getBaseIndex();
668 VNInfo *ParentVNI = Edit->getParent().getVNInfoAt(Idx);
671 return Idx;
674 MachineInstr *MI = LIS.getInstructionFromIndex(Idx);
677 VNInfo *VNI = defFromParent(OpenIdx, ParentVNI, Idx, *MI->getParent(), MI);
681 SlotIndex SplitEditor::enterIntvAfter(SlotIndex Idx) {
683 LLVM_DEBUG(dbgs() << " enterIntvAfter " << Idx);
684 Idx = Idx.getBoundaryIndex();
685 VNInfo *ParentVNI = Edit->getParent().getVNInfoAt(Idx);
688 return Idx;
691 MachineInstr *MI = LIS.getInstructionFromIndex(Idx);
694 VNInfo *VNI = defFromParent(OpenIdx, ParentVNI, Idx, *MI->getParent(),
747 SlotIndex SplitEditor::leaveIntvAfter(SlotIndex Idx) {
749 LLVM_DEBUG(dbgs() << " leaveIntvAfter " << Idx);
751 // The interval must be live beyond the instruction at Idx.
752 SlotIndex Boundary = Idx.getBoundaryIndex();
766 if (SpillMode && !SlotIndex::isSameInstr(ParentVNI->def, Idx) &&
769 defFromParent(0, ParentVNI, Idx, *MI->getParent(), MI);
770 return Idx;
778 SlotIndex SplitEditor::leaveIntvBefore(SlotIndex Idx) {
780 LLVM_DEBUG(dbgs() << " leaveIntvBefore " << Idx);
782 // The interval must be live into the instruction at Idx.
783 Idx = Idx.getBaseIndex();
784 VNInfo *ParentVNI = Edit->getParent().getVNInfoAt(Idx);
787 return Idx.getNextSlot();
791 MachineInstr *MI = LIS.getInstructionFromIndex(Idx);
793 VNInfo *VNI = defFromParent(0, ParentVNI, Idx, *MI->getParent(), MI);
1342 SlotIndex Idx = LIS.getInstructionIndex(*MI);
1344 Idx = Idx.getRegSlot(MO.isEarlyClobber());
1346 // Rewrite to the mapped register at Idx.
1347 unsigned RegIdx = RegAssign.lookup(Idx);
1351 << '\t' << Idx << ':' << RegIdx << '\t' << *MI);
1353 // Extend liveness to Idx if the instruction reads reg.
1363 if (!Edit->getParent().liveAt(Idx.getPrevSlot()))
1387 Idx = Idx.getRegSlot(IsEarlyClobber);
1390 SlotIndex Next = Idx;
1660 SlotIndex Idx = leaveIntvAtTop(*MBB);
1661 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference");
1662 (void)Idx;
1674 SlotIndex Idx = enterIntvAtEnd(*MBB);
1675 assert((!EnterAfter || Idx >= EnterAfter) && "Interference");
1676 (void)Idx;
1704 SlotIndex Idx;
1706 Idx = enterIntvBefore(LeaveBefore);
1707 useIntv(Idx, Stop);
1709 Idx = enterIntvAtEnd(*MBB);
1712 useIntv(Start, Idx);
1713 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference");
1714 assert((!EnterAfter || Idx >= EnterAfter) && "Interference");
1727 SlotIndex Idx = enterIntvAfter(EnterAfter);
1728 useIntv(Idx, Stop);
1729 assert((!EnterAfter || Idx >= EnterAfter) && "Interference");
1732 Idx = leaveIntvBefore(LeaveBefore);
1733 useIntv(Start, Idx);
1734 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference");
1780 SlotIndex Idx = leaveIntvAfter(BI.LastInstr);
1781 useIntv(Start, Idx);
1782 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference");
1786 SlotIndex Idx = leaveIntvBefore(LSP);
1787 overlapIntv(Idx, BI.LastInstr);
1788 useIntv(Start, Idx);
1789 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference");
1867 SlotIndex Idx = enterIntvBefore(std::min(LSP, BI.FirstInstr));
1868 useIntv(Idx, Stop);
1869 assert((!EnterAfter || Idx >= EnterAfter) && "Interference");
1883 SlotIndex Idx = enterIntvAfter(EnterAfter);
1884 useIntv(Idx, Stop);
1885 assert((!EnterAfter || Idx >= EnterAfter) && "Interference");
1888 SlotIndex From = enterIntvBefore(std::min(Idx, BI.FirstInstr));
1889 useIntv(From, Idx);