diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-10-19 04:30:56 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-10-19 04:30:56 +0000 |
| commit | 7f6f56584643c6cefb1ff2e0a6489aeeadce1f4c (patch) | |
| tree | d43c2d655eaaee593b5ee0432abf26928fc039fa /llvm | |
| parent | 2ae2f993269eb2c90f3c6d838230a842a0ee94c7 (diff) | |
| download | bcm5719-llvm-7f6f56584643c6cefb1ff2e0a6489aeeadce1f4c.tar.gz bcm5719-llvm-7f6f56584643c6cefb1ff2e0a6489aeeadce1f4c.zip | |
Add basic support for integer constants in pattern results.
llvm-svn: 23817
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/utils/TableGen/DAGISelEmitter.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/DAGISelEmitter.cpp b/llvm/utils/TableGen/DAGISelEmitter.cpp index 0f9d30450ef..af1b564c36b 100644 --- a/llvm/utils/TableGen/DAGISelEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelEmitter.cpp @@ -665,8 +665,15 @@ TreePatternNode *TreePattern::ParseTreePattern(DagInit *Dag) { Args.push_back(Dag->getArgName(i)); } } + } else if (IntInit *II = dynamic_cast<IntInit*>(Arg)) { + TreePatternNode *Node = new TreePatternNode(II); + if (!Dag->getArgName(i).empty()) + error("Constant int argument should not have a name!"); + Children.push_back(Node); } else { + std::cerr << '"'; Arg->dump(); + std::cerr << "\": "; error("Unknown leaf value for tree pattern!"); } } @@ -1627,6 +1634,13 @@ CodeGenPatternResult(TreePatternNode *N, unsigned &Ctr, << ");\n"; return ResNo; } + } else if (IntInit *II = dynamic_cast<IntInit*>(N->getLeafValue())) { + unsigned ResNo = Ctr++; + OS << " SDOperand Tmp" << ResNo << " = CurDAG->getTargetConstant(" + << II->getValue() << ", MVT::" + << getEnumName(N->getType()) + << ");\n"; + return ResNo; } N->dump(); |

