Changeset View
Changeset View
Standalone View
Standalone View
llvm/utils/TableGen/GlobalISel/GIMatchDag.cpp
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | for (const auto &N : InstrNodes) { | ||||
OS << "]\n"; | OS << "]\n"; | ||||
} | } | ||||
for (const auto &E : Edges) { | for (const auto &E : Edges) { | ||||
const char *FromFmt = "Node%p:s%d:n"; | const char *FromFmt = "Node%p:s%d:n"; | ||||
const char *ToFmt = "Node%p:d%d:s"; | const char *ToFmt = "Node%p:d%d:s"; | ||||
if (E->getFromMO()->isDef() && !E->getToMO()->isDef()) | if (E->getFromMO()->isDef() && !E->getToMO()->isDef()) | ||||
std::swap(FromFmt, ToFmt); | std::swap(FromFmt, ToFmt); | ||||
auto From = format(FromFmt, E->getFromMI(), E->getFromMO()->getIdx()); | auto FromF = format(FromFmt, E->getFromMI(), E->getFromMO()->getIdx()); | ||||
auto To = format(ToFmt, E->getToMI(), E->getToMO()->getIdx()); | auto ToF = format(ToFmt, E->getToMI(), E->getToMO()->getIdx()); | ||||
if (E->getFromMO()->isDef() && !E->getToMO()->isDef()) | bool Swap = E->getFromMO()->isDef() && !E->getToMO()->isDef(); | ||||
std::swap(From, To); | auto &From = Swap ? ToF : FromF; | ||||
auto &To = Swap ? FromF : ToF; | |||||
OS << " " << From << " -> " << To << " [label=\"$" << E->getName(); | OS << " " << From << " -> " << To << " [label=\"$" << E->getName(); | ||||
if (E->getFromMO()->isDef() == E->getToMO()->isDef()) | if (E->getFromMO()->isDef() == E->getToMO()->isDef()) | ||||
OS << " INVALID EDGE!"; | OS << " INVALID EDGE!"; | ||||
OS << "\""; | OS << "\""; | ||||
if (E->getFromMO()->isDef() == E->getToMO()->isDef()) | if (E->getFromMO()->isDef() == E->getToMO()->isDef()) | ||||
OS << ",color=red"; | OS << ",color=red"; | ||||
else if (E->getFromMO()->isDef() && !E->getToMO()->isDef()) | else if (E->getFromMO()->isDef() && !E->getToMO()->isDef()) | ||||
▲ Show 20 Lines • Show All 63 Lines • Show Last 20 Lines |