sse.md (<avx512>_fmadd_<mode>_mask<round_name>, [...]): Use <round_nimm_predicate...
authorJakub Jelinek <jakub@redhat.com>
Fri, 22 Mar 2019 10:12:18 +0000 (11:12 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 22 Mar 2019 10:12:18 +0000 (11:12 +0100)
* config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
<avx512>_fmadd_<mode>_mask3<round_name>,
<avx512>_fmsub_<mode>_mask<round_name>,
<avx512>_fmsub_<mode>_mask3<round_name>,
<avx512>_fnmadd_<mode>_mask<round_name>,
<avx512>_fnmadd_<mode>_mask3<round_name>,
<avx512>_fnmsub_<mode>_mask<round_name>,
<avx512>_fnmsub_<mode>_mask3<round_name>,
<avx512>_fmaddsub_<mode>_mask<round_name>,
<avx512>_fmaddsub_<mode>_mask3<round_name>,
<avx512>_fmsubadd_<mode>_mask<round_name>,
<avx512>_fmsubadd_<mode>_mask3<round_name>): Use
<round_nimm_predicate> instead of nonimmediate_operand.
(fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
fmai_vmfnmadd_<mode><round_name>, fmai_vmfnmsub_<mode><round_name>):
Use register_operand instead of <round_nimm_predicate> for the
operand that needs to match output.
(*fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
*fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>):
Likewise.  Formatting fixes.

From-SVN: r269869

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

index 6601be5319713cf62c2957318fcfffca25b188b2..4e4fde867c4879d054fb090ff3724e223ca15a23 100644 (file)
@@ -1,5 +1,26 @@
 2019-03-22  Jakub Jelinek  <jakub@redhat.com>
 
+       * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
+       <avx512>_fmadd_<mode>_mask3<round_name>,
+       <avx512>_fmsub_<mode>_mask<round_name>,
+       <avx512>_fmsub_<mode>_mask3<round_name>,
+       <avx512>_fnmadd_<mode>_mask<round_name>,
+       <avx512>_fnmadd_<mode>_mask3<round_name>,
+       <avx512>_fnmsub_<mode>_mask<round_name>,
+       <avx512>_fnmsub_<mode>_mask3<round_name>,
+       <avx512>_fmaddsub_<mode>_mask<round_name>,
+       <avx512>_fmaddsub_<mode>_mask3<round_name>,
+       <avx512>_fmsubadd_<mode>_mask<round_name>,
+       <avx512>_fmsubadd_<mode>_mask3<round_name>): Use
+       <round_nimm_predicate> instead of nonimmediate_operand.
+       (fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
+       fmai_vmfnmadd_<mode><round_name>, fmai_vmfnmsub_<mode><round_name>):
+       Use register_operand instead of <round_nimm_predicate> for the
+       operand that needs to match output.
+       (*fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
+       *fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>):
+       Likewise.  Formatting fixes.
+
        PR target/89784
        * config/i386/i386.c (enum ix86_builtins): Remove
        IX86_BUILTIN_VFMSUBSD3_MASK3 and IX86_BUILTIN_VFMSUBSS3_MASK3.
index dc588ec1ccbdba624d3af1b12fe589a7125ba2c5..e74521a27292644336781b9ea3091f3fc0a528d2 100644 (file)
        (vec_merge:VF_AVX512VL
          (fma:VF_AVX512VL
            (match_operand:VF_AVX512VL 1 "register_operand" "0,0")
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>,v")
-           (match_operand:VF_AVX512VL 3 "nonimmediate_operand" "v,<round_constraint>"))
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>,v")
+           (match_operand:VF_AVX512VL 3 "<round_nimm_predicate>" "v,<round_constraint>"))
          (match_dup 1)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F && <round_mode512bit_condition>"
        (vec_merge:VF_AVX512VL
          (fma:VF_AVX512VL
            (match_operand:VF_AVX512VL 1 "register_operand" "v")
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>")
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>")
            (match_operand:VF_AVX512VL 3 "register_operand" "0"))
          (match_dup 3)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
        (vec_merge:VF_AVX512VL
          (fma:VF_AVX512VL
            (match_operand:VF_AVX512VL 1 "register_operand" "0,0")
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>,v")
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>,v")
            (neg:VF_AVX512VL
-             (match_operand:VF_AVX512VL 3 "nonimmediate_operand" "v,<round_constraint>")))
+             (match_operand:VF_AVX512VL 3 "<round_nimm_predicate>" "v,<round_constraint>")))
          (match_dup 1)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F"
        (vec_merge:VF_AVX512VL
          (fma:VF_AVX512VL
            (match_operand:VF_AVX512VL 1 "register_operand" "v")
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>")
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>")
            (neg:VF_AVX512VL
              (match_operand:VF_AVX512VL 3 "register_operand" "0")))
          (match_dup 3)
          (fma:VF_AVX512VL
            (neg:VF_AVX512VL
              (match_operand:VF_AVX512VL 1 "register_operand" "0,0"))
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>,v")
-           (match_operand:VF_AVX512VL 3 "nonimmediate_operand" "v,<round_constraint>"))
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>,v")
+           (match_operand:VF_AVX512VL 3 "<round_nimm_predicate>" "v,<round_constraint>"))
          (match_dup 1)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F && <round_mode512bit_condition>"
          (fma:VF_AVX512VL
            (neg:VF_AVX512VL
              (match_operand:VF_AVX512VL 1 "register_operand" "v"))
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>")
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>")
            (match_operand:VF_AVX512VL 3 "register_operand" "0"))
          (match_dup 3)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
          (fma:VF_AVX512VL
            (neg:VF_AVX512VL
              (match_operand:VF_AVX512VL 1 "register_operand" "0,0"))
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>,v")
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>,v")
            (neg:VF_AVX512VL
-             (match_operand:VF_AVX512VL 3 "nonimmediate_operand" "v,<round_constraint>")))
+             (match_operand:VF_AVX512VL 3 "<round_nimm_predicate>" "v,<round_constraint>")))
          (match_dup 1)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F && <round_mode512bit_condition>"
          (fma:VF_AVX512VL
            (neg:VF_AVX512VL
              (match_operand:VF_AVX512VL 1 "register_operand" "v"))
-           (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>")
+           (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>")
            (neg:VF_AVX512VL
              (match_operand:VF_AVX512VL 3 "register_operand" "0")))
          (match_dup 3)
        (vec_merge:VF_AVX512VL
          (unspec:VF_AVX512VL
            [(match_operand:VF_AVX512VL 1 "register_operand" "0,0")
-            (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>,v")
-            (match_operand:VF_AVX512VL 3 "nonimmediate_operand" "v,<round_constraint>")]
+            (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>,v")
+            (match_operand:VF_AVX512VL 3 "<round_nimm_predicate>" "v,<round_constraint>")]
            UNSPEC_FMADDSUB)
          (match_dup 1)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk,Yk")))]
        (vec_merge:VF_AVX512VL
          (unspec:VF_AVX512VL
            [(match_operand:VF_AVX512VL 1 "register_operand" "v")
-            (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>")
+            (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>")
             (match_operand:VF_AVX512VL 3 "register_operand" "0")]
            UNSPEC_FMADDSUB)
          (match_dup 3)
        (vec_merge:VF_AVX512VL
          (unspec:VF_AVX512VL
            [(match_operand:VF_AVX512VL 1 "register_operand" "0,0")
-            (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>,v")
+            (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>,v")
             (neg:VF_AVX512VL
-              (match_operand:VF_AVX512VL 3 "nonimmediate_operand" "v,<round_constraint>"))]
+              (match_operand:VF_AVX512VL 3 "<round_nimm_predicate>" "v,<round_constraint>"))]
            UNSPEC_FMADDSUB)
          (match_dup 1)
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk,Yk")))]
        (vec_merge:VF_AVX512VL
          (unspec:VF_AVX512VL
            [(match_operand:VF_AVX512VL 1 "register_operand" "v")
-            (match_operand:VF_AVX512VL 2 "nonimmediate_operand" "<round_constraint>")
+            (match_operand:VF_AVX512VL 2 "<round_nimm_predicate>" "<round_constraint>")
             (neg:VF_AVX512VL
               (match_operand:VF_AVX512VL 3 "register_operand" "0"))]
            UNSPEC_FMADDSUB)
   [(set (match_operand:VF_128 0 "register_operand")
        (vec_merge:VF_128
          (fma:VF_128
-           (match_operand:VF_128 1 "<round_nimm_predicate>")
+           (match_operand:VF_128 1 "register_operand")
            (match_operand:VF_128 2 "<round_nimm_predicate>")
            (match_operand:VF_128 3 "<round_nimm_predicate>"))
          (match_dup 1)
   [(set (match_operand:VF_128 0 "register_operand")
        (vec_merge:VF_128
          (fma:VF_128
-           (match_operand:VF_128 1 "<round_nimm_predicate>")
+           (match_operand:VF_128 1 "register_operand")
            (match_operand:VF_128 2 "<round_nimm_predicate>")
            (neg:VF_128
              (match_operand:VF_128 3 "<round_nimm_predicate>")))
          (fma:VF_128
            (neg:VF_128
              (match_operand:VF_128 2 "<round_nimm_predicate>"))
-           (match_operand:VF_128 1 "<round_nimm_predicate>")
+           (match_operand:VF_128 1 "register_operand")
            (match_operand:VF_128 3 "<round_nimm_predicate>"))
          (match_dup 1)
          (const_int 1)))]
          (fma:VF_128
            (neg:VF_128
              (match_operand:VF_128 2 "<round_nimm_predicate>"))
-           (match_operand:VF_128 1 "<round_nimm_predicate>")
+           (match_operand:VF_128 1 "register_operand")
            (neg:VF_128
              (match_operand:VF_128 3 "<round_nimm_predicate>")))
          (match_dup 1)
   [(set (match_operand:VF_128 0 "register_operand" "=v,v")
         (vec_merge:VF_128
          (fma:VF_128
-           (match_operand:VF_128 1 "<round_nimm_predicate>" " 0, 0")
+           (match_operand:VF_128 1 "register_operand" "0,0")
            (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>, v")
-           (match_operand:VF_128 3 "<round_nimm_predicate>" " v,<round_constraint>"))
+           (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))
          (match_dup 1)
          (const_int 1)))]
   "TARGET_FMA || TARGET_AVX512F"
   [(set (match_operand:VF_128 0 "register_operand" "=v,v")
         (vec_merge:VF_128
          (fma:VF_128
-           (match_operand:VF_128   1 "<round_nimm_predicate>" "0,0")
+           (match_operand:VF_128   1 "register_operand" "0,0")
            (match_operand:VF_128   2 "<round_nimm_predicate>" "<round_constraint>,v")
            (neg:VF_128
-             (match_operand:VF_128 3 "<round_nimm_predicate>" " v,<round_constraint>")))
+             (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")))
          (match_dup 1)
          (const_int 1)))]
   "TARGET_FMA || TARGET_AVX512F"
          (fma:VF_128
            (neg:VF_128
              (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v"))
-           (match_operand:VF_128   1 "<round_nimm_predicate>" "0,0")
+           (match_operand:VF_128   1 "register_operand" "0,0")
            (match_operand:VF_128   3 "<round_nimm_predicate>" "v,<round_constraint>"))
          (match_dup 1)
          (const_int 1)))]
         (vec_merge:VF_128
          (fma:VF_128
            (neg:VF_128
-             (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>, v"))
-           (match_operand:VF_128   1 "<round_nimm_predicate>" " 0, 0")
+             (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v"))
+           (match_operand:VF_128   1 "register_operand" "0,0")
            (neg:VF_128
-             (match_operand:VF_128 3 "<round_nimm_predicate>" " v,<round_constraint>")))
+             (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")))
          (match_dup 1)
          (const_int 1)))]
   "TARGET_FMA || TARGET_AVX512F"