Factorize vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqrdmladhq,
vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq builtins so that they use the
same parameterized names.

2022-12-12  Christophe Lyon  <christophe.l...@arm.com>

        gcc/
        * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
        (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
        vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
        (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
        VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
        * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
        (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
        (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
        (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
        (mve_vqdmladhq_s<mode>): Merge into ...
        (@mve_<mve_insn>q_<supf><mode>): ... this.
---
 gcc/config/arm/iterators.md |  27 ++++++++
 gcc/config/arm/mve.md       | 127 ++++--------------------------------
 2 files changed, 38 insertions(+), 116 deletions(-)

diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
index 7a88bc91182..c23ca7361c1 100644
--- a/gcc/config/arm/iterators.md
+++ b/gcc/config/arm/iterators.md
@@ -755,6 +755,17 @@ (define_int_iterator MVE_VMLxLDAVAxQ_P [
                     VMLSLDAVAXQ_P_S
                     ])
 
+(define_int_iterator MVE_VQxDMLxDHxQ_S [
+                    VQDMLADHQ_S
+                    VQDMLADHXQ_S
+                    VQDMLSDHQ_S
+                    VQDMLSDHXQ_S
+                    VQRDMLADHQ_S
+                    VQRDMLADHXQ_S
+                    VQRDMLSDHQ_S
+                    VQRDMLSDHXQ_S
+                    ])
+
 (define_int_iterator MVE_VRMLxLDAVxQ [
                     VRMLALDAVHQ_S VRMLALDAVHQ_U
                     VRMLALDAVHXQ_S
@@ -948,11 +959,15 @@ (define_int_attr mve_insn [
                 (VQADDQ_N_S "vqadd") (VQADDQ_N_U "vqadd")
                 (VQADDQ_S "vqadd") (VQADDQ_U "vqadd")
                 (VQDMLADHQ_M_S "vqdmladh")
+                (VQDMLADHQ_S "vqdmladh")
                 (VQDMLADHXQ_M_S "vqdmladhx")
+                (VQDMLADHXQ_S "vqdmladhx")
                 (VQDMLAHQ_M_N_S "vqdmlah")
                 (VQDMLASHQ_M_N_S "vqdmlash")
                 (VQDMLSDHQ_M_S "vqdmlsdh")
+                (VQDMLSDHQ_S "vqdmlsdh")
                 (VQDMLSDHXQ_M_S "vqdmlsdhx")
+                (VQDMLSDHXQ_S "vqdmlsdhx")
                 (VQDMULHQ_M_N_S "vqdmulh")
                 (VQDMULHQ_M_S "vqdmulh")
                 (VQDMULHQ_N_S "vqdmulh")
@@ -968,11 +983,15 @@ (define_int_attr mve_insn [
                 (VQNEGQ_M_S "vqneg")
                 (VQNEGQ_S "vqneg")
                 (VQRDMLADHQ_M_S "vqrdmladh")
+                (VQRDMLADHQ_S "vqrdmladh")
                 (VQRDMLADHXQ_M_S "vqrdmladhx")
+                (VQRDMLADHXQ_S "vqrdmladhx")
                 (VQRDMLAHQ_M_N_S "vqrdmlah")
                 (VQRDMLASHQ_M_N_S "vqrdmlash")
                 (VQRDMLSDHQ_M_S "vqrdmlsdh")
+                (VQRDMLSDHQ_S "vqrdmlsdh")
                 (VQRDMLSDHXQ_M_S "vqrdmlsdhx")
+                (VQRDMLSDHXQ_S "vqrdmlsdhx")
                 (VQRDMULHQ_M_N_S "vqrdmulh")
                 (VQRDMULHQ_M_S "vqrdmulh")
                 (VQRDMULHQ_N_S "vqrdmulh")
@@ -2379,6 +2398,14 @@ (define_int_attr supf [(VCVTQ_TO_F_S "s") (VCVTQ_TO_F_U 
"u") (VREV16Q_S "s")
                       (VMLSLDAVAQ_S "s")
                       (VMLSLDAVAXQ_P_S "s")
                       (VMLSLDAVAXQ_S "s")
+                      (VQDMLADHQ_S "s")
+                      (VQDMLADHXQ_S "s")
+                      (VQDMLSDHQ_S "s")
+                      (VQDMLSDHXQ_S "s")
+                      (VQRDMLADHQ_S "s")
+                      (VQRDMLADHXQ_S "s")
+                      (VQRDMLSDHQ_S "s")
+                      (VQRDMLSDHXQ_S "s")
                       ])
 
 ;; Both kinds of return insn.
diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md
index c6fd634b5c0..bf4d18455fe 100644
--- a/gcc/config/arm/mve.md
+++ b/gcc/config/arm/mve.md
@@ -2051,34 +2051,25 @@ (define_insn "mve_vqdmlashq_n_<supf><mode>"
 ])
 
 ;;
-;; [vqrdmladhq_s])
+;; [vqdmladhq_s]
+;; [vqdmladhxq_s]
+;; [vqdmlsdhq_s]
+;; [vqdmlsdhxq_s]
+;; [vqrdmladhq_s]
+;; [vqrdmladhxq_s]
+;; [vqrdmlsdhq_s]
+;; [vqrdmlsdhxq_s]
 ;;
-(define_insn "mve_vqrdmladhq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQRDMLADHQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqrdmladh.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vqrdmladhxq_s])
-;;
-(define_insn "mve_vqrdmladhxq_s<mode>"
+(define_insn "@mve_<mve_insn>q_<supf><mode>"
   [
    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
        (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
                       (match_operand:MVE_2 2 "s_register_operand" "w")
                       (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQRDMLADHXQ_S))
+        MVE_VQxDMLxDHxQ_S))
   ]
   "TARGET_HAVE_MVE"
-  "vqrdmladhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
+  "<mve_insn>.s%#<V_sz_elem>\t%q0, %q2, %q3"
   [(set_attr "type" "mve_move")
 ])
 
@@ -2114,38 +2105,6 @@ (define_insn "mve_vqrdmlashq_n_<supf><mode>"
   [(set_attr "type" "mve_move")
 ])
 
-;;
-;; [vqrdmlsdhq_s])
-;;
-(define_insn "mve_vqrdmlsdhq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQRDMLSDHQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqrdmlsdh.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vqrdmlsdhxq_s])
-;;
-(define_insn "mve_vqrdmlsdhxq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQRDMLSDHXQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqrdmlsdhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
 ;;
 ;; [vqrshlq_m_n_s, vqrshlq_m_n_u]
 ;; [vrshlq_m_n_s, vrshlq_m_n_u]
@@ -2228,70 +2187,6 @@ (define_insn "mve_vsriq_n_<supf><mode>"
   [(set_attr "type" "mve_move")
 ])
 
-;;
-;; [vqdmlsdhxq_s])
-;;
-(define_insn "mve_vqdmlsdhxq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQDMLSDHXQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqdmlsdhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vqdmlsdhq_s])
-;;
-(define_insn "mve_vqdmlsdhq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQDMLSDHQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqdmlsdh.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vqdmladhxq_s])
-;;
-(define_insn "mve_vqdmladhxq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQDMLADHXQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqdmladhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
-;;
-;; [vqdmladhq_s])
-;;
-(define_insn "mve_vqdmladhq_s<mode>"
-  [
-   (set (match_operand:MVE_2 0 "s_register_operand" "=w")
-       (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
-                      (match_operand:MVE_2 2 "s_register_operand" "w")
-                      (match_operand:MVE_2 3 "s_register_operand" "w")]
-        VQDMLADHQ_S))
-  ]
-  "TARGET_HAVE_MVE"
-  "vqdmladh.s%#<V_sz_elem>\t%q0, %q2, %q3"
-  [(set_attr "type" "mve_move")
-])
-
 ;;
 ;; [vabsq_m_f]
 ;; [vnegq_m_f]
-- 
2.34.1

Reply via email to