Lines Matching refs:SUnit
56 if (SUnit *SU = Sequence[i])
73 EntrySU = SUnit();
74 ExitSU = SUnit();
88 bool SUnit::addPred(const SDep &D) {
97 SUnit *N = D.getSUnit();
125 void SUnit::removePred(const SDep &D) {
134 SUnit *N = D.getSUnit();
168 void SUnit::setDepthDirty() {
170 SmallVector<SUnit*, 8> WorkList;
173 SUnit *SU = WorkList.pop_back_val();
175 for (SUnit::const_succ_iterator I = SU->Succs.begin(),
177 SUnit *SuccSU = I->getSUnit();
184 void SUnit::setHeightDirty() {
186 SmallVector<SUnit*, 8> WorkList;
189 SUnit *SU = WorkList.pop_back_val();
191 for (SUnit::const_pred_iterator I = SU->Preds.begin(),
193 SUnit *PredSU = I->getSUnit();
203 void SUnit::setDepthToAtLeast(unsigned NewDepth) {
214 void SUnit::setHeightToAtLeast(unsigned NewHeight) {
224 void SUnit::ComputeDepth() {
225 SmallVector<SUnit*, 8> WorkList;
228 SUnit *Cur = WorkList.back();
232 for (SUnit::const_pred_iterator I = Cur->Preds.begin(),
234 SUnit *PredSU = I->getSUnit();
257 void SUnit::ComputeHeight() {
258 SmallVector<SUnit*, 8> WorkList;
261 SUnit *Cur = WorkList.back();
265 for (SUnit::const_succ_iterator I = Cur->Succs.begin(),
267 SUnit *SuccSU = I->getSUnit();
288 /// SUnit - Scheduling unit. It's an wrapper around either a single SDNode or
290 void SUnit::dump(const ScheduleDAG *G) const {
295 void SUnit::dumpAll(const ScheduleDAG *G) const {
307 for (SUnit::const_succ_iterator I = Preds.begin(), E = Preds.end();
328 for (SUnit::const_succ_iterator I = Succs.begin(), E = Succs.end();
436 std::vector<SUnit*> WorkList;
444 SUnit *SU = &SUnits[i];
452 assert(SU->Succs.empty() && "SUnit should have no successors");
460 SUnit *SU = WorkList.back();
463 for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
465 SUnit *SU = I->getSUnit();
478 SUnit *SU = &SUnits[i];
479 for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
489 /// to be added from SUnit X to SUnit Y.
490 void ScheduleDAGTopologicalSort::AddPred(SUnit *Y, SUnit *X) {
509 void ScheduleDAGTopologicalSort::RemovePred(SUnit *M, SUnit *N) {
516 void ScheduleDAGTopologicalSort::DFS(const SUnit *SU, int UpperBound,
518 std::vector<const SUnit*> WorkList;
570 bool ScheduleDAGTopologicalSort::WillCreateCycle(SUnit *SU, SUnit *TargetSU) {
573 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
582 bool ScheduleDAGTopologicalSort::IsReachable(const SUnit *SU,
583 const SUnit *TargetSU) {
606 ScheduleDAGTopologicalSort(std::vector<SUnit> &sunits) : SUnits(sunits) {}