[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp

Chris Lattner lattner at cs.uiuc.edu
Tue Oct 18 19:07:37 PDT 2005



Changes in directory llvm/utils/TableGen:

DAGISelEmitter.cpp updated: 1.61 -> 1.62
---
Log message:

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 :)



---
Diffs of the changes:  (+12 -0)

 DAGISelEmitter.cpp |   12 ++++++++++++
 1 files changed, 12 insertions(+)


Index: llvm/utils/TableGen/DAGISelEmitter.cpp
diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.61 llvm/utils/TableGen/DAGISelEmitter.cpp:1.62
--- llvm/utils/TableGen/DAGISelEmitter.cpp:1.61	Tue Oct 18 20:55:23 2005
+++ llvm/utils/TableGen/DAGISelEmitter.cpp	Tue Oct 18 21:07:26 2005
@@ -1617,6 +1617,18 @@
   }
   
   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;






More information about the llvm-commits mailing list