| /freebsd/contrib/llvm-project/llvm/include/llvm/CodeGen/ |
| H A D | SlotIndexes.h | 66 class SlotIndex { 117 SlotIndex() = default; 122 SlotIndex(IndexListEntry *entry, unsigned slot) : lie(entry, slot) {} in SlotIndex() function 125 SlotIndex(const SlotIndex &li, Slot s) : lie(li.listEntry(), unsigned(s)) { in SlotIndex() function 145 bool operator==(SlotIndex other) const { 149 bool operator!=(SlotIndex other) const { 155 bool operator<(SlotIndex other) const { 160 bool operator<=(SlotIndex other) const { 166 bool operator>(SlotIndex other) const { 172 bool operator>=(SlotIndex other) const { [all …]
|
| H A D | LiveInterval.h | 62 SlotIndex def; 65 VNInfo(unsigned i, SlotIndex d) : id(i), def(d) {} in VNInfo() 85 void markUnused() { def = SlotIndex(); } in markUnused() 94 const SlotIndex EndPoint; 98 LiveQueryResult(VNInfo *EarlyVal, VNInfo *LateVal, SlotIndex EndPoint, in LiveQueryResult() 148 SlotIndex endPoint() const { in endPoint() 164 SlotIndex start; // Start point of the interval (inclusive) 165 SlotIndex end; // End point of the interval (exclusive) 171 Segment(SlotIndex S, SlotIndex E, VNInfo *V) in Segment() 177 bool contains(SlotIndex I) const { in contains() [all …]
|
| H A D | LiveIntervals.h | 75 SmallVector<SlotIndex, 8> RegMaskSlots; 211 LLVM_ABI void extendToIndices(LiveRange &LR, ArrayRef<SlotIndex> Indices, 212 ArrayRef<SlotIndex> Undefs); 214 void extendToIndices(LiveRange &LR, ArrayRef<SlotIndex> Indices) { in extendToIndices() 225 LLVM_ABI void pruneValue(LiveRange &LR, SlotIndex Kill, 226 SmallVectorImpl<SlotIndex> *EndPoints); 232 LLVM_ATTRIBUTE_UNUSED void pruneValue(LiveInterval &, SlotIndex, in pruneValue() argument 233 SmallVectorImpl<SlotIndex> *) { in pruneValue() argument 247 SlotIndex getInstructionIndex(const MachineInstr &Instr) const { in getInstructionIndex() 252 MachineInstr *getInstructionFromIndex(SlotIndex index) const { in getInstructionFromIndex() [all …]
|
| H A D | LiveRangeCalc.h | 113 SlotIndex Kill; 118 LiveInBlock(LiveRange &LR, MachineDomTreeNode *node, SlotIndex kill) in LiveInBlock() 130 bool isDefOnEntry(LiveRange &LR, ArrayRef<SlotIndex> Undefs, 150 bool findReachingDefs(LiveRange &LR, MachineBasicBlock &UseMBB, SlotIndex Use, 151 Register PhysReg, ArrayRef<SlotIndex> Undefs); 208 LLVM_ABI void extend(LiveRange &LR, SlotIndex Use, Register PhysReg, 209 ArrayRef<SlotIndex> Undefs); 245 SlotIndex Kill = SlotIndex()) { 263 isJointlyDominated(const MachineBasicBlock *MBB, ArrayRef<SlotIndex> Defs,
|
| H A D | LiveIntervalUnion.h | 46 using LiveSegments = IntervalMap<SlotIndex, const LiveInterval *>; 71 SegmentIter find(SlotIndex x) { return Segments.find(x); } in find() 74 ConstSegmentIter find(SlotIndex x) const { return Segments.find(x); } in find() 77 SlotIndex startIndex() const { return Segments.start(); } in startIndex() 78 SlotIndex endIndex() const { return Segments.stop(); } in endIndex()
|
| H A D | LiveRegMatrix.h | 116 bool checkInterference(SlotIndex Start, SlotIndex End, MCRegister PhysReg); 125 LaneBitmask checkInterferenceLanes(SlotIndex Start, SlotIndex End,
|
| H A D | RegisterPressure.h | 70 SlotIndex TopIdx; 71 SlotIndex BottomIdx; 75 LLVM_ABI void openTop(SlotIndex NextTop); 77 LLVM_ABI void openBottom(SlotIndex PrevBottom); 195 SlotIndex Pos, 557 LLVM_ABI SlotIndex getCurrSlot() const; 568 LLVM_ABI LaneBitmask getLastUsedLanes(Register RegUnit, SlotIndex Pos) const; 569 LLVM_ABI LaneBitmask getLiveLanesAt(Register RegUnit, SlotIndex Pos) const; 570 LLVM_ABI LaneBitmask getLiveThroughAt(Register RegUnit, SlotIndex Pos) const;
|
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/ |
| H A D | SplitKit.h | 58 SmallVector<std::pair<SlotIndex, SlotIndex>, 8> LastInsertPoint; 60 SlotIndex computeLastInsertPoint(const LiveInterval &CurLI, 67 SlotIndex getLastInsertPoint(const LiveInterval &CurLI, in getLastInsertPoint() 82 SlotIndex getFirstInsertPoint(MachineBasicBlock &MBB) { in getFirstInsertPoint() 83 SlotIndex Res = LIS.getMBBStartIdx(&MBB); in getFirstInsertPoint() 123 SlotIndex FirstInstr; ///< First instr accessing current reg. 124 SlotIndex LastInstr; ///< Last instr accessing current reg. 125 SlotIndex FirstDef; ///< First non-phi valno->def, or SlotIndex(). 132 return SlotIndex::isSameInstr(FirstInstr, LastInstr); in isOneInstr() 147 SmallVector<SlotIndex, 8> UseSlots; [all …]
|
| H A D | LiveIntervals.cpp | 201 for (SlotIndex Idx : RegMaskSlots) in print() 370 SlotIndex Begin = Indexes->getMBBStartIdx(&MBB); in computeLiveInRegUnits() 399 SlotIndex Def = VNI->def; in createSegmentsForValues() 430 SlotIndex Idx = WorkList.back().first; in extendSegmentsToUses() 434 SlotIndex BlockStart = Indexes->getMBBStartIdx(MBB); in extendSegmentsToUses() 448 SlotIndex Stop = Indexes->getMBBEndIdx(Pred); in extendSegmentsToUses() 464 SlotIndex Stop = Indexes->getMBBEndIdx(Pred); in extendSegmentsToUses() 475 SmallVector<SlotIndex,8> Undefs; in extendSegmentsToUses() 508 SlotIndex Idx = getInstructionIndex(UseMI).getRegSlot(); in shrinkToUses() 550 SlotIndex Def = VNI->def; in computeDeadValues() [all …]
|
| H A D | SplitKit.cpp | 65 SlotIndex 69 std::pair<SlotIndex, SlotIndex> &LIP = LastInsertPoint[Num]; in computeLastInsertPoint() 70 SlotIndex MBBEnd = LIS.getMBBEndIdx(&MBB); in computeLastInsertPoint() 125 if (SlotIndex::isSameInstr(VNI->def, LIP.second)) in computeLastInsertPoint() 133 if (!SlotIndex::isEarlierInstr(VNI->def, LIP.second) && VNI->def < MBBEnd) in computeLastInsertPoint() 144 SlotIndex LIP = getLastInsertPoint(CurLI, MBB); in getLastInsertPointIter() 186 UseSlots.erase(llvm::unique(UseSlots, SlotIndex::isSameInstr), in analyzeUses() 208 SmallVectorImpl<SlotIndex>::const_iterator UseI, UseE; in calcLiveBlockInfo() 218 SlotIndex Start, Stop; in calcLiveBlockInfo() 252 SlotIndex LastStop = LVI->end; in calcLiveBlockInfo() [all …]
|
| H A D | MLRegallocEvictAdvisor.h | |
| H A D | MLRegAllocEvictAdvisor.h | 31 SlotIndex Begin; 32 SlotIndex End; 38 MLModelRunner *RegallocRunner, function_ref<int(SlotIndex)> GetOpcode, 39 function_ref<float(SlotIndex)> GetMBBFreq, 40 function_ref<MachineBasicBlock *(SlotIndex)> GetMBBReference, 43 const SlotIndex LastIndex); 46 const SlotIndex CurrentIndex, const size_t CurrentInstructionIndex, 48 function_ref<float(SlotIndex)> GetMBBFreq,
|
| H A D | SlotIndexes.cpp | 98 SlotIndex blockStartIndex(&indexList.back(), SlotIndex::Slot_Block); in analyze() 105 indexList.push_back(*createEntry(&MI, index += SlotIndex::InstrDist)); in analyze() 109 &MI, SlotIndex(&indexList.back(), SlotIndex::Slot_Block))); in analyze() 113 indexList.push_back(*createEntry(nullptr, index += SlotIndex::InstrDist)); in analyze() 116 MBBRanges[MBB.getNumber()].second = SlotIndex(&indexList.back(), in analyze() 117 SlotIndex::Slot_Block); in analyze() 135 SlotIndex MIIndex = mi2iItr->second; in removeMachineInstrFromMaps() 148 SlotIndex MIIndex = mi2iItr->second; in removeSingleMachineInstrFromMaps() 174 const unsigned Space = SlotIndex::InstrDist/2; in renumberIndexes() 195 SlotIndex startIdx; in repairIndexesInRange() [all …]
|
| H A D | InterferenceCache.cpp | 93 PrevPos = SlotIndex(); in revalidate() 110 PrevPos = SlotIndex(); in reset() 132 SlotIndex Start, Stop; in update() 155 ArrayRef<SlotIndex> RegMaskSlots; in update() 159 BI->First = BI->Last = SlotIndex(); in update() 166 SlotIndex StartI = I.start(); in update() 179 SlotIndex StartI = I->start; in update() 189 SlotIndex Limit = BI->First.isValid() ? BI->First : Stop; in update() 221 SlotIndex StopI = I.stop(); in update() 238 SlotIndex StopI = I->end; in update() [all …]
|
| H A D | LiveDebugVariables.cpp | 265 using LocMap = IntervalMap<SlotIndex, DbgVariableValue, 4>; 308 SmallSet<SlotIndex, 2> trimmedDefs; 311 void insertDebugValue(MachineBasicBlock *MBB, SlotIndex StartIdx, 312 SlotIndex StopIdx, DbgVariableValue DbgValue, 418 void addDef(SlotIndex Idx, ArrayRef<MachineOperand> LocMOs, bool IsIndirect, in addDef() 449 extendDef(SlotIndex Idx, DbgVariableValue DbgValue, 452 std::optional<std::pair<SlotIndex, SmallVector<unsigned>>> &Kills, 467 SlotIndex KilledAt, 468 SmallVectorImpl<std::pair<SlotIndex, DbgVariableValue>> &NewDefs, 507 SlotIndex loc; ///< Slot used by the debug label. [all …]
|
| H A D | LiveInterval.cpp | 87 VNInfo *createDeadDef(SlotIndex Def, VNInfo::Allocator *VNInfoAllocator, in createDeadDef() 100 if (SlotIndex::isSameInstr(Def, S->start)) { in createDeadDef() 114 assert(SlotIndex::isEarlierInstr(Def, S->start) && "Already live at def"); in createDeadDef() 120 VNInfo *extendInBlock(SlotIndex StartIdx, SlotIndex Use) { in extendInBlock() 135 std::pair<VNInfo*,bool> extendInBlock(ArrayRef<SlotIndex> Undefs, in extendInBlock() 136 SlotIndex StartIdx, SlotIndex Use) { in extendInBlock() 139 SlotIndex BeforeUse = Use.getPrevSlot(); in extendInBlock() 158 void extendSegmentEndTo(iterator I, SlotIndex NewEnd) { in extendSegmentEndTo() 186 iterator extendSegmentStartTo(iterator I, SlotIndex NewStart) { in extendSegmentStartTo() 220 SlotIndex Start = S.start, End = S.end; in addSegment() [all …]
|
| H A D | LiveRangeCalc.cpp | 38 static VNInfo UndefVNI(0xbad, SlotIndex()); 68 SlotIndex Start, End; in updateFromLiveIns() 86 void LiveRangeCalc::extend(LiveRange &LR, SlotIndex Use, Register PhysReg, in extend() 87 ArrayRef<SlotIndex> Undefs) { in extend() 121 bool LiveRangeCalc::isDefOnEntry(LiveRange &LR, ArrayRef<SlotIndex> Undefs, in isDefOnEntry() 152 SlotIndex Begin, End; in isDefOnEntry() 191 SlotIndex Use, Register PhysReg, in findReachingDefs() 192 ArrayRef<SlotIndex> Undefs) { in findReachingDefs() 246 SlotIndex Start, End; in findReachingDefs() 268 Use = SlotIndex(); in findReachingDefs() [all …]
|
| H A D | RegisterPressure.cpp | 174 TopIdx = BottomIdx = SlotIndex(); in reset() 190 void IntervalPressure::openTop(SlotIndex NextTop) { in openTop() 193 TopIdx = SlotIndex(); in openTop() 206 void IntervalPressure::openBottom(SlotIndex PrevBottom) { in openBottom() 209 BottomIdx = SlotIndex(); in openBottom() 306 SlotIndex RegPressureTracker::getCurrSlot() const { in getCurrSlot() 418 bool TrackLaneMasks, Register RegUnit, SlotIndex Pos, in getLanesWithProperty() 420 bool (*Property)(const LiveRange &LR, SlotIndex Pos)) { in getLanesWithProperty() 448 SlotIndex Pos) { in getLiveLanesAt() 451 [](const LiveRange &LR, SlotIndex Pos) { in getLiveLanesAt() [all …]
|
| H A D | RegisterCoalescer.cpp | 139 SlotIndex SI; ///< Slot where this PHI occurs. 154 using DbgValueLoc = std::pair<SlotIndex, MachineInstr *>; 318 void addUndefFlag(const LiveInterval &Int, SlotIndex UseIdx, 632 SlotIndex CopyIdx = LIS->getInstructionIndex(*CopyMI).getRegSlot(); in adjustCopiesBackFrom() 662 SlotIndex CopyUseIdx = CopyIdx.getRegSlot(true); in adjustCopiesBackFrom() 697 SlotIndex FillerStart = ValS->end, FillerEnd = BS->start; in adjustCopiesBackFrom() 717 if (SS != S.end() && SlotIndex::isSameInstr(SS->start, SS->end)) { in adjustCopiesBackFrom() 723 SlotIndex BBStart = in adjustCopiesBackFrom() 849 SlotIndex CopyIdx = LIS->getInstructionIndex(*CopyMI).getRegSlot(); in removeCopyByCommutingDef() 899 SlotIndex UseIdx = LIS->getInstructionIndex(*UseMI); in removeCopyByCommutingDef() [all …]
|
| H A D | InterferenceCache.h | 37 SlotIndex First; 38 SlotIndex Last; 66 SlotIndex PrevPos; 229 SlotIndex first() { in first() 235 SlotIndex last() { in last()
|
| H A D | RenameIndependentSubregs.cpp | 195 SlotIndex Pos = LIS->getInstructionIndex(*MO.getParent()); in findComponents() 229 SlotIndex Pos = LIS->getInstructionIndex(*MI); in rewriteOperands() 297 static bool subRangeLiveAt(const LiveInterval &LI, SlotIndex Pos) { in subRangeLiveAt() 329 SlotIndex Def = VNI.def; in computeMainRangesFixFlags() 332 SlotIndex PredEnd = Indexes.getMBBEndIdx(PredMBB); in computeMainRangesFixFlags() 341 SlotIndex DefIdx = LIS->InsertMachineInstrInMaps(*ImpDef); in computeMainRangesFixFlags() 342 SlotIndex RegDefIdx = DefIdx.getRegSlot(); in computeMainRangesFixFlags() 368 SlotIndex Pos = LIS->getInstructionIndex(*MO.getParent()); in computeMainRangesFixFlags() 373 SlotIndex Pos = LIS->getInstructionIndex(*MO.getParent()).getDeadSlot(); in computeMainRangesFixFlags()
|
| H A D | LiveRangeEdit.cpp | 107 SlotIndex OrigIdx, in allUsesAvailableAt() 108 SlotIndex UseIdx) const { in allUsesAvailableAt() 131 if (SlotIndex::isSameInstr(OrigIdx, UseIdx)) in allUsesAvailableAt() 159 SlotIndex UseIdx) { in canRematerializeAt() 167 SlotIndex DefIdx; in canRematerializeAt() 178 SlotIndex LiveRangeEdit::rematerializeAt(MachineBasicBlock &MBB, in rematerializeAt() 265 SlotIndex Idx = LIS.getInstructionIndex(MI).getRegSlot(); in useIsKill() 281 SlotIndex Idx = LIS.getInstructionIndex(*MI).getRegSlot(); in eliminateDeadDef() 327 isOrigDef = SlotIndex::isSameInstr(OrigVNI->def, Idx); in eliminateDeadDef()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/ |
| H A D | GCNRegPressure.h | 29 class SlotIndex; variable 282 LaneBitmask getLastUsedLanes(Register RegUnit, SlotIndex Pos) const; 300 GCNRPTracker::LiveRegSet getLiveRegs(SlotIndex SI, const LiveIntervals &LIS, 313 void reset(const MachineRegisterInfo &MRI, SlotIndex SI) { in reset() 425 LaneBitmask getLiveLaneMask(unsigned Reg, SlotIndex SI, 430 LaneBitmask getLiveLaneMask(const LiveInterval &LI, SlotIndex SI, 434 GCNRPTracker::LiveRegSet getLiveRegs(SlotIndex SI, const LiveIntervals &LIS, 445 std::vector<SlotIndex> Indexes; in getLiveRegMap() 456 SmallVector<SlotIndex, 32> LiveIdxs, SRLiveIdxs; in getLiveRegMap()
|
| H A D | GCNRegPressure.cpp | 291 SlotIndex InstrSI; in collectVirtualRegUses() 310 bool TrackLaneMasks, Register RegUnit, SlotIndex Pos, in getLanesWithProperty() 312 function_ref<bool(const LiveRange &LR, SlotIndex Pos)> Property) { in getLanesWithProperty() 340 SlotIndex PriorUseIdx, SlotIndex NextUseIdx, in findUseBetween() 349 SlotIndex InstSlot = LIS->getInstructionIndex(*MI).getRegSlot(); in findUseBetween() 430 LaneBitmask llvm::getLiveLaneMask(unsigned Reg, SlotIndex SI, in getLiveLaneMask() 437 LaneBitmask llvm::getLiveLaneMask(const LiveInterval &LI, SlotIndex SI, in getLiveLaneMask() 454 GCNRPTracker::LiveRegSet llvm::getLiveRegs(SlotIndex SI, in getLiveRegs() 495 SlotIndex Pos) const { in getLastUsedLanes() 498 [](const LiveRange &LR, SlotIndex Pos) { in getLastUsedLanes() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/WebAssembly/ |
| H A D | WebAssemblyRegColoring.cpp | 79 static DenseMap<Register, std::vector<std::pair<SlotIndex, MachineInstr *>>> 81 DenseMap<Register, std::vector<std::pair<SlotIndex, MachineInstr *>>> in buildVRegToDbgValueMap() 88 auto CloseNewDVRange = [&DbgVRegToValues, &ToInsert](SlotIndex Slot) { in buildVRegToDbgValueMap() 103 SlotIndex CurrentSlot = Slots->getMBBStartIdx(&MBB); in buildVRegToDbgValueMap() 133 DenseMap<Register, std::vector<std::pair<SlotIndex, MachineInstr *>>> in undefInvalidDbgValues() argument 150 SlotIndex LastSlot; in undefInvalidDbgValues()
|