Lines Matching refs:SU

25     const SUnit *SU;  member
29 : SU(SU_), Priority(Priority_) {} in Candidate()
38 bool isScheduled(const SUnit *SU) const { in isScheduled()
39 assert(!SU->isBoundaryNode()); in isScheduled()
40 return NumPreds[SU->NodeNum] == std::numeric_limits<unsigned>::max(); in isScheduled()
43 void setIsScheduled(const SUnit *SU) { in setIsScheduled() argument
44 assert(!SU->isBoundaryNode()); in setIsScheduled()
45 NumPreds[SU->NodeNum] = std::numeric_limits<unsigned>::max(); in setIsScheduled()
48 unsigned getNumPreds(const SUnit *SU) const { in getNumPreds()
49 assert(!SU->isBoundaryNode()); in getNumPreds()
50 assert(NumPreds[SU->NodeNum] != std::numeric_limits<unsigned>::max()); in getNumPreds()
51 return NumPreds[SU->NodeNum]; in getNumPreds()
54 unsigned decNumPreds(const SUnit *SU) { in decNumPreds() argument
55 assert(!SU->isBoundaryNode()); in decNumPreds()
56 assert(NumPreds[SU->NodeNum] != std::numeric_limits<unsigned>::max()); in decNumPreds()
57 return --NumPreds[SU->NodeNum]; in decNumPreds()
62 int getReadySuccessors(const SUnit *SU) const;
63 int getNotReadySuccessors(const SUnit *SU) const;
71 void releaseSuccessors(const SUnit* SU, int Priority);
86 int GCNMinRegScheduler::getReadySuccessors(const SUnit *SU) const { in getReadySuccessors()
88 for (auto SDep : SU->Succs) { in getReadySuccessors()
93 if (PSU != SU && !isScheduled(PSU)) { in getReadySuccessors()
103 int GCNMinRegScheduler::getNotReadySuccessors(const SUnit *SU) const { in getNotReadySuccessors()
104 return SU->Succs.size() - getReadySuccessors(SU); in getNotReadySuccessors()
146 auto SU = C.SU; in pickCandidate() local
147 int Res = getNotReadySuccessors(SU); in pickCandidate()
148 LLVM_DEBUG(dbgs() << "SU(" << SU->NodeNum << ") would left non-ready " in pickCandidate()
157 auto SU = C.SU; in pickCandidate() local
158 auto Res = getReadySuccessors(SU); in pickCandidate()
159 LLVM_DEBUG(dbgs() << "SU(" << SU->NodeNum << ") would make ready " << Res in pickCandidate()
170 Num = findMax(Num, [=](const Candidate &C) { return -(int64_t)C.SU->NodeNum; }); in pickCandidate()
193 auto SU = Worklist.pop_back_val(); in bumpPredsPriority() local
194 assert(!SU->isBoundaryNode()); in bumpPredsPriority()
195 for (const auto &P : SU->Preds) { in bumpPredsPriority()
205 if (Set.count(C.SU)) { in bumpPredsPriority()
207 LLVM_DEBUG(dbgs() << " SU(" << C.SU->NodeNum << ')'); in bumpPredsPriority()
213 void GCNMinRegScheduler::releaseSuccessors(const SUnit* SU, int Priority) { in releaseSuccessors() argument
214 for (const auto &S : SU->Succs) { in releaseSuccessors()
235 for (const auto *SU : TopRoots) { in schedule() local
236 RQ.push_back(*new (Alloc.Allocate()) Candidate(SU, StepNo)); in schedule()
246 << ' ' << C.SU->NodeNum << "(P" << C.Priority << ')'; in schedule()
252 auto SU = C->SU; in schedule() local
253 LLVM_DEBUG(dbgs() << "Selected "; DAG.dumpNode(*SU)); in schedule()
255 releaseSuccessors(SU, StepNo); in schedule()
256 Schedule.push_back(SU); in schedule()
257 setIsScheduled(SU); in schedule()
259 if (getReadySuccessors(SU) == 0) in schedule()
260 bumpPredsPriority(SU, StepNo); in schedule()