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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29746 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Andrew Lenharth 2006-08-17 15:35:43 +00:00
parent 4a5dfeeeaa
commit c63e56ee5f

View File

@ -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);