[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