| /openbsd-src/gnu/llvm/llvm/include/llvm/CodeGen/ |
| H A D | ScheduleDAG.h | 41 class SUnit; variable 80 PointerIntPair<SUnit *, 2, Kind> Dep; 104 SDep(SUnit *S, Kind kind, unsigned Reg) in SDep() 123 SDep(SUnit *S, OrderKind kind) in SDep() 152 SUnit *getSUnit() const; 155 void setSUnit(SUnit *SU); 242 class SUnit { 250 SUnit *OrigNode = nullptr; ///< If not this, the node from which this node 308 SUnit(SDNode *node, unsigned nodenum) in SUnit() function 319 SUnit(MachineInstr *instr, 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 | ScheduleDAGInstrs.h | 56 SUnit *SU; 58 VReg2SUnit(unsigned VReg, LaneBitmask LaneMask, SUnit *SU) in VReg2SUnit() 71 unsigned OperandIndex, SUnit *SU) in VReg2SUnitOperIdx() 78 SUnit *SU; 82 PhysRegSUOper(SUnit *su, int op, unsigned R): SU(su), OpIdx(op), Reg(R) {} in PhysRegSUOper() 159 DenseMap<MachineInstr*, SUnit*> MISUnitMap; 183 SUnit *BarrierChain = nullptr; 191 using SUList = std::list<SUnit *>; 207 void addChainDependency(SUnit *SUa, SUnit *SUb, 211 void addChainDependencies(SUnit *SU, SUList &SUs, unsigned Latency) { in addChainDependencies() [all …]
|
| H A D | MachinePipeliner.h | 145 SetVector<SUnit *> NodeOrder; 153 DenseMap<SUnit *, std::pair<unsigned, int64_t>> InstrChanges; 164 std::vector<SUnit> &SUnits; 165 SetVector<SUnit *> Stack; 167 SmallVector<SmallPtrSet<SUnit *, 4>, 10> B; 175 Circuits(std::vector<SUnit> &SUs, ScheduleDAGTopologicalSort &Topo) in Circuits() 189 B.assign(SUnits.size(), SmallPtrSet<SUnit *, 4>()); in reset() 221 int getASAP(SUnit *Node) { return ScheduleInfo[Node->NodeNum].ASAP; } in getASAP() 224 int getALAP(SUnit *Node) { return ScheduleInfo[Node->NodeNum].ALAP; } in getALAP() 228 int getMOV(SUnit *Node) { return getALAP(Node) - getASAP(Node); } in getMOV() [all …]
|
| H A D | LatencyPriorityQueue.h | 29 bool operator()(const SUnit* LHS, const SUnit* RHS) const; 34 std::vector<SUnit> *SUnits; 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; 56 virtual bool hasDependence(const SUnit *SUd, const SUnit *SUu); 57 virtual bool isResourceAvailable(SUnit *SU, bool IsTop); 58 virtual bool reserveResources(SUnit *SU, bool IsTop); 61 bool isInPacket(SUnit *SU) const { return is_contained(Packet, SU); } in isInPacket() 94 SUnit *SU = nullptr; 185 bool checkHazard(SUnit *SU); 187 void releaseNode(SUnit *SU, unsigned ReadyCycle); 191 void bumpNode(SUnit *SU); [all …]
|
| H A D | MachineScheduler.h | 251 virtual SUnit *pickNode(bool &IsTopNode) = 0; 258 virtual void schedNode(SUnit *SU, bool IsTopNode) = 0; 262 virtual void releaseTopNode(SUnit *SU) = 0; 266 virtual void releaseBottomNode(SUnit *SU) = 0; 289 const SUnit *NextClusterPred = nullptr; 290 const SUnit *NextClusterSucc = nullptr; 352 const SUnit *getNextClusterPred() const { return NextClusterPred; } in getNextClusterPred() 354 const SUnit *getNextClusterSucc() const { return NextClusterSucc; } in getNextClusterSucc() 367 void initQueues(ArrayRef<SUnit*> TopRoots, ArrayRef<SUnit*> BotRoots); 370 void updateQueues(SUnit *SU, bool IsTopNode); [all …]
|
| /openbsd-src/gnu/llvm/llvm/lib/CodeGen/ |
| H A D | ScheduleDAG.cpp | 66 EntrySU = SUnit(); in clearDAG() 67 ExitSU = SUnit(); in clearDAG() 107 bool SUnit::addPred(const SDep &D, bool Required) { in addPred() 118 SUnit *PredSU = PredDep.getSUnit(); in addPred() 136 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 | 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() 100 SUnit *SU = SI.getSUnit(); in fuseInstructionPair() 113 SUnit *SU = SI.getSUnit(); in fuseInstructionPair() 124 for (SUnit &SU : DAG.SUnits) { in fuseInstructionPair() 142 bool scheduleAdjacentImpl(ScheduleDAGInstrs &DAG, SUnit &AnchorSU); 157 for (SUnit &ISU : DAG->SUnits) in apply() [all …]
|
| H A D | MachinePipeliner.cpp | 636 for (SUnit *SU : Schedule.getInstructions(Cycle)) { in schedule() 706 static bool isSuccOrder(SUnit *SUa, SUnit *SUb) { in isSuccOrder() 707 SmallPtrSet<SUnit *, 8> Visited; in isSuccOrder() 708 SmallVector<SUnit *, 8> Worklist; in isSuccOrder() 711 const SUnit *SU = Worklist.pop_back_val(); in isSuccOrder() 713 SUnit *SuccSU = SI.getSUnit(); in isSuccOrder() 761 MapVector<const Value *, SmallVector<SUnit *, 4>> PendingLoads; in addLoopCarriedDependences() 774 SmallVector<SUnit *, 4> &SUs = PendingLoads[V]; in addLoopCarriedDependences() 783 MapVector<const Value *, SmallVector<SUnit *, 4>>::iterator I = in addLoopCarriedDependences() 861 for (SUnit &I : SUnits) { in updatePhiDependences() [all …]
|
| /openbsd-src/gnu/llvm/llvm/lib/Target/AMDGPU/ |
| H A D | R600MachineScheduler.h | 53 std::vector<SUnit *> Available[IDLast], Pending[IDLast]; 54 std::vector<SUnit *> AvailableAlus[AluLast]; 55 std::vector<SUnit *> PhysicalRegCopy; 73 SUnit *pickNode(bool &IsTopNode) override; 74 void schedNode(SUnit *SU, bool IsTopNode) override; 75 void releaseTopNode(SUnit *SU) override; 76 void releaseBottomNode(SUnit *SU) override; 82 int getInstKind(SUnit *SU); 84 AluKind getAluKind(SUnit *SU) const; 87 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 | 29 static bool isExport(const SUnit &SU) { in isExport() 33 static bool isPositionExport(const SIInstrInfo *TII, SUnit *SU) { in isPositionExport() 39 static void sortChain(const SIInstrInfo *TII, SmallVector<SUnit *, 8> &Chain, in sortChain() argument 48 SmallVector<SUnit *, 8> Copy(Chain); in sortChain() 51 for (SUnit *SU : Copy) { in sortChain() 59 static void buildCluster(ArrayRef<SUnit *> Exports, ScheduleDAGInstrs *DAG) { in buildCluster() 60 SUnit *ChainHead = Exports.front(); in buildCluster() 64 SUnit *SUa = Exports[Idx]; in buildCluster() 65 SUnit *SUb = Exports[Idx + 1]; in buildCluster() 70 SUnit *PredSU = Pred.getSUnit(); in buildCluster() [all …]
|
| H A D | AMDGPUIGroupLP.cpp | 83 typedef DenseMap<SUnit *, SmallVector<int, 4>> SUnitsToCandidateSGsMap; 113 bool tryAddEdge(SUnit *A, SUnit *B); 121 SmallVector<SUnit *, 32> Collection; 124 bool canAddSU(SUnit &SU) const; 129 void link(SUnit &SU, bool MakePred = false); 133 int link(SUnit &SU, bool MakePred, 134 std::vector<std::pair<SUnit *, SUnit *>> &AddedEdges); 139 void link(SUnit &SU, function_ref<bool(const SUnit *A, const SUnit *B)> P); 149 void add(SUnit &SU) { in add() 167 void initSchedGroup(std::vector<SUnit>::reverse_iterator RIter, [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 | 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() 212 R600SchedStrategy::AluKind R600SchedStrategy::getAluKind(SUnit *SU) const { in getAluKind() 286 int R600SchedStrategy::getInstKind(SUnit* SU) { in getInstKind() [all …]
|
| /openbsd-src/gnu/llvm/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 DenseMap<SUnit*, SUnit*> CallSeqEndForStart; 212 bool IsReachable(const SUnit *SU, const SUnit *TargetSU) { in IsReachable() 218 bool WillCreateCycle(SUnit *SU, SUnit *TargetSU) { in WillCreateCycle() 225 void AddPredQueued(SUnit *SU, const SDep &D) { in AddPredQueued() 233 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; 84 void AddPred(SUnit *SU, const SDep &D) { in AddPred() 90 void RemovePred(SUnit *SU, const SDep &D) { in RemovePred() 95 void ReleasePred(SUnit *SU, SDep *PredEdge); 96 void ReleasePredecessors(SUnit *SU, unsigned CurCycle); 97 void ScheduleNodeBottomUp(SUnit*, unsigned); 98 SUnit *CopyAndMoveSuccessors(SUnit*); [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, DenseMap<SUnit*, Register> &VRBaseMap,
|
| 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 | ScheduleDAGVLIW.cpp | 57 std::vector<SUnit*> PendingQueue; 81 void releaseSucc(SUnit *SU, const SDep &D); 82 void releaseSuccessors(SUnit *SU); 83 void scheduleNodeTopDown(SUnit *SU, unsigned CurCycle); 109 void ScheduleDAGVLIW::releaseSucc(SUnit *SU, const SDep &D) { in releaseSucc() 110 SUnit *SuccSU = D.getSUnit(); in releaseSucc() 133 void ScheduleDAGVLIW::releaseSuccessors(SUnit *SU) { in releaseSuccessors() 146 void ScheduleDAGVLIW::scheduleNodeTopDown(SUnit *SU, unsigned CurCycle) { in scheduleNodeTopDown() 168 for (SUnit &SU : SUnits) { in listScheduleTopDown() 178 std::vector<SUnit*> NotReady; in listScheduleTopDown() [all …]
|
| /openbsd-src/gnu/llvm/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 | 42 SUnit *SU = nullptr; 51 Candidate(SUnit *SU_, SystemZHazardRecognizer &HazardRec); 74 bool operator() (SUnit *lhs, SUnit *rhs) const { in operator() 89 struct SUSet : std::set<SUnit*, SUSorter> { 139 SUnit *pickNode(bool &IsTopNode) override; 143 void schedNode(SUnit *SU, bool IsTopNode) override; 147 void releaseTopNode(SUnit *SU) override; 150 void releaseBottomNode(SUnit *SU) override {}; in releaseBottomNode()
|
| /openbsd-src/gnu/llvm/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;
|