Home
last modified time | relevance | path

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

123

/netbsd-src/external/apache2/llvm/dist/llvm/lib/CodeGen/
H A 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 …]
H A 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 MCRegister selectOrSplit(LiveInterval &VirtReg,
122 bool spillInterferences(LiveInterval &VirtReg, MCRegister PhysReg,
150 LiveInterval &LI = LIS->getInterval(VirtReg); in INITIALIZE_PASS_DEPENDENCY()
169 LiveInterval &LI = LIS->getInterval(VirtReg); in LRE_WillShrinkVirtReg()
209 bool RABasic::spillInterferences(LiveInterval &VirtReg, MCRegister PhysReg, in spillInterferences()
[all …]
H A DSplitKit.h61 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;
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);
[all …]
H A DLiveRangeEdit.cpp33 LiveInterval &LiveRangeEdit::createEmptyIntervalFrom(Register 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()
244 bool LiveRangeEdit::useIsKill(const LiveInterval &LI, in useIsKill()
253 for (const LiveInterval::SubRange &S : LI.subranges()) { in useIsKill()
297 LiveInterval &OrigLI = LIS.getInterval(Original); in eliminateDeadDef()
[all …]
H A DRegAllocGreedy.cpp150 using SmallLISet = SmallPtrSet<LiveInterval *, 4>;
251 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
255 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
408 SmallSetVector<LiveInterval *, 8> SetOfBrokenHints;
424 void enqueue(LiveInterval *LI) override;
425 LiveInterval *dequeue() override;
426 MCRegister selectOrSplit(LiveInterval &,
428 void aboutToRemoveInterval(LiveInterval &) override;
446 MCRegister selectOrSplitImpl(LiveInterval &, SmallVectorImpl<Register> &,
452 void enqueue(PQueue &CurQueue, LiveInterval *LI);
[all …]
H A DSplitKit.cpp64 InsertPointAnalysis::computeLastInsertPoint(const LiveInterval &CurLI, in computeLastInsertPoint()
141 InsertPointAnalysis::getLastInsertPointIter(const LiveInterval &CurLI, in getLastInsertPointIter()
198 .shrinkToUses(const_cast<LiveInterval*>(CurLI)); in analyzeUses()
219 LiveInterval::const_iterator LVI = CurLI->begin(); in calcLiveBlockInfo()
220 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo()
318 unsigned SplitAnalysis::countLiveBlocks(const LiveInterval *cli) const { in countLiveBlocks()
321 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
322 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
323 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
344 const LiveInterval &Orig = LIS.getInterval(OrigReg); in isOriginalEndpoint()
[all …]
H A DRegisterCoalescer.cpp223 void setUndefOnPrunedSubRegUses(LiveInterval &LI, Register Reg,
244 bool isHighCostLiveInterval(LiveInterval &LI);
254 void mergeSubRangeInto(LiveInterval &LI, const LiveRange &ToMerge,
271 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
309 void addUndefFlag(const LiveInterval &Int, SlotIndex UseIdx,
335 void shrinkToUses(LiveInterval *LI, in shrinkToUses()
341 SmallVector<LiveInterval*, 8> SplitLIs; in shrinkToUses()
603 LiveInterval &IntA = in adjustCopiesBackFrom()
605 LiveInterval &IntB = in adjustCopiesBackFrom()
625 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx); in adjustCopiesBackFrom()
[all …]
H A DRegAllocBase.h44 class LiveInterval; variable
95 virtual void enqueue(LiveInterval *LI) = 0;
98 virtual LiveInterval *dequeue() = 0;
104 virtual MCRegister selectOrSplit(LiveInterval &VirtReg,
112 virtual void aboutToRemoveInterval(LiveInterval &LI) {} in aboutToRemoveInterval()
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()
255 StackSlotColoring::OverlapWithAssignments(LiveInterval *li, int Color) const { in OverlapWithAssignments()
256 const SmallVectorImpl<LiveInterval *> &OtherLIs = Assignments[Color]; in OverlapWithAssignments()
258 LiveInterval *OtherLI = OtherLIs[i]; in OverlapWithAssignments()
[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 DInlineSpiller.cpp105 DenseMap<int, std::unique_ptr<LiveInterval>> StackSlotToOrigLI;
119 bool isSpillCandBB(LiveInterval &OrigLI, VNInfo &OrigVNI,
134 void runHoistSpills(LiveInterval &OrigLI, VNInfo &OrigVNI,
174 LiveInterval *StackInt;
216 bool isSnippet(const LiveInterval &SnipLI);
222 bool hoistSpillInsideBB(LiveInterval &SpillLI, MachineInstr &CopyMI);
223 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
225 void markValueUsed(LiveInterval*, VNInfo*);
227 bool reMaterializeFor(LiveInterval &, MachineInstr &MI);
287 bool InlineSpiller::isSnippet(const LiveInterval &SnipLI) { in isSnippet()
[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 DLiveIntervals.cpp189 LiveInterval *LiveIntervals::createInterval(Register reg) { in createInterval()
191 return new LiveInterval(reg, Weight); in createInterval()
195 bool LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval()
208 LiveInterval &LI = createEmptyInterval(Reg); in computeVirtRegs()
211 SmallVector<LiveInterval*, 8> SplitLIs; in computeVirtRegs()
366 iterator_range<LiveInterval::vni_iterator> VNIs) { in createSegmentsForValues()
383 auto getSubRange = [](const LiveInterval &I, LaneBitmask M) in extendSegmentsToUses()
387 for (const LiveInterval::SubRange &SR : I.subranges()) { in extendSegmentsToUses()
396 const LiveInterval &LI = getInterval(Reg); in extendSegmentsToUses()
456 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses()
[all …]
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 DVirtRegMap.cpp190 void addLiveInsForSubRanges(const LiveInterval &LI, MCRegister PhysReg) const;
278 void VirtRegRewriter::addLiveInsForSubRanges(const LiveInterval &LI, in addLiveInsForSubRanges()
284 std::pair<const LiveInterval::SubRange *, LiveInterval::const_iterator>; in addLiveInsForSubRanges()
289 for (const LiveInterval::SubRange &SR : LI.subranges()) { in addLiveInsForSubRanges()
306 const LiveInterval::SubRange *SR = RangeIterPair.first; in addLiveInsForSubRanges()
307 LiveInterval::const_iterator &SRI = RangeIterPair.second; in addLiveInsForSubRanges()
329 LiveInterval &LI = LIS->getInterval(VirtReg); in addMBBLiveIns()
373 const LiveInterval &LI = LIS->getInterval(Reg); in readsUndefSubreg()
384 for (const LiveInterval::SubRange &SR : LI.subranges()) { in readsUndefSubreg()
/netbsd-src/external/apache2/llvm/dist/llvm/include/llvm/CodeGen/
H A 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(Register Reg,
161 bool shrinkToUses(LiveInterval *li,
170 void shrinkToUses(LiveInterval::SubRange &SR, Register Reg);
205 LLVM_ATTRIBUTE_UNUSED void pruneValue(LiveInterval &, SlotIndex, in pruneValue() argument
[all …]
H A DLiveRangeEdit.h71 LiveInterval *Parent;
107 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead);
109 using ToShrinkSet = SetVector<LiveInterval *, SmallVector<LiveInterval *, 8>,
110 SmallPtrSet<LiveInterval *, 8>>;
122 bool useIsKill(const LiveInterval &LI, const MachineOperand &MO) const;
125 LiveInterval &createEmptyIntervalFrom(Register OldReg, bool createSubRanges);
139 LiveRangeEdit(LiveInterval *parent, SmallVectorImpl<Register> &newRegs,
151 LiveInterval &getParent() const { in getParent()
185 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 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 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 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);
/netbsd-src/external/apache2/llvm/dist/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()
/netbsd-src/external/apache2/llvm/dist/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