summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-28 02:41:25 +0000
committerChris Lattner <sabre@nondot.org>2010-02-28 02:41:25 +0000
commitabb1c7912ecdc61f04635ad46fce2f5a830d3670 (patch)
tree0ebc434a247602bc8e72f12d978600dc89fe8be4 /llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
parentc3f80e08066cb69a5732e33a4176a4a40753c4fc (diff)
downloadbcm5719-llvm-abb1c7912ecdc61f04635ad46fce2f5a830d3670.tar.gz
bcm5719-llvm-abb1c7912ecdc61f04635ad46fce2f5a830d3670.zip
enhance EmitNodeMatcher to keep track of the recorded slot numbers
it will populate. llvm-svn: 97363
Diffstat (limited to 'llvm/utils/TableGen/DAGISelMatcherEmitter.cpp')
-rw-r--r--llvm/utils/TableGen/DAGISelMatcherEmitter.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
index 84e33f39235..942a61225ee 100644
--- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -392,7 +392,7 @@ EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
case Matcher::EmitNode:
case Matcher::SelectNodeTo: {
const EmitNodeMatcherCommon *EN = cast<EmitNodeMatcherCommon>(N);
- OS << (EN->isSelectNodeTo() ? "OPC_EmitNode" : "OPC_SelectNodeTo");
+ OS << (isa<EmitNodeMatcher>(EN) ? "OPC_EmitNode" : "OPC_SelectNodeTo");
OS << ", TARGET_OPCODE(" << EN->getOpcodeName() << "), 0";
if (EN->hasChain()) OS << "|OPFL_Chain";
@@ -413,6 +413,20 @@ EmitMatcher(const Matcher *N, unsigned Indent, unsigned CurrentIdx,
// is too large to represent with a byte.
NumOperandBytes += EmitVBRValue(EN->getOperand(i), OS);
}
+
+ // Print the result #'s for EmitNode.
+ if (const EmitNodeMatcher *E = dyn_cast<EmitNodeMatcher>(EN)) {
+ if (EN->getVT(0) != MVT::Flag && EN->getVT(0) != MVT::Other) {
+ OS.PadToColumn(CommentIndent) << "// Results = ";
+ unsigned First = E->getFirstResultSlot();
+ for (unsigned i = 0, e = EN->getNumVTs(); i != e; ++i) {
+ if (EN->getVT(0) == MVT::Flag || EN->getVT(0) == MVT::Other)
+ break;
+ OS << "#" << First+i << " ";
+ }
+ }
+ }
+
OS << '\n';
return 6+EN->getNumVTs()+NumOperandBytes;
}
OpenPOWER on IntegriCloud