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 | |
| 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')
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcher.h | 2 | ||||
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcherEmitter.cpp | 17 |
2 files changed, 15 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/DAGISelMatcher.h b/llvm/utils/TableGen/DAGISelMatcher.h index 7b6fbdb8bf5..0d5825639d0 100644 --- a/llvm/utils/TableGen/DAGISelMatcher.h +++ b/llvm/utils/TableGen/DAGISelMatcher.h @@ -386,7 +386,7 @@ public: EmitIntegerMatcherNode(int64_t val, MVT::SimpleValueType vt) : MatcherNode(EmitInteger), Val(val), VT(vt) {} - int64_t getVal() const { return Val; } + int64_t getValue() const { return Val; } MVT::SimpleValueType getVT() const { return VT; } static inline bool classof(const MatcherNode *N) { 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; |

