diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-02-28 02:41:25 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-02-28 02:41:25 +0000 |
| commit | abb1c7912ecdc61f04635ad46fce2f5a830d3670 (patch) | |
| tree | 0ebc434a247602bc8e72f12d978600dc89fe8be4 /llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | |
| parent | c3f80e08066cb69a5732e33a4176a4a40753c4fc (diff) | |
| download | bcm5719-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.cpp | 16 |
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; } |

