|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
include/llvm/CodeGen/LiveInterval.h 176 return start <= I && I < end;
182 return (start <= S && S < end) && (start < E && E <= end);
182 return (start <= S && S < end) && (start < E && E <= end);
186 return std::tie(start, end) < std::tie(Other.start, Other.end);
186 return std::tie(start, end) < std::tie(Other.start, Other.end);
189 return start == Other.start && end == Other.end;
189 return start == Other.start && end == Other.end;
254 segments.push_back(Segment(S.start, S.end, valnos[S.valno->id]));
378 return segments.front().start;
394 return r != end() && r->start <= index;
429 return I != end() && I->start <= Idx ? I : end();
434 return I != end() && I->start <= Idx ? I : end();
520 removeSegment(S.start, S.end, RemoveDeadValNo);
546 if (I->start <= Idx.getBaseIndex()) {
564 if (!SlotIndex::isEarlierInstr(Idx, I->start)) {
579 if (Indexes->getNextNonNullIndex(S.start).getBaseIndex() <
636 auto NotLessStart = std::lower_bound(Idx, EndIdx, Seg->start);
887 return V < S.start;
891 return S.start < V;
lib/CodeGen/InterferenceCache.cpp 185 SlotIndex StartI = I->start;
238 if (I == LR->end() || I->start >= Stop)
241 bool Backup = I == LR->end() || I->start >= Stop;
lib/CodeGen/LiveDebugVariables.cpp 1040 if (LocMapI.value().locNo() == OldLocNo && LII->start < LocMapI.stop()) {
1054 if (LStart < LII->start)
1055 LocMapI.setStartUnchecked(LII->start);
1079 LocMapI.advanceTo(LII->start);
lib/CodeGen/LiveInterval.cpp 100 if (SlotIndex::isSameInstr(Def, S->start)) {
102 assert(S->valno->def == S->start && "Inconsistent existing value def");
109 Def = std::min(Def, S->start);
110 if (Def != S->start)
111 S->start = S->valno->def = Def;
114 assert(SlotIndex::isEarlierInstr(Def, S->start) && "Already live at def");
173 if (MergeTo != segments().end() && MergeTo->start <= I->end &&
195 S->start = NewStart;
201 } while (NewStart <= MergeTo->start);
211 MergeToSeg->start = NewStart;
220 SlotIndex Start = S.start, End = S.end;
228 if (B->start <= Start && B->end >= Start) {
245 if (I->start <= End) {
257 assert(I->start >= End &&
299 iterator findInsertPos(Segment S) { return llvm::upper_bound(*LR, S.start); }
338 if (I != LR->segmentSet->end() && !(S.start < *I))
412 assert((StartPos->start <= i->start || StartPos == other.begin()) &&
412 assert((StartPos->start <= i->start || StartPos == other.begin()) &&
415 if (i->start < j->start) {
415 if (i->start < j->start) {
416 i = std::upper_bound(i, ie, j->start);
418 } else if (j->start < i->start) {
418 } else if (j->start < i->start) {
420 if (StartPos != other.end() && StartPos->start <= i->start) {
420 if (StartPos != other.end() && StartPos->start <= i->start) {
422 j = std::upper_bound(j, je, i->start);
432 if (i->start > j->start) {
432 if (i->start > j->start) {
437 if (i->end > j->start)
456 const_iterator J = Other.find(I->start);
463 assert(J->end >= I->start);
465 if (J->start < I->end) {
467 SlotIndex Def = std::max(I->start, J->start);
467 SlotIndex Def = std::max(I->start, J->start);
482 while (J->end < I->start);
500 I = advanceTo(I, O.start);
501 if (I == end() || I->start > O.start)
501 if (I == end() || I->start > O.start)
509 if (I == end() || Last->end != I->start)
560 assert(segments.empty() || segments.back().end <= S.start);
593 if (I->start == Start) {
611 I->start = End;
674 if (OutIt->valno == nextValNo && OutIt->end == I->start) {
681 OutIt->start = I->start;
681 OutIt->start = I->start;
728 Updater.add(S.start, S.end, LHSValNo);
742 Updater.add(S.start, S.end, LHSValNo);
772 if (Prev->valno == V2 && Prev->end == S->start) {
790 if (I->start == S->end && I->valno == V2) {
963 Sum += S.start.distance(S.end);
992 return OS << '[' << S.start << ',' << S.end << ':' << S.valno->id << ')';
1062 assert(I->start.isValid());
1064 assert(I->start < I->end);
1069 assert(I->end <= std::next(I)->start);
1070 if (I->end == std::next(I)->start)
1161 assert(A.start <= B.start && "Unordered live segments.");
1161 assert(A.start <= B.start && "Unordered live segments.");
1162 if (A.end == B.start)
1164 if (A.end < B.start)
1181 if (!LastStart.isValid() || LastStart > Seg.start) {
1190 LastStart = Seg.start;
1194 if (ReadI != E && ReadI->end <= Seg.start) {
1200 ReadI = WriteI = LR->find(Seg.start);
1202 while (ReadI != E && ReadI->end <= Seg.start)
1206 assert(ReadI == E || ReadI->end > Seg.start);
1209 if (ReadI != E && ReadI->start <= Seg.start) {
1209 if (ReadI != E && ReadI->start <= Seg.start) {
1215 Seg.start = ReadI->start;
1215 Seg.start = ReadI->start;
1227 Seg.start = Spills.back().start;
1227 Seg.start = Spills.back().start;
1268 if (Src != B && Src[-1].start > SpillSrc[-1].start)
1268 if (Src != B && Src[-1].start > SpillSrc[-1].start)
lib/CodeGen/LiveIntervalUnion.cpp 37 SegmentIter SegPos = Segments.find(RegPos->start);
40 SegPos.insert(RegPos->start, RegPos->end, &VirtReg);
43 SegPos.advanceTo(RegPos->start);
50 SegPos.insert(RegEnd->start, RegEnd->end, &VirtReg);
52 SegPos.insert(RegPos->start, RegPos->end, &VirtReg);
64 SegmentIter SegPos = Segments.find(RegPos->start);
77 SegPos.advanceTo(RegPos->start);
136 LiveUnionI.find(LRI->start);
145 while (LRI->start < LiveUnionI.stop() && LRI->end > LiveUnionI.start()) {
171 if (LRI->start < LiveUnionI.stop())
175 LiveUnionI.advanceTo(LRI->start);
lib/CodeGen/LiveIntervals.cpp 741 if (I == RURange.end() || I->start >= RI->end)
769 if (I == SR.end() || I->start >= RI->end)
800 if (N != LI.end() && N->start == RI->end)
903 ArrayRef<SlotIndex>::iterator SlotI = llvm::lower_bound(Slots, LiveI->start);
912 assert(*SlotI >= LiveI->start);
932 while (*SlotI < LiveI->start)
1051 if (OldIdxIn == E || SlotIndex::isEarlierInstr(OldIdx, OldIdxIn->start))
1056 if (SlotIndex::isEarlierInstr(OldIdxIn->start, OldIdx)) {
1070 if (Next != E && !SlotIndex::isSameInstr(OldIdx, Next->start) &&
1071 SlotIndex::isEarlierInstr(Next->start, NewIdx)) {
1078 !SlotIndex::isEarlierInstr(NewIdxIn->start, NewIdx)) {
1083 OldIdxIn->end = Next->start;
1097 if (OldIdxOut == E || !SlotIndex::isSameInstr(OldIdx, OldIdxOut->start))
1105 assert(OldIdxOut != E && SlotIndex::isSameInstr(OldIdx, OldIdxOut->start) &&
1108 assert(OldIdxVNI->def == OldIdxOut->start && "Inconsistent def");
1112 SlotIndex NewIdxDef = NewIdx.getRegSlot(OldIdxOut->start.isEarlyClobber());
1115 OldIdxOut->start = OldIdxVNI->def;
1132 OldIdxOut->start)) {
1147 INext->start = OldIdxOut->end;
1148 INext->valno->def = INext->start;
1173 if (SlotIndex::isEarlierInstr(Prev->start, NewIdxDef)) {
1180 *Prev = LiveRange::Segment(Prev->start, NewIdxDef, DefVNI);
1181 DefVNI->def = Prev->start;
1185 *Prev = LiveRange::Segment(NewIdxDef, AfterNewIdx->start, DefVNI);
1194 SlotIndex::isSameInstr(AfterNewIdx->start, NewIdxDef)) {
1224 if (OldIdxIn == E || SlotIndex::isEarlierInstr(OldIdx, OldIdxIn->start))
1229 if (SlotIndex::isEarlierInstr(OldIdxIn->start, OldIdx)) {
1240 = std::max(OldIdxIn->start.getDeadSlot(),
1246 if (OldIdxOut == E || !SlotIndex::isSameInstr(OldIdx, OldIdxOut->start))
1255 assert(OldIdxOut != E && SlotIndex::isSameInstr(OldIdx, OldIdxOut->start) &&
1258 assert(OldIdxVNI->def == OldIdxOut->start && "Inconsistent def");
1262 SlotIndex NewIdxDef = NewIdx.getRegSlot(OldIdxOut->start.isEarlyClobber());
1264 if (SlotIndex::isSameInstr(NewIdxOut->start, NewIdx)) {
1272 OldIdxOut->start = NewIdxDef;
1284 SlotIndex::isEarlierInstr(NewIdxDef, OldIdxIn->start)) {
1301 NewDefEndPoint = std::min(OldIdxIn->start,
1302 std::next(NewIdxOut)->start);
1306 OldIdxOut->valno->def = OldIdxIn->start;
1307 *OldIdxOut = LiveRange::Segment(OldIdxIn->start, OldIdxOut->end,
1318 if (SlotIndex::isEarlierInstr(Next->start, NewIdx)) {
1320 *NewSegment = LiveRange::Segment(Next->start, SplitPos,
1328 *NewSegment = LiveRange::Segment(SplitPos, Next->start, OldIdxVNI);
1333 OldIdxOut->start = NewIdxDef;
1339 && SlotIndex::isEarlierInstr(NewIdxOut->start, NewIdx)
1354 NewIdxOut->start, NewIdxDef.getRegSlot(), NewIdxOut->valno);
1493 if (LII != LR.end() && LII->start < endIdx)
1505 bool isStartValid = getInstructionFromIndex(LII->start);
1527 prevStart = std::prev(LII)->start;
1537 LII->start = instrIdx.getRegSlot();
1552 } else if (LII->start != instrIdx.getRegSlot()) {
lib/CodeGen/LiveRangeUtils.h 34 assert((SplitLRs[eq-1]->empty() || SplitLRs[eq-1]->expiredAt(I->start)) &&
lib/CodeGen/MachineScheduler.cpp 1742 GlobalSegment->start)) {
1747 if (SlotIndex::isSameInstr(std::prev(GlobalSegment)->start,
1753 assert(std::prev(GlobalSegment)->start < LocalLI->beginIndex() &&
1756 MachineInstr *GlobalDef = LIS->getInstructionFromIndex(GlobalSegment->start);
lib/CodeGen/MachineVerifier.cpp 2477 const MachineBasicBlock *MBB = LiveInts->getMBBFromIndex(S.start);
2485 if (S.start != MBBStartIdx && S.start != VNI->def) {
2485 if (S.start != MBBStartIdx && S.start != VNI->def) {
2506 S.start == VNI->def && S.end == VNI->def.getDeadSlot())
2529 if (!SlotIndex::isSameInstr(S.start, S.end)) {
2539 if (I+1 == LR.end() || (I+1)->start != S.end) {
2605 if (S.start == VNI->def && !VNI->isPHIDef()) {
lib/CodeGen/RegAllocGreedy.cpp 2208 for (unsigned Gap = 0; I != E && I->start < StopIdx; ++I) {
2209 while (Uses[Gap+1].getBoundaryIndex() < I->start)
lib/CodeGen/RegAllocPBQP.cpp 261 return std::get<0>(I)->segments[std::get<1>(I)].start;
lib/CodeGen/RegisterCoalescer.cpp 625 SlotIndex FillerStart = ValS->end, FillerEnd = BS->start;
645 if (SS != S.end() && SlotIndex::isSameInstr(SS->start, SS->end)) {
697 LiveInterval::iterator BI = llvm::upper_bound(IntB, ASeg.start);
700 for (; BI != IntB.end() && ASeg.end >= BI->start; ++BI) {
703 if (BI->start <= ASeg.start && BI->end > ASeg.start)
703 if (BI->start <= ASeg.start && BI->end > ASeg.start)
703 if (BI->start <= ASeg.start && BI->end > ASeg.start)
705 if (BI->start > ASeg.start && BI->start < ASeg.end)
705 if (BI->start > ASeg.start && BI->start < ASeg.end)
705 if (BI->start > ASeg.start && BI->start < ASeg.end)
728 LiveRange::Segment Added = LiveRange::Segment(S.start, S.end, DstValNo);
961 if (S->start.getBaseIndex() == CopyIdx.getBaseIndex())
2799 << OtherI->valno->id << '@' << OtherI->start << '\n');
2803 << OtherI->valno->id << '@' << OtherI->start << " to "
2811 if (++OtherI == Other.LR.end() || OtherI->start >= MBBEnd)
3162 if (I->start > Def)
3163 ED = ED.isValid() ? std::min(ED, I->start) : I->start;
3163 ED = ED.isValid() ? std::min(ED, I->start) : I->start;
lib/CodeGen/RegisterPressure.cpp 1271 return S != nullptr && S->start < Pos.getRegSlot(true) &&
lib/CodeGen/SplitKit.cpp 226 LIS.getMBBFromIndex(LVI->start)->getIterator();
253 BI.LiveIn = LVI->start <= Start;
257 assert(LVI->start == LVI->valno->def && "Dangling Segment start");
258 assert(LVI->start == BI.FirstInstr && "First instr should be a def");
266 if (++LVI == LVE || LVI->start >= Stop) {
272 if (LastStop < LVI->start) {
285 BI.FirstInstr = BI.FirstDef = LVI->start;
289 assert(LVI->start == LVI->valno->def && "Dangling Segment start");
291 BI.FirstDef = LVI->start;
306 if (LVI->start < Stop)
309 MFI = LIS.getMBBFromIndex(LVI->start)->getIterator();
326 LIS.getMBBFromIndex(LVI->start)->getIterator();
336 } while (Stop <= LVI->start);
347 if (I != Orig.end() && I->start <= Idx)
348 return I->start == Idx;
1129 SlotIndex Start = S.start;
lib/CodeGen/TwoAddressInstructionPass.cpp 258 if (I != LI.end() && I->start < MBBEndIdx)
878 if (I != LI.end() && I->start < MBBEndIdx)
1068 if (I != LI.end() && I->start < MBBEndIdx)
lib/CodeGen/VirtRegMap.cpp 279 if (!First.isValid() || SR.segments.front().start < First)
280 First = SR.segments.front().start;
300 if (SRI->start <= MBBBegin)
333 I = Indexes->advanceMBBIndex(I, Seg.start);
lib/Target/AMDGPU/SIWholeQuadMode.cpp 599 SlotIndex Next = S->start.getBaseIndex();
lib/Target/Hexagon/HexagonExpandCondsets.cpp 340 if (NextI != E && NextI->start.isRegister()) {
341 MachineInstr *DefI = LIS->getInstructionFromIndex(NextI->start);
416 if (!Seg.start.isRegister())
418 MachineInstr *DefI = LIS->getInstructionFromIndex(Seg.start);
421 PredDefs.push_back(Seg.start);
470 if (!Seg.start.isRegister())
472 MachineInstr *DefI = LIS->getInstructionFromIndex(Seg.start);
487 if (!Seg.start.isRegister() || !Range.liveAt(Seg.start.getPrevSlot()))
487 if (!Seg.start.isRegister() || !Range.liveAt(Seg.start.getPrevSlot()))
489 MachineInstr *DefI = LIS->getInstructionFromIndex(Seg.start);
1112 if (!LR.start.isRegister())
1172 L1.addSegment(LiveRange::Segment(I->start, I->end, NewVN));
lib/Target/Hexagon/HexagonRegisterInfo.cpp 256 for (SlotIndex I = S.start.getBaseIndex(), E = S.end.getBaseIndex();
lib/Target/PowerPC/PPCVSXFMAMutate.cpp 306 NewFMAInt.getNextValue(AI->start,
309 NewFMAInt.addSegment(LiveInterval::Segment(AI->start, AI->end,
lib/Target/WebAssembly/WebAssemblyRegStackify.cpp 628 I->start = TeeIdx;