|
@@ -68,39 +68,36 @@ const MCInstrDesc *ScheduleDAG::getNodeDesc(const SDNode *Node) const {
|
|
return &TII->get(Node->getMachineOpcode());
|
|
return &TII->get(Node->getMachineOpcode());
|
|
}
|
|
}
|
|
|
|
|
|
-LLVM_DUMP_METHOD
|
|
|
|
-raw_ostream &SDep::print(raw_ostream &OS, const TargetRegisterInfo *TRI) const {
|
|
|
|
|
|
+LLVM_DUMP_METHOD void SDep::dump(const TargetRegisterInfo *TRI) const {
|
|
switch (getKind()) {
|
|
switch (getKind()) {
|
|
- case Data: OS << "Data"; break;
|
|
|
|
- case Anti: OS << "Anti"; break;
|
|
|
|
- case Output: OS << "Out "; break;
|
|
|
|
- case Order: OS << "Ord "; break;
|
|
|
|
|
|
+ case Data: dbgs() << "Data"; break;
|
|
|
|
+ case Anti: dbgs() << "Anti"; break;
|
|
|
|
+ case Output: dbgs() << "Out "; break;
|
|
|
|
+ case Order: dbgs() << "Ord "; break;
|
|
}
|
|
}
|
|
|
|
|
|
switch (getKind()) {
|
|
switch (getKind()) {
|
|
case Data:
|
|
case Data:
|
|
- OS << " Latency=" << getLatency();
|
|
|
|
|
|
+ dbgs() << " Latency=" << getLatency();
|
|
if (TRI && isAssignedRegDep())
|
|
if (TRI && isAssignedRegDep())
|
|
- OS << " Reg=" << printReg(getReg(), TRI);
|
|
|
|
|
|
+ dbgs() << " Reg=" << printReg(getReg(), TRI);
|
|
break;
|
|
break;
|
|
case Anti:
|
|
case Anti:
|
|
case Output:
|
|
case Output:
|
|
- OS << " Latency=" << getLatency();
|
|
|
|
|
|
+ dbgs() << " Latency=" << getLatency();
|
|
break;
|
|
break;
|
|
case Order:
|
|
case Order:
|
|
- OS << " Latency=" << getLatency();
|
|
|
|
|
|
+ dbgs() << " Latency=" << getLatency();
|
|
switch(Contents.OrdKind) {
|
|
switch(Contents.OrdKind) {
|
|
- case Barrier: OS << " Barrier"; break;
|
|
|
|
|
|
+ case Barrier: dbgs() << " Barrier"; break;
|
|
case MayAliasMem:
|
|
case MayAliasMem:
|
|
- case MustAliasMem: OS << " Memory"; break;
|
|
|
|
- case Artificial: OS << " Artificial"; break;
|
|
|
|
- case Weak: OS << " Weak"; break;
|
|
|
|
- case Cluster: OS << " Cluster"; break;
|
|
|
|
|
|
+ case MustAliasMem: dbgs() << " Memory"; break;
|
|
|
|
+ case Artificial: dbgs() << " Artificial"; break;
|
|
|
|
+ case Weak: dbgs() << " Weak"; break;
|
|
|
|
+ case Cluster: dbgs() << " Cluster"; break;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
-
|
|
|
|
- return OS;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
bool SUnit::addPred(const SDep &D, bool Required) {
|
|
bool SUnit::addPred(const SDep &D, bool Required) {
|
|
@@ -337,33 +334,7 @@ void SUnit::biasCriticalPath() {
|
|
}
|
|
}
|
|
|
|
|
|
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
|
|
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
|
|
-LLVM_DUMP_METHOD
|
|
|
|
-raw_ostream &SUnit::print(raw_ostream &OS,
|
|
|
|
- const SUnit *Entry, const SUnit *Exit) const {
|
|
|
|
- if (this == Entry)
|
|
|
|
- OS << "EntrySU";
|
|
|
|
- else if (this == Exit)
|
|
|
|
- OS << "ExitSU";
|
|
|
|
- else
|
|
|
|
- OS << "SU(" << NodeNum << ")";
|
|
|
|
- return OS;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-LLVM_DUMP_METHOD
|
|
|
|
-raw_ostream &SUnit::print(raw_ostream &OS, const ScheduleDAG *G) const {
|
|
|
|
- return print(OS, &G->EntrySU, &G->ExitSU);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-LLVM_DUMP_METHOD
|
|
|
|
-void SUnit::dump(const ScheduleDAG *G) const {
|
|
|
|
- print(dbgs(), G);
|
|
|
|
- dbgs() << ": ";
|
|
|
|
- G->dumpNode(this);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-LLVM_DUMP_METHOD void SUnit::dumpAll(const ScheduleDAG *G) const {
|
|
|
|
- dump(G);
|
|
|
|
-
|
|
|
|
|
|
+LLVM_DUMP_METHOD void SUnit::dumpAttributes() const {
|
|
dbgs() << " # preds left : " << NumPredsLeft << "\n";
|
|
dbgs() << " # preds left : " << NumPredsLeft << "\n";
|
|
dbgs() << " # succs left : " << NumSuccsLeft << "\n";
|
|
dbgs() << " # succs left : " << NumSuccsLeft << "\n";
|
|
if (WeakPredsLeft)
|
|
if (WeakPredsLeft)
|
|
@@ -374,21 +345,38 @@ LLVM_DUMP_METHOD void SUnit::dumpAll(const ScheduleDAG *G) const {
|
|
dbgs() << " Latency : " << Latency << "\n";
|
|
dbgs() << " Latency : " << Latency << "\n";
|
|
dbgs() << " Depth : " << getDepth() << "\n";
|
|
dbgs() << " Depth : " << getDepth() << "\n";
|
|
dbgs() << " Height : " << getHeight() << "\n";
|
|
dbgs() << " Height : " << getHeight() << "\n";
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+LLVM_DUMP_METHOD void ScheduleDAG::dumpNodeName(const SUnit &SU) const {
|
|
|
|
+ if (&SU == &EntrySU)
|
|
|
|
+ dbgs() << "EntrySU";
|
|
|
|
+ else if (&SU == &ExitSU)
|
|
|
|
+ dbgs() << "ExitSU";
|
|
|
|
+ else
|
|
|
|
+ dbgs() << "SU(" << SU.NodeNum << ")";
|
|
|
|
+}
|
|
|
|
|
|
- if (Preds.size() != 0) {
|
|
|
|
|
|
+LLVM_DUMP_METHOD void ScheduleDAG::dumpNodeAll(const SUnit &SU) const {
|
|
|
|
+ dumpNode(SU);
|
|
|
|
+ SU.dumpAttributes();
|
|
|
|
+ if (SU.Preds.size() > 0) {
|
|
dbgs() << " Predecessors:\n";
|
|
dbgs() << " Predecessors:\n";
|
|
- for (const SDep &Dep : Preds) {
|
|
|
|
|
|
+ for (const SDep &Dep : SU.Preds) {
|
|
dbgs() << " ";
|
|
dbgs() << " ";
|
|
- Dep.getSUnit()->print(dbgs(), G); dbgs() << ": ";
|
|
|
|
- Dep.print(dbgs(), G->TRI); dbgs() << '\n';
|
|
|
|
|
|
+ dumpNodeName(*Dep.getSUnit());
|
|
|
|
+ dbgs() << ": ";
|
|
|
|
+ Dep.dump(TRI);
|
|
|
|
+ dbgs() << '\n';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (Succs.size() != 0) {
|
|
|
|
|
|
+ if (SU.Succs.size() > 0) {
|
|
dbgs() << " Successors:\n";
|
|
dbgs() << " Successors:\n";
|
|
- for (const SDep &Dep : Succs) {
|
|
|
|
|
|
+ for (const SDep &Dep : SU.Succs) {
|
|
dbgs() << " ";
|
|
dbgs() << " ";
|
|
- Dep.getSUnit()->print(dbgs(), G); dbgs() << ": ";
|
|
|
|
- Dep.print(dbgs(), G->TRI); dbgs() << '\n';
|
|
|
|
|
|
+ dumpNodeName(*Dep.getSUnit());
|
|
|
|
+ dbgs() << ": ";
|
|
|
|
+ Dep.dump(TRI);
|
|
|
|
+ dbgs() << '\n';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -406,7 +394,7 @@ unsigned ScheduleDAG::VerifyScheduledDAG(bool isBottomUp) {
|
|
}
|
|
}
|
|
if (!AnyNotSched)
|
|
if (!AnyNotSched)
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
- SUnit.dump(this);
|
|
|
|
|
|
+ dumpNode(SUnit);
|
|
dbgs() << "has not been scheduled!\n";
|
|
dbgs() << "has not been scheduled!\n";
|
|
AnyNotSched = true;
|
|
AnyNotSched = true;
|
|
}
|
|
}
|
|
@@ -415,7 +403,7 @@ unsigned ScheduleDAG::VerifyScheduledDAG(bool isBottomUp) {
|
|
unsigned(std::numeric_limits<int>::max())) {
|
|
unsigned(std::numeric_limits<int>::max())) {
|
|
if (!AnyNotSched)
|
|
if (!AnyNotSched)
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
- SUnit.dump(this);
|
|
|
|
|
|
+ dumpNode(SUnit);
|
|
dbgs() << "has an unexpected "
|
|
dbgs() << "has an unexpected "
|
|
<< (isBottomUp ? "Height" : "Depth") << " value!\n";
|
|
<< (isBottomUp ? "Height" : "Depth") << " value!\n";
|
|
AnyNotSched = true;
|
|
AnyNotSched = true;
|
|
@@ -424,7 +412,7 @@ unsigned ScheduleDAG::VerifyScheduledDAG(bool isBottomUp) {
|
|
if (SUnit.NumSuccsLeft != 0) {
|
|
if (SUnit.NumSuccsLeft != 0) {
|
|
if (!AnyNotSched)
|
|
if (!AnyNotSched)
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
- SUnit.dump(this);
|
|
|
|
|
|
+ dumpNode(SUnit);
|
|
dbgs() << "has successors left!\n";
|
|
dbgs() << "has successors left!\n";
|
|
AnyNotSched = true;
|
|
AnyNotSched = true;
|
|
}
|
|
}
|
|
@@ -432,7 +420,7 @@ unsigned ScheduleDAG::VerifyScheduledDAG(bool isBottomUp) {
|
|
if (SUnit.NumPredsLeft != 0) {
|
|
if (SUnit.NumPredsLeft != 0) {
|
|
if (!AnyNotSched)
|
|
if (!AnyNotSched)
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
dbgs() << "*** Scheduling failed! ***\n";
|
|
- SUnit.dump(this);
|
|
|
|
|
|
+ dumpNode(SUnit);
|
|
dbgs() << "has predecessors left!\n";
|
|
dbgs() << "has predecessors left!\n";
|
|
AnyNotSched = true;
|
|
AnyNotSched = true;
|
|
}
|
|
}
|