/external/llvm/include/llvm/CodeGen/ |
D | LiveIntervalAnalysis.h | 66 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 …]
|
D | LiveRangeEdit.h | 58 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 …]
|
D | LiveInterval.h | 138 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 …]
|
D | LiveStackAnalysis.h | 36 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()
|
D | CalcSpillWeights.h | 19 class LiveInterval; variable 54 void CalculateWeightAndHint(LiveInterval &li); 73 bool isZeroLengthInterval(LiveInterval *li) const;
|
/external/llvm/lib/CodeGen/ |
D | RegAllocBasic.cpp | 50 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 …]
|
D | LiveRangeCalc.h | 79 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,
|
D | LiveIntervalUnion.h | 37 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 …]
|
D | LiveInterval.cpp | 34 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 …]
|
D | LiveRegMatrix.h | 34 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);
|
D | LiveIntervalUnion.cpp | 30 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 …]
|
D | RegAllocGreedy.cpp | 137 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 …]
|
D | InlineSpiller.cpp | 69 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 …]
|
D | StackSlotColoring.cpp | 54 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 …]
|
D | LiveRangeEdit.cpp | 34 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 …]
|
D | LiveIntervalAnalysis.cpp | 141 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 …]
|
D | RegAllocBase.h | 83 virtual void enqueue(LiveInterval *LI) = 0; 86 virtual LiveInterval *dequeue() = 0; 92 virtual unsigned selectOrSplit(LiveInterval &VirtReg, 93 SmallVectorImpl<LiveInterval*> &splitLVRs) = 0;
|
D | RegisterCoalescer.cpp | 137 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 …]
|
D | LiveRegMatrix.cpp | 72 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()
|
D | SplitKit.cpp | 127 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 …]
|
D | SplitKit.h | 27 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;
|
D | LiveDebugVariables.cpp | 133 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 …]
|
D | LiveDebugVariables.h | 29 class LiveInterval; variable 50 void splitRegister(unsigned OldReg, ArrayRef<LiveInterval*> NewRegs);
|
D | RegAllocBase.cpp | 84 while (LiveInterval *VirtReg = dequeue()) { in allocatePhysRegs() 103 typedef SmallVector<LiveInterval*, 4> VirtRegVec; in allocatePhysRegs() 131 LiveInterval *SplitVirtReg = *I; in allocatePhysRegs()
|
D | StrongPHIElimination.cpp | 344 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 …]
|