sse.md (sse_storehps, [...]): Require in condition that at least one operand is not...
authorJakub Jelinek <jakub@redhat.com>
Sun, 5 Mar 2017 21:41:10 +0000 (22:41 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sun, 5 Mar 2017 21:41:10 +0000 (22:41 +0100)
* config/i386/sse.md (sse_storehps, sse_storelps,
avx_<castmode><avxsizesuffix>_<castmode>,
avx512f_<castmode><avxsizesuffix>_<castmode>,
avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
in condition that at least one operand is not a MEM.

From-SVN: r245904

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

index ad56f70..3432411 100644 (file)
@@ -1,3 +1,11 @@
+2017-03-05  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/i386/sse.md (sse_storehps, sse_storelps,
+       avx_<castmode><avxsizesuffix>_<castmode>,
+       avx512f_<castmode><avxsizesuffix>_<castmode>,
+       avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
+       in condition that at least one operand is not a MEM.
+
 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/79805
index a6f1de7..52ddfd8 100644 (file)
        (vec_select:V2SF
          (match_operand:V4SF 1 "nonimmediate_operand" "v,v,o")
          (parallel [(const_int 2) (const_int 3)])))]
-  "TARGET_SSE"
+  "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "@
    %vmovhps\t{%1, %0|%q0, %1}
    %vmovhlps\t{%1, %d0|%d0, %1}
        (vec_select:V2SF
          (match_operand:V4SF 1 "nonimmediate_operand" " v,v,m")
          (parallel [(const_int 0) (const_int 1)])))]
-  "TARGET_SSE"
+  "TARGET_SSE && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "@
    %vmovlps\t{%1, %0|%q0, %1}
    %vmovaps\t{%1, %0|%0, %1}
        (unspec:AVX256MODE2P
          [(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x")]
          UNSPEC_CAST))]
-  "TARGET_AVX"
+  "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (match_dup 1))]
        (unspec:AVX512MODE2P
          [(match_operand:<ssequartermode> 1 "nonimmediate_operand" "xm,x")]
          UNSPEC_CAST))]
-  "TARGET_AVX512F"
+  "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (match_dup 1))]
        (unspec:AVX512MODE2P
          [(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x")]
          UNSPEC_CAST))]
-  "TARGET_AVX512F"
+  "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "#"
   "&& reload_completed"
   [(set (match_dup 0) (match_dup 1))]