Add the 'c' constraint as needed by the linux kernel
authorAndrew Lenharth <andrewl@lenharth.org>
Thu, 17 Aug 2006 16:07:50 +0000 (16:07 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Thu, 17 Aug 2006 16:07:50 +0000 (16:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29747 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index e1e3ef38f95050d65ee503743ee48e1e757eff94..7a4795993425d5bee3293c4237685f2b680d427f 100644 (file)
@@ -4186,6 +4186,7 @@ X86TargetLowering::getConstraintType(char ConstraintLetter) const {
   case 'Y':
   case 'S':
   case 'D':
+  case 'c':
     return C_RegisterClass;
   default: return TargetLowering::getConstraintType(ConstraintLetter);
   }
@@ -4201,11 +4202,15 @@ getRegClassForInlineAsmConstraint(const std::string &Constraint,
     default: break;  // Unknown constraint letter
     case 'S':   // ESI
       if (VT == MVT::i32)
-       return make_vector<unsigned>(X86::ESI,0);
+        return make_vector<unsigned>(X86::ESI,0);
       break;
     case 'D':   // EDI
       if (VT == MVT::i32)
-       return make_vector<unsigned>(X86::EDI,0);
+        return make_vector<unsigned>(X86::EDI,0);
+      break;
+    case 'c':  // ECX
+      if (VT == MVT::i32)
+        return make_vector<unsigned>(X86::ECX, 0);
       break;
     case 'A':   // EAX/EDX
       if (VT == MVT::i32 || VT == MVT::i64)