Lines Matching refs:Idx
295 bool SplitAnalysis::isOriginalEndpoint(SlotIndex Idx) const { in isOriginalEndpoint()
299 LiveInterval::const_iterator I = Orig.find(Idx); in isOriginalEndpoint()
302 if (I != Orig.end() && I->start <= Idx) in isOriginalEndpoint()
303 return I->start == Idx; in isOriginalEndpoint()
306 return I != Orig.begin() && (--I)->end == Idx; in isOriginalEndpoint()
364 SlotIndex Idx) { in defValue() argument
366 assert(Idx.isValid() && "Invalid SlotIndex"); in defValue()
367 assert(Edit->getParent().getVNInfoAt(Idx) == ParentVNI && "Bad Parent VNI"); in defValue()
371 VNInfo *VNI = LI->getNextValue(Idx, LIS.getVNInfoAllocator()); in defValue()
462 void SplitEditor::selectIntv(unsigned Idx) { in selectIntv() argument
463 assert(Idx != 0 && "Cannot select the complement interval"); in selectIntv()
464 assert(Idx < Edit->size() && "Can only select previously opened interval"); in selectIntv()
465 DEBUG(dbgs() << " selectIntv " << OpenIdx << " -> " << Idx << '\n'); in selectIntv()
466 OpenIdx = Idx; in selectIntv()
469 SlotIndex SplitEditor::enterIntvBefore(SlotIndex Idx) { in enterIntvBefore() argument
471 DEBUG(dbgs() << " enterIntvBefore " << Idx); in enterIntvBefore()
472 Idx = Idx.getBaseIndex(); in enterIntvBefore()
473 VNInfo *ParentVNI = Edit->getParent().getVNInfoAt(Idx); in enterIntvBefore()
476 return Idx; in enterIntvBefore()
479 MachineInstr *MI = LIS.getInstructionFromIndex(Idx); in enterIntvBefore()
482 VNInfo *VNI = defFromParent(OpenIdx, ParentVNI, Idx, *MI->getParent(), MI); in enterIntvBefore()
486 SlotIndex SplitEditor::enterIntvAfter(SlotIndex Idx) { in enterIntvAfter() argument
488 DEBUG(dbgs() << " enterIntvAfter " << Idx); in enterIntvAfter()
489 Idx = Idx.getBoundaryIndex(); in enterIntvAfter()
490 VNInfo *ParentVNI = Edit->getParent().getVNInfoAt(Idx); in enterIntvAfter()
493 return Idx; in enterIntvAfter()
496 MachineInstr *MI = LIS.getInstructionFromIndex(Idx); in enterIntvAfter()
499 VNInfo *VNI = defFromParent(OpenIdx, ParentVNI, Idx, *MI->getParent(), in enterIntvAfter()
534 SlotIndex SplitEditor::leaveIntvAfter(SlotIndex Idx) { in leaveIntvAfter() argument
536 DEBUG(dbgs() << " leaveIntvAfter " << Idx); in leaveIntvAfter()
539 SlotIndex Boundary = Idx.getBoundaryIndex(); in leaveIntvAfter()
553 if (SpillMode && !SlotIndex::isSameInstr(ParentVNI->def, Idx) && in leaveIntvAfter()
556 defFromParent(0, ParentVNI, Idx, *MI->getParent(), MI); in leaveIntvAfter()
557 return Idx; in leaveIntvAfter()
565 SlotIndex SplitEditor::leaveIntvBefore(SlotIndex Idx) { in leaveIntvBefore() argument
567 DEBUG(dbgs() << " leaveIntvBefore " << Idx); in leaveIntvBefore()
570 Idx = Idx.getBaseIndex(); in leaveIntvBefore()
571 VNInfo *ParentVNI = Edit->getParent().getVNInfoAt(Idx); in leaveIntvBefore()
574 return Idx.getNextSlot(); in leaveIntvBefore()
578 MachineInstr *MI = LIS.getInstructionFromIndex(Idx); in leaveIntvBefore()
580 VNInfo *VNI = defFromParent(0, ParentVNI, Idx, *MI->getParent(), MI); in leaveIntvBefore()
967 SlotIndex Idx = LIS.getInstructionIndex(MI); in rewriteAssigned() local
969 Idx = Idx.getRegSlot(MO.isEarlyClobber()); in rewriteAssigned()
972 unsigned RegIdx = RegAssign.lookup(Idx); in rewriteAssigned()
976 << Idx << ':' << RegIdx << '\t' << *MI); in rewriteAssigned()
988 Idx = Idx.getPrevSlot(); in rewriteAssigned()
989 if (!Edit->getParent().liveAt(Idx)) in rewriteAssigned()
992 Idx = Idx.getRegSlot(true); in rewriteAssigned()
994 getLRCalc(RegIdx).extend(*LI, Idx.getNextSlot()); in rewriteAssigned()
1182 SlotIndex Idx = leaveIntvAtTop(*MBB); in splitLiveThroughBlock() local
1183 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference"); in splitLiveThroughBlock()
1184 (void)Idx; in splitLiveThroughBlock()
1196 SlotIndex Idx = enterIntvAtEnd(*MBB); in splitLiveThroughBlock() local
1197 assert((!EnterAfter || Idx >= EnterAfter) && "Interference"); in splitLiveThroughBlock()
1198 (void)Idx; in splitLiveThroughBlock()
1226 SlotIndex Idx; in splitLiveThroughBlock() local
1228 Idx = enterIntvBefore(LeaveBefore); in splitLiveThroughBlock()
1229 useIntv(Idx, Stop); in splitLiveThroughBlock()
1231 Idx = enterIntvAtEnd(*MBB); in splitLiveThroughBlock()
1234 useIntv(Start, Idx); in splitLiveThroughBlock()
1235 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference"); in splitLiveThroughBlock()
1236 assert((!EnterAfter || Idx >= EnterAfter) && "Interference"); in splitLiveThroughBlock()
1249 SlotIndex Idx = enterIntvAfter(EnterAfter); in splitLiveThroughBlock() local
1250 useIntv(Idx, Stop); in splitLiveThroughBlock()
1251 assert((!EnterAfter || Idx >= EnterAfter) && "Interference"); in splitLiveThroughBlock()
1254 Idx = leaveIntvBefore(LeaveBefore); in splitLiveThroughBlock()
1255 useIntv(Start, Idx); in splitLiveThroughBlock()
1256 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference"); in splitLiveThroughBlock()
1302 SlotIndex Idx = leaveIntvAfter(BI.LastInstr); in splitRegInBlock() local
1303 useIntv(Start, Idx); in splitRegInBlock()
1304 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference"); in splitRegInBlock()
1308 SlotIndex Idx = leaveIntvBefore(LSP); in splitRegInBlock() local
1309 overlapIntv(Idx, BI.LastInstr); in splitRegInBlock()
1310 useIntv(Start, Idx); in splitRegInBlock()
1311 assert((!LeaveBefore || Idx <= LeaveBefore) && "Interference"); in splitRegInBlock()
1388 SlotIndex Idx = enterIntvBefore(std::min(LSP, BI.FirstInstr)); in splitRegOutBlock() local
1389 useIntv(Idx, Stop); in splitRegOutBlock()
1390 assert((!EnterAfter || Idx >= EnterAfter) && "Interference"); in splitRegOutBlock()
1404 SlotIndex Idx = enterIntvAfter(EnterAfter); in splitRegOutBlock() local
1405 useIntv(Idx, Stop); in splitRegOutBlock()
1406 assert((!EnterAfter || Idx >= EnterAfter) && "Interference"); in splitRegOutBlock()
1409 SlotIndex From = enterIntvBefore(std::min(Idx, BI.FirstInstr)); in splitRegOutBlock()
1410 useIntv(From, Idx); in splitRegOutBlock()