| /llvm-project-15.0.7/llvm/lib/CodeGen/ |
| H A D | RegAllocGreedy.h | 153 using SmallLISet = SmallPtrSet<const LiveInterval *, 4>; 263 SmallSetVector<const LiveInterval *, 8> SetOfBrokenHints; 285 void enqueueImpl(const LiveInterval *LI) override; 286 const LiveInterval *dequeue() override; 287 MCRegister selectOrSplit(const LiveInterval &, 289 void aboutToRemoveInterval(const LiveInterval &) override; 307 MCRegister selectOrSplitImpl(const LiveInterval &, 314 void enqueue(PQueue &CurQueue, const LiveInterval *LI); 315 const LiveInterval *dequeue(PQueue &CurQueue); 327 void evictInterference(const LiveInterval &, MCRegister, [all …]
|
| H A D | RenameIndependentSubregs.cpp | 69 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 D | RegAllocBasic.cpp | 45 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 D | RegAllocEvictionAdvisor.h | 23 class LiveInterval; variable 109 const LiveInterval &VirtReg, const AllocationOrder &Order, 115 canEvictHintInterference(const LiveInterval &VirtReg, MCRegister PhysReg, 125 Register canReassign(const LiveInterval &VirtReg, Register PrevReg) const; 129 Optional<unsigned> getOrderLimit(const LiveInterval &VirtReg, 209 MCRegister tryFindEvictionCandidate(const LiveInterval &, 212 bool canEvictHintInterference(const LiveInterval &, MCRegister, 214 bool canEvictInterferenceBasedOnCost(const LiveInterval &, MCRegister, bool, 217 bool shouldEvict(const LiveInterval &A, bool, const LiveInterval &B,
|
| H A D | RegAllocBase.h | 45 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 D | LiveRangeEdit.cpp | 39 LiveInterval &LI = LIS.createEmptyInterval(VReg); in createEmptyIntervalFrom() 46 LiveInterval &OldLI = LIS.getInterval(OldReg); in createEmptyIntervalFrom() 48 for (LiveInterval::SubRange &S : OldLI.subranges()) in createEmptyIntervalFrom() 85 LiveInterval &OrigLI = LIS.getInterval(Original); in scanRemattable() 122 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt() 200 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad() 338 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDef() 439 LiveInterval *LI = ToShrink.pop_back_val(); in eliminateDeadDefs() 457 SmallVector<LiveInterval*, 8> SplitLIs; in eliminateDeadDefs() 463 for (const LiveInterval *SplitLI : SplitLIs) { in eliminateDeadDefs() [all …]
|
| H A D | StackSlotColoring.cpp | 67 std::vector<LiveInterval*> SSIntervals; 94 SmallVector<SmallVector<LiveInterval*,4>, 16> Assignments; 120 int ColorSlot(LiveInterval *li); 146 bool operator()(LiveInterval* LHS, LiveInterval* RHS) const { in operator ()() 169 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs() 218 LiveInterval &li = I->second; in InitializeSlots() 256 LiveInterval *OtherLI = OtherLIs[i]; in OverlapWithAssignments() 264 int StackSlotColoring::ColorSlot(LiveInterval *li) { in ColorSlot() 327 for (LiveInterval *li : SSIntervals) { in ColorSlots() 339 for (LiveInterval *li : SSIntervals) { in ColorSlots() [all …]
|
| H A D | SplitKit.h | 36 class LiveInterval; variable 61 SlotIndex computeLastInsertPoint(const LiveInterval &CurLI, 68 SlotIndex getLastInsertPoint(const LiveInterval &CurLI, in getLastInsertPoint() 79 MachineBasicBlock::iterator getLastInsertPointIter(const LiveInterval &CurLI, 142 const LiveInterval *CurLI = nullptr; 175 void analyze(const LiveInterval *li); 182 const LiveInterval &getParent() const { return *CurLI; } in getParent() 216 unsigned countLiveBlocks(const LiveInterval *li) const; 354 void addDeadDef(LiveInterval &LI, VNInfo *VNI, bool Original); 433 unsigned SubIdx, LiveInterval &DestLI, bool Late, SlotIndex Def);
|
| H A D | SplitKit.cpp | 205 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo() 304 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks() 305 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks() 306 LiveInterval::iterator LVE = li->end(); in countLiveBlocks() 329 LiveInterval::const_iterator I = Orig.find(Idx); in isOriginalEndpoint() 1419 LiveInterval &LI = LIS.getInterval(R); in rewriteAssigned() 1431 LiveInterval *LI = &LIS.getInterval(R); in deleteRematVictims() 1538 LiveInterval &LI = LIS.getInterval(Reg); in finish() 1554 LiveInterval &LI = LIS.getInterval(VReg); in finish() 1555 SmallVector<LiveInterval*, 8> SplitLIs; in finish() [all …]
|
| H A D | LiveRegMatrix.cpp | 81 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 D | RegisterCoalescer.cpp | 290 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() 1113 LiveInterval &IntA = in removePartialRedundancy() 1115 LiveInterval &IntB = in removePartialRedundancy() [all …]
|
| H A D | LiveIntervalUnion.cpp | 29 void LiveIntervalUnion::unify(const LiveInterval &VirtReg, in unify() 57 void LiveIntervalUnion::extract(const LiveInterval &VirtReg, in extract() 104 const LiveInterval *LiveIntervalUnion::getOneVReg() const { in getOneVReg() 117 const LiveInterval *VirtReg) const { in isSeenInterference() 153 const LiveInterval *RecentReg = nullptr; in collectInterferingVRegs() 160 const LiveInterval *VReg = LiveUnionI.value(); in collectInterferingVRegs()
|
| H A D | InlineSpiller.cpp | 170 LiveInterval *StackInt; 211 bool isSnippet(const LiveInterval &SnipLI); 220 void markValueUsed(LiveInterval*, VNInfo*); 386 LiveInterval &SrcLI = LIS.getInterval(SrcReg); in hoistSpillInsideBB() 397 LiveInterval &OrigLI = LIS.getInterval(Original); in hoistSpillInsideBB() 445 LiveInterval *LI; in eliminateRedundantSpills() 666 LiveInterval &LI = LIS.getInterval(Reg); in reMaterializeAll() 683 LiveInterval &LI = LIS.getInterval(Reg); in reMaterializeAll() 1060 LiveInterval &OldLI = LIS.getInterval(Reg); in spillAroundUses() 1278 LiveInterval &LI = LIS.getInterval(SibReg); in isSpillCandBB() [all …]
|
| H A D | LiveIntervalCalc.cpp | 43 void LiveIntervalCalc::calculate(LiveInterval &LI, bool TrackSubRegs) { in calculate() 72 [&MO, Indexes, Alloc](LiveInterval::SubRange &SR) { in calculate() 94 for (LiveInterval::SubRange &S : LI.subranges()) { in calculate() 107 void LiveIntervalCalc::constructMainRangeFromSubranges(LiveInterval &LI) { in constructMainRangeFromSubranges() 114 for (const LiveInterval::SubRange &SR : LI.subranges()) { in constructMainRangeFromSubranges() 137 LaneBitmask Mask, LiveInterval *LI) { in extendToUses()
|
| H A D | RegAllocGreedy.cpp | 230 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_CanEraseVirtReg() 249 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg() 351 const LiveInterval *RAGreedy::dequeue(PQueue &CurQueue) { in dequeue() 459 SmallVector<const LiveInterval *, 8> Intfs; in evictInterference() 471 for (const LiveInterval *Intf : Intfs) { in evictInterference() 1681 MCRegister PhysReg, const LiveInterval &VirtReg, in mayRecolorAllInterferences() 1887 const LiveInterval *LI; in tryLastChanceRecoloring() 1896 const LiveInterval *LI; in tryLastChanceRecoloring() 1925 const LiveInterval *LI = dequeue(RecoloringQueue); in tryRecoloringCandidates() 2128 LiveInterval &LI = LIS->getInterval(Reg); in tryHintRecoloring() [all …]
|
| H A D | LiveIntervals.cpp | 184 return new LiveInterval(reg, Weight); in createInterval() 201 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs() 204 SmallVector<LiveInterval*, 8> SplitLIs; in computeVirtRegs() 389 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses() 449 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses() 705 const LiveInterval &LI = getInterval(Reg); in addKillFlags() 1029 LiveInterval &LI = LIS.getInterval(Reg); in updateAllRanges() 1559 LiveInterval &LI = getInterval(Reg); in handleMoveIntoNewBundle() 1572 LiveInterval::iterator LII = LR.find(EndIdx); in repairOldRegInRange() 1703 LiveInterval &LI = getInterval(Reg); in repairIntervalsInRange() [all …]
|
| H A D | MLRegallocEvictAdvisor.cpp | 267 tryFindEvictionCandidatePosition(const LiveInterval &VirtReg, 284 const LiveInterval &VirtReg, const AllocationOrder &Order, 295 const LiveInterval &VirtReg, MCRegister PhysReg, in canEvictHintInterference() 302 getLIFeatureComponents(const LiveInterval &LI) const; 395 const LiveInterval &VirtReg, const AllocationOrder &Order, 530 const LiveInterval &VirtReg, MCRegister PhysReg, bool IsHint, in loadInterferenceFeatures() 557 for (const LiveInterval *Intf : reverse(IFIntervals)) { in loadInterferenceFeatures() 596 const LiveInterval &VirtReg, const AllocationOrder &Order, in tryFindEvictionCandidate() 748 const SmallVectorImpl<const LiveInterval *> &Intervals, in extractFeatures() 771 const LiveInterval &LI = *L; in extractFeatures() [all …]
|
| /llvm-project-15.0.7/llvm/include/llvm/CodeGen/ |
| H A D | LiveIntervals.h | 112 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() 159 bool shrinkToUses(LiveInterval *li, 371 bool checkRegMaskInterference(const LiveInterval &LI, 431 void removeVRegDefAt(LiveInterval &LI, SlotIndex Pos); 434 void splitSeparateComponents(LiveInterval &LI, 456 bool computeDeadValues(LiveInterval &LI, 459 static LiveInterval *createInterval(Register Reg); [all …]
|
| H A D | LiveRangeEdit.h | 68 const LiveInterval *const Parent; 99 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead); 101 using ToShrinkSet = SetVector<LiveInterval *, SmallVector<LiveInterval *, 8>, 102 SmallPtrSet<LiveInterval *, 8>>; 113 bool useIsKill(const LiveInterval &LI, const MachineOperand &MO) const; 116 LiveInterval &createEmptyIntervalFrom(Register OldReg, bool createSubRanges); 130 LiveRangeEdit(const LiveInterval *parent, SmallVectorImpl<Register> &newRegs, 142 const LiveInterval &getParent() const { in getParent() 176 LiveInterval &createEmptyInterval() { in createEmptyInterval()
|
| H A D | LiveRegMatrix.h | 34 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 D | CalcSpillWeights.h | 16 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 D | LiveIntervalUnion.h | 46 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 D | LiveIntervalCalc.h | 40 LiveInterval *LI = nullptr); 61 void calculate(LiveInterval &LI, bool TrackSubRegs); 66 void constructMainRangeFromSubranges(LiveInterval &LI);
|
| H A D | LiveStacks.h | 43 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()
|
| /llvm-project-15.0.7/llvm/lib/Target/WebAssembly/ |
| H A D | WebAssemblyRegColoring.cpp | 96 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()
|