| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/ |
| H A D | RegAllocGreedy.h | 88 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 D | RenameIndependentSubregs.cpp | 56 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 D | RegAllocBasic.cpp | 47 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 D | LiveRangeEdit.cpp | 34 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 D | RegAllocBase.h | 47 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 D | SplitKit.cpp | 66 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 D | SplitKit.h | 35 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 D | RegisterCoalescer.cpp | 231 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 D | StackSlotColoring.cpp | 72 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 D | LiveRegMatrix.cpp | 88 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 D | LiveIntervalUnion.cpp | 28 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 D | InlineSpiller.cpp | 96 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 D | LiveIntervalCalc.cpp | 41 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 D | LiveIntervals.cpp | 223 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 D | CalcSpillWeights.cpp | 81 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 D | RegAllocGreedy.cpp | 370 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 D | VirtRegMap.cpp | 216 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 D | LiveIntervals.h | 71 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 D | RegAllocEvictionAdvisor.h | 27 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 D | LiveRangeEdit.h | 67 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 D | LiveRegMatrix.h | 34 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 D | CalcSpillWeights.h | 16 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 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 | 41 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 D | WebAssemblyRegColoring.cpp | 132 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()
|