Home
last modified time | relevance | path

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

123

/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/CodeGen/
DRenameIndependentSubregs.cpp69 LiveInterval::SubRange *SR;
72 SubRangeInfo(LiveIntervals &LIS, LiveInterval::SubRange &SR, in SubRangeInfo()
78 bool renameComponents(LiveInterval &LI) const;
85 LiveInterval &LI) const;
91 const SmallVectorImpl<LiveInterval*> &Intervals) const;
96 const SmallVectorImpl<LiveInterval*> &Intervals) const;
101 const SmallVectorImpl<LiveInterval*> &Intervals) const;
122 bool RenameIndependentSubregs::renameComponents(LiveInterval &LI) const { in INITIALIZE_PASS_DEPENDENCY()
135 SmallVector<LiveInterval*, 4> Intervals; in INITIALIZE_PASS_DEPENDENCY()
143 LiveInterval &NewLI = LIS->createEmptyInterval(NewVReg); in INITIALIZE_PASS_DEPENDENCY()
[all …]
DRegAllocBasic.cpp48 bool operator()(LiveInterval *A, LiveInterval *B) const { in operator ()()
68 std::priority_queue<LiveInterval*, std::vector<LiveInterval*>,
91 void enqueue(LiveInterval *LI) override { in enqueue()
95 LiveInterval *dequeue() override { in dequeue()
98 LiveInterval *LI = Queue.top(); in dequeue()
103 unsigned selectOrSplit(LiveInterval &VirtReg,
117 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
145 LiveInterval &LI = LIS->getInterval(VirtReg); in INITIALIZE_PASS_DEPENDENCY()
164 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
204 bool RABasic::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg, in spillInterferences()
[all …]
DLiveRangeEdit.cpp33 LiveInterval &LiveRangeEdit::createEmptyIntervalFrom(unsigned OldReg, in createEmptyIntervalFrom()
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()
86 LiveInterval &OrigLI = LIS.getInterval(Original); in scanRemattable()
123 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt()
185 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
243 bool LiveRangeEdit::useIsKill(const LiveInterval &LI, in useIsKill()
252 for (const LiveInterval::SubRange &S : LI.subranges()) { in useIsKill()
296 LiveInterval &OrigLI = LIS.getInterval(Original); in eliminateDeadDef()
[all …]
DRegAllocGreedy.cpp155 using SmallLISet = SmallPtrSet<LiveInterval *, 4>;
255 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
259 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
412 SmallSetVector<LiveInterval *, 8> SetOfBrokenHints;
424 void enqueue(LiveInterval *LI) override;
425 LiveInterval *dequeue() override;
426 unsigned selectOrSplit(LiveInterval&, SmallVectorImpl<unsigned>&) override;
427 void aboutToRemoveInterval(LiveInterval &) override;
440 unsigned selectOrSplitImpl(LiveInterval &, SmallVectorImpl<unsigned> &,
446 void enqueue(PQueue &CurQueue, LiveInterval *LI);
[all …]
DSplitKit.h59 SlotIndex computeLastInsertPoint(const LiveInterval &CurLI,
66 SlotIndex getLastInsertPoint(const LiveInterval &CurLI, in getLastInsertPoint()
77 MachineBasicBlock::iterator getLastInsertPointIter(const LiveInterval &CurLI,
137 const LiveInterval *CurLI = nullptr;
173 void analyze(const LiveInterval *li);
185 const LiveInterval &getParent() const { return *CurLI; } in getParent()
219 unsigned countLiveBlocks(const LiveInterval *li) const;
351 LiveInterval::SubRange &getSubRangeForMask(LaneBitmask LM, LiveInterval &LI);
359 void addDeadDef(LiveInterval &LI, VNInfo *VNI, bool Original);
440 unsigned SubIdx, LiveInterval &DestLI, bool Late, SlotIndex Def);
DRegAllocBase.h44 class LiveInterval; variable
95 virtual void enqueue(LiveInterval *LI) = 0;
98 virtual LiveInterval *dequeue() = 0;
104 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
112 virtual void aboutToRemoveInterval(LiveInterval &LI) {} in aboutToRemoveInterval()
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 ()()
175 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs()
223 LiveInterval &li = I->second; in InitializeSlots()
258 StackSlotColoring::OverlapWithAssignments(LiveInterval *li, int Color) const { in OverlapWithAssignments()
259 const SmallVectorImpl<LiveInterval *> &OtherLIs = Assignments[Color]; in OverlapWithAssignments()
261 LiveInterval *OtherLI = OtherLIs[i]; in OverlapWithAssignments()
[all …]
DSplitKit.cpp76 InsertPointAnalysis::computeLastInsertPoint(const LiveInterval &CurLI, in computeLastInsertPoint()
139 InsertPointAnalysis::getLastInsertPointIter(const LiveInterval &CurLI, in getLastInsertPointIter()
196 .shrinkToUses(const_cast<LiveInterval*>(CurLI)); in analyzeUses()
217 LiveInterval::const_iterator LVI = CurLI->begin(); in calcLiveBlockInfo()
218 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo()
316 unsigned SplitAnalysis::countLiveBlocks(const LiveInterval *cli) const { in countLiveBlocks()
319 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
320 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
321 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
342 const LiveInterval &Orig = LIS.getInterval(OrigReg); in isOriginalEndpoint()
[all …]
DInlineSpiller.cpp104 DenseMap<int, std::unique_ptr<LiveInterval>> StackSlotToOrigLI;
118 bool isSpillCandBB(LiveInterval &OrigLI, VNInfo &OrigVNI,
133 void runHoistSpills(LiveInterval &OrigLI, VNInfo &OrigVNI,
173 LiveInterval *StackInt;
211 bool isSnippet(const LiveInterval &SnipLI);
217 bool hoistSpillInsideBB(LiveInterval &SpillLI, MachineInstr &CopyMI);
218 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
220 void markValueUsed(LiveInterval*, VNInfo*);
222 bool reMaterializeFor(LiveInterval &, MachineInstr &MI);
274 bool InlineSpiller::isSnippet(const LiveInterval &SnipLI) { in isSnippet()
[all …]
DRegisterCoalescer.cpp232 bool isHighCostLiveInterval(LiveInterval &LI);
242 void mergeSubRangeInto(LiveInterval &LI, const LiveRange &ToMerge,
259 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
297 void addUndefFlag(const LiveInterval &Int, SlotIndex UseIdx,
323 void shrinkToUses(LiveInterval *LI, in shrinkToUses()
329 SmallVector<LiveInterval*, 8> SplitLIs; in shrinkToUses()
589 LiveInterval &IntA = in adjustCopiesBackFrom()
591 LiveInterval &IntB = in adjustCopiesBackFrom()
611 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx); in adjustCopiesBackFrom()
622 LiveInterval::iterator AS = IntA.FindSegmentContaining(CopyUseIdx); in adjustCopiesBackFrom()
[all …]
DLiveRegMatrix.cpp81 LiveInterval &VRegInterval, unsigned PhysReg, in foreachUnit()
87 for (LiveInterval::SubRange &S : VRegInterval.subranges()) { in foreachUnit()
104 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned 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, unsigned PhysReg) { in checkInterference()
DLiveIntervals.cpp188 LiveInterval* LiveIntervals::createInterval(unsigned reg) { in createInterval()
190 return new LiveInterval(reg, Weight); in createInterval()
194 bool LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval()
207 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs()
210 SmallVector<LiveInterval*, 8> SplitLIs; in computeVirtRegs()
356 iterator_range<LiveInterval::vni_iterator> VNIs) { in createSegmentsForValues()
373 auto getSubRange = [](const LiveInterval &I, LaneBitmask M) in extendSegmentsToUses()
377 for (const LiveInterval::SubRange &SR : I.subranges()) { in extendSegmentsToUses()
386 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses()
446 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses()
[all …]
DLiveIntervalUnion.cpp29 void LiveIntervalUnion::unify(LiveInterval &VirtReg, const LiveRange &Range) { in unify()
56 void LiveIntervalUnion::extract(LiveInterval &VirtReg, const LiveRange &Range) { in extract()
104 bool LiveIntervalUnion::Query::isSeenInterference(LiveInterval *VirtReg) const { in isSeenInterference()
140 LiveInterval *RecentReg = nullptr; in collectInterferingVRegs()
147 LiveInterval *VReg = LiveUnionI.value(); in collectInterferingVRegs()
DVirtRegMap.cpp187 void addLiveInsForSubRanges(const LiveInterval &LI, Register PhysReg) const;
266 void VirtRegRewriter::addLiveInsForSubRanges(const LiveInterval &LI, in addLiveInsForSubRanges()
272 std::pair<const LiveInterval::SubRange *, LiveInterval::const_iterator>; in addLiveInsForSubRanges()
277 for (const LiveInterval::SubRange &SR : LI.subranges()) { in addLiveInsForSubRanges()
294 const LiveInterval::SubRange *SR = RangeIterPair.first; in addLiveInsForSubRanges()
295 LiveInterval::const_iterator &SRI = RangeIterPair.second; in addLiveInsForSubRanges()
317 LiveInterval &LI = LIS->getInterval(VirtReg); in addMBBLiveIns()
356 const LiveInterval &LI = LIS->getInterval(Reg); in readsUndefSubreg()
367 for (const LiveInterval::SubRange &SR : LI.subranges()) { in readsUndefSubreg()
DCalcSpillWeights.cpp85 static bool isRematerializable(const LiveInterval &LI, in isRematerializable()
91 for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end(); in isRematerializable()
121 const LiveInterval &SrcLI = LIS.getInterval(Reg); in isRematerializable()
138 void VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &li) { in calculateSpillWeightAndHint()
146 float VirtRegAuxInfo::futureWeight(LiveInterval &li, SlotIndex start, in futureWeight()
151 float VirtRegAuxInfo::weightCalcHelper(LiveInterval &li, SlotIndex *start, in weightCalcHelper()
DLiveInterval.cpp848 void LiveInterval::freeSubRange(SubRange *S) { in freeSubRange()
853 void LiveInterval::removeEmptySubRanges() { in removeEmptySubRanges()
872 void LiveInterval::clearSubRanges() { in clearSubRanges()
883 static void stripValuesNotDefiningMask(unsigned Reg, LiveInterval::SubRange &SR, in stripValuesNotDefiningMask()
930 void LiveInterval::refineSubRanges( in refineSubRanges()
932 std::function<void(LiveInterval::SubRange &)> Apply, in refineSubRanges()
969 unsigned LiveInterval::getSize() const { in getSize()
976 void LiveInterval::computeSubRangeUndefs(SmallVectorImpl<SlotIndex> &Undefs, in computeSubRangeUndefs()
1040 void LiveInterval::SubRange::print(raw_ostream &OS) const { in print()
1045 void LiveInterval::print(raw_ostream &OS) const { in print()
[all …]
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/include/llvm/CodeGen/
DLiveIntervals.h68 IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
114 LiveInterval &getInterval(Register Reg) { in getInterval()
121 const LiveInterval &getInterval(Register Reg) const { in getInterval()
131 LiveInterval &createEmptyInterval(Register Reg) { in createEmptyInterval()
138 LiveInterval &createAndComputeVirtRegInterval(Register Reg) { in createAndComputeVirtRegInterval()
139 LiveInterval &LI = createEmptyInterval(Reg); in createAndComputeVirtRegInterval()
152 LiveInterval::Segment addSegmentToEndOfBlock(unsigned reg,
161 bool shrinkToUses(LiveInterval *li,
170 void shrinkToUses(LiveInterval::SubRange &SR, unsigned Reg);
205 LLVM_ATTRIBUTE_UNUSED void pruneValue(LiveInterval &, SlotIndex, in pruneValue() argument
[all …]
DLiveRangeEdit.h70 LiveInterval *Parent;
106 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead);
108 using ToShrinkSet = SetVector<LiveInterval *, SmallVector<LiveInterval *, 8>,
109 SmallPtrSet<LiveInterval *, 8>>;
121 bool useIsKill(const LiveInterval &LI, const MachineOperand &MO) const;
124 LiveInterval &createEmptyIntervalFrom(unsigned OldReg, bool createSubRanges);
138 LiveRangeEdit(LiveInterval *parent, SmallVectorImpl<unsigned> &newRegs,
150 LiveInterval &getParent() const { in getParent()
184 LiveInterval &createEmptyInterval() { in createEmptyInterval()
DLiveRegMatrix.h34 class LiveInterval; variable
107 InterferenceKind checkInterference(LiveInterval &VirtReg, unsigned PhysReg);
119 void assign(LiveInterval &VirtReg, unsigned PhysReg);
124 void unassign(LiveInterval &VirtReg);
139 bool checkRegMaskInterference(LiveInterval &VirtReg, unsigned PhysReg = 0);
144 bool checkRegUnitInterference(LiveInterval &VirtReg, unsigned PhysReg);
DLiveIntervalUnion.h46 using LiveSegments = IntervalMap<SlotIndex, LiveInterval*>;
91 void unify(LiveInterval &VirtReg, const LiveRange &Range);
94 void extract(LiveInterval &VirtReg, const LiveRange &Range);
114 SmallVector<LiveInterval*,4> InterferingVRegs;
157 bool isSeenInterference(LiveInterval *VirtReg) const;
163 const SmallVectorImpl<LiveInterval*> &interferingVRegs() const { in interferingVRegs()
DCalcSpillWeights.h17 class LiveInterval; variable
67 void calculateSpillWeightAndHint(LiveInterval &li);
78 float futureWeight(LiveInterval &li, SlotIndex start, SlotIndex end);
92 float weightCalcHelper(LiveInterval &li, SlotIndex *start = nullptr,
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()
DLiveRangeCalc.h173 LiveInterval *LI = nullptr);
229 void calculate(LiveInterval &LI, bool TrackSubRegs);
234 void constructMainRangeFromSubranges(LiveInterval &LI);
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Target/WebAssembly/
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()
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Target/AMDGPU/
DGCNNSAReassign.cpp88 bool tryAssignRegisters(SmallVectorImpl<LiveInterval *> &Intervals,
93 bool scavengeRegs(SmallVectorImpl<LiveInterval *> &Intervals) const;
112 GCNNSAReassign::tryAssignRegisters(SmallVectorImpl<LiveInterval *> &Intervals, in tryAssignRegisters()
146 GCNNSAReassign::scavengeRegs(SmallVectorImpl<LiveInterval *> &Intervals) const { in scavengeRegs()
275 SmallVector<LiveInterval *, 16> Intervals; in runOnMachineFunction()
281 LiveInterval *LI = &LIS->getInterval(Reg); in runOnMachineFunction()

123