/external/swiftshader/third_party/LLVM/include/llvm/CodeGen/ |
D | LiveIntervalAnalysis.h | 60 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 …]
|
D | LiveInterval.h | 203 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/ |
D | LiveRangeEdit.h | 55 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 …]
|
D | RegAllocBase.h | 113 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 …]
|
D | LiveIntervalUnion.h | 39 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 …]
|
D | LiveInterval.cpp | 33 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 …]
|
D | RegAllocBasic.cpp | 71 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 …]
|
D | LiveIntervalUnion.cpp | 28 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 …]
|
D | RenderMachineFunction.h | 27 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 …]
|
D | RegAllocGreedy.cpp | 138 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 …]
|
D | RegAllocLinearScan.cpp | 114 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 …]
|
D | LiveRangeCalc.h | 74 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,
|
D | InlineSpiller.cpp | 69 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 …]
|
D | LiveIntervalAnalysis.cpp | 96 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 …]
|
D | LiveRangeEdit.cpp | 32 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 …]
|
D | RegisterCoalescer.cpp | 134 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 …]
|
/external/llvm/include/llvm/CodeGen/ |
D | LiveIntervalUnion.h | 35 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 …]
|
D | LiveIntervalAnalysis.h | 67 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 …]
|
D | LiveRegMatrix.h | 33 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);
|
D | LiveRangeEdit.h | 61 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()
|
/external/llvm/lib/CodeGen/ |
D | RenameIndependentSubregs.cpp | 69 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 …]
|
D | RegAllocBasic.cpp | 49 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 …]
|
D | RegAllocGreedy.cpp | 113 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 …]
|
D | LiveRangeEdit.cpp | 34 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 …]
|
D | LiveRegMatrix.cpp | 74 bool foreachUnit(const TargetRegisterInfo *TRI, LiveInterval &VRegInterval, in foreachUnit() 80 for (LiveInterval::SubRange &S : VRegInterval.subranges()) { in foreachUnit() 97 void LiveRegMatrix::assign(LiveInterval &VirtReg, unsigned PhysReg) { in assign() 114 void LiveRegMatrix::unassign(LiveInterval &VirtReg) { in unassign() 139 bool LiveRegMatrix::checkRegMaskInterference(LiveInterval &VirtReg, in checkRegMaskInterference() 157 bool LiveRegMatrix::checkRegUnitInterference(LiveInterval &VirtReg, in checkRegUnitInterference() 171 LiveIntervalUnion::Query &LiveRegMatrix::query(LiveInterval &VirtReg, in query() 179 LiveRegMatrix::checkInterference(LiveInterval &VirtReg, unsigned PhysReg) { in checkInterference()
|