arm: Convert more MVE/CDE builtins to predicate qualifiers
authorChristophe Lyon <christophe.lyon@arm.com>
Wed, 13 Oct 2021 09:16:49 +0000 (09:16 +0000)
committerChristophe Lyon <christophe.lyon@foss.st.com>
Tue, 22 Feb 2022 15:55:09 +0000 (15:55 +0000)
This patch covers a few non-load/store builtins where we do not use
the <mode> iterator and thus we cannot use <MVE_vpred>.

Most of the work of this patch series was carried out while I was
working at STMicroelectronics as a Linaro assignee.

2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>

gcc/
PR target/100757
PR target/101325
* config/arm/arm-builtins.cc (CX_UNARY_UNONE_QUALIFIERS): Use
predicate.
(CX_BINARY_UNONE_QUALIFIERS): Likewise.
(CX_TERNARY_UNONE_QUALIFIERS): Likewise.
(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Delete.
(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Delete.
(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Delete.
* config/arm/arm_mve_builtins.def: Use predicated qualifiers.
* config/arm/mve.md: Use VxBI instead of HI.

gcc/config/arm/arm-builtins.cc
gcc/config/arm/arm_mve_builtins.def
gcc/config/arm/mve.md

index 5d582f1..a7acc1d 100644 (file)
@@ -295,7 +295,7 @@ static enum arm_type_qualifiers
 arm_cx_unary_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   = { qualifier_none, qualifier_immediate, qualifier_none,
       qualifier_unsigned_immediate,
-      qualifier_unsigned };
+      qualifier_predicate };
 #define CX_UNARY_UNONE_QUALIFIERS (arm_cx_unary_unone_qualifiers)
 
 /* T (immediate, T, T, unsigned immediate).  */
@@ -304,7 +304,7 @@ arm_cx_binary_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   = { qualifier_none, qualifier_immediate,
       qualifier_none, qualifier_none,
       qualifier_unsigned_immediate,
-      qualifier_unsigned };
+      qualifier_predicate };
 #define CX_BINARY_UNONE_QUALIFIERS (arm_cx_binary_unone_qualifiers)
 
 /* T (immediate, T, T, T, unsigned immediate).  */
@@ -313,7 +313,7 @@ arm_cx_ternary_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   = { qualifier_none, qualifier_immediate,
       qualifier_none, qualifier_none, qualifier_none,
       qualifier_unsigned_immediate,
-      qualifier_unsigned };
+      qualifier_predicate };
 #define CX_TERNARY_UNONE_QUALIFIERS (arm_cx_ternary_unone_qualifiers)
 
 /* The first argument (return type) of a store should be void type,
@@ -510,12 +510,6 @@ arm_ternop_none_none_none_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   (arm_ternop_none_none_none_imm_qualifiers)
 
 static enum arm_type_qualifiers
-arm_ternop_none_none_none_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
-  = { qualifier_none, qualifier_none, qualifier_none, qualifier_unsigned };
-#define TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS \
-  (arm_ternop_none_none_none_unone_qualifiers)
-
-static enum arm_type_qualifiers
 arm_ternop_none_none_none_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   = { qualifier_none, qualifier_none, qualifier_none, qualifier_predicate };
 #define TERNOP_NONE_NONE_NONE_PRED_QUALIFIERS \
@@ -568,13 +562,6 @@ arm_quadop_unone_unone_none_none_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   (arm_quadop_unone_unone_none_none_pred_qualifiers)
 
 static enum arm_type_qualifiers
-arm_quadop_none_none_none_none_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
-  = { qualifier_none, qualifier_none, qualifier_none, qualifier_none,
-    qualifier_unsigned };
-#define QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS \
-  (arm_quadop_none_none_none_none_unone_qualifiers)
-
-static enum arm_type_qualifiers
 arm_quadop_none_none_none_none_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   = { qualifier_none, qualifier_none, qualifier_none, qualifier_none,
     qualifier_predicate };
@@ -589,13 +576,6 @@ arm_quadop_none_none_none_imm_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   (arm_quadop_none_none_none_imm_pred_qualifiers)
 
 static enum arm_type_qualifiers
-arm_quadop_unone_unone_unone_unone_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
-  = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned,
-    qualifier_unsigned, qualifier_unsigned };
-#define QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS \
-  (arm_quadop_unone_unone_unone_unone_unone_qualifiers)
-
-static enum arm_type_qualifiers
 arm_quadop_unone_unone_unone_unone_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
   = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned,
     qualifier_unsigned, qualifier_predicate };
index 7db6d47..1c8ee34 100644 (file)
@@ -87,8 +87,8 @@ VAR4 (BINOP_UNONE_UNONE_UNONE, vcreateq_u, v16qi, v8hi, v4si, v2di)
 VAR4 (BINOP_NONE_UNONE_UNONE, vcreateq_s, v16qi, v8hi, v4si, v2di)
 VAR3 (BINOP_UNONE_UNONE_IMM, vshrq_n_u, v16qi, v8hi, v4si)
 VAR3 (BINOP_NONE_NONE_IMM, vshrq_n_s, v16qi, v8hi, v4si)
-VAR1 (BINOP_NONE_NONE_UNONE, vaddlvq_p_s, v4si)
-VAR1 (BINOP_UNONE_UNONE_UNONE, vaddlvq_p_u, v4si)
+VAR1 (BINOP_NONE_NONE_PRED, vaddlvq_p_s, v4si)
+VAR1 (BINOP_UNONE_UNONE_PRED, vaddlvq_p_u, v4si)
 VAR3 (BINOP_PRED_NONE_NONE, vcmpneq_, v16qi, v8hi, v4si)
 VAR3 (BINOP_NONE_NONE_NONE, vshlq_s, v16qi, v8hi, v4si)
 VAR3 (BINOP_UNONE_UNONE_NONE, vshlq_u, v16qi, v8hi, v4si)
@@ -465,20 +465,20 @@ VAR2 (TERNOP_NONE_NONE_NONE_IMM, vqshrnbq_n_s, v8hi, v4si)
 VAR2 (TERNOP_NONE_NONE_NONE_IMM, vqrshrntq_n_s, v8hi, v4si)
 VAR2 (TERNOP_NONE_NONE_IMM_PRED, vorrq_m_n_s, v8hi, v4si)
 VAR2 (TERNOP_NONE_NONE_IMM_PRED, vmvnq_m_n_s, v8hi, v4si)
-VAR1 (TERNOP_UNONE_UNONE_UNONE_UNONE, vrmlaldavhq_p_u, v4si)
-VAR1 (TERNOP_UNONE_UNONE_UNONE_UNONE, vrev16q_m_u, v16qi)
-VAR1 (TERNOP_UNONE_UNONE_UNONE_UNONE, vaddlvaq_p_u, v4si)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vrmlsldavhxq_p_s, v4si)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vrmlsldavhq_p_s, v4si)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vrmlaldavhxq_p_s, v4si)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vrmlaldavhq_p_s, v4si)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vrev32q_m_f, v8hf)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vrev16q_m_s, v16qi)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vcvttq_m_f32_f16, v4sf)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vcvttq_m_f16_f32, v8hf)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vcvtbq_m_f32_f16, v4sf)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vcvtbq_m_f16_f32, v8hf)
-VAR1 (TERNOP_NONE_NONE_NONE_UNONE, vaddlvaq_p_s, v4si)
+VAR1 (TERNOP_UNONE_UNONE_UNONE_PRED, vrmlaldavhq_p_u, v4si)
+VAR1 (TERNOP_UNONE_UNONE_UNONE_PRED, vrev16q_m_u, v16qi)
+VAR1 (TERNOP_UNONE_UNONE_UNONE_PRED, vaddlvaq_p_u, v4si)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vrmlsldavhxq_p_s, v4si)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vrmlsldavhq_p_s, v4si)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vrmlaldavhxq_p_s, v4si)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vrmlaldavhq_p_s, v4si)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vrev32q_m_f, v8hf)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vrev16q_m_s, v16qi)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vcvttq_m_f32_f16, v4sf)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vcvttq_m_f16_f32, v8hf)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vcvtbq_m_f32_f16, v4sf)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vcvtbq_m_f16_f32, v8hf)
+VAR1 (TERNOP_NONE_NONE_NONE_PRED, vaddlvaq_p_s, v4si)
 VAR1 (TERNOP_NONE_NONE_NONE_NONE, vrmlsldavhaxq_s, v4si)
 VAR1 (TERNOP_NONE_NONE_NONE_NONE, vrmlsldavhaq_s, v4si)
 VAR1 (TERNOP_NONE_NONE_NONE_NONE, vrmlaldavhaxq_s, v4si)
@@ -629,11 +629,11 @@ VAR2 (QUADOP_NONE_NONE_NONE_IMM_PRED, vqshrntq_m_n_s, v8hi, v4si)
 VAR2 (QUADOP_NONE_NONE_NONE_IMM_PRED, vqshrnbq_m_n_s, v8hi, v4si)
 VAR2 (QUADOP_NONE_NONE_NONE_IMM_PRED, vqrshrntq_m_n_s, v8hi, v4si)
 VAR2 (QUADOP_NONE_NONE_NONE_IMM_PRED, vqrshrnbq_m_n_s, v8hi, v4si)
-VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE, vrmlaldavhaq_p_u, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vrmlsldavhaxq_p_s, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vrmlsldavhaq_p_s, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vrmlaldavhaxq_p_s, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vrmlaldavhaq_p_s, v4si)
+VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_PRED, vrmlaldavhaq_p_u, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vrmlsldavhaxq_p_s, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vrmlsldavhaq_p_s, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vrmlaldavhaxq_p_s, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vrmlaldavhaq_p_s, v4si)
 VAR2 (QUADOP_UNONE_UNONE_NONE_IMM_PRED, vcvtq_m_n_from_f_u, v8hi, v4si)
 VAR2 (QUADOP_NONE_NONE_NONE_IMM_PRED, vcvtq_m_n_from_f_s, v8hi, v4si)
 VAR2 (QUADOP_NONE_NONE_NONE_NONE_PRED, vbrsrq_m_n_f, v8hf, v4sf)
@@ -845,14 +845,14 @@ VAR1 (BINOP_NONE_NONE_NONE, vsbciq_s, v4si)
 VAR1 (BINOP_UNONE_UNONE_UNONE, vsbciq_u, v4si)
 VAR1 (BINOP_NONE_NONE_NONE, vsbcq_s, v4si)
 VAR1 (BINOP_UNONE_UNONE_UNONE, vsbcq_u, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vadciq_m_s, v4si)
-VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE, vadciq_m_u, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vadcq_m_s, v4si)
-VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE, vadcq_m_u, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vsbciq_m_s, v4si)
-VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE, vsbciq_m_u, v4si)
-VAR1 (QUADOP_NONE_NONE_NONE_NONE_UNONE, vsbcq_m_s, v4si)
-VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE, vsbcq_m_u, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vadciq_m_s, v4si)
+VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_PRED, vadciq_m_u, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vadcq_m_s, v4si)
+VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_PRED, vadcq_m_u, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vsbciq_m_s, v4si)
+VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_PRED, vsbciq_m_u, v4si)
+VAR1 (QUADOP_NONE_NONE_NONE_NONE_PRED, vsbcq_m_s, v4si)
+VAR1 (QUADOP_UNONE_UNONE_UNONE_UNONE_PRED, vsbcq_m_u, v4si)
 VAR5 (STORE1, vst2q, v16qi, v8hi, v4si, v8hf, v4sf)
 VAR5 (LOAD1, vld4q, v16qi, v8hi, v4si, v8hf, v4sf)
 VAR5 (LOAD1, vld2q, v16qi, v8hi, v4si, v8hf, v4sf)
index e291c67..908bedc 100644 (file)
   [
    (set (match_operand:DI 0 "s_register_operand" "=r")
        (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
-                   (match_operand:HI 2 "vpr_register_operand" "Up")]
+                   (match_operand:V4BI 2 "vpr_register_operand" "Up")]
         VADDLVQ_P))
   ]
   "TARGET_HAVE_MVE"
    (set (match_operand:DI 0 "s_register_operand" "=r")
        (unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
                       (match_operand:V4SI 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
         VADDLVAQ_P))
   ]
   "TARGET_HAVE_MVE"
    (set (match_operand:V8HF 0 "s_register_operand" "=w")
        (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
                       (match_operand:V4SF 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VCVTBQ_M_F16_F32))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    (set (match_operand:V4SF 0 "s_register_operand" "=w")
        (unspec:V4SF [(match_operand:V4SF 1 "s_register_operand" "0")
                       (match_operand:V8HF 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VCVTBQ_M_F32_F16))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    (set (match_operand:V8HF 0 "s_register_operand" "=w")
        (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
                       (match_operand:V4SF 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VCVTTQ_M_F16_F32))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    (set (match_operand:V4SF 0 "s_register_operand" "=w")
        (unspec:V4SF [(match_operand:V4SF 1 "s_register_operand" "0")
                       (match_operand:V8HF 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VCVTTQ_M_F32_F16))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    (set (match_operand:V8HF 0 "s_register_operand" "=w")
        (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
                       (match_operand:V8HF 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VREV32Q_M_F))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    (set (match_operand:DI 0 "s_register_operand" "=r")
        (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
                       (match_operand:V4SI 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VRMLALDAVHXQ_P_S))
   ]
   "TARGET_HAVE_MVE"
    (set (match_operand:DI 0 "s_register_operand" "=r")
        (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
                       (match_operand:V4SI 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VRMLSLDAVHQ_P_S))
   ]
   "TARGET_HAVE_MVE"
    (set (match_operand:DI 0 "s_register_operand" "=r")
        (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
                       (match_operand:V4SI 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
         VRMLSLDAVHXQ_P_S))
   ]
   "TARGET_HAVE_MVE"
    (set (match_operand:V16QI 0 "s_register_operand" "=w")
        (unspec:V16QI [(match_operand:V16QI 1 "s_register_operand" "0")
                       (match_operand:V16QI 2 "s_register_operand" "w")
-                      (match_operand:HI 3 "vpr_register_operand" "Up")]
+                      (match_operand:V16BI 3 "vpr_register_operand" "Up")]
         VREV16Q_M))
   ]
   "TARGET_HAVE_MVE"
    (set (match_operand:DI 0 "s_register_operand" "=r")
        (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
                    (match_operand:V4SI 2 "s_register_operand" "w")
-                   (match_operand:HI 3 "vpr_register_operand" "Up")]
+                   (match_operand:V4BI 3 "vpr_register_operand" "Up")]
         VRMLALDAVHQ_P))
   ]
   "TARGET_HAVE_MVE"
        (unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
                       (match_operand:V4SI 2 "s_register_operand" "w")
                       (match_operand:V4SI 3 "s_register_operand" "w")
-                      (match_operand:HI 4 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
         VRMLALDAVHAQ_P_S))
   ]
   "TARGET_HAVE_MVE"
        (unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
                       (match_operand:V4SI 2 "s_register_operand" "w")
                       (match_operand:V4SI 3 "s_register_operand" "w")
-                      (match_operand:HI 4 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
         VRMLALDAVHAQ_P_U))
   ]
   "TARGET_HAVE_MVE"
        (unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
                       (match_operand:V4SI 2 "s_register_operand" "w")
                       (match_operand:V4SI 3 "s_register_operand" "w")
-                      (match_operand:HI 4 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
         VRMLALDAVHAXQ_P_S))
   ]
   "TARGET_HAVE_MVE"
        (unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
                       (match_operand:V4SI 2 "s_register_operand" "w")
                       (match_operand:V4SI 3 "s_register_operand" "w")
-                      (match_operand:HI 4 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
         VRMLSLDAVHAQ_P_S))
   ]
   "TARGET_HAVE_MVE"
        (unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
                       (match_operand:V4SI 2 "s_register_operand" "w")
                       (match_operand:V4SI 3 "s_register_operand" "w")
-                      (match_operand:HI 4 "vpr_register_operand" "Up")]
+                      (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
         VRMLSLDAVHAXQ_P_S))
   ]
   "TARGET_HAVE_MVE"
 (define_insn "mve_vldrhq_z_fv8hf"
   [(set (match_operand:V8HF 0 "s_register_operand" "=w")
        (unspec:V8HF [(match_operand:V8HI 1 "mve_memory_operand" "Ux")
-       (match_operand:HI 2 "vpr_register_operand" "Up")]
+       (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
         VLDRHQ_F))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
 (define_insn "mve_vstrwq_p_fv4sf"
   [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
        (unspec:V4SI [(match_operand:V4SF 1 "s_register_operand" "w")
-                     (match_operand:HI 2 "vpr_register_operand" "Up")]
+                     (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
         VSTRWQ_F))
   ]
   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
        (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
                      (match_operand:V4SI 2 "s_register_operand" "w")
                      (match_operand:V4SI 3 "s_register_operand" "w")
-                     (match_operand:HI 4 "vpr_register_operand" "Up")]
+                     (match_operand:V4BI 4 "vpr_register_operand" "Up")]
         VADCIQ_M))
    (set (reg:SI VFPCC_REGNUM)
        (unspec:SI [(const_int 0)]
        (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
                      (match_operand:V4SI 2 "s_register_operand" "w")
                      (match_operand:V4SI 3 "s_register_operand" "w")
-                     (match_operand:HI 4 "vpr_register_operand" "Up")]
+                     (match_operand:V4BI 4 "vpr_register_operand" "Up")]
         VADCQ_M))
    (set (reg:SI VFPCC_REGNUM)
        (unspec:SI [(reg:SI VFPCC_REGNUM)]
        (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
                      (match_operand:V4SI 2 "s_register_operand" "w")
                      (match_operand:V4SI 3 "s_register_operand" "w")
-                     (match_operand:HI 4 "vpr_register_operand" "Up")]
+                     (match_operand:V4BI 4 "vpr_register_operand" "Up")]
         VSBCIQ_M))
    (set (reg:SI VFPCC_REGNUM)
        (unspec:SI [(const_int 0)]
        (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
                      (match_operand:V4SI 2 "s_register_operand" "w")
                      (match_operand:V4SI 3 "s_register_operand" "w")
-                     (match_operand:HI 4 "vpr_register_operand" "Up")]
+                     (match_operand:V4BI 4 "vpr_register_operand" "Up")]
         VSBCQ_M))
    (set (reg:SI VFPCC_REGNUM)
        (unspec:SI [(reg:SI VFPCC_REGNUM)]
        (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
                           (match_operand:V16QI 2 "register_operand" "0")
                           (match_operand:SI 3 "const_int_mve_cde1_operand" "i")
-                          (match_operand:HI 4 "vpr_register_operand" "Up")]
+                          (match_operand:V16BI 4 "vpr_register_operand" "Up")]
         CDE_VCX))]
   "TARGET_CDE && TARGET_HAVE_MVE"
   "vpst\;vcx1<a>t\\tp%c1, %q0, #%c3"
                          (match_operand:V16QI 2 "register_operand" "0")
                          (match_operand:V16QI 3 "register_operand" "t")
                          (match_operand:SI 4 "const_int_mve_cde2_operand" "i")
-                         (match_operand:HI 5 "vpr_register_operand" "Up")]
+                         (match_operand:V16BI 5 "vpr_register_operand" "Up")]
         CDE_VCX))]
   "TARGET_CDE && TARGET_HAVE_MVE"
   "vpst\;vcx2<a>t\\tp%c1, %q0, %q3, #%c4"
                          (match_operand:V16QI 3 "register_operand" "t")
                          (match_operand:V16QI 4 "register_operand" "t")
                          (match_operand:SI 5 "const_int_mve_cde3_operand" "i")
-                         (match_operand:HI 6 "vpr_register_operand" "Up")]
+                         (match_operand:V16BI 6 "vpr_register_operand" "Up")]
         CDE_VCX))]
   "TARGET_CDE && TARGET_HAVE_MVE"
   "vpst\;vcx3<a>t\\tp%c1, %q0, %q3, %q4, #%c5"