Lines Matching refs:SUnit
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()
190 B.assign(SUnits.size(), SmallPtrSet<SUnit *, 4>()); in reset()
222 int getASAP(SUnit *Node) { return ScheduleInfo[Node->NodeNum].ASAP; } in getASAP()
225 int getALAP(SUnit *Node) { return ScheduleInfo[Node->NodeNum].ALAP; } in getALAP()
229 int getMOV(SUnit *Node) { return getALAP(Node) - getASAP(Node); } in getMOV()
232 unsigned getDepth(SUnit *Node) { return Node->getDepth(); } in getDepth()
236 int getZeroLatencyDepth(SUnit *Node) { in getZeroLatencyDepth()
241 unsigned getHeight(SUnit *Node) { return Node->getHeight(); } in getHeight()
245 int getZeroLatencyHeight(SUnit *Node) { in getZeroLatencyHeight()
252 bool isBackedge(SUnit *Source, const SDep &Dep) { in isBackedge()
258 bool isLoopCarriedDep(SUnit *Source, const SDep &Dep, bool isSucc = true);
262 unsigned getDistance(SUnit *U, SUnit *V, const SDep &Dep) { in getDistance()
272 void fixupRegisterOverlaps(std::deque<SUnit *> &Instrs);
276 unsigned getInstrBaseReg(SUnit *SU) const { in getInstrBaseReg()
277 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::const_iterator It = in getInstrBaseReg()
304 void addConnectedNodes(SUnit *SU, NodeSet &NewSet,
305 SetVector<SUnit *> &NodesAdded);
324 SetVector<SUnit *> Nodes;
330 SUnit *ExceedPressure = nullptr;
334 using iterator = SetVector<SUnit *>::const_iterator;
339 for (const SUnit *Node : Nodes) { in NodeSet()
340 DenseMap<SUnit *, unsigned> SuccSUnitLatency; in NodeSet()
357 bool insert(SUnit *SU) { return Nodes.insert(SU); } in insert()
365 unsigned count(SUnit *SU) const { return Nodes.count(SU); } in count()
373 SUnit *getNode(unsigned i) const { return Nodes[i]; }; in getNode()
379 void setExceedPressure(SUnit *SU) { ExceedPressure = SU; } in setExceedPressure()
381 bool isExceedSU(SUnit *SU) { return ExceedPressure == SU; } in isExceedSU()
389 for (SUnit *SU : *this) { in computeNodeSetInfo()
409 operator SetVector<SUnit *> &() { return Nodes; }
514 bool canReserveResources(SUnit &SU, int Cycle);
518 void reserveResources(SUnit &SU, int Cycle);
537 DenseMap<int, std::deque<SUnit *>> ScheduledInstrs;
540 std::map<SUnit *, int> InstrToCycle;
597 void computeStart(SUnit *SU, int *MaxEarlyStart, int *MinLateStart,
599 bool insert(SUnit *SU, int StartCycle, int EndCycle, int II);
602 using sched_iterator = DenseMap<int, std::deque<SUnit *>>::iterator;
604 DenseMap<int, std::deque<SUnit *>>::const_iterator;
607 bool isScheduledAtStage(SUnit *SU, unsigned StageNum) { in isScheduledAtStage()
613 int stageScheduled(SUnit *SU) const { in stageScheduled()
614 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SU); in stageScheduled()
622 unsigned cycleScheduled(SUnit *SU) const { in cycleScheduled()
623 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SU); in cycleScheduled()
634 std::deque<SUnit *> &getInstructions(int cycle) { in getInstructions()
638 SmallSet<SUnit *, 8>
642 std::deque<SUnit *>
644 const std::deque<SUnit *> &Instrs) const;
651 void orderDependence(const SwingSchedulerDAG *SSD, SUnit *SU,
652 std::deque<SUnit *> &Insts) const;