sse.md (*<code>v8hi3, [...]): Add avx512bw alternative.
authorJakub Jelinek <jakub@redhat.com>
Fri, 6 May 2016 13:16:00 +0000 (15:16 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 6 May 2016 13:16:00 +0000 (15:16 +0200)
* config/i386/sse.md (*<code>v8hi3, *<code>v16qi3): Add
avx512bw alternative.

From-SVN: r235973

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

index 886905dbc8aa65c532876dc37570dff701d74da3..1fbc350addf7a18d55f0f01c648c20068f716710 100644 (file)
@@ -1,5 +1,8 @@
 2016-05-06  Jakub Jelinek  <jakub@redhat.com>
 
+       * config/i386/sse.md (*<code>v8hi3, *<code>v16qi3): Add
+       avx512bw alternative.
+
        * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>): Move
        before the ashr<mode>3 pattern.
 
index bb0d217583e0e94ed4a0f9e8130b056603070f8d..26463e5a0fd017e73048ca6917f6a1d775ede72b 100644 (file)
    (set_attr "mode" "TI")])
 
 (define_insn "*<code>v8hi3"
-  [(set (match_operand:V8HI 0 "register_operand" "=x,x")
+  [(set (match_operand:V8HI 0 "register_operand" "=x,x,v")
        (smaxmin:V8HI
-         (match_operand:V8HI 1 "vector_operand" "%0,x")
-         (match_operand:V8HI 2 "vector_operand" "xBm,xm")))]
+         (match_operand:V8HI 1 "vector_operand" "%0,x,v")
+         (match_operand:V8HI 2 "vector_operand" "xBm,xm,vm")))]
   "TARGET_SSE2 && ix86_binary_operator_ok (<CODE>, V8HImode, operands)"
   "@
    p<maxmin_int>w\t{%2, %0|%0, %2}
+   vp<maxmin_int>w\t{%2, %1, %0|%0, %1, %2}
    vp<maxmin_int>w\t{%2, %1, %0|%0, %1, %2}"
-  [(set_attr "isa" "noavx,avx")
+  [(set_attr "isa" "noavx,avx,avx512bw")
    (set_attr "type" "sseiadd")
-   (set_attr "prefix_data16" "1,*")
-   (set_attr "prefix_extra" "*,1")
-   (set_attr "prefix" "orig,vex")
+   (set_attr "prefix_data16" "1,*,*")
+   (set_attr "prefix_extra" "*,1,1")
+   (set_attr "prefix" "orig,vex,evex")
    (set_attr "mode" "TI")])
 
 (define_expand "<code><mode>3"
    (set_attr "mode" "TI")])
 
 (define_insn "*<code>v16qi3"
-  [(set (match_operand:V16QI 0 "register_operand" "=x,x")
+  [(set (match_operand:V16QI 0 "register_operand" "=x,x,v")
        (umaxmin:V16QI
-         (match_operand:V16QI 1 "vector_operand" "%0,x")
-         (match_operand:V16QI 2 "vector_operand" "xBm,xm")))]
+         (match_operand:V16QI 1 "vector_operand" "%0,x,v")
+         (match_operand:V16QI 2 "vector_operand" "xBm,xm,vm")))]
   "TARGET_SSE2 && ix86_binary_operator_ok (<CODE>, V16QImode, operands)"
   "@
    p<maxmin_int>b\t{%2, %0|%0, %2}
+   vp<maxmin_int>b\t{%2, %1, %0|%0, %1, %2}
    vp<maxmin_int>b\t{%2, %1, %0|%0, %1, %2}"
-  [(set_attr "isa" "noavx,avx")
+  [(set_attr "isa" "noavx,avx,avx512bw")
    (set_attr "type" "sseiadd")
-   (set_attr "prefix_data16" "1,*")
-   (set_attr "prefix_extra" "*,1")
-   (set_attr "prefix" "orig,vex")
+   (set_attr "prefix_data16" "1,*,*")
+   (set_attr "prefix_extra" "*,1,1")
+   (set_attr "prefix" "orig,vex,evex")
    (set_attr "mode" "TI")])
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;