Home
last modified time | relevance | path

Searched refs:LiveInterval (Results 1 – 25 of 74) sorted by relevance

123

/freebsd/contrib/llvm-project/llvm/lib/CodeGen/
H A DRegAllocGreedy.h88 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
97 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
161 using SmallLISet = SmallSetVector<const LiveInterval *, 4>;
166 SmallVector<std::pair<const LiveInterval *, MCRegister>, 8>;
277 SmallSetVector<const LiveInterval *, 8> SetOfBrokenHints;
293 void enqueueImpl(const LiveInterval *LI) override;
294 const LiveInterval *dequeue() override;
295 MCRegister selectOrSplit(const LiveInterval &,
297 void aboutToRemoveInterval(const LiveInterval &) override;
305 MCRegister selectOrSplitImpl(const LiveInterval &,
[all …]
H A DRenameIndependentSubregs.cpp56 LiveInterval::SubRange *SR;
59 SubRangeInfo(LiveIntervals &LIS, LiveInterval::SubRange &SR, in SubRangeInfo()
65 bool renameComponents(LiveInterval &LI) const;
72 LiveInterval &LI) const;
78 const SmallVectorImpl<LiveInterval*> &Intervals) const;
83 const SmallVectorImpl<LiveInterval*> &Intervals) const;
88 const SmallVectorImpl<LiveInterval*> &Intervals) const;
128 bool RenameIndependentSubregs::renameComponents(LiveInterval &LI) const { in INITIALIZE_PASS_DEPENDENCY()
141 SmallVector<LiveInterval*, 4> Intervals; in INITIALIZE_PASS_DEPENDENCY()
149 LiveInterval &NewLI = LIS->createEmptyInterval(NewVReg); in INITIALIZE_PASS_DEPENDENCY()
[all …]
H A DRegAllocBasic.cpp47 bool operator()(const LiveInterval *A, const LiveInterval *B) const { in operator ()()
67 std::priority_queue<const LiveInterval *, std::vector<const LiveInterval *>,
91 void enqueueImpl(const LiveInterval *LI) override { Queue.push(LI); } in enqueueImpl()
93 const LiveInterval *dequeue() override { in dequeue()
96 const LiveInterval *LI = Queue.top(); in dequeue()
101 MCRegister selectOrSplit(const LiveInterval &VirtReg,
118 bool spillInterferences(const LiveInterval &VirtReg, MCRegister PhysReg,
148 LiveInterval &LI = LIS->getInterval(VirtReg); in INITIALIZE_PASS_DEPENDENCY()
167 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
209 bool RABasic::spillInterferences(const LiveInterval &VirtReg, in spillInterferences()
[all …]
H A DLiveRangeEdit.cpp34 LiveInterval &LiveRangeEdit::createEmptyIntervalFrom(Register OldReg, in createEmptyIntervalFrom()
40 LiveInterval &LI = LIS.createEmptyInterval(VReg); in createEmptyIntervalFrom()
47 LiveInterval &OldLI = LIS.getInterval(OldReg); in createEmptyIntervalFrom()
49 for (LiveInterval::SubRange &S : OldLI.subranges()) in createEmptyIntervalFrom()
86 LiveInterval &OrigLI = LIS.getInterval(Original); in scanRemattable()
123 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt()
143 for (LiveInterval::SubRange &SR : li.subranges()) { in allUsesAvailableAt()
203 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
262 bool LiveRangeEdit::useIsKill(const LiveInterval &LI, in useIsKill()
271 for (const LiveInterval::SubRange &S : LI.subranges()) { in useIsKill()
[all …]
H A DRegAllocBase.h47 class LiveInterval; variable
118 virtual void enqueueImpl(const LiveInterval *LI) = 0;
121 void enqueue(const LiveInterval *LI);
124 virtual const LiveInterval *dequeue() = 0;
130 virtual MCRegister selectOrSplit(const LiveInterval &VirtReg,
144 virtual void aboutToRemoveInterval(const LiveInterval &LI) {} in aboutToRemoveInterval()
H A DSplitKit.cpp66 InsertPointAnalysis::computeLastInsertPoint(const LiveInterval &CurLI, in computeLastInsertPoint()
142 InsertPointAnalysis::getLastInsertPointIter(const LiveInterval &CurLI, in getLastInsertPointIter()
205 LiveInterval::const_iterator LVI = CurLI->begin(); in calcLiveBlockInfo()
206 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo()
309 unsigned SplitAnalysis::countLiveBlocks(const LiveInterval *cli) const { in countLiveBlocks()
312 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
313 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
314 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
335 const LiveInterval &Orig = LIS.getInterval(OrigReg); in isOriginalEndpoint()
337 LiveInterval::const_iterator I = Orig.find(Idx); in isOriginalEndpoint()
[all …]
H A DSplitKit.h35 class LiveInterval; variable
60 SlotIndex computeLastInsertPoint(const LiveInterval &CurLI,
67 SlotIndex getLastInsertPoint(const LiveInterval &CurLI, in getLastInsertPoint()
78 MachineBasicBlock::iterator getLastInsertPointIter(const LiveInterval &CurLI,
141 const LiveInterval *CurLI = nullptr;
178 void analyze(const LiveInterval *li);
185 const LiveInterval &getParent() const { return *CurLI; } in getParent()
221 unsigned countLiveBlocks(const LiveInterval *li) const;
359 void addDeadDef(LiveInterval &LI, VNInfo *VNI, bool Original);
445 unsigned SubIdx, LiveInterval &DestLI,
H A DRegisterCoalescer.cpp231 void setUndefOnPrunedSubRegUses(LiveInterval &LI, Register Reg,
253 bool isHighCostLiveInterval(LiveInterval &LI);
263 void mergeSubRangeInto(LiveInterval &LI, const LiveRange &ToMerge,
280 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
318 void addUndefFlag(const LiveInterval &Int, SlotIndex UseIdx,
344 void shrinkToUses(LiveInterval *LI, in shrinkToUses()
350 SmallVector<LiveInterval *, 8> SplitLIs; in shrinkToUses()
628 LiveInterval &IntA = in adjustCopiesBackFrom()
630 LiveInterval &IntB = in adjustCopiesBackFrom()
650 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx); in adjustCopiesBackFrom()
[all …]
H A DStackSlotColoring.cpp72 std::vector<LiveInterval *> SSIntervals;
102 LiveInterval *SingleLI = nullptr;
117 bool overlaps(LiveInterval *LI) const { in overlaps()
124 void add(LiveInterval *LI, LiveIntervalUnion::Allocator &Alloc) { in add()
153 int ColorSlot(LiveInterval *li);
209 bool operator()(LiveInterval* LHS, LiveInterval* RHS) const { in operator ()()
232 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs()
278 LiveInterval &li = I->second; in InitializeSlots()
313 int StackSlotColoring::ColorSlot(LiveInterval *li) { in ColorSlot()
376 for (LiveInterval *li : SSIntervals) { in ColorSlots()
[all …]
H A DLiveRegMatrix.cpp88 const LiveInterval &VRegInterval, MCRegister PhysReg, in foreachUnit()
94 for (const LiveInterval::SubRange &S : VRegInterval.subranges()) { in foreachUnit()
111 void LiveRegMatrix::assign(const LiveInterval &VirtReg, MCRegister PhysReg) { in assign()
128 void LiveRegMatrix::unassign(const LiveInterval &VirtReg) { in unassign()
153 bool LiveRegMatrix::checkRegMaskInterference(const LiveInterval &VirtReg, in checkRegMaskInterference()
172 bool LiveRegMatrix::checkRegUnitInterference(const LiveInterval &VirtReg, in checkRegUnitInterference()
194 LiveRegMatrix::checkInterference(const LiveInterval &VirtReg, in checkInterference()
284 const LiveInterval *VRegInterval = nullptr; in getOneVReg()
H A DLiveIntervalUnion.cpp28 void LiveIntervalUnion::unify(const LiveInterval &VirtReg, in unify()
56 void LiveIntervalUnion::extract(const LiveInterval &VirtReg, in extract()
103 const LiveInterval *LiveIntervalUnion::getOneVReg() const { in getOneVReg()
116 const LiveInterval *VirtReg) const { in isSeenInterference()
152 const LiveInterval *RecentReg = nullptr; in collectInterferingVRegs()
159 const LiveInterval *VReg = LiveUnionI.value(); in collectInterferingVRegs()
H A DInlineSpiller.cpp96 DenseMap<int, std::unique_ptr<LiveInterval>> StackSlotToOrigLI;
110 bool isSpillCandBB(LiveInterval &OrigLI, VNInfo &OrigVNI,
125 void runHoistSpills(LiveInterval &OrigLI, VNInfo &OrigVNI,
157 LiveInterval *StackInt = nullptr;
202 bool isSnippet(const LiveInterval &SnipLI);
208 bool hoistSpillInsideBB(LiveInterval &SpillLI, MachineInstr &CopyMI);
209 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
211 void markValueUsed(LiveInterval*, VNInfo*);
214 bool reMaterializeFor(LiveInterval &, MachineInstr &MI);
318 bool InlineSpiller::isSnippet(const LiveInterval &SnipLI) { in isSnippet()
[all …]
H A DLiveIntervalCalc.cpp41 void LiveIntervalCalc::calculate(LiveInterval &LI, bool TrackSubRegs) { in calculate()
70 [&MO, Indexes, Alloc](LiveInterval::SubRange &SR) { in calculate()
92 for (LiveInterval::SubRange &S : LI.subranges()) { in calculate()
105 void LiveIntervalCalc::constructMainRangeFromSubranges(LiveInterval &LI) { in constructMainRangeFromSubranges()
112 for (const LiveInterval::SubRange &SR : LI.subranges()) { in constructMainRangeFromSubranges()
135 LaneBitmask Mask, LiveInterval *LI) { in extendToUses()
H A DLiveIntervals.cpp223 LiveInterval *LiveIntervals::createInterval(Register reg) { in createInterval()
225 return new LiveInterval(reg, Weight); in createInterval()
229 bool LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval()
242 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs()
245 SmallVector<LiveInterval*, 8> SplitLIs; in computeVirtRegs()
395 iterator_range<LiveInterval::vni_iterator> VNIs) { in createSegmentsForValues()
412 auto getSubRange = [](const LiveInterval &I, LaneBitmask M) in extendSegmentsToUses()
416 for (const LiveInterval::SubRange &SR : I.subranges()) { in extendSegmentsToUses()
425 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses()
485 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses()
[all …]
H A DCalcSpillWeights.cpp81 bool VirtRegAuxInfo::isRematerializable(const LiveInterval &LI, in isRematerializable()
87 for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end(); in isRematerializable()
115 const LiveInterval &SrcLI = LIS.getInterval(Reg); in isRematerializable()
131 bool VirtRegAuxInfo::isLiveAtStatepointVarArg(LiveInterval &LI) { in isLiveAtStatepointVarArg()
141 void VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &LI) { in calculateSpillWeightAndHint()
149 static bool canMemFoldInlineAsm(LiveInterval &LI, in canMemFoldInlineAsm()
160 float VirtRegAuxInfo::weightCalcHelper(LiveInterval &LI, SlotIndex *Start, in weightCalcHelper()
175 const LiveInterval &OrigInt = LIS.getInterval(Original); in weightCalcHelper()
H A DRegAllocGreedy.cpp370 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_CanEraseVirtReg()
389 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
417 void RAGreedy::enqueueImpl(const LiveInterval *LI) { enqueue(Queue, LI); } in enqueueImpl()
419 void RAGreedy::enqueue(PQueue &CurQueue, const LiveInterval *LI) { in enqueue()
438 unsigned DefaultPriorityAdvisor::getPriority(const LiveInterval &LI) const { in getPriority()
510 unsigned DummyPriorityAdvisor::getPriority(const LiveInterval &LI) const { in getPriority()
516 const LiveInterval *RAGreedy::dequeue() { return dequeue(Queue); } in dequeue()
518 const LiveInterval *RAGreedy::dequeue(PQueue &CurQueue) { in dequeue()
521 LiveInterval *LI = &LIS->getInterval(~CurQueue.top().second); in dequeue()
531 MCRegister RAGreedy::tryAssign(const LiveInterval &VirtReg, in tryAssign()
[all …]
H A DVirtRegMap.cpp216 void addLiveInsForSubRanges(const LiveInterval &LI, MCRegister PhysReg) const;
221 const LiveInterval &LI, const MachineBasicBlock &MBB, unsigned SubReg,
364 void VirtRegRewriter::addLiveInsForSubRanges(const LiveInterval &LI, in addLiveInsForSubRanges()
370 std::pair<const LiveInterval::SubRange *, LiveInterval::const_iterator>; in addLiveInsForSubRanges()
375 for (const LiveInterval::SubRange &SR : LI.subranges()) { in addLiveInsForSubRanges()
392 const LiveInterval::SubRange *SR = RangeIterPair.first; in addLiveInsForSubRanges()
393 LiveInterval::const_iterator &SRI = RangeIterPair.second; in addLiveInsForSubRanges()
415 LiveInterval &LI = LIS->getInterval(VirtReg); in addMBBLiveIns()
459 const LiveInterval &LI = LIS->getInterval(Reg); in readsUndefSubreg()
470 for (const LiveInterval::SubRange &SR : LI.subranges()) { in readsUndefSubreg()
[all …]
/freebsd/contrib/llvm-project/llvm/include/llvm/CodeGen/
H A DLiveIntervals.h71 IndexedMap<LiveInterval *, VirtReg2IndexFunctor> VirtRegIntervals;
133 LiveInterval &getInterval(Register Reg) { in getInterval()
140 const LiveInterval &getInterval(Register Reg) const { in getInterval()
149 LiveInterval &createEmptyInterval(Register Reg) { in createEmptyInterval()
157 LiveInterval &createAndComputeVirtRegInterval(Register Reg) { in createAndComputeVirtRegInterval()
158 LiveInterval &LI = createEmptyInterval(Reg); in createAndComputeVirtRegInterval()
166 LiveInterval &getOrCreateEmptyInterval(Register Reg) { in getOrCreateEmptyInterval()
179 LLVM_ABI LiveInterval::Segment
188 LLVM_ABI bool shrinkToUses(LiveInterval *li,
197 LLVM_ABI void shrinkToUses(LiveInterval::SubRange &SR, Register Reg);
[all …]
H A DRegAllocEvictionAdvisor.h27 class LiveInterval; variable
109 const LiveInterval &VirtReg, const AllocationOrder &Order,
115 canEvictHintInterference(const LiveInterval &VirtReg, MCRegister PhysReg,
125 bool canReassign(const LiveInterval &VirtReg, MCRegister FromReg) const;
129 std::optional<unsigned> getOrderLimit(const LiveInterval &VirtReg,
286 MCRegister tryFindEvictionCandidate(const LiveInterval &,
289 bool canEvictHintInterference(const LiveInterval &, MCRegister,
291 bool canEvictInterferenceBasedOnCost(const LiveInterval &, MCRegister, bool,
294 bool shouldEvict(const LiveInterval &A, bool, const LiveInterval &B,
H A DLiveRangeEdit.h67 const LiveInterval *const Parent;
98 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead);
100 using ToShrinkSet = SmallSetVector<LiveInterval *, 8>;
111 bool useIsKill(const LiveInterval &LI, const MachineOperand &MO) const;
114 LiveInterval &createEmptyIntervalFrom(Register OldReg, bool createSubRanges);
128 LiveRangeEdit(const LiveInterval *parent, SmallVectorImpl<Register> &newRegs,
140 const LiveInterval &getParent() const { in getParent()
172 LiveInterval &createEmptyInterval() { in createEmptyInterval()
H A DLiveRegMatrix.h34 class LiveInterval; variable
108 InterferenceKind checkInterference(const LiveInterval &VirtReg,
131 void assign(const LiveInterval &VirtReg, MCRegister PhysReg);
136 void unassign(const LiveInterval &VirtReg);
151 bool checkRegMaskInterference(const LiveInterval &VirtReg,
157 bool checkRegUnitInterference(const LiveInterval &VirtReg,
H A DCalcSpillWeights.h16 class LiveInterval; variable
56 bool isLiveAtStatepointVarArg(LiveInterval &LI);
68 void calculateSpillWeightAndHint(LiveInterval &LI);
81 static bool isRematerializable(const LiveInterval &LI,
99 float weightCalcHelper(LiveInterval &LI, SlotIndex *Start = nullptr,
H A DLiveIntervalUnion.h46 using LiveSegments = IntervalMap<SlotIndex, const LiveInterval *>;
91 void unify(const LiveInterval &VirtReg, const LiveRange &Range);
94 void extract(const LiveInterval &VirtReg, const LiveRange &Range);
108 const LiveInterval *getOneVReg() const;
117 SmallVector<const LiveInterval *, 4> InterferingVRegs;
128 bool isSeenInterference(const LiveInterval *VirtReg) const;
162 const SmallVectorImpl<const LiveInterval *> &interferingVRegs(
H A DLiveIntervalCalc.h41 LiveInterval *LI = nullptr);
62 LLVM_ABI void calculate(LiveInterval &LI, bool TrackSubRegs);
67 LLVM_ABI void constructMainRangeFromSubranges(LiveInterval &LI);
/freebsd/contrib/llvm-project/llvm/lib/Target/WebAssembly/
H A DWebAssemblyRegColoring.cpp132 ArrayRef<SmallVector<LiveInterval *, 4>> Assignments, in undefInvalidDbgValues() argument
141 for (LiveInterval *LI : CoalescedIntervals) { in undefInvalidDbgValues()
170 for (LiveInterval *OtherLI : CoalescedIntervals) { in undefInvalidDbgValues()
244 SmallVector<LiveInterval *, 0> SortedIntervals; in runOnMachineFunction()
259 LiveInterval *LI = &Liveness->getInterval(VReg); in runOnMachineFunction()
271 llvm::sort(SortedIntervals, [MRI](LiveInterval *LHS, LiveInterval *RHS) { in runOnMachineFunction()
283 SmallVector<SmallVector<LiveInterval *, 4>, 16> Assignments( in runOnMachineFunction()
288 LiveInterval *LI = SortedIntervals[I]; in runOnMachineFunction()
298 for (LiveInterval *OtherLI : Assignments[C]) in runOnMachineFunction()

123