Lines Matching +full:non +full:- +full:overlapping

1 //===- HexagonBlockRanges.cpp ---------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
39 bool SbAE = (S < AE) || (S == AE && A.TiedEnd); // S-before-AE. in overlaps()
40 bool ASbE = (AS < E) || (AS == E && TiedEnd); // AS-before-E. in overlaps()
81 // Merge all overlapping ranges in the list, so that all that remains
90 while (Iter != end()-1) { in unionize()
94 bool Merge = MergeAdjacent && (Iter->end() == Next->start()); in unionize()
95 if (Merge || Iter->overlaps(*Next)) { in unionize()
96 Iter->merge(*Next); in unionize()
104 // Compute a range A-B and add it to the list.
107 // Exclusion of non-overlapping ranges makes some checks simpler in addsub()
110 // A - B = A. in addsub()
142 // Cannot assume that the list is unionized (i.e. contains only non- in subtract()
143 // overlapping ranges. in subtract()
149 Next = this->erase(I); in subtract()
168 Last = B.empty() ? IndexType::None : unsigned(Idx)-1; in InstrIndexMap()
173 return (F != Map.end()) ? F->second : nullptr; in getInstr()
193 return unsigned(Idx)-1; in getPrevIndex()
223 // Consider all non-allocatable registers as reserved. in HexagonBlockRanges()
225 if (RC->isAllocatable()) in HexagonBlockRanges()
294 MachineRegisterInfo &MRI = B.getParent()->getRegInfo(); in computeInitialLiveRanges()
302 auto closeRange = [&LastUse,&LastDef,&LiveMap] (RegisterRef R) -> void { in computeInitialLiveRanges()
369 // dead %d0 = COPY %5, implicit-def %r0, implicit-def %r1 in computeInitialLiveRanges()
387 // Create a single-instruction range. in computeInitialLiveRanges()
393 // Collect live-on-exit. in computeInitialLiveRanges()
432 auto addDeadRanges = [&IndexMap,&LiveMap,&DeadMap] (RegisterRef R) -> void { in computeDeadMap()
434 if (F == LiveMap.end() || F->second.empty()) { in computeDeadMap()
439 RangeList &RL = F->second; in computeDeadMap()
440 RangeList::iterator A = RL.begin(), Z = RL.end()-1; in computeDeadMap()
443 if (A->start() != IndexType::Entry) { in computeDeadMap()
444 IndexType DE = IndexMap.getPrevIndex(A->start()); in computeDeadMap()
452 IndexType AE = (A->end() == IndexType::None) ? A->start() : A->end(); in computeDeadMap()
455 IndexType DE = IndexMap.getPrevIndex(A->start()); in computeDeadMap()
461 if (Z->end() != IndexType::Exit) { in computeDeadMap()
462 IndexType ZE = (Z->end() == IndexType::None) ? Z->start() : Z->end(); in computeDeadMap()
493 return OS << '-'; in operator <<()
498 return OS << unsigned(Idx)-HexagonBlockRanges::IndexType::First+1; in operator <<()
530 OS << printReg(I.first.Reg, &P.TRI, I.first.Sub) << " -> " << RL << "\n"; in operator <<()