diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-19 07:49:56 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-19 07:49:56 +0000 |
commit | b4905cbd12160ddefed24b09891025b0443ded58 (patch) | |
tree | 815744e21d864018f139be05d0e6d873b24ad3fd /llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | |
parent | 1d6827adef414914761bfea4e4876f4565e2477e (diff) | |
download | bcm5719-llvm-b4905cbd12160ddefed24b09891025b0443ded58.tar.gz bcm5719-llvm-b4905cbd12160ddefed24b09891025b0443ded58.zip |
add emitter support for integer constants and simple physreg references.
llvm-svn: 96663
Diffstat (limited to 'llvm/utils/TableGen/DAGISelMatcherEmitter.cpp')
-rw-r--r-- | llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp index 92b2a55e9b7..4b16db309b2 100644 --- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp @@ -213,10 +213,21 @@ EmitMatcher(const MatcherNode *N, unsigned Indent) { << cast<CheckChainCompatibleMatcherNode>(N)->getPreviousOp() << ",\n"; return 2; - case MatcherNode::EmitInteger: + case MatcherNode::EmitInteger: { + int64_t Val = cast<EmitIntegerMatcherNode>(N)->getValue(); + OS << "OPC_EmitInteger" << ClassifyInt(Val) << ", " + << getEnumName(cast<EmitIntegerMatcherNode>(N)->getVT()) << ", "; + return EmitInt(Val, OS)+2; + } + case MatcherNode::EmitRegister: - // FIXME: Implement. - return 0; + OS << "OPC_EmitRegister, " + << getEnumName(cast<EmitRegisterMatcherNode>(N)->getVT()) << ", "; + if (Record *R = cast<EmitRegisterMatcherNode>(N)->getReg()) + OS << getQualifiedName(R) << ",\n"; + else + OS << "0 /*zero_reg*/,\n"; + return 3; } assert(0 && "Unreachable"); return 0; |