Lines Matching refs:SU

85   /// AddPred - adds a predecessor edge to SUnit SU.
87 void AddPred(SUnit *SU, const SDep &D) {
88 SU->addPred(D);
91 /// RemovePred - removes a predecessor edge from SUnit SU.
93 void RemovePred(SUnit *SU, const SDep &D) {
94 SU->removePred(D);
98 void ReleasePred(SUnit *SU, SDep *PredEdge);
99 void ReleasePredecessors(SUnit *SU, unsigned CurCycle);
139 void ScheduleDAGFast::ReleasePred(SUnit *SU, SDep *PredEdge) {
160 void ScheduleDAGFast::ReleasePredecessors(SUnit *SU, unsigned CurCycle) {
162 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
164 ReleasePred(SU, &*I);
182 void ScheduleDAGFast::ScheduleNodeBottomUp(SUnit *SU, unsigned CurCycle) {
184 DEBUG(SU->dump(this));
186 assert(CurCycle >= SU->getHeight() && "Node scheduled below its height!");
187 SU->setHeightToAtLeast(CurCycle);
188 Sequence.push_back(SU);
190 ReleasePredecessors(SU, CurCycle);
193 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
198 assert(LiveRegDefs[I->getReg()] == SU &&
207 SU->isScheduled = true;
212 SUnit *ScheduleDAGFast::CopyAndMoveSuccessors(SUnit *SU) {
213 if (SU->getNode()->getGluedNode())
216 SDNode *N = SU->getNode();
241 DEBUG(dbgs() << "Unfolding SU # " << SU->NodeNum << "\n");
247 unsigned OldNumVals = SU->getNode()->getNumValues();
249 DAG->ReplaceAllUsesOfValueWith(SDValue(SU->getNode(), i), SDValue(N, i));
250 DAG->ReplaceAllUsesOfValueWith(SDValue(SU->getNode(), OldNumVals-1),
285 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
295 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
304 RemovePred(SU, ChainPred);
310 RemovePred(SU, Pred);
317 RemovePred(SU, Pred);
323 D.setSUnit(SU);
331 D.setSUnit(SU);
350 SU = NewSU;
353 DEBUG(dbgs() << "Duplicating SU # " << SU->NodeNum << "\n");
354 NewSU = Clone(SU);
357 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
365 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
374 D.setSUnit(SU);
387 void ScheduleDAGFast::InsertCopiesAndMoveSuccs(SUnit *SU, unsigned Reg,
402 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
417 SDep FromDep(SU, SDep::Data, Reg);
418 FromDep.setLatency(SU->Latency);
448 static bool CheckForLiveRegDef(SUnit *SU, unsigned Reg,
455 if (LiveRegDefs[*AI] && LiveRegDefs[*AI] != SU) {
469 bool ScheduleDAGFast::DelayForLiveRegsBottomUp(SUnit *SU,
476 for (SUnit::pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
484 for (SDNode *Node = SU->getNode(); Node; Node = Node->getGluedNode()) {
504 CheckForLiveRegDef(SU, Reg, LiveRegDefs, RegAdded, LRegs, TRI);
517 CheckForLiveRegDef(SU, *Reg, LiveRegDefs, RegAdded, LRegs, TRI);
556 CurSU->isPending = true; // This SU is not in AvailableQueue right now.
597 DEBUG(dbgs() << "Adding an edge from SU # " << TrySU->NodeNum
598 << " to SU #" << Copies.front()->NodeNum << "\n");
603 DEBUG(dbgs() << "Adding an edge from SU # " << NewDef->NodeNum
604 << " to SU #" << TrySU->NodeNum << "\n");