Home
last modified time | relevance | path

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

1234

/external/swiftshader/third_party/LLVM/include/llvm/CodeGen/
DLiveIntervalAnalysis.h60 typedef DenseMap<unsigned, LiveInterval*> Reg2IntervalMap;
86 LiveInterval &getInterval(unsigned reg) { in getInterval()
92 const LiveInterval &getInterval(unsigned reg) const { in getInterval()
111 double getScaledIntervalSize(LiveInterval& I) { in getScaledIntervalSize()
123 unsigned getApproximateInstructionCount(LiveInterval& I) { in getApproximateInstructionCount()
133 bool conflictsWithPhysReg(const LiveInterval &li, VirtRegMap &vrm,
138 bool conflictsWithAliasRef(LiveInterval &li, unsigned Reg,
142 LiveInterval &getOrCreateInterval(unsigned reg) { in getOrCreateInterval()
151 LiveInterval *dupInterval(LiveInterval *li);
165 bool shrinkToUses(LiveInterval *li,
[all …]
DLiveInterval.h203 class LiveInterval {
225 LiveInterval(unsigned Reg, float Weight)
267 return const_cast<LiveInterval*>(this)->find(Pos);
341 void MergeRangesInAsValue(const LiveInterval &RHS, VNInfo *LHSValNo);
348 void MergeValueInAsValue(const LiveInterval &RHS,
353 void Copy(const LiveInterval &RHS, MachineRegisterInfo *MRI,
441 bool overlaps(const LiveInterval& other) const {
454 bool overlapsFrom(const LiveInterval& other, const_iterator I) const;
471 void join(LiveInterval &Other,
523 void ComputeJoinedWeight(const LiveInterval &Other);
[all …]
/external/swiftshader/third_party/LLVM/lib/CodeGen/
DLiveRangeEdit.h55 LiveInterval &parent_;
56 SmallVectorImpl<LiveInterval*> &newRegs_;
58 const SmallVectorImpl<LiveInterval*> *uselessRegs_;
86 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr*> &Dead,
96 LiveRangeEdit(LiveInterval &parent,
97 SmallVectorImpl<LiveInterval*> &newRegs,
99 const SmallVectorImpl<LiveInterval*> *uselessRegs = 0)
106 LiveInterval &getParent() const { return parent_; } in getParent()
110 typedef SmallVectorImpl<LiveInterval*>::const_iterator iterator;
115 LiveInterval *get(unsigned idx) const { return newRegs_[idx+firstNew_]; } in get()
[all …]
DLiveInterval.cpp33 LiveInterval::iterator LiveInterval::find(SlotIndex Pos) { in find()
52 bool LiveInterval::killedInRange(SlotIndex Start, SlotIndex End) const { in killedInRange()
84 bool LiveInterval::overlapsFrom(const LiveInterval& other, in overlapsFrom()
127 bool LiveInterval::overlaps(SlotIndex Start, SlotIndex End) const { in overlaps()
137 void LiveInterval::markValNoForDeletion(VNInfo *ValNo) { in markValNoForDeletion()
149 void LiveInterval::RenumberValues(LiveIntervals &lis) { in RenumberValues()
166 void LiveInterval::extendIntervalEndTo(Ranges::iterator I, SlotIndex NewEnd) { in extendIntervalEndTo()
195 LiveInterval::Ranges::iterator
196 LiveInterval::extendIntervalStartTo(Ranges::iterator I, SlotIndex NewStart) { in extendIntervalStartTo()
227 LiveInterval::iterator
[all …]
DRegAllocBase.h113 LiveIntervalUnion::Query &query(LiveInterval &VirtReg, unsigned PhysReg) { in query()
134 virtual void enqueue(LiveInterval *LI) = 0;
137 virtual LiveInterval *dequeue() = 0;
143 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
144 SmallVectorImpl<LiveInterval*> &splitLVRs) = 0;
152 unsigned checkPhysRegInterference(LiveInterval& VirtReg, unsigned PhysReg);
156 void assign(LiveInterval &VirtReg, unsigned PhysReg);
161 void unassign(LiveInterval &VirtReg, unsigned PhysReg);
166 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
167 SmallVectorImpl<LiveInterval*> &SplitVRegs);
[all …]
DRegAllocBasic.cpp71 bool operator()(LiveInterval *A, LiveInterval *B) const { in operator ()()
94 std::priority_queue<LiveInterval*, std::vector<LiveInterval*>,
111 virtual float getPriority(LiveInterval *LI) { return LI->weight; } in getPriority()
113 virtual void enqueue(LiveInterval *LI) { in enqueue()
117 virtual LiveInterval *dequeue() { in dequeue()
120 LiveInterval *LI = Queue.top(); in dequeue()
125 virtual unsigned selectOrSplit(LiveInterval &VirtReg,
126 SmallVectorImpl<LiveInterval*> &SplitVRegs);
268 LiveInterval &VirtReg = *I->second; in seedLiveRegs()
276 void RegAllocBase::assign(LiveInterval &VirtReg, unsigned PhysReg) { in assign()
[all …]
DLiveIntervalUnion.h39 const IntervalMap<SlotIndex, LiveInterval*>::const_iterator &LUSeg) { in overlap()
51 typedef IntervalMap<SlotIndex, LiveInterval*> LiveSegments;
92 void unify(LiveInterval &VirtReg);
95 void extract(LiveInterval &VirtReg);
112 LiveInterval *VirtReg;
113 LiveInterval::iterator VirtRegI; // current position in VirtReg
115 SmallVector<LiveInterval*,4> InterferingVRegs;
124 Query(LiveInterval *VReg, LiveIntervalUnion *LIU): in Query()
140 void init(unsigned UTag, LiveInterval *VReg, LiveIntervalUnion *LIU) { in init()
154 LiveInterval &virtReg() const { in virtReg()
[all …]
DRegAllocGreedy.cpp138 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
142 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
240 virtual void enqueue(LiveInterval *LI);
241 virtual LiveInterval *dequeue();
242 virtual unsigned selectOrSplit(LiveInterval&,
243 SmallVectorImpl<LiveInterval*>&);
264 bool shouldEvict(LiveInterval &A, bool, LiveInterval &B, bool);
265 bool canEvictInterference(LiveInterval&, unsigned, bool, EvictionCost&);
266 void evictInterference(LiveInterval&, unsigned,
267 SmallVectorImpl<LiveInterval*>&);
[all …]
DLiveIntervalUnion.cpp28 void LiveIntervalUnion::unify(LiveInterval &VirtReg) { in unify()
34 LiveInterval::iterator RegPos = VirtReg.begin(); in unify()
35 LiveInterval::iterator RegEnd = VirtReg.end(); in unify()
55 void LiveIntervalUnion::extract(LiveInterval &VirtReg) { in extract()
61 LiveInterval::iterator RegPos = VirtReg.begin(); in extract()
62 LiveInterval::iterator RegEnd = VirtReg.end(); 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 = 0; in collectInterferingVRegs()
[all …]
DRegAllocLinearScan.cpp114 typedef std::pair<LiveInterval*, LiveInterval::iterator> IntervalPtr;
149 std::vector<LiveInterval*> handled_;
163 typedef std::priority_queue<LiveInterval*,
164 SmallVector<LiveInterval*, 64>,
165 greater_ptr<LiveInterval> > IntervalHeap;
253 LiveInterval *hasNextReloadInterval(LiveInterval *cur);
256 void DowngradeRegister(LiveInterval *li, unsigned Reg);
263 void assignRegOrStackSlotAtInterval(LiveInterval* cur);
273 void findIntervalsToSpill(LiveInterval *cur,
276 SmallVector<LiveInterval*, 8> &SpillIntervals);
[all …]
DRenderMachineFunction.h27 class LiveInterval; variable
54 bool operator()(const LiveInterval *li1, const LiveInterval *li2) const { in operator()
59 typedef std::set<const LiveInterval*, IntervalComp> IntervalSet;
215 void rememberUseDefs(const LiveInterval *li);
217 void rememberSpills(const LiveInterval *li,
218 const std::vector<LiveInterval*> &spills);
220 bool isSpill(const LiveInterval *li) const;
259 LiveState getLiveStateAt(const LiveInterval *li, SlotIndex i) const;
265 typedef std::map<const LiveInterval*, std::set<const LiveInterval*> >
269 typedef std::map<const LiveInterval*, const LiveInterval*> SpillForMap;
[all …]
DInlineSpiller.cpp69 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);
179 void insertReload(LiveInterval &NewLI, SlotIndex,
181 void insertSpill(LiveInterval &NewLI, const LiveInterval &OldLI,
224 bool InlineSpiller::isSnippet(const LiveInterval &SnipLI) { in isSnippet()
284 LiveInterval &SnipLI = LIS.getInterval(SnipReg); in collectRegsToSpill()
[all …]
DLiveIntervalAnalysis.cpp96 for (DenseMap<unsigned, LiveInterval*>::iterator I = r2iMap_.begin(), in releaseMemory()
152 bool LiveIntervals::conflictsWithPhysReg(const LiveInterval &li, in conflictsWithPhysReg()
218 bool LiveIntervals::conflictsWithAliasRef(LiveInterval &li, unsigned Reg, in conflictsWithAliasRef()
220 for (LiveInterval::Ranges::const_iterator in conflictsWithAliasRef()
270 LiveInterval &interval) { in isPartialRedef()
289 LiveInterval &interval) { in handleVirtualRegisterDef()
497 LiveInterval &interval, in handlePhysicalRegisterDef()
597 LiveInterval &interval, bool isAlias) { in handleLiveInRegister()
737 LiveInterval* LiveIntervals::createInterval(unsigned reg) { in createInterval()
739 return new LiveInterval(reg, Weight); in createInterval()
[all …]
DLiveRangeCalc.h74 LiveInterval *LI;
88 LiveInBlock(LiveInterval *li, MachineDomTreeNode *node, SlotIndex kill) in LiveInBlock()
103 VNInfo *findReachingDefs(LiveInterval *LI,
139 void calculate(LiveInterval *LI,
157 void extend(LiveInterval *LI,
167 void extendToUses(LiveInterval *LI,
206 void addLiveInBlock(LiveInterval *LI,
DRegisterCoalescer.cpp134 bool HasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
146 bool ReMaterializeTrivialDef(LiveInterval &SrcInt, bool PreserveSrcInt,
170 bool RemoveDeadDef(LiveInterval &li, MachineInstr *DefMI);
422 LiveInterval &IntA = in AdjustCopiesBackFrom()
424 LiveInterval &IntB = in AdjustCopiesBackFrom()
430 LiveInterval::iterator BLR = IntB.FindLiveRangeContaining(CopyIdx); in AdjustCopiesBackFrom()
442 LiveInterval::iterator ALR = IntA.FindLiveRangeContaining(CopyUseIdx); in AdjustCopiesBackFrom()
474 LiveInterval::iterator ValLR = in AdjustCopiesBackFrom()
528 LiveInterval &SRLI = LIS->getInterval(*SR); in AdjustCopiesBackFrom()
569 bool RegisterCoalescer::HasOtherReachingDefs(LiveInterval &IntA, in HasOtherReachingDefs()
[all …]
DLiveRangeEdit.cpp32 LiveInterval &LiveRangeEdit::createFrom(unsigned OldReg, in createFrom()
39 LiveInterval &LI = LIS.getOrCreateInterval(VReg); in createFrom()
59 for (LiveInterval::vni_iterator I = parent_.vni_begin(), in scanRemattable()
101 LiveInterval &li = lis.getInterval(MO.getReg()); in allUsesAvailableAt()
162 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()
249 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDefs()
285 LiveInterval *LI = ToShrink.back(); in eliminateDeadDefs()
[all …]
/external/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.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.cpp113 typedef SmallPtrSet<LiveInterval *, 4> SmallLISet;
212 LiveRangeStage getStage(const LiveInterval &VirtReg) const { in getStage()
216 void setStage(const LiveInterval &VirtReg, LiveRangeStage Stage) { in setStage()
315 SmallSetVector<LiveInterval *, 8> SetOfBrokenHints;
329 void enqueue(LiveInterval *LI) override;
330 LiveInterval *dequeue() override;
331 unsigned selectOrSplit(LiveInterval&, SmallVectorImpl<unsigned>&) override;
332 void aboutToRemoveInterval(LiveInterval &) override;
340 unsigned selectOrSplitImpl(LiveInterval &, SmallVectorImpl<unsigned> &,
346 void enqueue(PQueue &CurQueue, LiveInterval *LI);
[all …]
DLiveRangeEdit.cpp34 LiveInterval &LiveRangeEdit::createEmptyIntervalFrom(unsigned OldReg) { in createEmptyIntervalFrom()
39 LiveInterval &LI = LIS.createEmptyInterval(VReg); in createEmptyIntervalFrom()
67 LiveInterval &OrigLI = LIS.getInterval(Original); in scanRemattable()
102 LiveInterval &li = LIS.getInterval(MO.getReg()); in allUsesAvailableAt()
164 bool LiveRangeEdit::foldAsLoad(LiveInterval *LI, in foldAsLoad()
220 bool LiveRangeEdit::useIsKill(const LiveInterval &LI, in useIsKill()
229 for (const LiveInterval::SubRange &S : LI.subranges()) { in useIsKill()
269 LiveInterval &OrigLI = LIS.getInterval(Original); in eliminateDeadDef()
293 LiveInterval &LI = LIS.getInterval(Reg); in eliminateDeadDef()
337 LiveInterval &NewLI = createEmptyIntervalFrom(Dest); in eliminateDeadDef()
[all …]
DRegisterCoalescer.cpp166 void mergeSubRangeInto(LiveInterval &LI, const LiveRange &ToMerge,
182 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
213 void addUndefFlag(const LiveInterval &Int, SlotIndex UseIdx,
237 void shrinkToUses(LiveInterval *LI, in shrinkToUses()
242 SmallVector<LiveInterval*, 8> SplitLIs; in shrinkToUses()
476 LiveInterval &IntA = in adjustCopiesBackFrom()
478 LiveInterval &IntB = in adjustCopiesBackFrom()
498 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx); in adjustCopiesBackFrom()
509 LiveInterval::iterator AS = IntA.FindSegmentContaining(CopyUseIdx); in adjustCopiesBackFrom()
522 LiveInterval::iterator ValS = in adjustCopiesBackFrom()
[all …]
/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.h67 IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
109 LiveInterval &getInterval(unsigned Reg) { in getInterval()
116 const LiveInterval &getInterval(unsigned Reg) const { in getInterval()
125 LiveInterval &createEmptyInterval(unsigned Reg) { in createEmptyInterval()
132 LiveInterval &createAndComputeVirtRegInterval(unsigned Reg) { in createAndComputeVirtRegInterval()
133 LiveInterval &LI = createEmptyInterval(Reg); in createAndComputeVirtRegInterval()
146 LiveInterval::Segment addSegmentToEndOfBlock(unsigned reg,
155 bool shrinkToUses(LiveInterval *li,
164 void shrinkToUses(LiveInterval::SubRange &SR, unsigned Reg);
274 MachineBasicBlock *intervalIsInOneMBB(const LiveInterval &LI) const;
[all …]
DLiveRangeEdit.h61 LiveInterval *Parent;
97 bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr*> &Dead);
99 typedef SetVector<LiveInterval*,
100 SmallVector<LiveInterval*, 8>,
101 SmallPtrSet<LiveInterval*, 8> > ToShrinkSet;
112 bool useIsKill(const LiveInterval &LI, const MachineOperand &MO) const;
126 LiveRangeEdit(LiveInterval *parent, SmallVectorImpl<unsigned> &newRegs,
139 LiveInterval &getParent() const { in getParent()
168 LiveInterval &createEmptyIntervalFrom(unsigned OldReg);
175 LiveInterval &createEmptyInterval() { in createEmptyInterval()
DLiveRegMatrix.h33 class LiveInterval; variable
103 InterferenceKind checkInterference(LiveInterval &VirtReg, unsigned PhysReg);
108 void assign(LiveInterval &VirtReg, unsigned PhysReg);
113 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);

1234