Home
last modified time | relevance | path

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

123

/freebsd-13.1/contrib/llvm-project/llvm/lib/CodeGen/
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.cpp48 bool operator()(LiveInterval *A, LiveInterval *B) const { in operator ()()
68 std::priority_queue<LiveInterval*, std::vector<LiveInterval*>,
91 void enqueueImpl(LiveInterval *LI) override { in enqueueImpl()
95 LiveInterval *dequeue() override { in dequeue()
98 LiveInterval *LI = Queue.top(); in dequeue()
103 MCRegister selectOrSplit(LiveInterval &VirtReg,
150 LiveInterval &LI = LIS->getInterval(VirtReg); in INITIALIZE_PASS_DEPENDENCY()
169 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
215 SmallVector<LiveInterval*, 8> Intfs; in spillInterferences()
222 LiveInterval *Intf = Q.interferingVRegs()[i - 1]; in spillInterferences()
[all …]
H A DRegAllocBase.h45 class LiveInterval; variable
99 virtual void enqueueImpl(LiveInterval *LI) = 0;
102 void enqueue(LiveInterval *LI);
105 virtual LiveInterval *dequeue() = 0;
111 virtual MCRegister selectOrSplit(LiveInterval &VirtReg,
119 virtual void aboutToRemoveInterval(LiveInterval &LI) {} in aboutToRemoveInterval()
H A DSplitKit.h61 SlotIndex computeLastInsertPoint(const LiveInterval &CurLI,
68 SlotIndex getLastInsertPoint(const LiveInterval &CurLI, in getLastInsertPoint()
142 const LiveInterval *CurLI = nullptr;
178 void analyze(const LiveInterval *li);
190 const LiveInterval &getParent() const { return *CurLI; } in getParent()
224 unsigned countLiveBlocks(const LiveInterval *li) const;
361 LiveInterval::SubRange &getSubRangeForMaskExact(LaneBitmask LM,
362 LiveInterval &LI);
368 LiveInterval::SubRange &getSubRangeForMask(LaneBitmask LM, LiveInterval &LI);
376 void addDeadDef(LiveInterval &LI, VNInfo *VNI, bool Original);
[all …]
H A DLiveRangeEdit.cpp39 LiveInterval &LI = LIS.createEmptyInterval(VReg); in createEmptyIntervalFrom()
46 LiveInterval &OldLI = LIS.getInterval(OldReg); in createEmptyIntervalFrom()
48 for (LiveInterval::SubRange &S : OldLI.subranges()) in createEmptyIntervalFrom()
86 LiveInterval &OrigLI = LIS.getInterval(Original); in scanRemattable()
124 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt()
186 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
322 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDef()
408 LiveInterval *LI = ToShrink.back(); in eliminateDeadDefs()
434 SmallVector<LiveInterval*, 8> SplitLIs; in eliminateDeadDefs()
440 for (const LiveInterval *SplitLI : SplitLIs) { in eliminateDeadDefs()
[all …]
H A DRegAllocGreedy.cpp424 void enqueueImpl(LiveInterval *LI) override;
425 LiveInterval *dequeue() override;
426 MCRegister selectOrSplit(LiveInterval &,
453 LiveInterval *dequeue(PQueue &CurQueue);
472 bool shouldEvict(LiveInterval &A, bool, LiveInterval &B, bool) const;
527 void tryHintRecoloring(LiveInterval &);
690 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_CanEraseVirtReg()
709 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
1125 SmallVector<LiveInterval*, 8> Intfs; in evictInterference()
1138 for (LiveInterval *Intf : Intfs) { in evictInterference()
[all …]
H A DSplitKit.cpp321 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
322 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
323 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
956 LiveInterval *Parent = &Edit->getParent(); in computeRedundantBackCopies()
1009 LiveInterval *Parent = &Edit->getParent(); in hoistCopies()
1256 LiveInterval &PLI = Edit->getParent(); in extendPHIRange()
1403 LiveInterval &LI = LIS.getInterval(R); in rewriteAssigned()
1415 LiveInterval *LI = &LIS.getInterval(R); in deleteRematVictims()
1522 LiveInterval &LI = LIS.getInterval(Reg); in finish()
1540 SmallVector<LiveInterval*, 8> SplitLIs; in finish()
[all …]
H A DLiveRegMatrix.cpp81 LiveInterval &VRegInterval, MCRegister PhysReg, in foreachUnit()
87 for (LiveInterval::SubRange &S : VRegInterval.subranges()) { in foreachUnit()
104 void LiveRegMatrix::assign(LiveInterval &VirtReg, MCRegister PhysReg) { in assign()
121 void LiveRegMatrix::unassign(LiveInterval &VirtReg) { in unassign()
146 bool LiveRegMatrix::checkRegMaskInterference(LiveInterval &VirtReg, in checkRegMaskInterference()
164 bool LiveRegMatrix::checkRegUnitInterference(LiveInterval &VirtReg, in checkRegUnitInterference()
186 LiveRegMatrix::checkInterference(LiveInterval &VirtReg, MCRegister PhysReg) { in checkInterference()
240 LiveInterval *VRegInterval = nullptr; in getOneVReg()
H A DStackSlotColoring.cpp68 std::vector<LiveInterval*> SSIntervals;
95 SmallVector<SmallVector<LiveInterval*,4>, 16> Assignments;
120 bool OverlapWithAssignments(LiveInterval *li, int Color) const;
121 int ColorSlot(LiveInterval *li);
147 bool operator()(LiveInterval* LHS, LiveInterval* RHS) const { in operator ()()
171 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs()
220 LiveInterval &li = I->second; in InitializeSlots()
258 LiveInterval *OtherLI = OtherLIs[i]; in OverlapWithAssignments()
266 int StackSlotColoring::ColorSlot(LiveInterval *li) { in ColorSlot()
330 LiveInterval *li = SSIntervals[i]; in ColorSlots()
[all …]
H A DRegisterCoalescer.cpp290 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
354 void shrinkToUses(LiveInterval *LI, in shrinkToUses()
360 SmallVector<LiveInterval*, 8> SplitLIs; in shrinkToUses()
630 LiveInterval &IntA = in adjustCopiesBackFrom()
632 LiveInterval &IntB = in adjustCopiesBackFrom()
676 LiveInterval::iterator ValS = in adjustCopiesBackFrom()
818 LiveInterval &IntA = in removeCopyByCommutingDef()
820 LiveInterval &IntB = in removeCopyByCommutingDef()
1117 LiveInterval &IntA = in removePartialRedundancy()
1119 LiveInterval &IntB = in removePartialRedundancy()
[all …]
H A DInlineSpiller.cpp174 LiveInterval *StackInt;
216 bool isSnippet(const LiveInterval &SnipLI);
225 void markValueUsed(LiveInterval*, VNInfo*);
394 LiveInterval &SrcLI = LIS.getInterval(SrcReg); in hoistSpillInsideBB()
405 LiveInterval &OrigLI = LIS.getInterval(Original); in hoistSpillInsideBB()
453 LiveInterval *LI; in eliminateRedundantSpills()
678 LiveInterval &LI = LIS.getInterval(Reg); in reMaterializeAll()
699 LiveInterval &LI = LIS.getInterval(Reg); in reMaterializeAll()
1038 LiveInterval &OldLI = LIS.getInterval(Reg); in spillAroundUses()
1262 LiveInterval &LI = LIS.getInterval(SibReg); in isSpillCandBB()
[all …]
H A DLiveIntervalUnion.cpp29 void LiveIntervalUnion::unify(LiveInterval &VirtReg, const LiveRange &Range) { in unify()
56 void LiveIntervalUnion::extract(LiveInterval &VirtReg, const LiveRange &Range) { in extract()
102 LiveInterval *LiveIntervalUnion::getOneVReg() const { in getOneVReg()
114 bool LiveIntervalUnion::Query::isSeenInterference(LiveInterval *VirtReg) const { in isSeenInterference()
153 LiveInterval *RecentReg = nullptr; in collectInterferingVRegs()
160 LiveInterval *VReg = LiveUnionI.value(); in collectInterferingVRegs()
H A DCalcSpillWeights.cpp80 static bool isRematerializable(const LiveInterval &LI, const LiveIntervals &LIS, in isRematerializable()
85 for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end(); in isRematerializable()
113 const LiveInterval &SrcLI = LIS.getInterval(Reg); in isRematerializable()
129 bool VirtRegAuxInfo::isLiveAtStatepointVarArg(LiveInterval &LI) { in isLiveAtStatepointVarArg()
139 void VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &LI) { in calculateSpillWeightAndHint()
147 float VirtRegAuxInfo::futureWeight(LiveInterval &LI, SlotIndex Start, in futureWeight()
152 float VirtRegAuxInfo::weightCalcHelper(LiveInterval &LI, SlotIndex *Start, in weightCalcHelper()
169 const LiveInterval &OrigInt = LIS.getInterval(Original); in weightCalcHelper()
H A DLiveIntervalCalc.cpp52 void LiveIntervalCalc::calculate(LiveInterval &LI, bool TrackSubRegs) { in calculate()
81 [&MO, Indexes, Alloc](LiveInterval::SubRange &SR) { in calculate()
103 for (LiveInterval::SubRange &S : LI.subranges()) { in calculate()
116 void LiveIntervalCalc::constructMainRangeFromSubranges(LiveInterval &LI) { in constructMainRangeFromSubranges()
123 for (const LiveInterval::SubRange &SR : LI.subranges()) { in constructMainRangeFromSubranges()
146 LaneBitmask Mask, LiveInterval *LI) { in extendToUses()
H A DLiveIntervals.cpp191 return new LiveInterval(reg, Weight); in createInterval()
208 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs()
211 SmallVector<LiveInterval*, 8> SplitLIs; in computeVirtRegs()
396 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses()
456 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses()
712 const LiveInterval &LI = getInterval(Reg); in addKillFlags()
1034 LiveInterval &LI = LIS.getInterval(Reg); in updateAllRanges()
1559 LiveInterval &LI = getInterval(Reg); in handleMoveIntoNewBundle()
1572 LiveInterval::iterator LII = LR.find(EndIdx); in repairOldRegInRange()
1700 LiveInterval &LI = getInterval(Reg); in repairIntervalsInRange()
[all …]
H A DVirtRegMap.cpp198 void addLiveInsForSubRanges(const LiveInterval &LI, MCRegister PhysReg) const;
294 void VirtRegRewriter::addLiveInsForSubRanges(const LiveInterval &LI, in addLiveInsForSubRanges()
300 std::pair<const LiveInterval::SubRange *, LiveInterval::const_iterator>; in addLiveInsForSubRanges()
305 for (const LiveInterval::SubRange &SR : LI.subranges()) { in addLiveInsForSubRanges()
322 const LiveInterval::SubRange *SR = RangeIterPair.first; in addLiveInsForSubRanges()
323 LiveInterval::const_iterator &SRI = RangeIterPair.second; in addLiveInsForSubRanges()
345 LiveInterval &LI = LIS->getInterval(VirtReg); in addMBBLiveIns()
389 const LiveInterval &LI = LIS->getInterval(Reg); in readsUndefSubreg()
400 for (const LiveInterval::SubRange &SR : LI.subranges()) { in readsUndefSubreg()
/freebsd-13.1/contrib/llvm-project/llvm/include/llvm/CodeGen/
H A DLiveIntervals.h114 LiveInterval &getInterval(Register Reg) { in getInterval()
121 const LiveInterval &getInterval(Register Reg) const { in getInterval()
131 LiveInterval &createEmptyInterval(Register Reg) { in createEmptyInterval()
139 LiveInterval &LI = createEmptyInterval(Reg); in createAndComputeVirtRegInterval()
161 bool shrinkToUses(LiveInterval *li,
377 bool checkRegMaskInterference(LiveInterval &LI,
437 void removeVRegDefAt(LiveInterval &LI, SlotIndex Pos);
440 void splitSeparateComponents(LiveInterval &LI,
462 bool computeDeadValues(LiveInterval &LI,
465 static LiveInterval *createInterval(Register Reg);
[all …]
H A DLiveRangeEdit.h71 LiveInterval *Parent;
102 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead);
104 using ToShrinkSet = SetVector<LiveInterval *, SmallVector<LiveInterval *, 8>,
105 SmallPtrSet<LiveInterval *, 8>>;
117 bool useIsKill(const LiveInterval &LI, const MachineOperand &MO) const;
120 LiveInterval &createEmptyIntervalFrom(Register OldReg, bool createSubRanges);
134 LiveRangeEdit(LiveInterval *parent, SmallVectorImpl<Register> &newRegs,
146 LiveInterval &getParent() const { in getParent()
180 LiveInterval &createEmptyInterval() { in createEmptyInterval()
H A DLiveRegMatrix.h34 class LiveInterval; variable
107 InterferenceKind checkInterference(LiveInterval &VirtReg, MCRegister PhysReg);
119 void assign(LiveInterval &VirtReg, MCRegister PhysReg);
124 void unassign(LiveInterval &VirtReg);
139 bool checkRegMaskInterference(LiveInterval &VirtReg,
145 bool checkRegUnitInterference(LiveInterval &VirtReg, MCRegister PhysReg);
H A DCalcSpillWeights.h17 class LiveInterval; variable
55 bool isLiveAtStatepointVarArg(LiveInterval &LI);
66 void calculateSpillWeightAndHint(LiveInterval &LI);
77 float futureWeight(LiveInterval &LI, SlotIndex Start, SlotIndex End);
96 float weightCalcHelper(LiveInterval &LI, SlotIndex *Start = nullptr,
H A DLiveIntervalUnion.h46 using LiveSegments = IntervalMap<SlotIndex, LiveInterval*>;
91 void unify(LiveInterval &VirtReg, const LiveRange &Range);
94 void extract(LiveInterval &VirtReg, const LiveRange &Range);
108 LiveInterval *getOneVReg() const;
117 Optional<SmallVector<LiveInterval *, 4>> InterferingVRegs;
160 bool isSeenInterference(LiveInterval *VirtReg) const;
166 const SmallVectorImpl<LiveInterval*> &interferingVRegs() const { in interferingVRegs()
H A DLiveStacks.h39 using SS2IntervalMap = std::unordered_map<int, LiveInterval>;
62 LiveInterval &getOrCreateInterval(int Slot, const TargetRegisterClass *RC);
64 LiveInterval &getInterval(int Slot) { in getInterval()
71 const LiveInterval &getInterval(int Slot) const { in getInterval()
H A DLiveIntervalCalc.h40 LiveInterval *LI = nullptr);
61 void calculate(LiveInterval &LI, bool TrackSubRegs);
66 void constructMainRangeFromSubranges(LiveInterval &LI);
/freebsd-13.1/contrib/llvm-project/llvm/lib/Target/WebAssembly/
H A DWebAssemblyRegColoring.cpp96 SmallVector<LiveInterval *, 0> SortedIntervals; in runOnMachineFunction()
108 LiveInterval *LI = &Liveness->getInterval(VReg); in runOnMachineFunction()
120 llvm::sort(SortedIntervals, [MRI](LiveInterval *LHS, LiveInterval *RHS) { in runOnMachineFunction()
132 SmallVector<SmallVector<LiveInterval *, 4>, 16> Assignments( in runOnMachineFunction()
137 LiveInterval *LI = SortedIntervals[I]; in runOnMachineFunction()
147 for (LiveInterval *OtherLI : Assignments[C]) in runOnMachineFunction()
/freebsd-13.1/contrib/llvm-project/llvm/lib/Target/AMDGPU/
H A DGCNNSAReassign.cpp83 bool tryAssignRegisters(SmallVectorImpl<LiveInterval *> &Intervals,
88 bool scavengeRegs(SmallVectorImpl<LiveInterval *> &Intervals) const;
107 GCNNSAReassign::tryAssignRegisters(SmallVectorImpl<LiveInterval *> &Intervals, in tryAssignRegisters()
141 GCNNSAReassign::scavengeRegs(SmallVectorImpl<LiveInterval *> &Intervals) const { in scavengeRegs()
278 SmallVector<LiveInterval *, 16> Intervals; in runOnMachineFunction()
284 LiveInterval *LI = &LIS->getInterval(Reg); in runOnMachineFunction()

123