Home
last modified time | relevance | path

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

123

/freebsd-14.2/contrib/llvm-project/llvm/lib/CodeGen/
H A DRegAllocGreedy.h159 using SmallLISet = SmallSetVector<const LiveInterval *, 4>;
271 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;
315 MCRegister selectOrSplitImpl(const LiveInterval &,
322 void enqueue(PQueue &CurQueue, const LiveInterval *LI);
323 const LiveInterval *dequeue(PQueue &CurQueue);
335 void evictInterference(const LiveInterval &, MCRegister,
[all …]
H A DRenameIndependentSubregs.cpp69 LiveInterval::SubRange *SR;
78 bool renameComponents(LiveInterval &LI) const;
85 LiveInterval &LI) const;
135 SmallVector<LiveInterval*, 4> Intervals; in INITIALIZE_PASS_DEPENDENCY()
157 LiveInterval &LI) const { in findComponents()
161 for (LiveInterval::SubRange &SR : LI.subranges()) { in findComponents()
186 const LiveInterval::SubRange &SR = *SRInfo.SR; in findComponents()
231 const LiveInterval::SubRange &SR = *SRInfo.SR; in rewriteOperands()
273 LiveInterval::SubRange &SR = *SRInfo.SR; in distribute()
306 LiveInterval &LI = *Intervals[I]; in computeMainRangesFixFlags()
[all …]
H A DRegAllocBasic.cpp45 bool operator()(const LiveInterval *A, const LiveInterval *B) const { in operator ()()
65 std::priority_queue<const LiveInterval *, std::vector<const LiveInterval *>,
91 const LiveInterval *dequeue() override { in dequeue()
94 const LiveInterval *LI = Queue.top(); in dequeue()
99 MCRegister selectOrSplit(const LiveInterval &VirtReg,
147 LiveInterval &LI = LIS->getInterval(VirtReg); in INITIALIZE_PASS_DEPENDENCY()
166 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
208 bool RABasic::spillInterferences(const LiveInterval &VirtReg, in spillInterferences()
213 SmallVector<const LiveInterval *, 8> Intfs; in spillInterferences()
230 const LiveInterval &Spill = *Intfs[i]; in spillInterferences()
[all …]
H A DRegAllocEvictionAdvisor.h22 class LiveInterval; variable
108 const LiveInterval &VirtReg, const AllocationOrder &Order,
114 canEvictHintInterference(const LiveInterval &VirtReg, MCRegister PhysReg,
124 bool canReassign(const LiveInterval &VirtReg, MCRegister FromReg) const;
128 std::optional<unsigned> getOrderLimit(const LiveInterval &VirtReg,
210 MCRegister tryFindEvictionCandidate(const LiveInterval &,
213 bool canEvictHintInterference(const LiveInterval &, MCRegister,
215 bool canEvictInterferenceBasedOnCost(const LiveInterval &, MCRegister, bool,
218 bool shouldEvict(const LiveInterval &A, bool, const LiveInterval &B,
H A DRegAllocBase.h45 class LiveInterval; variable
99 virtual void enqueueImpl(const LiveInterval *LI) = 0;
102 void enqueue(const LiveInterval *LI);
105 virtual const LiveInterval *dequeue() = 0;
111 virtual MCRegister selectOrSplit(const LiveInterval &VirtReg,
119 virtual void aboutToRemoveInterval(const LiveInterval &LI) {} in aboutToRemoveInterval()
H A DLiveRangeEdit.cpp40 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()
207 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
349 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDef()
450 LiveInterval *LI = ToShrink.pop_back_val(); in eliminateDeadDefs()
468 SmallVector<LiveInterval*, 8> SplitLIs; in eliminateDeadDefs()
474 for (const LiveInterval *SplitLI : SplitLIs) { in eliminateDeadDefs()
[all …]
H A DSplitKit.cpp208 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo()
314 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
315 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
316 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
339 LiveInterval::const_iterator I = Orig.find(Idx); in isOriginalEndpoint()
1432 LiveInterval &LI = LIS.getInterval(R); in rewriteAssigned()
1444 LiveInterval *LI = &LIS.getInterval(R); in deleteRematVictims()
1551 LiveInterval &LI = LIS.getInterval(Reg); in finish()
1567 LiveInterval &LI = LIS.getInterval(VReg); in finish()
1568 SmallVector<LiveInterval*, 8> SplitLIs; in finish()
[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);
439 unsigned SubIdx, LiveInterval &DestLI,
H A DLiveRegMatrix.cpp81 const LiveInterval &VRegInterval, MCRegister PhysReg, in foreachUnit()
87 for (const LiveInterval::SubRange &S : VRegInterval.subranges()) { in foreachUnit()
104 void LiveRegMatrix::assign(const LiveInterval &VirtReg, MCRegister PhysReg) { in assign()
121 void LiveRegMatrix::unassign(const LiveInterval &VirtReg) { in unassign()
146 bool LiveRegMatrix::checkRegMaskInterference(const LiveInterval &VirtReg, in checkRegMaskInterference()
164 bool LiveRegMatrix::checkRegUnitInterference(const LiveInterval &VirtReg, in checkRegUnitInterference()
186 LiveRegMatrix::checkInterference(const LiveInterval &VirtReg, in checkInterference()
241 const LiveInterval *VRegInterval = nullptr; in getOneVReg()
H A DStackSlotColoring.cpp69 std::vector<LiveInterval*> SSIntervals;
99 LiveInterval *SingleLI = nullptr;
114 bool overlaps(LiveInterval *LI) const { in overlaps()
163 int ColorSlot(LiveInterval *li);
189 bool operator()(LiveInterval* LHS, LiveInterval* RHS) const { in operator ()()
212 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs()
261 LiveInterval &li = I->second; in InitializeSlots()
294 int StackSlotColoring::ColorSlot(LiveInterval *li) { in ColorSlot()
357 for (LiveInterval *li : SSIntervals) { in ColorSlots()
369 for (LiveInterval *li : SSIntervals) { in ColorSlots()
[all …]
H A DRegisterCoalescer.cpp280 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
344 void shrinkToUses(LiveInterval *LI, in shrinkToUses()
350 SmallVector<LiveInterval*, 8> SplitLIs; in shrinkToUses()
620 LiveInterval &IntA = in adjustCopiesBackFrom()
622 LiveInterval &IntB = in adjustCopiesBackFrom()
666 LiveInterval::iterator ValS = in adjustCopiesBackFrom()
808 LiveInterval &IntA = in removeCopyByCommutingDef()
810 LiveInterval &IntB = in removeCopyByCommutingDef()
1102 LiveInterval &IntA = in removePartialRedundancy()
1104 LiveInterval &IntB = in removePartialRedundancy()
[all …]
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.cpp164 LiveInterval *StackInt = nullptr;
205 bool isSnippet(const LiveInterval &SnipLI);
214 void markValueUsed(LiveInterval*, VNInfo*);
442 LiveInterval &SrcLI = LIS.getInterval(SrcReg); in hoistSpillInsideBB()
453 LiveInterval &OrigLI = LIS.getInterval(Original); in hoistSpillInsideBB()
501 LiveInterval *LI; in eliminateRedundantSpills()
723 LiveInterval &LI = LIS.getInterval(Reg); in reMaterializeAll()
740 LiveInterval &LI = LIS.getInterval(Reg); in reMaterializeAll()
1145 LiveInterval &OldLI = LIS.getInterval(Reg); in spillAroundUses()
1363 LiveInterval &LI = LIS.getInterval(SibReg); in isSpillCandBB()
[all …]
H A DCalcSpillWeights.cpp82 bool VirtRegAuxInfo::isRematerializable(const LiveInterval &LI, in isRematerializable()
88 for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end(); in isRematerializable()
116 const LiveInterval &SrcLI = LIS.getInterval(Reg); in isRematerializable()
132 bool VirtRegAuxInfo::isLiveAtStatepointVarArg(LiveInterval &LI) { in isLiveAtStatepointVarArg()
142 void VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &LI) { in calculateSpillWeightAndHint()
150 static bool canMemFoldInlineAsm(LiveInterval &LI, in canMemFoldInlineAsm()
161 float VirtRegAuxInfo::weightCalcHelper(LiveInterval &LI, SlotIndex *Start, in weightCalcHelper()
176 const LiveInterval &OrigInt = LIS.getInterval(Original); in weightCalcHelper()
H A DLiveIntervalCalc.cpp42 void LiveIntervalCalc::calculate(LiveInterval &LI, bool TrackSubRegs) { in calculate()
71 [&MO, Indexes, Alloc](LiveInterval::SubRange &SR) { in calculate()
93 for (LiveInterval::SubRange &S : LI.subranges()) { in calculate()
106 void LiveIntervalCalc::constructMainRangeFromSubranges(LiveInterval &LI) { in constructMainRangeFromSubranges()
113 for (const LiveInterval::SubRange &SR : LI.subranges()) { in constructMainRangeFromSubranges()
136 LaneBitmask Mask, LiveInterval *LI) { in extendToUses()
H A DLiveIntervals.cpp184 return new LiveInterval(reg, Weight); in createInterval()
201 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs()
204 SmallVector<LiveInterval*, 8> SplitLIs; in computeVirtRegs()
384 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses()
444 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses()
694 const LiveInterval &LI = getInterval(Reg); in addKillFlags()
1017 LiveInterval &LI = LIS.getInterval(Reg); in updateAllRanges()
1545 LiveInterval &LI = getInterval(Reg); in handleMoveIntoNewBundle()
1558 LiveInterval::iterator LII = LR.find(EndIdx); in repairOldRegInRange()
1689 LiveInterval &LI = getInterval(Reg); in repairIntervalsInRange()
[all …]
H A DRegAllocGreedy.cpp237 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_CanEraseVirtReg()
256 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
386 const LiveInterval *RAGreedy::dequeue(PQueue &CurQueue) { in dequeue()
495 SmallVector<const LiveInterval *, 8> Intfs; in evictInterference()
507 for (const LiveInterval *Intf : Intfs) { in evictInterference()
1870 MCRegister PhysReg, const LiveInterval &VirtReg, in mayRecolorAllInterferences()
2076 const LiveInterval *LI; in tryLastChanceRecoloring()
2085 const LiveInterval *LI; in tryLastChanceRecoloring()
2114 const LiveInterval *LI = dequeue(RecoloringQueue); in tryRecoloringCandidates()
2318 LiveInterval &LI = LIS->getInterval(Reg); in tryHintRecoloring()
[all …]
/freebsd-14.2/contrib/llvm-project/llvm/include/llvm/CodeGen/
H A DLiveIntervals.h112 LiveInterval &getInterval(Register Reg) { in getInterval()
119 const LiveInterval &getInterval(Register Reg) const { in getInterval()
129 LiveInterval &createEmptyInterval(Register Reg) { in createEmptyInterval()
137 LiveInterval &LI = createEmptyInterval(Reg); in createAndComputeVirtRegInterval()
145 LiveInterval &getOrCreateEmptyInterval(Register Reg) { in getOrCreateEmptyInterval()
166 bool shrinkToUses(LiveInterval *li,
378 bool checkRegMaskInterference(const LiveInterval &LI,
441 void splitSeparateComponents(LiveInterval &LI,
463 bool computeDeadValues(LiveInterval &LI,
466 static LiveInterval *createInterval(Register Reg);
[all …]
H A DLiveRegMatrix.h34 class LiveInterval; variable
107 InterferenceKind checkInterference(const LiveInterval &VirtReg,
120 void assign(const LiveInterval &VirtReg, MCRegister PhysReg);
125 void unassign(const LiveInterval &VirtReg);
140 bool checkRegMaskInterference(const LiveInterval &VirtReg,
146 bool checkRegUnitInterference(const LiveInterval &VirtReg,
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 DCalcSpillWeights.h16 class LiveInterval; variable
54 bool isLiveAtStatepointVarArg(LiveInterval &LI);
65 void calculateSpillWeightAndHint(LiveInterval &LI);
78 static bool isRematerializable(const LiveInterval &LI,
96 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.h40 LiveInterval *LI = nullptr);
61 void calculate(LiveInterval &LI, bool TrackSubRegs);
66 void constructMainRangeFromSubranges(LiveInterval &LI);
H A DLiveStacks.h43 using SS2IntervalMap = std::unordered_map<int, LiveInterval>;
66 LiveInterval &getOrCreateInterval(int Slot, const TargetRegisterClass *RC);
68 LiveInterval &getInterval(int Slot) { in getInterval()
75 const LiveInterval &getInterval(int Slot) const { in getInterval()
/freebsd-14.2/contrib/llvm-project/llvm/lib/Target/WebAssembly/
H A DWebAssemblyRegColoring.cpp132 const ArrayRef<SmallVector<LiveInterval *, 4>> &Assignments, in undefInvalidDbgValues() argument
142 for (LiveInterval *LI : CoalescedIntervals) { in undefInvalidDbgValues()
171 for (LiveInterval *OtherLI : CoalescedIntervals) { in undefInvalidDbgValues()
245 SmallVector<LiveInterval *, 0> SortedIntervals; in runOnMachineFunction()
260 LiveInterval *LI = &Liveness->getInterval(VReg); in runOnMachineFunction()
272 llvm::sort(SortedIntervals, [MRI](LiveInterval *LHS, LiveInterval *RHS) { in runOnMachineFunction()
284 SmallVector<SmallVector<LiveInterval *, 4>, 16> Assignments( in runOnMachineFunction()
289 LiveInterval *LI = SortedIntervals[I]; in runOnMachineFunction()
299 for (LiveInterval *OtherLI : Assignments[C]) in runOnMachineFunction()

123