Lines Matching defs:SUnit
687 for (const SUnit *SU : Queue)
706 void ScheduleDAGMI::releaseSucc(SUnit *SU, SDep *SuccEdge) {
707 SUnit *SuccSU = SuccEdge->getSUnit();
734 void ScheduleDAGMI::releaseSuccessors(SUnit *SU) {
743 void ScheduleDAGMI::releasePred(SUnit *SU, SDep *PredEdge) {
744 SUnit *PredSU = PredEdge->getSUnit();
771 void ScheduleDAGMI::releasePredecessors(SUnit *SU) {
844 SmallVector<SUnit*, 8> TopRoots, BotRoots;
861 SUnit *SU = SchedImpl->pickNode(IsTopNode);
915 findRootsAndBiasEdges(SmallVectorImpl<SUnit*> &TopRoots,
916 SmallVectorImpl<SUnit*> &BotRoots) {
917 for (SUnit &SU : SUnits) {
923 // A SUnit is ready to top schedule if it has no predecessors.
926 // A SUnit is ready to bottom schedule if it has no successors.
934 void ScheduleDAGMI::initQueues(ArrayRef<SUnit*> TopRoots,
935 ArrayRef<SUnit*> BotRoots) {
943 for (SUnit *SU : TopRoots)
948 for (SmallVectorImpl<SUnit*>::const_reverse_iterator
964 void ScheduleDAGMI::updateQueues(SUnit *SU, bool IsTopNode) {
1012 SUnit *SU = getSUnit(&MI);
1030 SUnit *SU = getSUnit(&MI);
1032 dbgs() << "Missing SUnit\n";
1094 SUnit *SU = getSUnit(&MI);
1112 SUnit *SU = getSUnit(&MI);
1114 dbgs() << "Missing SUnit\n";
1176 if (SUnit *SU = getSUnit(&MI))
1179 dbgs() << "Missing SUnit\n";
1193 void ScheduleDAGMILive::collectVRegUses(SUnit &SU) {
1260 for (SUnit &SU : SUnits)
1332 updateScheduledPressure(const SUnit *SU,
1377 SUnit &SU = *V2SU.SU;
1409 SUnit *SU = V2SU.SU;
1432 for (const SUnit &SU : SUnits) {
1468 SmallVector<SUnit*, 8> TopRoots, BotRoots;
1485 SUnit *SU = SchedImpl->pickNode(IsTopNode);
1597 const SUnit *DefSU = getSUnit(DefMI);
1606 SUnit *SU = V2SU.SU;
1641 void ScheduleDAGMILive::initQueues(ArrayRef<SUnit*> TopRoots,
1642 ArrayRef<SUnit*> BotRoots) {
1651 void ScheduleDAGMILive::scheduleMI(SUnit *SU, bool IsTopNode) {
1737 SUnit *SU;
1743 MemOpInfo(SUnit *SU, ArrayRef<const MachineOperand *> BaseOps,
1800 void collectMemOpRecords(std::vector<SUnit> &SUnits,
1853 // Keep track of the current cluster length and bytes for each SUnit.
1891 SUnit *SUa = MemOpa.SU;
1892 SUnit *SUb = MemOpb.SU;
1942 std::vector<SUnit> &SUnits, SmallVectorImpl<MemOpInfo> &MemOpRecords) {
2047 void constrainLocalCopy(SUnit *CopySU, ScheduleDAGMILive *DAG);
2081 void CopyConstrain::constrainLocalCopy(SUnit *CopySU, ScheduleDAGMILive *DAG) {
2155 SUnit *GlobalSU = DAG->getSUnit(GlobalDef);
2161 SmallVector<SUnit*,8> LocalUses;
2164 SUnit *LastLocalSU = DAG->getSUnit(LastLocalDef);
2176 SmallVector<SUnit*,8> GlobalUses;
2179 SUnit *FirstLocalSU = DAG->getSUnit(FirstLocalDef);
2191 for (SUnit *LU : LocalUses) {
2196 for (SUnit *GU : GlobalUses) {
2216 for (SUnit &SU : DAG->SUnits) {
2287 for (SUnit &SU : DAG->SUnits) {
2331 /// Compute the stall cycles based on this SUnit's ready time. Heuristics treat
2338 unsigned SchedBoundary::getLatencyStallCycles(SUnit *SU) {
2457 bool SchedBoundary::checkHazard(SUnit *SU) {
2506 findMaxLatency(ArrayRef<SUnit*> ReadySUs) {
2507 SUnit *LateSU = nullptr;
2509 for (SUnit *SU : ReadySUs) {
2553 void SchedBoundary::releaseNode(SUnit *SU, unsigned ReadyCycle, bool InPQueue,
2555 assert(SU->getInstr() && "Scheduled SUnit must have instr");
2677 /// Move the boundary of scheduled code by one SUnit.
2678 void SchedBoundary::bumpNode(SUnit *SU) {
2851 SUnit *SU = *(Pending.begin() + I);
2870 void SchedBoundary::removeReady(SUnit *SU) {
2882 SUnit *SchedBoundary::pickOnlyChoice() {
3380 for (const SUnit *SU : Bot.Available) {
3435 unsigned getWeakLeft(const SUnit *SU, bool isTop) {
3446 int biasPhysReg(const SUnit *SU, bool isTop) {
3483 void GenericScheduler::initCandidate(SchedCandidate &Cand, SUnit *SU,
3527 /// \param TryCand refers to the next SUnit candidate, otherwise uninitialized.
3585 const SUnit *CandNextClusterSU =
3587 const SUnit *TryCandNextClusterSU =
3639 /// TODO: getMaxPressureDelta results can be mostly cached for each SUnit during
3650 for (SUnit *SU : Q) {
3667 SUnit *GenericScheduler::pickNodeBidirectional(bool &IsTopNode) {
3670 if (SUnit *SU = Bot.pickOnlyChoice()) {
3675 if (SUnit *SU = Top.pickOnlyChoice()) {
3745 SUnit *GenericScheduler::pickNode(bool &IsTopNode) {
3751 SUnit *SU;
3805 void GenericScheduler::reschedulePhysReg(SUnit *SU, bool isTop) {
3817 SUnit *DepSU = Dep.getSUnit();
3836 void GenericScheduler::schedNode(SUnit *SU, bool IsTopNode) {
3921 for (const SUnit *SU : Bot.Available) {
3934 /// \param TryCand refers to the next SUnit candidate, otherwise uninitialized.
3981 for (SUnit *SU : Q) {
3994 SUnit *PostGenericScheduler::pickNodeBidirectional(bool &IsTopNode) {
4000 if (SUnit *SU = Bot.pickOnlyChoice()) {
4005 if (SUnit *SU = Top.pickOnlyChoice()) {
4075 SUnit *PostGenericScheduler::pickNode(bool &IsTopNode) {
4081 SUnit *SU;
4132 void PostGenericScheduler::schedNode(SUnit *SU, bool IsTopNode) {
4171 bool operator()(const SUnit *A, const SUnit *B) const {
4198 std::vector<SUnit*> ReadyQ;
4221 SUnit *pickNode(bool &IsTopNode) override {
4224 SUnit *SU = ReadyQ.back();
4246 void schedNode(SUnit *SU, bool IsTopNode) override {
4250 void releaseTopNode(SUnit *) override { /*only called for top roots*/ }
4252 void releaseBottomNode(SUnit *SU) override {
4283 bool operator()(SUnit *A, SUnit *B) const {
4299 PriorityQueue<SUnit*, std::vector<SUnit*>, SUnitOrder<false>>
4303 PriorityQueue<SUnit*, std::vector<SUnit*>, SUnitOrder<true>>
4318 SUnit *pickNode(bool &IsTopNode) override {
4319 SUnit *SU;
4340 void schedNode(SUnit *SU, bool IsTopNode) override {}
4342 void releaseTopNode(SUnit *SU) override {
4345 void releaseBottomNode(SUnit *SU) override {
4388 static bool isNodeHidden(const SUnit *Node, const ScheduleDAG *G) {
4397 static std::string getEdgeAttributes(const SUnit *Node,
4407 static std::string getNodeLabel(const SUnit *SU, const ScheduleDAG *G) {
4419 static std::string getNodeDescription(const SUnit *SU, const ScheduleDAG *G) {
4423 static std::string getNodeAttributes(const SUnit *N, const ScheduleDAG *G) {