diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-10-19 02:07:26 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-10-19 02:07:26 +0000 |
| commit | b8014e10ae4e8a1cc3880a501bb3fdbf7ada5031 (patch) | |
| tree | 409cb88e46fc57589a597114a72b87647a5ed0fe /llvm/utils/TableGen/DAGISelEmitter.cpp | |
| parent | c8f899f98d8aab9889391805655911cd842ee1bd (diff) | |
| download | bcm5719-llvm-b8014e10ae4e8a1cc3880a501bb3fdbf7ada5031.tar.gz bcm5719-llvm-b8014e10ae4e8a1cc3880a501bb3fdbf7ada5031.zip | |
Add support for patterns that have physical registers in them. Testcase:
def : Pat<(trunc G8RC:$in),
(OR8To4 G8RC:$in, X0)>;
Even though this doesn't make any sense on PPC :)
llvm-svn: 23815
Diffstat (limited to 'llvm/utils/TableGen/DAGISelEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/DAGISelEmitter.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/DAGISelEmitter.cpp b/llvm/utils/TableGen/DAGISelEmitter.cpp index 12ca95f7d0e..0f9d30450ef 100644 --- a/llvm/utils/TableGen/DAGISelEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelEmitter.cpp @@ -1617,6 +1617,18 @@ CodeGenPatternResult(TreePatternNode *N, unsigned &Ctr, } if (N->isLeaf()) { + // If this is an explicit register reference, handle it. + if (DefInit *DI = dynamic_cast<DefInit*>(N->getLeafValue())) { + unsigned ResNo = Ctr++; + if (DI->getDef()->isSubClassOf("Register")) { + OS << " SDOperand Tmp" << ResNo << " = CurDAG->getRegister(" + << getQualifiedName(DI->getDef()) << ", MVT::" + << getEnumName(N->getType()) + << ");\n"; + return ResNo; + } + } + N->dump(); assert(0 && "Unknown leaf type!"); return ~0U; |

