Lines Matching refs:SU
687 for (const SUnit *SU : Queue) in dump() local
688 dbgs() << SU->NodeNum << " "; in dump()
706 void ScheduleDAGMI::releaseSucc(SUnit *SU, SDep *SuccEdge) { in releaseSucc() argument
725 if (SuccSU->TopReadyCycle < SU->TopReadyCycle + SuccEdge->getLatency()) in releaseSucc()
726 SuccSU->TopReadyCycle = SU->TopReadyCycle + SuccEdge->getLatency(); in releaseSucc()
734 void ScheduleDAGMI::releaseSuccessors(SUnit *SU) { in releaseSuccessors() argument
735 for (SDep &Succ : SU->Succs) in releaseSuccessors()
736 releaseSucc(SU, &Succ); in releaseSuccessors()
743 void ScheduleDAGMI::releasePred(SUnit *SU, SDep *PredEdge) { in releasePred() argument
762 if (PredSU->BotReadyCycle < SU->BotReadyCycle + PredEdge->getLatency()) in releasePred()
763 PredSU->BotReadyCycle = SU->BotReadyCycle + PredEdge->getLatency(); in releasePred()
771 void ScheduleDAGMI::releasePredecessors(SUnit *SU) { in releasePredecessors() argument
772 for (SDep &Pred : SU->Preds) in releasePredecessors()
773 releasePred(SU, &Pred); in releasePredecessors()
861 SUnit *SU = SchedImpl->pickNode(IsTopNode); in schedule() local
862 if (!SU) break; in schedule()
864 assert(!SU->isScheduled && "Node already scheduled"); in schedule()
868 MachineInstr *MI = SU->getInstr(); in schedule()
870 assert(SU->isTopReady() && "node still has unscheduled dependencies"); in schedule()
876 assert(SU->isBottomReady() && "node still has unscheduled dependencies"); in schedule()
892 SchedImpl->schedNode(SU, IsTopNode); in schedule()
894 updateQueues(SU, IsTopNode); in schedule()
917 for (SUnit &SU : SUnits) { in findRootsAndBiasEdges()
918 assert(!SU.isBoundaryNode() && "Boundary node should not be in SUnits"); in findRootsAndBiasEdges()
921 SU.biasCriticalPath(); in findRootsAndBiasEdges()
924 if (!SU.NumPredsLeft) in findRootsAndBiasEdges()
925 TopRoots.push_back(&SU); in findRootsAndBiasEdges()
927 if (!SU.NumSuccsLeft) in findRootsAndBiasEdges()
928 BotRoots.push_back(&SU); in findRootsAndBiasEdges()
943 for (SUnit *SU : TopRoots) in initQueues()
944 SchedImpl->releaseTopNode(SU); in initQueues()
964 void ScheduleDAGMI::updateQueues(SUnit *SU, bool IsTopNode) { in updateQueues() argument
967 releaseSuccessors(SU); in updateQueues()
969 releasePredecessors(SU); in updateQueues()
971 SU->isScheduled = true; in updateQueues()
1012 SUnit *SU = getSUnit(&MI); in dumpScheduleTraceTopDown() local
1013 if (!SU) in dumpScheduleTraceTopDown()
1015 const MCSchedClassDesc *SC = getSchedClass(SU); in dumpScheduleTraceTopDown()
1019 if (SU->TopReadyCycle + PI->ReleaseAtCycle - 1 > LastCycle) in dumpScheduleTraceTopDown()
1020 LastCycle = SU->TopReadyCycle + PI->ReleaseAtCycle - 1; in dumpScheduleTraceTopDown()
1030 SUnit *SU = getSUnit(&MI); in dumpScheduleTraceTopDown() local
1031 if (!SU) { in dumpScheduleTraceTopDown()
1036 NodeName += std::to_string(SU->NodeNum) + ")"; in dumpScheduleTraceTopDown()
1040 if (C == SU->TopReadyCycle) in dumpScheduleTraceTopDown()
1046 const MCSchedClassDesc *SC = getSchedClass(SU); in dumpScheduleTraceTopDown()
1065 for (; C < SU->TopReadyCycle + PI.AcquireAtCycle; ++C) { in dumpScheduleTraceTopDown()
1094 SUnit *SU = getSUnit(&MI); in dumpScheduleTraceBottomUp() local
1095 if (!SU) in dumpScheduleTraceBottomUp()
1097 const MCSchedClassDesc *SC = getSchedClass(SU); in dumpScheduleTraceBottomUp()
1101 if ((int)SU->BotReadyCycle - PI->ReleaseAtCycle + 1 < LastCycle) in dumpScheduleTraceBottomUp()
1102 LastCycle = (int)SU->BotReadyCycle - PI->ReleaseAtCycle + 1; in dumpScheduleTraceBottomUp()
1112 SUnit *SU = getSUnit(&MI); in dumpScheduleTraceBottomUp() local
1113 if (!SU) { in dumpScheduleTraceBottomUp()
1118 NodeName += std::to_string(SU->NodeNum) + ")"; in dumpScheduleTraceBottomUp()
1122 if (C == (int)SU->BotReadyCycle) in dumpScheduleTraceBottomUp()
1128 const MCSchedClassDesc *SC = getSchedClass(SU); in dumpScheduleTraceBottomUp()
1146 for (; C > ((int)SU->BotReadyCycle - (int)PI.AcquireAtCycle); --C) { in dumpScheduleTraceBottomUp()
1176 if (SUnit *SU = getSUnit(&MI)) in dumpSchedule() local
1177 dumpNode(*SU); in dumpSchedule()
1193 void ScheduleDAGMILive::collectVRegUses(SUnit &SU) { in collectVRegUses() argument
1194 const MachineInstr &MI = *SU.getInstr(); in collectVRegUses()
1223 if (UI->SU == &SU) in collectVRegUses()
1227 VRegUses.insert(VReg2SUnit(Reg, LaneBitmask::getNone(), &SU)); in collectVRegUses()
1260 for (SUnit &SU : SUnits) in initRegPressure()
1261 collectVRegUses(SU); in initRegPressure()
1332 updateScheduledPressure(const SUnit *SU, in updateScheduledPressure() argument
1334 const PressureDiff &PDiff = getPressureDiff(SU); in updateScheduledPressure()
1377 SUnit &SU = *V2SU.SU; in updatePressureDiffs() local
1378 if (SU.isScheduled || &SU == &ExitSU) in updatePressureDiffs()
1381 PressureDiff &PDiff = getPressureDiff(&SU); in updatePressureDiffs()
1383 LLVM_DEBUG(dbgs() << " UpdateRegP: SU(" << SU.NodeNum << ") " in updatePressureDiffs()
1385 << PrintLaneMask(P.LaneMask) << ' ' << *SU.getInstr(); in updatePressureDiffs()
1409 SUnit *SU = V2SU.SU; in updatePressureDiffs() local
1412 if (!SU->isScheduled && SU != &ExitSU) { in updatePressureDiffs()
1414 LI.Query(LIS->getInstructionIndex(*SU->getInstr())); in updatePressureDiffs()
1416 PressureDiff &PDiff = getPressureDiff(SU); in updatePressureDiffs()
1418 LLVM_DEBUG(dbgs() << " UpdateRegP: SU(" << SU->NodeNum << ") " in updatePressureDiffs()
1419 << *SU->getInstr(); in updatePressureDiffs()
1432 for (const SUnit &SU : SUnits) { in dump() local
1433 dumpNodeAll(SU); in dump()
1436 getPressureDiff(&SU).dump(*TRI); in dump()
1439 if (SchedModel.mustBeginGroup(SU.getInstr()) && in dump()
1440 SchedModel.mustEndGroup(SU.getInstr())) in dump()
1485 SUnit *SU = SchedImpl->pickNode(IsTopNode); in schedule() local
1486 if (!SU) break; in schedule()
1488 assert(!SU->isScheduled && "Node already scheduled"); in schedule()
1492 scheduleMI(SU, IsTopNode); in schedule()
1495 unsigned SubtreeID = DFSResult->getSubtreeID(SU); in schedule()
1504 SchedImpl->schedNode(SU, IsTopNode); in schedule()
1506 updateQueues(SU, IsTopNode); in schedule()
1606 SUnit *SU = V2SU.SU; in computeCyclicCriticalPath() local
1607 if (SU == &ExitSU) in computeCyclicCriticalPath()
1611 LiveQueryResult LRQ = LI.Query(LIS->getInstructionIndex(*SU->getInstr())); in computeCyclicCriticalPath()
1619 if (LiveOutDepth > SU->getDepth()) in computeCyclicCriticalPath()
1620 CyclicLatency = LiveOutDepth - SU->getDepth(); in computeCyclicCriticalPath()
1622 unsigned LiveInHeight = SU->getHeight() + DefSU->Latency; in computeCyclicCriticalPath()
1630 << SU->NodeNum << ") = " << CyclicLatency << "c\n"); in computeCyclicCriticalPath()
1651 void ScheduleDAGMILive::scheduleMI(SUnit *SU, bool IsTopNode) { in scheduleMI() argument
1653 MachineInstr *MI = SU->getInstr(); in scheduleMI()
1656 assert(SU->isTopReady() && "node still has unscheduled dependencies"); in scheduleMI()
1683 updateScheduledPressure(SU, TopRPTracker.getPressure().MaxSetPressure); in scheduleMI()
1686 assert(SU->isBottomReady() && "node still has unscheduled dependencies"); in scheduleMI()
1721 updateScheduledPressure(SU, BotRPTracker.getPressure().MaxSetPressure); in scheduleMI()
1737 SUnit *SU; member
1743 MemOpInfo(SUnit *SU, ArrayRef<const MachineOperand *> BaseOps, in MemOpInfo()
1745 : SU(SU), BaseOps(BaseOps.begin(), BaseOps.end()), Offset(Offset), in MemOpInfo()
1779 return SU->NodeNum < RHS.SU->NodeNum; in operator <()
1867 if (!SUnit2ClusterInfo.count(MemOpRecords[NextIdx].SU->NodeNum) && in clusterNeighboringMemOps()
1869 (!DAG->IsReachable(MemOpRecords[NextIdx].SU, MemOpa.SU) && in clusterNeighboringMemOps()
1870 !DAG->IsReachable(MemOpa.SU, MemOpRecords[NextIdx].SU)))) in clusterNeighboringMemOps()
1879 if (SUnit2ClusterInfo.count(MemOpa.SU->NodeNum)) { in clusterNeighboringMemOps()
1880 ClusterLength = SUnit2ClusterInfo[MemOpa.SU->NodeNum].first + 1; in clusterNeighboringMemOps()
1881 CurrentClusterBytes = SUnit2ClusterInfo[MemOpa.SU->NodeNum].second + in clusterNeighboringMemOps()
1891 SUnit *SUa = MemOpa.SU; in clusterNeighboringMemOps()
1892 SUnit *SUb = MemOpb.SU; in clusterNeighboringMemOps()
1932 SUnit2ClusterInfo[MemOpb.SU->NodeNum] = {ClusterLength, in clusterNeighboringMemOps()
1943 for (auto &SU : SUnits) { in collectMemOpRecords() local
1944 if ((IsLoad && !SU.getInstr()->mayLoad()) || in collectMemOpRecords()
1945 (!IsLoad && !SU.getInstr()->mayStore())) in collectMemOpRecords()
1948 const MachineInstr &MI = *SU.getInstr(); in collectMemOpRecords()
1956 MemOpInfo(&SU, BaseOps, Offset, OffsetIsScalable, Width)); in collectMemOpRecords()
1979 for (const SDep &Pred : MemOp.SU->Preds) { in groupMemOps()
2216 for (SUnit &SU : DAG->SUnits) { in apply()
2217 if (!SU.getInstr()->isCopy()) in apply()
2220 constrainLocalCopy(&SU, static_cast<ScheduleDAGMILive*>(DAG)); in apply()
2287 for (SUnit &SU : DAG->SUnits) { in init()
2288 const MCSchedClassDesc *SC = DAG->getSchedClass(&SU); in init()
2289 RemIssueCount += SchedModel->getNumMicroOps(SU.getInstr(), SC) in init()
2338 unsigned SchedBoundary::getLatencyStallCycles(SUnit *SU) { in getLatencyStallCycles() argument
2339 if (!SU->isUnbuffered) in getLatencyStallCycles()
2342 unsigned ReadyCycle = (isTop() ? SU->TopReadyCycle : SU->BotReadyCycle); in getLatencyStallCycles()
2457 bool SchedBoundary::checkHazard(SUnit *SU) { in checkHazard() argument
2459 && HazardRec->getHazardType(SU) != ScheduleHazardRecognizer::NoHazard) { in checkHazard()
2463 unsigned uops = SchedModel->getNumMicroOps(SU->getInstr()); in checkHazard()
2465 LLVM_DEBUG(dbgs() << " SU(" << SU->NodeNum << ") uops=" in checkHazard()
2466 << SchedModel->getNumMicroOps(SU->getInstr()) << '\n'); in checkHazard()
2471 ((isTop() && SchedModel->mustBeginGroup(SU->getInstr())) || in checkHazard()
2472 (!isTop() && SchedModel->mustEndGroup(SU->getInstr())))) { in checkHazard()
2473 LLVM_DEBUG(dbgs() << " hazard: SU(" << SU->NodeNum << ") must " in checkHazard()
2478 if (SchedModel->hasInstrSchedModel() && SU->hasReservedResource) { in checkHazard()
2479 const MCSchedClassDesc *SC = DAG->getSchedClass(SU); in checkHazard()
2493 LLVM_DEBUG(dbgs() << " SU(" << SU->NodeNum << ") " in checkHazard()
2509 for (SUnit *SU : ReadySUs) { in findMaxLatency()
2510 unsigned L = getUnscheduledLatency(SU); in findMaxLatency()
2513 LateSU = SU; in findMaxLatency()
2553 void SchedBoundary::releaseNode(SUnit *SU, unsigned ReadyCycle, bool InPQueue, in releaseNode() argument
2555 assert(SU->getInstr() && "Scheduled SUnit must have instr"); in releaseNode()
2572 checkHazard(SU) || (Available.size() >= ReadyListLimit); in releaseNode()
2575 Available.push(SU); in releaseNode()
2583 Pending.push(SU); in releaseNode()
2678 void SchedBoundary::bumpNode(SUnit *SU) { in bumpNode() argument
2681 if (!isTop() && SU->isCall) { in bumpNode()
2686 HazardRec->EmitInstruction(SU); in bumpNode()
2692 const MCSchedClassDesc *SC = DAG->getSchedClass(SU); in bumpNode()
2693 unsigned IncMOps = SchedModel->getNumMicroOps(SU->getInstr()); in bumpNode()
2698 unsigned ReadyCycle = (isTop() ? SU->TopReadyCycle : SU->BotReadyCycle); in bumpNode()
2717 if (SU->isUnbuffered && ReadyCycle > NextCycle) in bumpNode()
2752 if (SU->hasReservedResource) { in bumpNode()
2796 if (SU->getDepth() > TopLatency) { in bumpNode()
2797 TopLatency = SU->getDepth(); in bumpNode()
2799 << SU->NodeNum << ") " << TopLatency << "c\n"); in bumpNode()
2801 if (SU->getHeight() > BotLatency) { in bumpNode()
2802 BotLatency = SU->getHeight(); in bumpNode()
2804 << SU->NodeNum << ") " << BotLatency << "c\n"); in bumpNode()
2826 if ((isTop() && SchedModel->mustEndGroup(SU->getInstr())) || in bumpNode()
2827 (!isTop() && SchedModel->mustBeginGroup(SU->getInstr()))) { in bumpNode()
2851 SUnit *SU = *(Pending.begin() + I); in releasePending() local
2852 unsigned ReadyCycle = isTop() ? SU->TopReadyCycle : SU->BotReadyCycle; in releasePending()
2860 releaseNode(SU, ReadyCycle, true, I); in releasePending()
2870 void SchedBoundary::removeReady(SUnit *SU) { in removeReady() argument
2871 if (Available.isInQueue(SU)) in removeReady()
2872 Available.remove(Available.find(SU)); in removeReady()
2874 assert(Pending.isInQueue(SU) && "bad ready count"); in removeReady()
2875 Pending.remove(Pending.find(SU)); in removeReady()
2978 const MCSchedClassDesc *SC = DAG->getSchedClass(SU); in initResourceDelta()
3139 Latency = Cand.SU->getDepth(); in traceCandidate()
3142 Latency = Cand.SU->getHeight(); in traceCandidate()
3145 Latency = Cand.SU->getHeight(); in traceCandidate()
3148 Latency = Cand.SU->getDepth(); in traceCandidate()
3151 dbgs() << " Cand SU(" << Cand.SU->NodeNum << ") " << getReasonStr(Cand.Reason); in traceCandidate()
3212 if (std::max(TryCand.SU->getDepth(), Cand.SU->getDepth()) > in tryLatency()
3214 if (tryLess(TryCand.SU->getDepth(), Cand.SU->getDepth(), in tryLatency()
3218 if (tryGreater(TryCand.SU->getHeight(), Cand.SU->getHeight(), in tryLatency()
3225 if (std::max(TryCand.SU->getHeight(), Cand.SU->getHeight()) > in tryLatency()
3227 if (tryLess(TryCand.SU->getHeight(), Cand.SU->getHeight(), in tryLatency()
3231 if (tryGreater(TryCand.SU->getDepth(), Cand.SU->getDepth(), in tryLatency()
3273 TopCand.SU = nullptr; in initialize()
3274 BotCand.SU = nullptr; in initialize()
3380 for (const SUnit *SU : Bot.Available) { in registerRoots() local
3381 if (SU->getDepth() > Rem.CriticalPath) in registerRoots()
3382 Rem.CriticalPath = SU->getDepth(); in registerRoots()
3435 unsigned getWeakLeft(const SUnit *SU, bool isTop) { in getWeakLeft() argument
3436 return (isTop) ? SU->WeakPredsLeft : SU->WeakSuccsLeft; in getWeakLeft()
3446 int biasPhysReg(const SUnit *SU, bool isTop) { in biasPhysReg() argument
3447 const MachineInstr *MI = SU->getInstr(); in biasPhysReg()
3458 bool AtBoundary = isTop ? !SU->NumSuccsLeft : !SU->NumPredsLeft; in biasPhysReg()
3483 void GenericScheduler::initCandidate(SchedCandidate &Cand, SUnit *SU, in initCandidate() argument
3487 Cand.SU = SU; in initCandidate()
3492 Cand.SU->getInstr(), in initCandidate()
3499 Cand.SU->getInstr(), in initCandidate()
3500 &DAG->getPressureDiff(Cand.SU), in initCandidate()
3506 Cand.SU->getInstr(), in initCandidate()
3507 DAG->getPressureDiff(Cand.SU), in initCandidate()
3515 << " Try SU(" << Cand.SU->NodeNum << ") " in initCandidate()
3541 if (tryGreater(biasPhysReg(TryCand.SU, TryCand.AtTop), in tryCandidate()
3542 biasPhysReg(Cand.SU, Cand.AtTop), TryCand, Cand, PhysReg)) in tryCandidate()
3574 if (tryLess(Zone->getLatencyStallCycles(TryCand.SU), in tryCandidate()
3575 Zone->getLatencyStallCycles(Cand.SU), TryCand, Cand, Stall)) in tryCandidate()
3589 if (tryGreater(TryCand.SU == TryCandNextClusterSU, in tryCandidate()
3590 Cand.SU == CandNextClusterSU, in tryCandidate()
3596 if (tryLess(getWeakLeft(TryCand.SU, TryCand.AtTop), in tryCandidate()
3597 getWeakLeft(Cand.SU, Cand.AtTop), in tryCandidate()
3627 if ((Zone->isTop() && TryCand.SU->NodeNum < Cand.SU->NodeNum) in tryCandidate()
3628 || (!Zone->isTop() && TryCand.SU->NodeNum > Cand.SU->NodeNum)) { in tryCandidate()
3650 for (SUnit *SU : Q) { in pickNodeFromQueue()
3653 initCandidate(TryCand, SU, Zone.isTop(), RPTracker, TempTracker); in pickNodeFromQueue()
3670 if (SUnit *SU = Bot.pickOnlyChoice()) { in pickNodeBidirectional() local
3673 return SU; in pickNodeBidirectional()
3675 if (SUnit *SU = Top.pickOnlyChoice()) { in pickNodeBidirectional() local
3678 return SU; in pickNodeBidirectional()
3691 if (!BotCand.isValid() || BotCand.SU->isScheduled || in pickNodeBidirectional()
3703 assert(TCand.SU == BotCand.SU && in pickNodeBidirectional()
3711 if (!TopCand.isValid() || TopCand.SU->isScheduled || in pickNodeBidirectional()
3723 assert(TCand.SU == TopCand.SU && in pickNodeBidirectional()
3741 return Cand.SU; in pickNodeBidirectional()
3751 SUnit *SU; in pickNode() local
3754 SU = Top.pickOnlyChoice(); in pickNode()
3755 if (!SU) { in pickNode()
3761 SU = TopCand.SU; in pickNode()
3765 SU = Bot.pickOnlyChoice(); in pickNode()
3766 if (!SU) { in pickNode()
3772 SU = BotCand.SU; in pickNode()
3776 SU = pickNodeBidirectional(IsTopNode); in pickNode()
3778 } while (SU->isScheduled); in pickNode()
3795 if (SU->isTopReady()) in pickNode()
3796 Top.removeReady(SU); in pickNode()
3797 if (SU->isBottomReady()) in pickNode()
3798 Bot.removeReady(SU); in pickNode()
3800 LLVM_DEBUG(dbgs() << "Scheduling SU(" << SU->NodeNum << ") " in pickNode()
3801 << *SU->getInstr()); in pickNode()
3802 return SU; in pickNode()
3805 void GenericScheduler::reschedulePhysReg(SUnit *SU, bool isTop) { in reschedulePhysReg() argument
3806 MachineBasicBlock::iterator InsertPos = SU->getInstr(); in reschedulePhysReg()
3809 SmallVectorImpl<SDep> &Deps = isTop ? SU->Preds : SU->Succs; in reschedulePhysReg()
3836 void GenericScheduler::schedNode(SUnit *SU, bool IsTopNode) { in schedNode() argument
3838 SU->TopReadyCycle = std::max(SU->TopReadyCycle, Top.getCurrCycle()); in schedNode()
3839 Top.bumpNode(SU); in schedNode()
3840 if (SU->hasPhysRegUses) in schedNode()
3841 reschedulePhysReg(SU, true); in schedNode()
3843 SU->BotReadyCycle = std::max(SU->BotReadyCycle, Bot.getCurrCycle()); in schedNode()
3844 Bot.bumpNode(SU); in schedNode()
3845 if (SU->hasPhysRegDefs) in schedNode()
3846 reschedulePhysReg(SU, false); in schedNode()
3921 for (const SUnit *SU : Bot.Available) { in registerRoots() local
3922 if (SU->getDepth() > Rem.CriticalPath) in registerRoots()
3923 Rem.CriticalPath = SU->getDepth(); in registerRoots()
3945 if (tryLess(Top.getLatencyStallCycles(TryCand.SU), in tryCandidate()
3946 Top.getLatencyStallCycles(Cand.SU), TryCand, Cand, Stall)) in tryCandidate()
3950 if (tryGreater(TryCand.SU == DAG->getNextClusterSucc(), in tryCandidate()
3951 Cand.SU == DAG->getNextClusterSucc(), in tryCandidate()
3970 if (TryCand.SU->NodeNum < Cand.SU->NodeNum) { in tryCandidate()
3981 for (SUnit *SU : Q) { in pickNodeFromQueue()
3983 TryCand.SU = SU; in pickNodeFromQueue()
4000 if (SUnit *SU = Bot.pickOnlyChoice()) { in pickNodeBidirectional() local
4003 return SU; in pickNodeBidirectional()
4005 if (SUnit *SU = Top.pickOnlyChoice()) { in pickNodeBidirectional() local
4008 return SU; in pickNodeBidirectional()
4021 if (!BotCand.isValid() || BotCand.SU->isScheduled || in pickNodeBidirectional()
4033 assert(TCand.SU == BotCand.SU && in pickNodeBidirectional()
4041 if (!TopCand.isValid() || TopCand.SU->isScheduled || in pickNodeBidirectional()
4053 assert(TCand.SU == TopCand.SU && in pickNodeBidirectional()
4071 return Cand.SU; in pickNodeBidirectional()
4081 SUnit *SU; in pickNode() local
4084 SU = Bot.pickOnlyChoice(); in pickNode()
4085 if (SU) { in pickNode()
4096 SU = BotCand.SU; in pickNode()
4100 SU = Top.pickOnlyChoice(); in pickNode()
4101 if (SU) { in pickNode()
4112 SU = TopCand.SU; in pickNode()
4116 SU = pickNodeBidirectional(IsTopNode); in pickNode()
4118 } while (SU->isScheduled); in pickNode()
4120 if (SU->isTopReady()) in pickNode()
4121 Top.removeReady(SU); in pickNode()
4122 if (SU->isBottomReady()) in pickNode()
4123 Bot.removeReady(SU); in pickNode()
4125 LLVM_DEBUG(dbgs() << "Scheduling SU(" << SU->NodeNum << ") " in pickNode()
4126 << *SU->getInstr()); in pickNode()
4127 return SU; in pickNode()
4132 void PostGenericScheduler::schedNode(SUnit *SU, bool IsTopNode) { in schedNode() argument
4134 SU->TopReadyCycle = std::max(SU->TopReadyCycle, Top.getCurrCycle()); in schedNode()
4135 Top.bumpNode(SU); in schedNode()
4137 SU->BotReadyCycle = std::max(SU->BotReadyCycle, Bot.getCurrCycle()); in schedNode()
4138 Bot.bumpNode(SU); in schedNode()
4224 SUnit *SU = ReadyQ.back(); in pickNode() local
4228 << "SU(" << SU->NodeNum << ") " in pickNode()
4229 << " ILP: " << DAG->getDFSResult()->getILP(SU) in pickNode()
4230 << " Tree: " << DAG->getDFSResult()->getSubtreeID(SU) in pickNode()
4233 DAG->getDFSResult()->getSubtreeID(SU)) in pickNode()
4235 << "Scheduling " << *SU->getInstr()); in pickNode()
4236 return SU; in pickNode()
4246 void schedNode(SUnit *SU, bool IsTopNode) override { in schedNode() argument
4252 void releaseBottomNode(SUnit *SU) override { in releaseBottomNode() argument
4253 ReadyQ.push_back(SU); in releaseBottomNode()
4319 SUnit *SU; in pickNode() local
4323 SU = TopQ.top(); in pickNode()
4325 } while (SU->isScheduled); in pickNode()
4330 SU = BottomQ.top(); in pickNode()
4332 } while (SU->isScheduled); in pickNode()
4337 return SU; in pickNode()
4340 void schedNode(SUnit *SU, bool IsTopNode) override {} in schedNode() argument
4342 void releaseTopNode(SUnit *SU) override { in releaseTopNode() argument
4343 TopQ.push(SU); in releaseTopNode()
4345 void releaseBottomNode(SUnit *SU) override { in releaseBottomNode() argument
4346 BottomQ.push(SU); in releaseBottomNode()
4407 static std::string getNodeLabel(const SUnit *SU, const ScheduleDAG *G) { in getNodeLabel()
4413 SS << "SU:" << SU->NodeNum; in getNodeLabel()
4415 SS << " I:" << DFS->getNumInstrs(SU); in getNodeLabel()
4419 static std::string getNodeDescription(const SUnit *SU, const ScheduleDAG *G) { in getNodeDescription()
4420 return G->getGraphNodeLabel(SU); in getNodeDescription()