| /freebsd/contrib/llvm-project/llvm/include/llvm/CodeGen/ |
| H A D | ScheduleDAG.h | 43 class SUnit; variable 82 PointerIntPair<SUnit *, 2, Kind> Dep; 106 SDep(SUnit *S, Kind kind, Register Reg) : Dep(S, kind), Contents() { in SDep() 123 SDep(SUnit *S, OrderKind kind) in SDep() 152 SUnit *getSUnit() const; 155 void setSUnit(SUnit *SU); 240 typedef SmallSet<SUnit *, 8> ClusterInfo; 244 class SUnit { 254 SUnit *OrigNode = nullptr; ///< If not this, the node from which this node 322 SUnit(SDNode *node, unsigned nodenum) in SUnit() function [all …]
|
| H A D | ResourcePriorityQueue.h | 34 bool operator()(const SUnit* LHS, const SUnit* RHS) const; 39 std::vector<SUnit> *SUnits; 48 std::vector<SUnit*> Queue; 70 std::vector<SUnit*> Packet; 81 void initNodes(std::vector<SUnit> &sunits) override; 83 void addNode(const SUnit *SU) override { in addNode() 87 void updateNode(const SUnit *SU) override {} in updateNode() 105 int SUSchedulingCost (SUnit *SU); 109 void initNumRegDefsLeft(SUnit *SU); 110 int regPressureDelta(SUnit *SU, bool RawPressure = false); [all …]
|
| H A D | MachinePipeliner.h | 120 SUnit *Dst = nullptr; 130 SwingSchedulerDDGEdge(SUnit *PredOrSucc, const SDep &Dep, bool IsSucc, in SwingSchedulerDDGEdge() 134 SUnit *Src = Dep.getSUnit(); in SwingSchedulerDDGEdge() 151 SUnit *getSrc() const { return Pred.getSUnit(); } in getSrc() 154 SUnit *getDst() const { return Dst; } in getDst() 206 using OrderDep = SmallSetVector<SUnit *, 8>; 207 using OrderDepsType = DenseMap<SUnit *, OrderDep>; 211 const OrderDep *getOrderDepOrNull(SUnit *Key) const { in getOrderDepOrNull() 222 void modifySUnits(std::vector<SUnit> &SUnits, const TargetInstrInfo *TII); 224 void dump(SUnit *SU, const TargetRegisterInfo *TRI, [all …]
|
| H A D | ScheduleDAGInstrs.h | 57 SUnit *SU; 59 VReg2SUnit(Register VReg, LaneBitmask LaneMask, SUnit *SU) in VReg2SUnit() 72 unsigned OperandIndex, SUnit *SU) in VReg2SUnitOperIdx() 79 SUnit *SU; 83 PhysRegSUOper(SUnit *su, int op, unsigned R) in PhysRegSUOper() 158 DenseMap<MachineInstr*, SUnit*> MISUnitMap; 182 SUnit *BarrierChain = nullptr; 192 using SUList = std::list<SUnit *>; 227 void addChainDependency(SUnit *SUa, SUnit *SUb, 231 void addChainDependencies(SUnit *SU, SUList &SUs, unsigned Latency) { in addChainDependencies() [all …]
|
| H A D | LatencyPriorityQueue.h | 29 bool operator()(const SUnit* LHS, const SUnit* RHS) const; 34 std::vector<SUnit> *SUnits = nullptr; 43 std::vector<SUnit*> Queue; 52 void initNodes(std::vector<SUnit> &sunits) override { in initNodes() 57 void addNode(const SUnit *SU) override { in addNode() 61 void updateNode(const SUnit *SU) override { in updateNode() 80 void push(SUnit *U) override; 82 SUnit *pop() override; 84 void remove(SUnit *SU) override; 94 void scheduledNode(SUnit *SU) override; [all …]
|
| H A D | VLIWMachineScheduler.h | 27 class SUnit; variable 44 SmallVector<SUnit *> Packet; 57 virtual bool hasDependence(const SUnit *SUd, const SUnit *SUu); 58 virtual bool isResourceAvailable(SUnit *SU, bool IsTop); 59 virtual bool reserveResources(SUnit *SU, bool IsTop); 62 bool isInPacket(SUnit *SU) const { return is_contained(Packet, SU); } in isInPacket() 94 // The best SUnit candidate. 95 SUnit *SU = nullptr; 189 bool checkHazard(SUnit *S [all...] |
| H A D | MachineScheduler.h | 270 virtual SUnit *pickNode(bool &IsTopNode) = 0; 277 virtual void schedNode(SUnit *SU, bool IsTopNode) = 0; 281 virtual void releaseTopNode(SUnit *SU) = 0; 285 virtual void releaseBottomNode(SUnit *SU) = 0; 378 void initQueues(ArrayRef<SUnit*> TopRoots, ArrayRef<SUnit*> BotRoots); 381 void updateQueues(SUnit *SU, bool IsTopNode); 395 void findRootsAndBiasEdges(SmallVectorImpl<SUnit*> &TopRoots, 396 SmallVectorImpl<SUnit*> &BotRoots); 398 void releaseSucc(SUnit *SU, SDep *SuccEdge); 399 void releaseSuccessors(SUnit *SU); [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/ |
| H A D | ScheduleDAG.cpp | 65 EntrySU = SUnit(); in clearDAG() 66 ExitSU = SUnit(); in clearDAG() 106 bool SUnit::addPred(const SDep &D, bool Required) { in addPred() 117 SUnit *PredSU = PredDep.getSUnit(); in addPred() 138 SUnit *N = D.getSUnit(); in addPred() 175 void SUnit::removePred(const SDep &D) { in removePred() 183 SUnit *N = D.getSUnit(); in removePred() 217 void SUnit::setDepthDirty() { in setDepthDirty() 219 SmallVector<SUnit*, 8> WorkList; in setDepthDirty() 222 SUnit *SU = WorkList.pop_back_val(); in setDepthDirty() [all …]
|
| H A D | LatencyPriorityQueue.cpp | 23 bool latency_sort::operator()(const SUnit *LHS, const SUnit *RHS) const { in operator ()() 56 SUnit *LatencyPriorityQueue::getSingleUnscheduledPred(SUnit *SU) { in getSingleUnscheduledPred() 57 SUnit *OnlyAvailablePred = nullptr; in getSingleUnscheduledPred() 59 SUnit &Pred = *P.getSUnit(); in getSingleUnscheduledPred() 72 void LatencyPriorityQueue::push(SUnit *SU) { in push() 89 void LatencyPriorityQueue::scheduledNode(SUnit *SU) { in scheduledNode() 100 void LatencyPriorityQueue::AdjustPriorityOfUnscheduledPreds(SUnit *SU) { in AdjustPriorityOfUnscheduledPreds() 103 SUnit *OnlyAvailablePred = getSingleUnscheduledPred(SU); in AdjustPriorityOfUnscheduledPreds() 115 SUnit *LatencyPriorityQueue::pop() { in pop() 117 std::vector<SUnit *>::iterator Best = Queue.begin(); in pop() [all …]
|
| H A D | MachinePipeliner.cpp | 252 SUnit *SU; 266 SUnitWithMemInfo(SUnit *SU); 289 struct TaggedSUnit : PointerIntPair<SUnit *, 2> { 290 TaggedSUnit(SUnit *SU, InstrTag Tag) in TaggedSUnit() 291 : PointerIntPair<SUnit *, 2>(SU, unsigned(Tag)) {} in TaggedSUnit() 301 void append(SUnit *SU); 306 std::vector<SUnit> &SUnits; 344 std::optional<InstrTag> getInstrTag(SUnit *SU) const; 716 for (SUnit &SU : SUnits) in schedule() 855 for (SUnit *SU : Schedule.getInstructions(Cycle)) { in schedule() [all …]
|
| H A D | MacroFusion.cpp | 38 static SUnit *getPredClusterSU(const SUnit &SU) { in getPredClusterSU() 46 bool llvm::hasLessThanNumFused(const SUnit &SU, unsigned FuseLimit) { in hasLessThanNumFused() 48 const SUnit *CurrentSU = &SU; in hasLessThanNumFused() 53 bool llvm::fuseInstructionPair(ScheduleDAGInstrs &DAG, SUnit &FirstSU, in fuseInstructionPair() 54 SUnit &SecondSU) { in fuseInstructionPair() 82 SmallSet<SUnit *, 8> Cluster{{&FirstSU, &SecondSU}}; in fuseInstructionPair() 112 SUnit *SU = SI.getSUnit(); in fuseInstructionPair() 125 SUnit *SU = SI.getSUnit(); in fuseInstructionPair() 136 for (SUnit &SU : DAG.SUnits) { in fuseInstructionPair() 154 bool scheduleAdjacentImpl(ScheduleDAGInstrs &DAG, SUnit &AnchorSU); [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/ |
| H A D | R600MachineScheduler.h | 51 std::vector<SUnit *> Available[IDLast], Pending[IDLast]; 52 std::vector<SUnit *> AvailableAlus[AluLast]; 53 std::vector<SUnit *> PhysicalRegCopy; 71 SUnit *pickNode(bool &IsTopNode) override; 72 void schedNode(SUnit *SU, bool IsTopNode) override; 73 void releaseTopNode(SUnit *SU) override; 74 void releaseBottomNode(SUnit *SU) override; 80 int getInstKind(SUnit *SU); 82 AluKind getAluKind(SUnit *SU) const; 85 SUnit *AttemptFillSlot (unsigned Slot, bool AnyAlu); [all …]
|
| H A D | GCNILPSched.cpp | 23 SUnit *SU; 25 Candidate(SUnit *SU_) in Candidate() 40 unsigned getNodePriority(const SUnit *SU) const; 42 const SUnit *pickBest(const SUnit *left, const SUnit *right); 47 void releasePredecessors(const SUnit* SU); 50 std::vector<const SUnit*> schedule(ArrayRef<const SUnit*> TopRoots, 58 CalcNodeSethiUllmanNumber(const SUnit *SU, std::vector<unsigned> &SUNumbers) { in CalcNodeSethiUllmanNumber() 66 SUnit *PredSU = Pred.getSUnit(); in CalcNodeSethiUllmanNumber() 86 unsigned GCNILPScheduler::getNodePriority(const SUnit *SU) const { in getNodePriority() 106 static unsigned closestSucc(const SUnit *SU) { in closestSucc() [all …]
|
| H A D | AMDGPUExportClustering.cpp | 28 static bool isExport(const SUnit &SU) { in isExport() 32 static bool isPositionExport(const SIInstrInfo *TII, SUnit *SU) { in isPositionExport() 38 static void sortChain(const SIInstrInfo *TII, SmallVector<SUnit *, 8> &Chain, in sortChain() argument 47 SmallVector<SUnit *, 8> Copy(Chain); in sortChain() 50 for (SUnit *SU : Copy) { in sortChain() 58 static void buildCluster(ArrayRef<SUnit *> Exports, ScheduleDAGInstrs *DAG) { in buildCluster() 59 SUnit *ChainHead = Exports.front(); in buildCluster() 63 SUnit *SUa = Exports[Idx]; in buildCluster() 64 SUnit *SUb = Exports[Idx + 1]; in buildCluster() 69 SUnit *PredSU = Pred.getSUnit(); in buildCluster() [all …]
|
| H A D | GCNMinRegStrategy.cpp | 25 const SUnit *SU; 28 Candidate(const SUnit *SU_, int Priority_ = 0) in Candidate() 38 bool isScheduled(const SUnit *SU) const { in isScheduled() 43 void setIsScheduled(const SUnit *SU) { in setIsScheduled() 48 unsigned getNumPreds(const SUnit *SU) const { in getNumPreds() 54 unsigned decNumPreds(const SUnit *SU) { in decNumPreds() 62 int getReadySuccessors(const SUnit *SU) const; 63 int getNotReadySuccessors(const SUnit *SU) const; 70 void bumpPredsPriority(const SUnit *SchedSU, int Priority); 71 void releaseSuccessors(const SUnit* SU, int Priority); [all …]
|
| H A D | AMDGPUIGroupLP.cpp | 94 std::optional<SmallVector<SUnit *, 4>> Cache; 98 apply(const SUnit *, const ArrayRef<SUnit *>, in apply() argument 107 Cache = SmallVector<SUnit *, 4>(); in InstructionRule() 114 using SUnitsToCandidateSGsMap = DenseMap<SUnit *, SmallVector<int, 4>>; 143 bool tryAddEdge(SUnit *A, SUnit *B); 151 SmallVector<SUnit *, 32> Collection; 157 bool canAddSU(SUnit &SU) const; 162 void link(SUnit &SU, bool MakePred = false); 166 int link(SUnit &SU, bool MakePred, 167 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges); [all …]
|
| H A D | R600MachineScheduler.cpp | 40 void R600SchedStrategy::MoveUnits(std::vector<SUnit *> &QSrc, in MoveUnits() 41 std::vector<SUnit *> &QDst) in MoveUnits() 52 SUnit* R600SchedStrategy::pickNode(bool &IsTopNode) { in pickNode() 53 SUnit *SU = nullptr; in pickNode() 127 for (const SUnit &S : DAG->SUnits) in pickNode() 135 void R600SchedStrategy::schedNode(SUnit *SU, bool IsTopNode) { in schedNode() 182 void R600SchedStrategy::releaseTopNode(SUnit *SU) { in releaseTopNode() 186 void R600SchedStrategy::releaseBottomNode(SUnit *SU) { in releaseBottomNode() 210 R600SchedStrategy::AluKind R600SchedStrategy::getAluKind(SUnit *SU) const { in getAluKind() 284 int R600SchedStrategy::getInstKind(SUnit* SU) { in getInstKind() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/ |
| H A D | ScheduleDAGRRList.cpp | 150 std::vector<SUnit *> PendingQueue; 169 std::unique_ptr<SUnit*[]> LiveRegDefs; 170 std::unique_ptr<SUnit*[]> LiveRegGens; 174 SmallVector<SUnit*, 4> Interferences; 176 using LRegsMapT = DenseMap<SUnit *, SmallVector<unsigned, 4>>; 186 SmallDenseMap<SUnit *, SUnit *, 16> CallSeqEndForStart; 211 bool IsReachable(const SUnit *SU, const SUnit *TargetSU) { in IsReachable() 217 bool WillCreateCycle(SUnit *SU, SUnit *TargetSU) { in WillCreateCycle() 224 void AddPredQueued(SUnit *SU, const SDep &D) { in AddPredQueued() 232 void AddPred(SUnit *SU, const SDep &D) { in AddPred() [all …]
|
| H A D | ScheduleDAGFast.cpp | 47 SmallVector<SUnit *, 16> Queue; 51 void push(SUnit *U) { in push() 55 SUnit *pop() { in pop() 73 std::vector<SUnit*> LiveRegDefs; 83 void AddPred(SUnit *SU, const SDep &D) { SU->addPred(D); } in AddPred() 86 void RemovePred(SUnit *SU, const SDep &D) { SU->removePred(D); } in RemovePred() 89 void ReleasePred(SUnit *SU, SDep *PredEdge); 90 void ReleasePredecessors(SUnit *SU, unsigned CurCycle); 91 void ScheduleNodeBottomUp(SUnit*, unsigned); 92 SUnit *CopyAndMoveSuccessors(SUnit*); [all …]
|
| H A D | ResourcePriorityQueue.cpp | 67 ResourcePriorityQueue::numberRCValPredInSU(SUnit *SU, unsigned RCId) { in numberRCValPredInSU() 73 SUnit *PredSU = Pred.getSUnit(); in numberRCValPredInSU() 104 unsigned ResourcePriorityQueue::numberRCValSuccInSU(SUnit *SU, in numberRCValSuccInSU() 111 SUnit *SuccSU = Succ.getSUnit(); in numberRCValSuccInSU() 142 static unsigned numberCtrlDepsInSU(SUnit *SU) { in numberCtrlDepsInSU() 151 static unsigned numberCtrlPredInSU(SUnit *SU) { in numberCtrlPredInSU() 163 void ResourcePriorityQueue::initNodes(std::vector<SUnit> &sunits) { in initNodes() 167 for (SUnit &SU : *SUnits) { in initNodes() 175 bool resource_sort::operator()(const SUnit *LHS, const SUnit *RHS) const { in operator ()() 209 SUnit *ResourcePriorityQueue::getSingleUnscheduledPred(SUnit *SU) { in getSingleUnscheduledPred() [all …]
|
| H A D | ScheduleDAGSDNodes.h | 53 std::vector<SUnit*> Sequence; 86 SUnit *newSUnit(SDNode *N); 91 SUnit *Clone(SUnit *Old); 101 void InitNumRegDefsLeft(SUnit *SU); 105 virtual void computeLatency(SUnit *SU); 125 void dumpNode(const SUnit &SU) const override; 129 std::string getGraphNodeLabel(const SUnit *SU) const override; 146 RegDefIter(const SUnit *SU, const ScheduleDAGSDNodes *SD); 187 void EmitPhysRegCopy(SUnit *SU, 188 SmallDenseMap<SUnit *, Register, 16> &VRBaseMap,
|
| H A D | ScheduleDAGVLIW.cpp | 57 std::vector<SUnit*> PendingQueue; 77 void releaseSucc(SUnit *SU, const SDep &D); 78 void releaseSuccessors(SUnit *SU); 79 void scheduleNodeTopDown(SUnit *SU, unsigned CurCycle); 105 void ScheduleDAGVLIW::releaseSucc(SUnit *SU, const SDep &D) { in releaseSucc() 106 SUnit *SuccSU = D.getSUnit(); in releaseSucc() 129 void ScheduleDAGVLIW::releaseSuccessors(SUnit *SU) { in releaseSuccessors() 142 void ScheduleDAGVLIW::scheduleNodeTopDown(SUnit *SU, unsigned CurCycle) { in scheduleNodeTopDown() 164 for (SUnit &SU : SUnits) { in listScheduleTopDown() 174 std::vector<SUnit*> NotReady; in listScheduleTopDown() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/SystemZ/ |
| H A D | SystemZHazardRecognizer.h | 72 inline unsigned getNumDecoderSlots(SUnit *SU) const; 75 bool fitsIntoCurrentGroup(SUnit *SU) const; 85 unsigned getCurrCycleIdx(SUnit *SU = nullptr) const; 104 bool isFPdOpPreferred_distance(SUnit *SU) const; 116 HazardType getHazardType(SUnit *SU, int Stalls = 0) override; 118 void EmitInstruction(SUnit *SU) override; 121 const MCSchedClassDesc *getSchedClass(SUnit *SU) const { in getSchedClass() 137 int groupingCost(SUnit *SU) const; 142 int resourcesCost(SUnit *SU); 147 void dumpSU(SUnit *SU, raw_ostream &OS) const;
|
| H A D | SystemZMachineScheduler.h | 40 SUnit *SU = nullptr; 49 Candidate(SUnit *SU_, SystemZHazardRecognizer &HazardRec); 72 bool operator() (SUnit *lhs, SUnit *rhs) const { in operator() 87 struct SUSet : std::set<SUnit*, SUSorter> { 137 SUnit *pickNode(bool &IsTopNode) override; 141 void schedNode(SUnit *SU, bool IsTopNode) override; 145 void releaseTopNode(SUnit *SU) override; 148 void releaseBottomNode(SUnit *SU) override {}; in releaseBottomNode()
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/ |
| H A D | PPCHazardRecognizers.h | 27 SmallVector<SUnit *, 7> CurGroup; 30 bool isLoadAfterStore(SUnit *SU); 31 bool isBCTRAfterSet(SUnit *SU); 39 HazardType getHazardType(SUnit *SU, int Stalls) override; 40 bool ShouldPreferAnother(SUnit* SU) override; 41 unsigned PreEmitNoops(SUnit *SU) override; 42 void EmitInstruction(SUnit *SU) override; 78 HazardType getHazardType(SUnit *SU, int Stalls) override; 79 void EmitInstruction(SUnit *SU) override;
|