Lines Matching refs:SUnit

371 bool ScheduleDAGMI::canAddEdge(SUnit *SuccSU, SUnit *PredSU) {
375 bool ScheduleDAGMI::addEdge(SUnit *SuccSU, const SDep &PredDep) {
392 void ScheduleDAGMI::releaseSucc(SUnit *SU, SDep *SuccEdge) {
393 SUnit *SuccSU = SuccEdge->getSUnit();
415 void ScheduleDAGMI::releaseSuccessors(SUnit *SU) {
416 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
426 void ScheduleDAGMI::releasePred(SUnit *SU, SDep *PredEdge) {
427 SUnit *PredSU = PredEdge->getSUnit();
449 void ScheduleDAGMI::releasePredecessors(SUnit *SU) {
450 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
571 updateScheduledPressure(const SUnit *SU,
624 SUnit *SU = UI->SU;
656 SmallVector<SUnit*, 8> TopRoots, BotRoots;
671 while (SUnit *SU = SchedImpl->pickNode(IsTopNode)) {
733 void ScheduleDAGMI::findRootsAndBiasEdges(SmallVectorImpl<SUnit*> &TopRoots,
734 SmallVectorImpl<SUnit*> &BotRoots) {
735 for (std::vector<SUnit>::iterator
737 SUnit *SU = &(*I);
743 // A SUnit is ready to top schedule if it has no predecessors.
746 // A SUnit is ready to bottom schedule if it has no successors.
795 const SUnit *DefSU = getSUnit(DefMI);
839 void ScheduleDAGMI::initQueues(ArrayRef<SUnit*> TopRoots,
840 ArrayRef<SUnit*> BotRoots) {
848 for (SmallVectorImpl<SUnit*>::const_iterator
854 for (SmallVectorImpl<SUnit*>::const_reverse_iterator
875 void ScheduleDAGMI::scheduleMI(SUnit *SU, bool IsTopNode) {
921 void ScheduleDAGMI::updateQueues(SUnit *SU, bool IsTopNode) {
969 if (SUnit *SU = getSUnit(&(*MI)))
972 dbgs() << "Missing SUnit\n";
986 SUnit *SU;
989 LoadInfo(SUnit *su, unsigned reg, unsigned ofs)
1004 void clusterNeighboringLoads(ArrayRef<SUnit*> Loads, ScheduleDAGMI *DAG);
1016 void LoadClusterMutation::clusterNeighboringLoads(ArrayRef<SUnit*> Loads,
1020 SUnit *SU = Loads[Idx];
1036 SUnit *SUa = LoadRecords[Idx].SU;
1037 SUnit *SUb = LoadRecords[Idx+1].SU;
1047 for (SUnit::const_succ_iterator
1066 SmallVector<SmallVector<SUnit*,4>, 32> StoreChainDependents;
1068 SUnit *SU = &DAG->SUnits[Idx];
1072 for (SUnit::const_pred_iterator
1118 SUnit *SU = &DAG->SUnits[--Idx];
1157 void constrainLocalCopy(SUnit *CopySU, ScheduleDAGMI *DAG);
1180 void CopyConstrain::constrainLocalCopy(SUnit *CopySU, ScheduleDAGMI *DAG) {
1249 SUnit *GlobalSU = DAG->getSUnit(GlobalDef);
1255 SmallVector<SUnit*,8> LocalUses;
1258 SUnit *LastLocalSU = DAG->getSUnit(LastLocalDef);
1259 for (SUnit::const_succ_iterator
1272 SmallVector<SUnit*,8> GlobalUses;
1275 SUnit *FirstLocalSU = DAG->getSUnit(FirstLocalDef);
1276 for (SUnit::const_pred_iterator
1288 for (SmallVectorImpl<SUnit*>::const_iterator
1294 for (SmallVectorImpl<SUnit*>::const_iterator
1313 SUnit *SU = &DAG->SUnits[Idx];
1374 // The best SUnit candidate.
1375 SUnit *SU;
1451 SmallPtrSet<const SUnit*, 8> NextSUs;
1562 unsigned getUnscheduledLatency(SUnit *SU) const {
1586 bool checkHazard(SUnit *SU);
1588 unsigned findMaxLatency(ArrayRef<SUnit*> ReadySUs);
1594 void releaseNode(SUnit *SU, unsigned ReadyCycle);
1602 void bumpNode(SUnit *SU);
1606 void removeReady(SUnit *SU);
1608 SUnit *pickOnlyChoice();
1628 /// SUnit::NodeQueueId: 0 (none), 1 (top), 2 (bot), 3 (both)
1647 virtual SUnit *pickNode(bool &IsTopNode);
1649 virtual void schedNode(SUnit *SU, bool IsTopNode);
1651 virtual void releaseTopNode(SUnit *SU);
1653 virtual void releaseBottomNode(SUnit *SU);
1666 SUnit *pickNodeBidirectional(bool &IsTopNode);
1672 void reschedulePhysRegCopies(SUnit *SU, bool isTop);
1686 for (std::vector<SUnit>::iterator
1778 void GenericScheduler::releaseTopNode(SUnit *SU) {
1782 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
1797 void GenericScheduler::releaseBottomNode(SUnit *SU) {
1801 assert(SU->getInstr() && "Scheduled SUnit must have instr");
1803 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
1859 for (std::vector<SUnit*>::const_iterator
1885 bool GenericScheduler::SchedBoundary::checkHazard(SUnit *SU) {
1900 findMaxLatency(ArrayRef<SUnit*> ReadySUs) {
1901 SUnit *LateSU = 0;
1903 for (ArrayRef<SUnit*>::iterator I = ReadySUs.begin(), E = ReadySUs.end();
2008 void GenericScheduler::SchedBoundary::releaseNode(SUnit *SU,
2102 /// Move the boundary of scheduled code by one SUnit.
2103 void GenericScheduler::SchedBoundary::bumpNode(SUnit *SU) {
2216 SUnit *SU = *(Pending.begin()+i);
2237 void GenericScheduler::SchedBoundary::removeReady(SUnit *SU) {
2249 SUnit *GenericScheduler::SchedBoundary::pickOnlyChoice() {
2378 static unsigned getWeakLeft(const SUnit *SU, bool isTop) {
2389 static int biasPhysRegCopy(const SUnit *SU, bool isTop) {
2443 /// \param TryCand refers to the next SUnit candidate, otherwise uninitialized.
2523 const SUnit *NextClusterSU =
2650 /// TODO: getMaxPressureDelta results can be mostly cached for each SUnit during
2685 SUnit *GenericScheduler::pickNodeBidirectional(bool &IsTopNode) {
2688 if (SUnit *SU = Bot.pickOnlyChoice()) {
2693 if (SUnit *SU = Top.pickOnlyChoice()) {
2740 SUnit *GenericScheduler::pickNode(bool &IsTopNode) {
2746 SUnit *SU;
2786 void GenericScheduler::reschedulePhysRegCopies(SUnit *SU, bool isTop) {
2799 SUnit *DepSU = I->getSUnit();
2817 void GenericScheduler::schedNode(SUnit *SU, bool IsTopNode) {
2868 bool operator()(const SUnit *A, const SUnit *B) const {
2895 std::vector<SUnit*> ReadyQ;
2916 virtual SUnit *pickNode(bool &IsTopNode) {
2919 SUnit *SU = ReadyQ.back();
2938 virtual void schedNode(SUnit *SU, bool IsTopNode) {
2942 virtual void releaseTopNode(SUnit *) { /*only called for top roots*/ }
2944 virtual void releaseBottomNode(SUnit *SU) {
2972 bool operator()(SUnit *A, SUnit *B) const {
2988 PriorityQueue<SUnit*, std::vector<SUnit*>, SUnitOrder<false> >
2991 PriorityQueue<SUnit*, std::vector<SUnit*>, SUnitOrder<true> >
3005 virtual SUnit *pickNode(bool &IsTopNode) {
3006 SUnit *SU;
3028 virtual void schedNode(SUnit *SU, bool IsTopNode) {}
3030 virtual void releaseTopNode(SUnit *SU) {
3033 virtual void releaseBottomNode(SUnit *SU) {
3074 static bool isNodeHidden(const SUnit *Node) {
3078 static bool hasNodeAddressLabel(const SUnit *Node,
3085 static std::string getEdgeAttributes(const SUnit *Node,
3095 static std::string getNodeLabel(const SUnit *SU, const ScheduleDAG *G) {
3105 static std::string getNodeDescription(const SUnit *SU, const ScheduleDAG *G) {
3109 static std::string getNodeAttributes(const SUnit *N,