summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2006-08-17 15:35:43 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2006-08-17 15:35:43 +0000
commitfc60fb974c6e21372e4fb9b575c3e715c39d0258 (patch)
treed20c4d3ca4b3e75d9a750d6636e7a0319db8db31 /llvm/lib/Target
parent00597283c4d3d886ce69c27b0c4ed4fffa7e9cee (diff)
downloadbcm5719-llvm-fc60fb974c6e21372e4fb9b575c3e715c39d0258.tar.gz
bcm5719-llvm-fc60fb974c6e21372e4fb9b575c3e715c39d0258.zip
Add support for S and D constraints, as needed to compile the linux kernel.
llvm-svn: 29746
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 4f1feb1c615..e1e3ef38f95 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -4184,6 +4184,8 @@ X86TargetLowering::getConstraintType(char ConstraintLetter) const {
case 'Q':
case 'x':
case 'Y':
+ case 'S':
+ case 'D':
return C_RegisterClass;
default: return TargetLowering::getConstraintType(ConstraintLetter);
}
@@ -4197,6 +4199,14 @@ getRegClassForInlineAsmConstraint(const std::string &Constraint,
// 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);
OpenPOWER on IntegriCloud