From: Chris Lattner Date: Wed, 19 Oct 2005 04:30:56 +0000 (+0000) Subject: Add basic support for integer constants in pattern results. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=5d5a056092b9ce52009b835f47f4304be810368f;p=oota-llvm.git Add basic support for integer constants in pattern results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23817 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 0f9d30450ef..af1b564c36b 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/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(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(N->getLeafValue())) { + unsigned ResNo = Ctr++; + OS << " SDOperand Tmp" << ResNo << " = CurDAG->getTargetConstant(" + << II->getValue() << ", MVT::" + << getEnumName(N->getType()) + << ");\n"; + return ResNo; } N->dump();