Home
last modified time | relevance | path

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

12

/external/llvm/include/llvm/CodeGen/
DLiveIntervalUnion.h35 overlap(const LiveInterval::Segment &VRSeg, in overlap()
36 const IntervalMap<SlotIndex, LiveInterval*>::const_iterator &LUSeg) { in overlap()
48 typedef IntervalMap<SlotIndex, LiveInterval*> LiveSegments;
87 void unify(LiveInterval &VirtReg, const LiveRange &Range);
88 void unify(LiveInterval &VirtReg) { in unify()
93 void extract(LiveInterval &VirtReg, const LiveRange &Range);
94 void extract(LiveInterval &VirtReg) { in extract()
113 LiveInterval *VirtReg;
114 LiveInterval::iterator VirtRegI; // current position in VirtReg
116 SmallVector<LiveInterval*,4> InterferingVRegs;
[all …]
DLiveIntervalAnalysis.h68 IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
110 LiveInterval &getInterval(unsigned Reg) { in getInterval()
117 const LiveInterval &getInterval(unsigned Reg) const { in getInterval()
126 LiveInterval &createEmptyInterval(unsigned Reg) { in createEmptyInterval()
133 LiveInterval &createAndComputeVirtRegInterval(unsigned Reg) { in createAndComputeVirtRegInterval()
134 LiveInterval &LI = createEmptyInterval(Reg); in createAndComputeVirtRegInterval()
147 LiveInterval::Segment addSegmentToEndOfBlock(unsigned reg,
157 bool shrinkToUses(LiveInterval *li,
164 void shrinkToUses(LiveInterval::SubRange &SR, unsigned Reg);
279 MachineBasicBlock *intervalIsInOneMBB(const LiveInterval &LI) const;
[all …]
DLiveRegMatrix.h33 class LiveInterval; variable
105 InterferenceKind checkInterference(LiveInterval &VirtReg, unsigned PhysReg);
110 void assign(LiveInterval &VirtReg, unsigned PhysReg);
115 void unassign(LiveInterval &VirtReg);
127 bool checkRegMaskInterference(LiveInterval &VirtReg, unsigned PhysReg = 0);
132 bool checkRegUnitInterference(LiveInterval &VirtReg, unsigned PhysReg);
138 LiveIntervalUnion::Query &query(LiveInterval &VirtReg, unsigned RegUnit);
DLiveRangeEdit.h61 LiveInterval *Parent;
93 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr*> &Dead);
95 typedef SetVector<LiveInterval*,
96 SmallVector<LiveInterval*, 8>,
97 SmallPtrSet<LiveInterval*, 8> > ToShrinkSet;
115 LiveRangeEdit(LiveInterval *parent, SmallVectorImpl<unsigned> &newRegs,
127 LiveInterval &getParent() const { in getParent()
146 LiveInterval &createEmptyIntervalFrom(unsigned OldReg);
153 LiveInterval &createEmptyInterval() { in createEmptyInterval()
DLiveStackAnalysis.h37 typedef std::unordered_map<int, LiveInterval> SS2IntervalMap;
58 LiveInterval &getOrCreateInterval(int Slot, const TargetRegisterClass *RC);
60 LiveInterval &getInterval(int Slot) { in getInterval()
67 const LiveInterval &getInterval(int Slot) const { in getInterval()
DCalcSpillWeights.h19 class LiveInterval; variable
67 void calculateSpillWeightAndHint(LiveInterval &li);
DLiveInterval.h588 class LiveInterval : public LiveRange {
619 LiveInterval(unsigned Reg, float Weight) in LiveInterval() function
622 ~LiveInterval() { in ~LiveInterval()
725 bool operator<(const LiveInterval& other) const {
754 inline raw_ostream &operator<<(raw_ostream &OS, const LiveInterval &LI) {
855 unsigned Classify(const LiveInterval *LI);
865 void Distribute(LiveInterval *LIV[], MachineRegisterInfo &MRI);
/external/llvm/lib/CodeGen/
DRegAllocBasic.cpp49 bool operator()(LiveInterval *A, LiveInterval *B) const { in operator ()()
68 std::priority_queue<LiveInterval*, std::vector<LiveInterval*>,
90 void enqueue(LiveInterval *LI) override { in enqueue()
94 LiveInterval *dequeue() override { in dequeue()
97 LiveInterval *LI = Queue.top(); in dequeue()
102 unsigned selectOrSplit(LiveInterval &VirtReg,
111 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
166 bool RABasic::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg, in spillInterferences()
170 SmallVector<LiveInterval*, 8> Intfs; in spillInterferences()
179 LiveInterval *Intf = Q.interferingVRegs()[i - 1]; in spillInterferences()
[all …]
DRegAllocGreedy.cpp104 typedef SmallPtrSet<LiveInterval *, 4> SmallLISet;
197 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
201 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
300 SmallSetVector<LiveInterval *, 8> SetOfBrokenHints;
314 void enqueue(LiveInterval *LI) override;
315 LiveInterval *dequeue() override;
316 unsigned selectOrSplit(LiveInterval&, SmallVectorImpl<unsigned>&) override;
317 void aboutToRemoveInterval(LiveInterval &) override;
325 unsigned selectOrSplitImpl(LiveInterval &, SmallVectorImpl<unsigned> &,
331 void enqueue(PQueue &CurQueue, LiveInterval *LI);
[all …]
DLiveRegMatrix.cpp76 bool foreachUnit(const TargetRegisterInfo *TRI, LiveInterval &VRegInterval, in foreachUnit()
82 for (LiveInterval::SubRange &S : VRegInterval.subranges()) { in foreachUnit()
99 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) { in assign()
117 void LiveRegMatrix::unassign(LiveInterval &VirtReg) { in unassign()
134 bool LiveRegMatrix::checkRegMaskInterference(LiveInterval &VirtReg, in checkRegMaskInterference()
152 bool LiveRegMatrix::checkRegUnitInterference(LiveInterval &VirtReg, in checkRegUnitInterference()
166 LiveIntervalUnion::Query &LiveRegMatrix::query(LiveInterval &VirtReg, in query()
174 LiveRegMatrix::checkInterference(LiveInterval &VirtReg, unsigned PhysReg) { in checkInterference()
DStackSlotColoring.cpp55 std::vector<LiveInterval*> SSIntervals;
82 SmallVector<SmallVector<LiveInterval*,4>, 16> Assignments;
107 bool OverlapWithAssignments(LiveInterval *li, int Color) const;
108 int ColorSlot(LiveInterval *li);
131 bool operator()(LiveInterval* LHS, LiveInterval* RHS) const { in operator ()()
158 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs()
198 LiveInterval &li = I->second; in InitializeSlots()
220 StackSlotColoring::OverlapWithAssignments(LiveInterval *li, int Color) const { in OverlapWithAssignments()
221 const SmallVectorImpl<LiveInterval *> &OtherLIs = Assignments[Color]; in OverlapWithAssignments()
223 LiveInterval *OtherLI = OtherLIs[i]; in OverlapWithAssignments()
[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()
105 SmallVectorImpl<LiveInterval*>::const_iterator I = in isSeenInterference()
141 LiveInterval::iterator VirtRegEnd = VirtReg->end(); in collectInterferingVRegs()
142 LiveInterval *RecentReg = nullptr; in collectInterferingVRegs()
150 LiveInterval *VReg = LiveUnionI.value(); in collectInterferingVRegs()
DRegAllocBase.h84 virtual void enqueue(LiveInterval *LI) = 0;
87 virtual LiveInterval *dequeue() = 0;
93 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
100 virtual void aboutToRemoveInterval(LiveInterval &LI) {} in aboutToRemoveInterval()
DInlineSpiller.cpp74 LiveInterval *StackInt;
155 bool isSnippet(const LiveInterval &SnipLI);
168 bool hoistSpill(LiveInterval &SpillLI, MachineInstr *CopyMI);
169 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
171 void markValueUsed(LiveInterval*, VNInfo*);
172 bool reMaterializeFor(LiveInterval&, MachineBasicBlock::iterator MI);
226 bool InlineSpiller::isSnippet(const LiveInterval &SnipLI) { in isSnippet()
288 LiveInterval &SnipLI = LIS.getInterval(SnipReg); in collectRegsToSpill()
511 LiveInterval &OrigLI = LIS.getInterval(Original); in traceSiblingValue()
548 LiveInterval &LI = LIS.getInterval(Reg); in traceSiblingValue()
[all …]
DRegisterCoalescer.cpp168 bool mergeSubRangeInto(LiveInterval &LI, const LiveRange &ToMerge,
185 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
456 LiveInterval &IntA = in adjustCopiesBackFrom()
458 LiveInterval &IntB = in adjustCopiesBackFrom()
478 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx); in adjustCopiesBackFrom()
489 LiveInterval::iterator AS = IntA.FindSegmentContaining(CopyUseIdx); in adjustCopiesBackFrom()
502 LiveInterval::iterator ValS = in adjustCopiesBackFrom()
530 IntB.addSegment(LiveInterval::Segment(FillerStart, FillerEnd, BValNo)); in adjustCopiesBackFrom()
537 for (LiveInterval::SubRange &S : IntB.subranges()) { in adjustCopiesBackFrom()
539 S.addSegment(LiveInterval::Segment(FillerStart, FillerEnd, SubBValNo)); in adjustCopiesBackFrom()
[all …]
DSplitKit.cpp149 .shrinkToUses(const_cast<LiveInterval*>(CurLI)); in analyzeUses()
171 LiveInterval::const_iterator LVI = CurLI->begin(); in calcLiveBlockInfo()
172 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo()
269 unsigned SplitAnalysis::countLiveBlocks(const LiveInterval *cli) const { in countLiveBlocks()
272 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
273 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
274 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
294 const LiveInterval &Orig = LIS.getInterval(OrigReg); in isOriginalEndpoint()
296 LiveInterval::const_iterator I = Orig.find(Idx); in isOriginalEndpoint()
306 void SplitAnalysis::analyze(const LiveInterval *li) { in analyze()
[all …]
DSplitKit.h27 class LiveInterval; variable
84 const LiveInterval *CurLI;
125 void analyze(const LiveInterval *li);
137 const LiveInterval &getParent() const { return *CurLI; } in getParent()
184 unsigned countLiveBlocks(const LiveInterval *li) const;
DLiveIntervalAnalysis.cpp189 LiveInterval* LiveIntervals::createInterval(unsigned reg) { in createInterval()
192 return new LiveInterval(reg, Weight); in createInterval()
198 void LiveIntervals::computeVirtRegInterval(LiveInterval &LI) { in computeVirtRegInterval()
336 iterator_range<LiveInterval::vni_iterator> VNIs) { in createSegmentsForValues()
402 bool LiveIntervals::shrinkToUses(LiveInterval *li, in shrinkToUses()
409 for (LiveInterval::SubRange &S : li->subranges()) { in shrinkToUses()
457 bool LiveIntervals::computeDeadValues(LiveInterval &LI, in computeDeadValues()
498 void LiveIntervals::shrinkToUses(LiveInterval::SubRange &SR, unsigned Reg) in shrinkToUses()
643 SmallVector<std::pair<const LiveInterval::SubRange*, in addKillFlags()
650 const LiveInterval &LI = getInterval(Reg); in addKillFlags()
[all …]
DLiveRangeEdit.cpp34 LiveInterval &LiveRangeEdit::createEmptyIntervalFrom(unsigned OldReg) { in createEmptyIntervalFrom()
39 LiveInterval &LI = LIS.createEmptyInterval(VReg); in createEmptyIntervalFrom()
99 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt()
164 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
263 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDef()
333 LiveInterval *LI = ToShrink.back(); in eliminateDeadDefs()
365 SmallVector<LiveInterval*, 8> Dups(1, LI); in eliminateDeadDefs()
401 LiveInterval &LI = LIS.getInterval(get(I)); in calculateRegClassAndHint()
DStackColoring.cpp117 SmallVector<std::unique_ptr<LiveInterval>, 16> Intervals;
430 Intervals[i]->addSegment(LiveInterval::Segment(S, F, ValNum)); in calculateLiveIntervals()
436 Intervals[i]->addSegment(LiveInterval::Segment(NewStart, F, ValNum)); in calculateLiveIntervals()
437 Intervals[i]->addSegment(LiveInterval::Segment(S, NewFin, ValNum)); in calculateLiveIntervals()
561 const LiveInterval *Interval = &*Intervals[FromSlot]; in remapInstructions()
610 LiveInterval *Interval = &*Intervals[Slot]; in removeInvalidSlotRanges()
687 std::unique_ptr<LiveInterval> LI(new LiveInterval(i, 0)); in runOnMachineFunction()
745 LiveInterval *First = &*Intervals[FirstSlot]; in runOnMachineFunction()
746 LiveInterval *Second = &*Intervals[SecondSlot]; in runOnMachineFunction()
DLiveRangeCalc.cpp53 void LiveRangeCalc::calculate(LiveInterval &LI, bool TrackSubRegs) { in calculate()
77 for (LiveInterval::SubRange &S : LI.subranges()) { in calculate()
84 LiveInterval::SubRange *CommonRange; in calculate()
99 LiveInterval::SubRange *NewRange = LI.createSubRange(*Alloc, Mask); in calculate()
118 for (LiveInterval::SubRange &S : LI.subranges()) { in calculate()
439 LR.addSegment(LiveInterval::Segment(Start, I.Kill, VNI)); in updateSSA()
441 LR.addSegment(LiveInterval::Segment(Start, End, VNI)); in updateSSA()
DLiveInterval.cpp752 void LiveInterval::freeSubRange(SubRange *S) { in freeSubRange()
757 void LiveInterval::removeEmptySubRanges() { in removeEmptySubRanges()
776 void LiveInterval::clearSubRanges() { in clearSubRanges()
817 static void determineMissingVNIs(const SlotIndexes &Indexes, LiveInterval &LI) { in determineMissingVNIs()
860 void LiveInterval::constructMainRangeFromSubranges( in constructMainRangeFromSubranges()
1017 unsigned LiveInterval::getSize() const { in getSize()
1064 void LiveInterval::print(raw_ostream &OS) const { in print()
1078 void LiveInterval::dump() const { in dump()
1100 void LiveInterval::verify(const MachineRegisterInfo *MRI) const { in verify()
1330 unsigned ConnectedVNInfoEqClasses::Classify(const LiveInterval *LI) { in Classify()
[all …]
DCalcSpillWeights.cpp75 static bool isRematerializable(const LiveInterval &LI, in isRematerializable()
78 for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end(); in isRematerializable()
96 VirtRegAuxInfo::calculateSpillWeightAndHint(LiveInterval &li) { in calculateSpillWeightAndHint()
/external/llvm/lib/Target/Hexagon/
DHexagonExpandCondsets.cpp137 LiveInterval::iterator nextSegment(LiveInterval &LI, SlotIndex S);
138 LiveInterval::iterator prevSegment(LiveInterval &LI, SlotIndex S);
141 void shrinkToUses(unsigned Reg, LiveInterval &LI);
142 void updateKillFlags(unsigned Reg, LiveInterval &LI);
143 void terminateSegment(LiveInterval::iterator LT, SlotIndex S,
144 LiveInterval &LI);
172 bool isIntraBlocks(LiveInterval &LI);
232 LiveInterval::iterator HexagonExpandCondsets::nextSegment(LiveInterval &LI, in nextSegment()
234 for (LiveInterval::iterator I = LI.begin(), E = LI.end(); I != E; ++I) { in nextSegment()
242 LiveInterval::iterator HexagonExpandCondsets::prevSegment(LiveInterval &LI, in prevSegment()
[all …]
/external/llvm/lib/Target/PowerPC/
DPPCVSXFMAMutate.cpp236 LiveInterval &FMAInt = LIS->getInterval(OldFMAReg); in processBlock()
255 LiveInterval &NewFMAInt = LIS->getInterval(KilledProdReg); in processBlock()
256 for (LiveInterval::iterator AI = FMAInt.begin(), AE = FMAInt.end(); in processBlock()
266 NewFMAInt.addSegment(LiveInterval::Segment(AI->start, AI->end, in processBlock()

12