Home
last modified time | relevance | path

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

12

/external/llvm/include/llvm/CodeGen/
DLiveIntervalAnalysis.h66 IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
102 SmallVector<LiveInterval*, 0> RegUnitIntervals;
112 LiveInterval &getInterval(unsigned Reg) { in getInterval()
113 LiveInterval *LI = VirtRegIntervals[Reg]; in getInterval()
118 const LiveInterval &getInterval(unsigned Reg) const { in getInterval()
139 LiveInterval &getOrCreateInterval(unsigned Reg) { in getOrCreateInterval()
165 bool shrinkToUses(LiveInterval *li,
202 bool isLiveInToMBB(const LiveInterval &li, in isLiveInToMBB()
207 bool isLiveOutOfMBB(const LiveInterval &li, in isLiveOutOfMBB()
247 MachineBasicBlock *intervalIsInOneMBB(const LiveInterval &LI) const;
[all …]
DLiveRangeEdit.h58 LiveInterval *Parent;
59 SmallVectorImpl<LiveInterval*> &NewRegs;
90 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr*> &Dead);
102 LiveRangeEdit(LiveInterval *parent,
103 SmallVectorImpl<LiveInterval*> &newRegs,
115 LiveInterval &getParent() const { in getParent()
122 typedef SmallVectorImpl<LiveInterval*>::const_iterator iterator;
127 LiveInterval *get(unsigned idx) const { return NewRegs[idx+FirstNew]; } in get()
129 ArrayRef<LiveInterval*> regs() const { in regs()
134 LiveInterval &createFrom(unsigned OldReg);
[all …]
DLiveInterval.h138 class LiveInterval {
160 LiveInterval(unsigned Reg, float Weight)
202 return const_cast<LiveInterval*>(this)->find(Pos);
269 void MergeRangesInAsValue(const LiveInterval &RHS, VNInfo *LHSValNo);
276 void MergeValueInAsValue(const LiveInterval &RHS,
281 void Copy(const LiveInterval &RHS, MachineRegisterInfo *MRI,
364 bool overlaps(const LiveInterval& other) const {
375 bool overlaps(const LiveInterval &Other, const CoalescerPair &CP,
385 bool overlapsFrom(const LiveInterval& other, const_iterator I) const;
402 void join(LiveInterval &Other,
[all …]
DLiveStackAnalysis.h36 typedef std::map<int, LiveInterval> SS2IntervalMap;
57 LiveInterval &getOrCreateInterval(int Slot, const TargetRegisterClass *RC);
59 LiveInterval &getInterval(int Slot) { in getInterval()
66 const LiveInterval &getInterval(int Slot) const { in getInterval()
DCalcSpillWeights.h19 class LiveInterval; variable
54 void CalculateWeightAndHint(LiveInterval &li);
73 bool isZeroLengthInterval(LiveInterval *li) const;
/external/llvm/lib/CodeGen/
DRegAllocBasic.cpp50 bool operator()(LiveInterval *A, LiveInterval *B) const { in operator ()()
69 std::priority_queue<LiveInterval*, std::vector<LiveInterval*>,
91 virtual float getPriority(LiveInterval *LI) { return LI->weight; } in getPriority()
93 virtual void enqueue(LiveInterval *LI) { in enqueue()
97 virtual LiveInterval *dequeue() { in dequeue()
100 LiveInterval *LI = Queue.top(); in dequeue()
105 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
106 SmallVectorImpl<LiveInterval*> &SplitVRegs);
114 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
115 SmallVectorImpl<LiveInterval*> &SplitVRegs);
[all …]
DLiveRangeCalc.h79 LiveInterval *LI;
93 LiveInBlock(LiveInterval *li, MachineDomTreeNode *node, SlotIndex kill) in LiveInBlock()
110 VNInfo *findReachingDefs(LiveInterval *LI,
148 void calculate(LiveInterval *LI);
165 void extend(LiveInterval *LI, SlotIndex Kill, unsigned PhysReg = 0);
170 void createDeadDefs(LiveInterval *LI, unsigned Reg);
173 void createDeadDefs(LiveInterval *LI) { in createDeadDefs()
181 void extendToUses(LiveInterval *LI, unsigned Reg);
184 void extendToUses(LiveInterval *LI) { in extendToUses()
221 void addLiveInBlock(LiveInterval *LI,
DLiveIntervalUnion.h37 const IntervalMap<SlotIndex, LiveInterval*>::const_iterator &LUSeg) { in overlap()
49 typedef IntervalMap<SlotIndex, LiveInterval*> LiveSegments;
88 void unify(LiveInterval &VirtReg);
91 void extract(LiveInterval &VirtReg);
108 LiveInterval *VirtReg;
109 LiveInterval::iterator VirtRegI; // current position in VirtReg
111 SmallVector<LiveInterval*,4> InterferingVRegs;
120 Query(LiveInterval *VReg, LiveIntervalUnion *LIU): in Query()
136 void init(unsigned UTag, LiveInterval *VReg, LiveIntervalUnion *LIU) { in init()
150 LiveInterval &virtReg() const { in virtReg()
[all …]
DLiveInterval.cpp34 LiveInterval::iterator LiveInterval::find(SlotIndex Pos) { in find()
52 VNInfo *LiveInterval::createDeadDef(SlotIndex Def, in createDeadDef()
73 bool LiveInterval::killedInRange(SlotIndex Start, SlotIndex End) const { in killedInRange()
105 bool LiveInterval::overlapsFrom(const LiveInterval& other, in overlapsFrom()
146 bool LiveInterval::overlaps(const LiveInterval &Other, in overlaps()
190 bool LiveInterval::overlaps(SlotIndex Start, SlotIndex End) const { in overlaps()
200 void LiveInterval::markValNoForDeletion(VNInfo *ValNo) { in markValNoForDeletion()
212 void LiveInterval::RenumberValues(LiveIntervals &lis) { in RenumberValues()
229 void LiveInterval::extendIntervalEndTo(Ranges::iterator I, SlotIndex NewEnd) { in extendIntervalEndTo()
258 LiveInterval::Ranges::iterator
[all …]
DLiveRegMatrix.h34 class LiveInterval; variable
106 InterferenceKind checkInterference(LiveInterval &VirtReg, unsigned PhysReg);
111 void assign(LiveInterval &VirtReg, unsigned PhysReg);
116 void unassign(LiveInterval &VirtReg);
128 bool checkRegMaskInterference(LiveInterval &VirtReg, unsigned PhysReg = 0);
133 bool checkRegUnitInterference(LiveInterval &VirtReg, unsigned PhysReg);
139 LiveIntervalUnion::Query &query(LiveInterval &VirtReg, unsigned RegUnit);
DLiveIntervalUnion.cpp30 void LiveIntervalUnion::unify(LiveInterval &VirtReg) { in unify()
36 LiveInterval::iterator RegPos = VirtReg.begin(); in unify()
37 LiveInterval::iterator RegEnd = VirtReg.end(); in unify()
57 void LiveIntervalUnion::extract(LiveInterval &VirtReg) { in extract()
63 LiveInterval::iterator RegPos = VirtReg.begin(); in extract()
64 LiveInterval::iterator RegEnd = VirtReg.end(); in extract()
105 bool LiveIntervalUnion::Query::isSeenInterference(LiveInterval *VirtReg) const { in isSeenInterference()
106 SmallVectorImpl<LiveInterval*>::const_iterator I = in isSeenInterference()
142 LiveInterval::iterator VirtRegEnd = VirtReg->end(); in collectInterferingVRegs()
143 LiveInterval *RecentReg = 0; in collectInterferingVRegs()
[all …]
DRegAllocGreedy.cpp137 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
141 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
239 virtual void enqueue(LiveInterval *LI);
240 virtual LiveInterval *dequeue();
241 virtual unsigned selectOrSplit(LiveInterval&,
242 SmallVectorImpl<LiveInterval*>&);
262 bool shouldEvict(LiveInterval &A, bool, LiveInterval &B, bool);
263 bool canEvictInterference(LiveInterval&, unsigned, bool, EvictionCost&);
264 void evictInterference(LiveInterval&, unsigned,
265 SmallVectorImpl<LiveInterval*>&);
[all …]
DInlineSpiller.cpp69 LiveInterval *StackInt;
154 bool isSnippet(const LiveInterval &SnipLI);
167 bool hoistSpill(LiveInterval &SpillLI, MachineInstr *CopyMI);
168 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
170 void markValueUsed(LiveInterval*, VNInfo*);
171 bool reMaterializeFor(LiveInterval&, MachineBasicBlock::iterator MI);
177 void insertReload(LiveInterval &NewLI, SlotIndex,
179 void insertSpill(LiveInterval &NewLI, const LiveInterval &OldLI,
222 bool InlineSpiller::isSnippet(const LiveInterval &SnipLI) { in isSnippet()
282 LiveInterval &SnipLI = LIS.getInterval(SnipReg); in collectRegsToSpill()
[all …]
DStackSlotColoring.cpp54 std::vector<LiveInterval*> SSIntervals;
78 SmallVector<SmallVector<LiveInterval*,4>, 16> Assignments;
103 bool OverlapWithAssignments(LiveInterval *li, int Color) const;
104 int ColorSlot(LiveInterval *li);
127 bool operator()(LiveInterval* LHS, LiveInterval* RHS) const { in operator ()()
155 LiveInterval &li = LS->getInterval(FI); in ScanForSpillSlotRefs()
177 LiveInterval &li = i->second; in InitializeSlots()
199 StackSlotColoring::OverlapWithAssignments(LiveInterval *li, int Color) const { in OverlapWithAssignments()
200 const SmallVector<LiveInterval*,4> &OtherLIs = Assignments[Color]; in OverlapWithAssignments()
202 LiveInterval *OtherLI = OtherLIs[i]; in OverlapWithAssignments()
[all …]
DLiveRangeEdit.cpp34 LiveInterval &LiveRangeEdit::createFrom(unsigned OldReg) { in createFrom()
40 LiveInterval &LI = LIS.getOrCreateInterval(VReg); in createFrom()
57 for (LiveInterval::vni_iterator I = getParent().vni_begin(), in scanRemattable()
95 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt()
153 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
214 SetVector<LiveInterval*, in eliminateDeadDefs()
215 SmallVector<LiveInterval*, 8>, in eliminateDeadDefs()
216 SmallPtrSet<LiveInterval*, 8> > ToShrink; in eliminateDeadDefs()
256 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDefs()
319 LiveInterval *LI = ToShrink.back(); in eliminateDeadDefs()
[all …]
DLiveIntervalAnalysis.cpp141 if (LiveInterval *LI = RegUnitIntervals[i]) in print()
186 LiveInterval &interval) { in isPartialRedef()
205 LiveInterval &interval) { in handleVirtualRegisterDef()
457 LiveInterval* LiveIntervals::createInterval(unsigned reg) { in createInterval()
459 return new LiveInterval(reg, Weight); in createInterval()
465 void LiveIntervals::computeVirtRegInterval(LiveInterval *LI) { in computeVirtRegInterval()
478 LiveInterval *LI = createInterval(Reg); in computeVirtRegs()
520 void LiveIntervals::computeRegUnitInterval(LiveInterval *LI) { in computeRegUnitInterval()
565 SmallVector<LiveInterval*, 8> NewIntvs; in computeLiveInRegUnits()
583 LiveInterval *Intv = RegUnitIntervals[Unit]; in computeLiveInRegUnits()
[all …]
DRegAllocBase.h83 virtual void enqueue(LiveInterval *LI) = 0;
86 virtual LiveInterval *dequeue() = 0;
92 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
93 SmallVectorImpl<LiveInterval*> &splitLVRs) = 0;
DRegisterCoalescer.cpp137 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
148 bool reMaterializeTrivialDef(LiveInterval &SrcInt, unsigned DstReg,
371 SmallVector<LiveInterval*, 8> NewRegs; in eliminateDeadDefs()
401 LiveInterval &IntA = in adjustCopiesBackFrom()
403 LiveInterval &IntB = in adjustCopiesBackFrom()
409 LiveInterval::iterator BLR = IntB.FindLiveRangeContaining(CopyIdx); in adjustCopiesBackFrom()
420 LiveInterval::iterator ALR = IntA.FindLiveRangeContaining(CopyUseIdx); in adjustCopiesBackFrom()
432 LiveInterval::iterator ValLR = in adjustCopiesBackFrom()
487 bool RegisterCoalescer::hasOtherReachingDefs(LiveInterval &IntA, in hasOtherReachingDefs()
488 LiveInterval &IntB, in hasOtherReachingDefs()
[all …]
DLiveRegMatrix.cpp72 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) { in assign()
86 void LiveRegMatrix::unassign(LiveInterval &VirtReg) { in unassign()
99 bool LiveRegMatrix::checkRegMaskInterference(LiveInterval &VirtReg, in checkRegMaskInterference()
117 bool LiveRegMatrix::checkRegUnitInterference(LiveInterval &VirtReg, in checkRegUnitInterference()
128 LiveIntervalUnion::Query &LiveRegMatrix::query(LiveInterval &VirtReg, in query()
136 LiveRegMatrix::checkInterference(LiveInterval &VirtReg, unsigned PhysReg) { in checkInterference()
DSplitKit.cpp127 for (LiveInterval::const_vni_iterator I = CurLI->vni_begin(), in analyzeUses()
156 .shrinkToUses(const_cast<LiveInterval*>(CurLI)); in analyzeUses()
178 LiveInterval::const_iterator LVI = CurLI->begin(); in calcLiveBlockInfo()
179 LiveInterval::const_iterator LVE = CurLI->end(); in calcLiveBlockInfo()
276 unsigned SplitAnalysis::countLiveBlocks(const LiveInterval *cli) const { in countLiveBlocks()
279 LiveInterval *li = const_cast<LiveInterval*>(cli); in countLiveBlocks()
280 LiveInterval::iterator LVI = li->begin(); in countLiveBlocks()
281 LiveInterval::iterator LVE = li->end(); in countLiveBlocks()
301 const LiveInterval &Orig = LIS.getInterval(OrigReg); in isOriginalEndpoint()
303 LiveInterval::const_iterator I = Orig.find(Idx); in isOriginalEndpoint()
[all …]
DSplitKit.h27 class LiveInterval; variable
83 const LiveInterval *CurLI;
124 void analyze(const LiveInterval *li);
136 const LiveInterval &getParent() const { return *CurLI; } in getParent()
183 unsigned countLiveBlocks(const LiveInterval *li) const;
DLiveDebugVariables.cpp133 bool splitLocation(unsigned OldLocNo, ArrayRef<LiveInterval*> NewRegs);
226 LiveInterval *LI, const VNInfo *VNI,
238 void addDefsFromCopies(LiveInterval *LI, unsigned LocNo,
256 bool splitRegister(unsigned OldLocNo, ArrayRef<LiveInterval*> NewRegs);
341 void splitRegister(unsigned OldReg, ArrayRef<LiveInterval*> NewRegs);
486 LiveInterval *LI, const VNInfo *VNI, in extendDef()
547 UserValue::addDefsFromCopies(LiveInterval *LI, unsigned LocNo, in addDefsFromCopies()
558 SmallVector<std::pair<LiveInterval*, const VNInfo*>, 8> CopyValues; in addDefsFromCopies()
584 LiveInterval *DstLI = &LIS.getInterval(DstReg); in addDefsFromCopies()
599 LiveInterval *DstLI = CopyValues[j].first; in addDefsFromCopies()
[all …]
DLiveDebugVariables.h29 class LiveInterval; variable
50 void splitRegister(unsigned OldReg, ArrayRef<LiveInterval*> NewRegs);
DRegAllocBase.cpp84 while (LiveInterval *VirtReg = dequeue()) { in allocatePhysRegs()
103 typedef SmallVector<LiveInterval*, 4> VirtRegVec; in allocatePhysRegs()
131 LiveInterval *SplitVirtReg = *I; in allocatePhysRegs()
DStrongPHIElimination.cpp344 LiveInterval &DestLI = LI->getInterval(DestReg); in runOnMachineFunction()
345 LiveInterval &NewLI = LI->getInterval(NewReg); in runOnMachineFunction()
375 LiveInterval &SrcLI = LI->getInterval(SrcReg); in runOnMachineFunction()
672 LiveInterval &SrcInterval = LI->getInterval(SrcReg); in InsertCopiesForPHI()
730 LiveInterval &SrcLI = LI->getInterval(SrcReg); in InsertCopiesForPHI()
742 LiveInterval &DestLI = LI->getInterval(DestReg); in InsertCopiesForPHI()
775 LiveInterval &CopyLI = LI->getOrCreateInterval(CopyReg); in InsertCopiesForPHI()
786 LiveInterval &DestLI = LI->getOrCreateInterval(DestReg); in InsertCopiesForPHI()
801 LiveInterval &OldLI = LI->getInterval(Reg); in MergeLIsAndRename()
802 LiveInterval &NewLI = LI->getInterval(NewReg); in MergeLIsAndRename()
[all …]

12