void SUnit::dumpAll(const ScheduleDAG *G) const { dump(G); dbgs() << " # preds left : " << NumPredsLeft << "\n"; dbgs() << " # succs left : " << NumSuccsLeft << "\n"; if (WeakPredsLeft) dbgs() << " # weak preds left : " << WeakPredsLeft << "\n"; if (WeakSuccsLeft) dbgs() << " # weak succs left : " << WeakSuccsLeft << "\n"; dbgs() << " # rdefs left : " << NumRegDefsLeft << "\n"; dbgs() << " Latency : " << Latency << "\n"; dbgs() << " Depth : " << getDepth() << "\n"; dbgs() << " Height : " << getHeight() << "\n"; if (Preds.size() != 0) { dbgs() << " Predecessors:\n"; for (SUnit::const_succ_iterator I = Preds.begin(), E = Preds.end(); I != E; ++I) { dbgs() << " "; switch (I->getKind()) { case SDep::Data: dbgs() << "val "; break; case SDep::Anti: dbgs() << "anti"; break; case SDep::Output: dbgs() << "out "; break; case SDep::Order: dbgs() << "ch "; break; } dbgs() << "SU(" << I->getSUnit()->NodeNum << ")"; if (I->isArtificial()) dbgs() << " *"; dbgs() << ": Latency=" << I->getLatency(); if (I->isAssignedRegDep()) dbgs() << " Reg=" << PrintReg(I->getReg(), G->TRI); dbgs() << "\n"; } } if (Succs.size() != 0) { dbgs() << " Successors:\n"; for (SUnit::const_succ_iterator I = Succs.begin(), E = Succs.end(); I != E; ++I) { dbgs() << " "; switch (I->getKind()) { case SDep::Data: dbgs() << "val "; break; case SDep::Anti: dbgs() << "anti"; break; case SDep::Output: dbgs() << "out "; break; case SDep::Order: dbgs() << "ch "; break; } dbgs() << "SU(" << I->getSUnit()->NodeNum << ")"; if (I->isArtificial()) dbgs() << " *"; dbgs() << ": Latency=" << I->getLatency(); if (I->isAssignedRegDep()) dbgs() << " Reg=" << PrintReg(I->getReg(), G->TRI); dbgs() << "\n"; } } }
void SUnit::dumpAll(const ScheduleDAG *G) const { dump(G); errs() << " # preds left : " << NumPredsLeft << "\n"; errs() << " # succs left : " << NumSuccsLeft << "\n"; errs() << " Latency : " << Latency << "\n"; errs() << " Depth : " << Depth << "\n"; errs() << " Height : " << Height << "\n"; if (Preds.size() != 0) { errs() << " Predecessors:\n"; for (SUnit::const_succ_iterator I = Preds.begin(), E = Preds.end(); I != E; ++I) { errs() << " "; switch (I->getKind()) { case SDep::Data: errs() << "val "; break; case SDep::Anti: errs() << "anti"; break; case SDep::Output: errs() << "out "; break; case SDep::Order: errs() << "ch "; break; } errs() << "#"; errs() << I->getSUnit() << " - SU(" << I->getSUnit()->NodeNum << ")"; if (I->isArtificial()) errs() << " *"; errs() << ": Latency=" << I->getLatency(); errs() << "\n"; } } if (Succs.size() != 0) { errs() << " Successors:\n"; for (SUnit::const_succ_iterator I = Succs.begin(), E = Succs.end(); I != E; ++I) { errs() << " "; switch (I->getKind()) { case SDep::Data: errs() << "val "; break; case SDep::Anti: errs() << "anti"; break; case SDep::Output: errs() << "out "; break; case SDep::Order: errs() << "ch "; break; } errs() << "#"; errs() << I->getSUnit() << " - SU(" << I->getSUnit()->NodeNum << ")"; if (I->isArtificial()) errs() << " *"; errs() << ": Latency=" << I->getLatency(); errs() << "\n"; } } errs() << "\n"; }
/// ComputeHeight - Calculate the maximal path from the node to the entry. /// void SUnit::ComputeHeight() { SmallVector<SUnit*, 8> WorkList; WorkList.push_back(this); do { SUnit *Cur = WorkList.back(); bool Done = true; unsigned MaxSuccHeight = 0; for (SUnit::const_succ_iterator I = Cur->Succs.begin(), E = Cur->Succs.end(); I != E; ++I) { SUnit *SuccSU = I->getSUnit(); if (SuccSU->isHeightCurrent) MaxSuccHeight = std::max(MaxSuccHeight, SuccSU->Height + I->getLatency()); else { Done = false; WorkList.push_back(SuccSU); } } if (Done) { WorkList.pop_back(); if (MaxSuccHeight != Cur->Height) { Cur->setHeightDirty(); Cur->Height = MaxSuccHeight; } Cur->isHeightCurrent = true; } } while (!WorkList.empty()); }