[X86] Reject 512-bit types in getRegForInlineAsmConstraint when AVX512 is not enabled...
authorCraig Topper <craig.topper@intel.com>
Mon, 22 Apr 2019 06:12:02 +0000 (06:12 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 22 Apr 2019 06:12:02 +0000 (06:12 +0000)
llvm-svn: 358872

llvm/lib/Target/X86/X86ISelLowering.cpp

index 21b412c987a1097b3b3d8af75cef5cff6d1dc61a..2534948bb5c901610a8860102b8933d3a2d40516 100644 (file)
@@ -43676,7 +43676,7 @@ X86TargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
       // Scalar SSE types.
       case MVT::f32:
       case MVT::i32:
-        if (VConstraint && Subtarget.hasAVX512() && Subtarget.hasVLX())
+        if (VConstraint && Subtarget.hasVLX())
           return std::make_pair(0U, &X86::FR32XRegClass);
         return std::make_pair(0U, &X86::FR32RegClass);
       case MVT::f64:
@@ -43704,11 +43704,14 @@ X86TargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
       case MVT::v4f64:
         if (VConstraint && Subtarget.hasVLX())
           return std::make_pair(0U, &X86::VR256XRegClass);
-        return std::make_pair(0U, &X86::VR256RegClass);
+        if (Subtarget.hasAVX())
+          return std::make_pair(0U, &X86::VR256RegClass);
+        break;
       case MVT::v8f64:
       case MVT::v16f32:
       case MVT::v16i32:
       case MVT::v8i64:
+        if (!Subtarget.hasAVX512()) break;
         if (VConstraint)
           return std::make_pair(0U, &X86::VR512RegClass);
         return std::make_pair(0U, &X86::VR512_0_15RegClass);