[llvm-commits] [llvm] r55875 - /llvm/trunk/utils/TableGen/FastISelEmitter.cpp

Evan Cheng evan.cheng at apple.com
Sun Sep 7 01:19:51 PDT 2008


Author: evancheng
Date: Sun Sep  7 03:19:51 2008
New Revision: 55875

URL: http://llvm.org/viewvc/llvm-project?rev=55875&view=rev
Log:
Ignore multi-instruction patterns. e.g.
def : Pat<(i8 (trunc GR32:$src)),
          (i8 (EXTRACT_SUBREG (MOV32to32_ GR32:$src), x86_subreg_8bit))>

Modified:
    llvm/trunk/utils/TableGen/FastISelEmitter.cpp

Modified: llvm/trunk/utils/TableGen/FastISelEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/FastISelEmitter.cpp?rev=55875&r1=55874&r2=55875&view=diff

==============================================================================
--- llvm/trunk/utils/TableGen/FastISelEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/FastISelEmitter.cpp Sun Sep  7 03:19:51 2008
@@ -259,6 +259,20 @@
     if (II.OperandList.empty())
       continue;
 
+    // For now, ignore multi-instruction patterns.
+    bool MultiInsts = false;
+    for (unsigned i = 0, e = Dst->getNumChildren(); i != e; ++i) {
+      TreePatternNode *ChildOp = Dst->getChild(i);
+      if (ChildOp->isLeaf())
+        continue;
+      if (ChildOp->getOperator()->isSubClassOf("Instruction")) {
+        MultiInsts = true;
+        break;
+      }
+    }
+    if (MultiInsts)
+      continue;
+
     // For now, ignore instructions where the first operand is not an
     // output register.
     const CodeGenRegisterClass *DstRC = 0;





More information about the llvm-commits mailing list