[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelLowering.cpp

Andrew Lenharth alenhar2 at cs.uiuc.edu
Thu Aug 17 08:36:10 PDT 2006



Changes in directory llvm/lib/Target/X86:

X86ISelLowering.cpp updated: 1.245 -> 1.246
---
Log message:

Add support for S and D constraints, as needed to compile the linux kernel.

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

 X86ISelLowering.cpp |   10 ++++++++++
 1 files changed, 10 insertions(+)


Index: llvm/lib/Target/X86/X86ISelLowering.cpp
diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.245 llvm/lib/Target/X86/X86ISelLowering.cpp:1.246
--- llvm/lib/Target/X86/X86ISelLowering.cpp:1.245	Fri Aug 11 12:38:39 2006
+++ llvm/lib/Target/X86/X86ISelLowering.cpp	Thu Aug 17 10:35:43 2006
@@ -4184,6 +4184,8 @@
   case 'Q':
   case 'x':
   case 'Y':
+  case 'S':
+  case 'D':
     return C_RegisterClass;
   default: return TargetLowering::getConstraintType(ConstraintLetter);
   }
@@ -4197,6 +4199,14 @@
     // FIXME: not handling MMX registers yet ('y' constraint).
     switch (Constraint[0]) {      // GCC X86 Constraint Letters
     default: break;  // Unknown constraint letter
+    case 'S':   // ESI
+      if (VT == MVT::i32)
+	return make_vector<unsigned>(X86::ESI,0);
+      break;
+    case 'D':   // EDI
+      if (VT == MVT::i32)
+	return make_vector<unsigned>(X86::EDI,0);
+      break;
     case 'A':   // EAX/EDX
       if (VT == MVT::i32 || VT == MVT::i64)
         return make_vector<unsigned>(X86::EAX, X86::EDX, 0);






More information about the llvm-commits mailing list