/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 | 68 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 …]
|
D | LiveRegMatrix.h | 33 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);
|
D | LiveRangeEdit.h | 61 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()
|
D | LiveStackAnalysis.h | 37 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()
|
D | CalcSpillWeights.h | 19 class LiveInterval; variable 67 void calculateSpillWeightAndHint(LiveInterval &li);
|
D | LiveInterval.h | 588 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/ |
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 | 104 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 …]
|
D | LiveRegMatrix.cpp | 76 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()
|
D | StackSlotColoring.cpp | 55 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 …]
|
D | LiveIntervalUnion.cpp | 29 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()
|
D | RegAllocBase.h | 84 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()
|
D | InlineSpiller.cpp | 74 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 …]
|
D | RegisterCoalescer.cpp | 168 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 …]
|
D | SplitKit.cpp | 149 .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 …]
|
D | SplitKit.h | 27 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;
|
D | LiveIntervalAnalysis.cpp | 189 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 …]
|
D | LiveRangeEdit.cpp | 34 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()
|
D | StackColoring.cpp | 117 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()
|
D | LiveRangeCalc.cpp | 53 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()
|
D | LiveInterval.cpp | 752 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 …]
|
D | CalcSpillWeights.cpp | 75 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/ |
D | HexagonExpandCondsets.cpp | 137 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/ |
D | PPCVSXFMAMutate.cpp | 236 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()
|