x86: fix CVT{,T}PD2PI insns
authorJan Beulich <jbeulich@suse.com>
Fri, 28 Jun 2019 08:46:56 +0000 (08:46 +0000)
committerJan Beulich <jbeulich@gcc.gnu.org>
Fri, 28 Jun 2019 08:46:56 +0000 (08:46 +0000)
With just an "m" constraint misaligned memory operands won't be forced
into a register, and hence cause #GP. So far this was guaranteed only
in the case that CVT{,T}PD2DQ were chosen (which looks to be the case on
x86-64 only).

Switch the second alternative to Bm and also replace
nonimmediate_operand by vector_operand.

From-SVN: r272780

gcc/ChangeLog
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog

index 898b5a1d10c9ee030a8d28983502eff4ed9983e4..35c5163da277061f2d6be637d0cacff665c142ce 100644 (file)
@@ -1,3 +1,8 @@
+2019-06-28  Jan Beulich  <jbeulich@suse.com>
+
+       * config/i386/sse.md (sse2_cvtpd2pi, sse2_cvttpd2pi): Use
+       vector_operand plus, on both alternatives, "Bm" constraint.
+
 2019-06-28  Dennis Zhang  <dennis.zhang@arm.com>
 
        * config/arm/arm.md: Remove redundant constraints from
index 8b4f6c185d0b1fb98be2377a276c5f4b32621493..154681786e0e0f74f9647d7be3f14200c1be8f32 100644 (file)
 
 (define_insn "sse2_cvtpd2pi"
   [(set (match_operand:V2SI 0 "register_operand" "=v,?!y")
-       (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "vBm,xm")]
+       (unspec:V2SI [(match_operand:V2DF 1 "vector_operand" "vBm,xBm")]
                     UNSPEC_FIX_NOTRUNC))]
   "TARGET_SSE2"
   "@
 
 (define_insn "sse2_cvttpd2pi"
   [(set (match_operand:V2SI 0 "register_operand" "=v,?!y")
-       (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "vBm,xm")))]
+       (fix:V2SI (match_operand:V2DF 1 "vector_operand" "vBm,xBm")))]
   "TARGET_SSE2"
   "@
    * return TARGET_AVX ? \"vcvttpd2dq{x}\t{%1, %0|%0, %1}\" : \"cvttpd2dq\t{%1, %0|%0, %1}\";
index ed07047a984925444eb915cad5f624b47b613257..a1fbb04a997719a4691cbc9a968ff039b8a461e6 100644 (file)
@@ -1,3 +1,7 @@
+2019-06-28  Jan Beulich  <jbeulich@suse.com>
+
+       * gcc.target/i386/cvtpd2pi: New.
+
 2019-06-27  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/91024