Home | History | Annotate | Line # | Download | only in arm
      1      1.1  mrg ;; Arm M-profile Vector Extension Machine Description
      2  1.1.1.2  mrg ;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
      3      1.1  mrg ;;
      4      1.1  mrg ;; This file is part of GCC.
      5      1.1  mrg ;;
      6      1.1  mrg ;; GCC is free software; you can redistribute it and/or modify it
      7      1.1  mrg ;; under the terms of the GNU General Public License as published by
      8      1.1  mrg ;; the Free Software Foundation; either version 3, or (at your option)
      9      1.1  mrg ;; any later version.
     10      1.1  mrg ;;
     11      1.1  mrg ;; GCC is distributed in the hope that it will be useful, but
     12      1.1  mrg ;; WITHOUT ANY WARRANTY; without even the implied warranty of
     13      1.1  mrg ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14      1.1  mrg ;; General Public License for more details.
     15      1.1  mrg ;;
     16      1.1  mrg ;; You should have received a copy of the GNU General Public License
     17      1.1  mrg ;; along with GCC; see the file COPYING3.  If not see
     18      1.1  mrg ;; <http://www.gnu.org/licenses/>.
     19      1.1  mrg 
     20      1.1  mrg (define_insn "*mve_mov<mode>"
     21      1.1  mrg   [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w,w,r,w,Ux,w")
     22      1.1  mrg 	(match_operand:MVE_types 1 "general_operand" "w,r,w,Dn,UxUi,r,Dm,w,Ul"))]
     23      1.1  mrg   "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
     24      1.1  mrg {
     25      1.1  mrg   if (which_alternative == 3 || which_alternative == 6)
     26      1.1  mrg     {
     27      1.1  mrg       int width, is_valid;
     28      1.1  mrg       static char templ[40];
     29      1.1  mrg 
     30      1.1  mrg       is_valid = simd_immediate_valid_for_move (operands[1], <MODE>mode,
     31      1.1  mrg 	&operands[1], &width);
     32      1.1  mrg 
     33      1.1  mrg       gcc_assert (is_valid != 0);
     34      1.1  mrg 
     35      1.1  mrg       if (width == 0)
     36      1.1  mrg 	return "vmov.f32\t%q0, %1  @ <mode>";
     37      1.1  mrg       else
     38      1.1  mrg 	sprintf (templ, "vmov.i%d\t%%q0, %%x1  @ <mode>", width);
     39      1.1  mrg       return templ;
     40      1.1  mrg     }
     41      1.1  mrg 
     42      1.1  mrg   if (which_alternative == 4 || which_alternative == 7)
     43      1.1  mrg     {
     44      1.1  mrg       if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode || <MODE>mode == TImode)
     45      1.1  mrg 	{
     46      1.1  mrg 	  if (which_alternative == 7)
     47      1.1  mrg 	    output_asm_insn ("vstrw.32\t%q1, %E0", operands);
     48      1.1  mrg 	  else
     49      1.1  mrg 	    output_asm_insn ("vldrw.u32\t%q0, %E1",operands);
     50      1.1  mrg 	}
     51      1.1  mrg       else
     52      1.1  mrg 	{
     53      1.1  mrg 	  if (which_alternative == 7)
     54      1.1  mrg 	    output_asm_insn ("vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0", operands);
     55      1.1  mrg 	  else
     56      1.1  mrg 	    output_asm_insn ("vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1", operands);
     57      1.1  mrg 	}
     58      1.1  mrg       return "";
     59      1.1  mrg     }
     60      1.1  mrg   switch (which_alternative)
     61      1.1  mrg     {
     62      1.1  mrg     case 0:
     63      1.1  mrg       return "vmov\t%q0, %q1";
     64      1.1  mrg     case 1:
     65      1.1  mrg       return "vmov\t%e0, %Q1, %R1  @ <mode>\;vmov\t%f0, %J1, %K1";
     66      1.1  mrg     case 2:
     67      1.1  mrg       return "vmov\t%Q0, %R0, %e1  @ <mode>\;vmov\t%J0, %K0, %f1";
     68      1.1  mrg     case 5:
     69      1.1  mrg       return output_move_quad (operands);
     70      1.1  mrg     case 8:
     71      1.1  mrg 	return output_move_neon (operands);
     72      1.1  mrg     default:
     73      1.1  mrg       gcc_unreachable ();
     74      1.1  mrg       return "";
     75      1.1  mrg     }
     76      1.1  mrg }
     77      1.1  mrg   [(set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_move,mve_store,mve_load")
     78      1.1  mrg    (set_attr "length" "4,8,8,4,8,8,4,4,4")
     79      1.1  mrg    (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,*")
     80      1.1  mrg    (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,*")])
     81      1.1  mrg 
     82      1.1  mrg (define_insn "*mve_vdup<mode>"
     83      1.1  mrg   [(set (match_operand:MVE_vecs 0 "s_register_operand" "=w")
     84      1.1  mrg 	(vec_duplicate:MVE_vecs
     85      1.1  mrg 	  (match_operand:<V_elem> 1 "s_register_operand" "r")))]
     86      1.1  mrg   "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
     87      1.1  mrg   "vdup.<V_sz_elem>\t%q0, %1"
     88      1.1  mrg   [(set_attr "length" "4")
     89      1.1  mrg    (set_attr "type" "mve_move")])
     90      1.1  mrg 
     91      1.1  mrg ;;
     92      1.1  mrg ;; [vst4q])
     93      1.1  mrg ;;
     94      1.1  mrg (define_insn "mve_vst4q<mode>"
     95  1.1.1.2  mrg   [(set (match_operand:XI 0 "mve_struct_operand" "=Ug")
     96      1.1  mrg 	(unspec:XI [(match_operand:XI 1 "s_register_operand" "w")
     97      1.1  mrg 		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
     98      1.1  mrg 	 VST4Q))
     99      1.1  mrg   ]
    100      1.1  mrg   "TARGET_HAVE_MVE"
    101      1.1  mrg {
    102      1.1  mrg    rtx ops[6];
    103      1.1  mrg    int regno = REGNO (operands[1]);
    104      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
    105      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno+4);
    106      1.1  mrg    ops[2] = gen_rtx_REG (TImode, regno+8);
    107      1.1  mrg    ops[3] = gen_rtx_REG (TImode, regno+12);
    108      1.1  mrg    rtx reg  = operands[0];
    109      1.1  mrg    while (reg && !REG_P (reg))
    110      1.1  mrg     reg = XEXP (reg, 0);
    111      1.1  mrg    gcc_assert (REG_P (reg));
    112      1.1  mrg    ops[4] = reg;
    113      1.1  mrg    ops[5] = operands[0];
    114      1.1  mrg    /* Here in first three instructions data is stored to ops[4]'s location but
    115      1.1  mrg       in the fourth instruction data is stored to operands[0], this is to
    116      1.1  mrg       support the writeback.  */
    117      1.1  mrg    output_asm_insn ("vst40.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
    118      1.1  mrg 		    "vst41.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
    119      1.1  mrg 		    "vst42.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
    120      1.1  mrg 		    "vst43.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, %5", ops);
    121      1.1  mrg    return "";
    122      1.1  mrg }
    123      1.1  mrg   [(set_attr "length" "16")])
    124      1.1  mrg 
    125      1.1  mrg ;;
    126      1.1  mrg ;; [vrndq_m_f])
    127      1.1  mrg ;;
    128      1.1  mrg (define_insn "mve_vrndq_m_f<mode>"
    129      1.1  mrg   [
    130      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    131      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
    132      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
    133  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
    134      1.1  mrg 	 VRNDQ_M_F))
    135      1.1  mrg   ]
    136      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    137  1.1.1.2  mrg   "vpst\;vrintzt.f%#<V_sz_elem>\t%q0, %q2"
    138      1.1  mrg   [(set_attr "type" "mve_move")
    139      1.1  mrg    (set_attr "length""8")])
    140      1.1  mrg 
    141      1.1  mrg ;;
    142      1.1  mrg ;; [vrndxq_f])
    143      1.1  mrg ;;
    144      1.1  mrg (define_insn "mve_vrndxq_f<mode>"
    145      1.1  mrg   [
    146      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    147      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    148      1.1  mrg 	 VRNDXQ_F))
    149      1.1  mrg   ]
    150      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    151      1.1  mrg   "vrintx.f%#<V_sz_elem>	%q0, %q1"
    152      1.1  mrg   [(set_attr "type" "mve_move")
    153      1.1  mrg ])
    154      1.1  mrg 
    155      1.1  mrg ;;
    156      1.1  mrg ;; [vrndq_f])
    157      1.1  mrg ;;
    158      1.1  mrg (define_insn "mve_vrndq_f<mode>"
    159      1.1  mrg   [
    160      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    161      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    162      1.1  mrg 	 VRNDQ_F))
    163      1.1  mrg   ]
    164      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    165      1.1  mrg   "vrintz.f%#<V_sz_elem>	%q0, %q1"
    166      1.1  mrg   [(set_attr "type" "mve_move")
    167      1.1  mrg ])
    168      1.1  mrg 
    169      1.1  mrg ;;
    170      1.1  mrg ;; [vrndpq_f])
    171      1.1  mrg ;;
    172      1.1  mrg (define_insn "mve_vrndpq_f<mode>"
    173      1.1  mrg   [
    174      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    175      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    176      1.1  mrg 	 VRNDPQ_F))
    177      1.1  mrg   ]
    178      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    179      1.1  mrg   "vrintp.f%#<V_sz_elem>	%q0, %q1"
    180      1.1  mrg   [(set_attr "type" "mve_move")
    181      1.1  mrg ])
    182      1.1  mrg 
    183      1.1  mrg ;;
    184      1.1  mrg ;; [vrndnq_f])
    185      1.1  mrg ;;
    186      1.1  mrg (define_insn "mve_vrndnq_f<mode>"
    187      1.1  mrg   [
    188      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    189      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    190      1.1  mrg 	 VRNDNQ_F))
    191      1.1  mrg   ]
    192      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    193      1.1  mrg   "vrintn.f%#<V_sz_elem>	%q0, %q1"
    194      1.1  mrg   [(set_attr "type" "mve_move")
    195      1.1  mrg ])
    196      1.1  mrg 
    197      1.1  mrg ;;
    198      1.1  mrg ;; [vrndmq_f])
    199      1.1  mrg ;;
    200      1.1  mrg (define_insn "mve_vrndmq_f<mode>"
    201      1.1  mrg   [
    202      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    203      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    204      1.1  mrg 	 VRNDMQ_F))
    205      1.1  mrg   ]
    206      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    207      1.1  mrg   "vrintm.f%#<V_sz_elem>	%q0, %q1"
    208      1.1  mrg   [(set_attr "type" "mve_move")
    209      1.1  mrg ])
    210      1.1  mrg 
    211      1.1  mrg ;;
    212      1.1  mrg ;; [vrndaq_f])
    213      1.1  mrg ;;
    214      1.1  mrg (define_insn "mve_vrndaq_f<mode>"
    215      1.1  mrg   [
    216      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    217      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    218      1.1  mrg 	 VRNDAQ_F))
    219      1.1  mrg   ]
    220      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    221      1.1  mrg   "vrinta.f%#<V_sz_elem>	%q0, %q1"
    222      1.1  mrg   [(set_attr "type" "mve_move")
    223      1.1  mrg ])
    224      1.1  mrg 
    225      1.1  mrg ;;
    226      1.1  mrg ;; [vrev64q_f])
    227      1.1  mrg ;;
    228      1.1  mrg (define_insn "mve_vrev64q_f<mode>"
    229      1.1  mrg   [
    230      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=&w")
    231      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
    232      1.1  mrg 	 VREV64Q_F))
    233      1.1  mrg   ]
    234      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    235  1.1.1.2  mrg   "vrev64.%#<V_sz_elem>\t%q0, %q1"
    236      1.1  mrg   [(set_attr "type" "mve_move")
    237      1.1  mrg ])
    238      1.1  mrg 
    239      1.1  mrg ;;
    240      1.1  mrg ;; [vnegq_f])
    241      1.1  mrg ;;
    242      1.1  mrg (define_insn "mve_vnegq_f<mode>"
    243      1.1  mrg   [
    244      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    245  1.1.1.2  mrg 	(neg:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    246      1.1  mrg   ]
    247      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    248  1.1.1.2  mrg   "vneg.f%#<V_sz_elem>\t%q0, %q1"
    249      1.1  mrg   [(set_attr "type" "mve_move")
    250      1.1  mrg ])
    251      1.1  mrg 
    252      1.1  mrg ;;
    253      1.1  mrg ;; [vdupq_n_f])
    254      1.1  mrg ;;
    255      1.1  mrg (define_insn "mve_vdupq_n_f<mode>"
    256      1.1  mrg   [
    257      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    258      1.1  mrg 	(unspec:MVE_0 [(match_operand:<V_elem> 1 "s_register_operand" "r")]
    259      1.1  mrg 	 VDUPQ_N_F))
    260      1.1  mrg   ]
    261      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    262  1.1.1.2  mrg   "vdup.%#<V_sz_elem>\t%q0, %1"
    263      1.1  mrg   [(set_attr "type" "mve_move")
    264      1.1  mrg ])
    265      1.1  mrg 
    266      1.1  mrg ;;
    267      1.1  mrg ;; [vabsq_f])
    268      1.1  mrg ;;
    269      1.1  mrg (define_insn "mve_vabsq_f<mode>"
    270      1.1  mrg   [
    271      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    272  1.1.1.2  mrg 	(abs:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    273      1.1  mrg   ]
    274      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    275  1.1.1.2  mrg   "vabs.f%#<V_sz_elem>\t%q0, %q1"
    276      1.1  mrg   [(set_attr "type" "mve_move")
    277      1.1  mrg ])
    278      1.1  mrg 
    279      1.1  mrg ;;
    280      1.1  mrg ;; [vrev32q_f])
    281      1.1  mrg ;;
    282      1.1  mrg (define_insn "mve_vrev32q_fv8hf"
    283      1.1  mrg   [
    284      1.1  mrg    (set (match_operand:V8HF 0 "s_register_operand" "=w")
    285      1.1  mrg 	(unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "w")]
    286      1.1  mrg 	 VREV32Q_F))
    287      1.1  mrg   ]
    288      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    289  1.1.1.2  mrg   "vrev32.16\t%q0, %q1"
    290      1.1  mrg   [(set_attr "type" "mve_move")
    291      1.1  mrg ])
    292      1.1  mrg ;;
    293      1.1  mrg ;; [vcvttq_f32_f16])
    294      1.1  mrg ;;
    295      1.1  mrg (define_insn "mve_vcvttq_f32_f16v4sf"
    296      1.1  mrg   [
    297      1.1  mrg    (set (match_operand:V4SF 0 "s_register_operand" "=w")
    298      1.1  mrg 	(unspec:V4SF [(match_operand:V8HF 1 "s_register_operand" "w")]
    299      1.1  mrg 	 VCVTTQ_F32_F16))
    300      1.1  mrg   ]
    301      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    302  1.1.1.2  mrg   "vcvtt.f32.f16\t%q0, %q1"
    303      1.1  mrg   [(set_attr "type" "mve_move")
    304      1.1  mrg ])
    305      1.1  mrg 
    306      1.1  mrg ;;
    307      1.1  mrg ;; [vcvtbq_f32_f16])
    308      1.1  mrg ;;
    309      1.1  mrg (define_insn "mve_vcvtbq_f32_f16v4sf"
    310      1.1  mrg   [
    311      1.1  mrg    (set (match_operand:V4SF 0 "s_register_operand" "=w")
    312      1.1  mrg 	(unspec:V4SF [(match_operand:V8HF 1 "s_register_operand" "w")]
    313      1.1  mrg 	 VCVTBQ_F32_F16))
    314      1.1  mrg   ]
    315      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    316  1.1.1.2  mrg   "vcvtb.f32.f16\t%q0, %q1"
    317      1.1  mrg   [(set_attr "type" "mve_move")
    318      1.1  mrg ])
    319      1.1  mrg 
    320      1.1  mrg ;;
    321      1.1  mrg ;; [vcvtq_to_f_s, vcvtq_to_f_u])
    322      1.1  mrg ;;
    323      1.1  mrg (define_insn "mve_vcvtq_to_f_<supf><mode>"
    324      1.1  mrg   [
    325      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    326      1.1  mrg 	(unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
    327      1.1  mrg 	 VCVTQ_TO_F))
    328      1.1  mrg   ]
    329      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    330  1.1.1.2  mrg   "vcvt.f%#<V_sz_elem>.<supf>%#<V_sz_elem>\t%q0, %q1"
    331      1.1  mrg   [(set_attr "type" "mve_move")
    332      1.1  mrg ])
    333      1.1  mrg 
    334      1.1  mrg ;;
    335      1.1  mrg ;; [vrev64q_u, vrev64q_s])
    336      1.1  mrg ;;
    337      1.1  mrg (define_insn "mve_vrev64q_<supf><mode>"
    338      1.1  mrg   [
    339      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=&w")
    340      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
    341      1.1  mrg 	 VREV64Q))
    342      1.1  mrg   ]
    343      1.1  mrg   "TARGET_HAVE_MVE"
    344  1.1.1.2  mrg   "vrev64.%#<V_sz_elem>\t%q0, %q1"
    345      1.1  mrg   [(set_attr "type" "mve_move")
    346      1.1  mrg ])
    347      1.1  mrg 
    348      1.1  mrg ;;
    349      1.1  mrg ;; [vcvtq_from_f_s, vcvtq_from_f_u])
    350      1.1  mrg ;;
    351      1.1  mrg (define_insn "mve_vcvtq_from_f_<supf><mode>"
    352      1.1  mrg   [
    353      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    354      1.1  mrg 	(unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
    355      1.1  mrg 	 VCVTQ_FROM_F))
    356      1.1  mrg   ]
    357      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    358  1.1.1.2  mrg   "vcvt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q1"
    359      1.1  mrg   [(set_attr "type" "mve_move")
    360      1.1  mrg ])
    361      1.1  mrg ;; [vqnegq_s])
    362      1.1  mrg ;;
    363      1.1  mrg (define_insn "mve_vqnegq_s<mode>"
    364      1.1  mrg   [
    365      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    366      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
    367      1.1  mrg 	 VQNEGQ_S))
    368      1.1  mrg   ]
    369      1.1  mrg   "TARGET_HAVE_MVE"
    370  1.1.1.2  mrg   "vqneg.s%#<V_sz_elem>\t%q0, %q1"
    371      1.1  mrg   [(set_attr "type" "mve_move")
    372      1.1  mrg ])
    373      1.1  mrg 
    374      1.1  mrg ;;
    375      1.1  mrg ;; [vqabsq_s])
    376      1.1  mrg ;;
    377      1.1  mrg (define_insn "mve_vqabsq_s<mode>"
    378      1.1  mrg   [
    379      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    380      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
    381      1.1  mrg 	 VQABSQ_S))
    382      1.1  mrg   ]
    383      1.1  mrg   "TARGET_HAVE_MVE"
    384  1.1.1.2  mrg   "vqabs.s%#<V_sz_elem>\t%q0, %q1"
    385      1.1  mrg   [(set_attr "type" "mve_move")
    386      1.1  mrg ])
    387      1.1  mrg 
    388      1.1  mrg ;;
    389      1.1  mrg ;; [vnegq_s])
    390      1.1  mrg ;;
    391      1.1  mrg (define_insn "mve_vnegq_s<mode>"
    392      1.1  mrg   [
    393      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    394  1.1.1.2  mrg 	(neg:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    395      1.1  mrg   ]
    396      1.1  mrg   "TARGET_HAVE_MVE"
    397  1.1.1.2  mrg   "vneg.s%#<V_sz_elem>\t%q0, %q1"
    398      1.1  mrg   [(set_attr "type" "mve_move")
    399      1.1  mrg ])
    400      1.1  mrg 
    401      1.1  mrg ;;
    402      1.1  mrg ;; [vmvnq_u, vmvnq_s])
    403      1.1  mrg ;;
    404  1.1.1.2  mrg (define_insn "mve_vmvnq_u<mode>"
    405      1.1  mrg   [
    406      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    407  1.1.1.2  mrg 	(not:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    408      1.1  mrg   ]
    409      1.1  mrg   "TARGET_HAVE_MVE"
    410  1.1.1.2  mrg   "vmvn\t%q0, %q1"
    411      1.1  mrg   [(set_attr "type" "mve_move")
    412      1.1  mrg ])
    413  1.1.1.2  mrg (define_expand "mve_vmvnq_s<mode>"
    414  1.1.1.2  mrg   [
    415  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
    416  1.1.1.2  mrg 	(not:MVE_2 (match_operand:MVE_2 1 "s_register_operand")))
    417  1.1.1.2  mrg   ]
    418  1.1.1.2  mrg   "TARGET_HAVE_MVE"
    419  1.1.1.2  mrg )
    420      1.1  mrg 
    421      1.1  mrg ;;
    422      1.1  mrg ;; [vdupq_n_u, vdupq_n_s])
    423      1.1  mrg ;;
    424      1.1  mrg (define_insn "mve_vdupq_n_<supf><mode>"
    425      1.1  mrg   [
    426      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    427      1.1  mrg 	(unspec:MVE_2 [(match_operand:<V_elem> 1 "s_register_operand" "r")]
    428      1.1  mrg 	 VDUPQ_N))
    429      1.1  mrg   ]
    430      1.1  mrg   "TARGET_HAVE_MVE"
    431  1.1.1.2  mrg   "vdup.%#<V_sz_elem>\t%q0, %1"
    432      1.1  mrg   [(set_attr "type" "mve_move")
    433      1.1  mrg ])
    434      1.1  mrg 
    435      1.1  mrg ;;
    436      1.1  mrg ;; [vclzq_u, vclzq_s])
    437      1.1  mrg ;;
    438  1.1.1.2  mrg (define_insn "@mve_vclzq_s<mode>"
    439      1.1  mrg   [
    440      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    441  1.1.1.2  mrg 	(clz:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    442      1.1  mrg   ]
    443      1.1  mrg   "TARGET_HAVE_MVE"
    444  1.1.1.2  mrg   "vclz.i%#<V_sz_elem>\t%q0, %q1"
    445      1.1  mrg   [(set_attr "type" "mve_move")
    446      1.1  mrg ])
    447  1.1.1.2  mrg (define_expand "mve_vclzq_u<mode>"
    448  1.1.1.2  mrg   [
    449  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
    450  1.1.1.2  mrg 	(clz:MVE_2 (match_operand:MVE_2 1 "s_register_operand")))
    451  1.1.1.2  mrg   ]
    452  1.1.1.2  mrg   "TARGET_HAVE_MVE"
    453  1.1.1.2  mrg )
    454      1.1  mrg 
    455      1.1  mrg ;;
    456      1.1  mrg ;; [vclsq_s])
    457      1.1  mrg ;;
    458      1.1  mrg (define_insn "mve_vclsq_s<mode>"
    459      1.1  mrg   [
    460      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    461      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
    462      1.1  mrg 	 VCLSQ_S))
    463      1.1  mrg   ]
    464      1.1  mrg   "TARGET_HAVE_MVE"
    465  1.1.1.2  mrg   "vcls.s%#<V_sz_elem>\t%q0, %q1"
    466      1.1  mrg   [(set_attr "type" "mve_move")
    467      1.1  mrg ])
    468      1.1  mrg 
    469      1.1  mrg ;;
    470      1.1  mrg ;; [vaddvq_s, vaddvq_u])
    471      1.1  mrg ;;
    472  1.1.1.2  mrg (define_insn "@mve_vaddvq_<supf><mode>"
    473      1.1  mrg   [
    474      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
    475      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")]
    476      1.1  mrg 	 VADDVQ))
    477      1.1  mrg   ]
    478      1.1  mrg   "TARGET_HAVE_MVE"
    479      1.1  mrg   "vaddv.<supf>%#<V_sz_elem>\t%0, %q1"
    480      1.1  mrg   [(set_attr "type" "mve_move")
    481      1.1  mrg ])
    482      1.1  mrg 
    483      1.1  mrg ;;
    484      1.1  mrg ;; [vabsq_s])
    485      1.1  mrg ;;
    486      1.1  mrg (define_insn "mve_vabsq_s<mode>"
    487      1.1  mrg   [
    488      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    489  1.1.1.2  mrg 	(abs:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    490      1.1  mrg   ]
    491      1.1  mrg   "TARGET_HAVE_MVE"
    492      1.1  mrg   "vabs.s%#<V_sz_elem>\t%q0, %q1"
    493      1.1  mrg   [(set_attr "type" "mve_move")
    494      1.1  mrg ])
    495      1.1  mrg 
    496      1.1  mrg ;;
    497      1.1  mrg ;; [vrev32q_u, vrev32q_s])
    498      1.1  mrg ;;
    499      1.1  mrg (define_insn "mve_vrev32q_<supf><mode>"
    500      1.1  mrg   [
    501      1.1  mrg    (set (match_operand:MVE_3 0 "s_register_operand" "=w")
    502      1.1  mrg 	(unspec:MVE_3 [(match_operand:MVE_3 1 "s_register_operand" "w")]
    503      1.1  mrg 	 VREV32Q))
    504      1.1  mrg   ]
    505      1.1  mrg   "TARGET_HAVE_MVE"
    506      1.1  mrg   "vrev32.%#<V_sz_elem>\t%q0, %q1"
    507      1.1  mrg   [(set_attr "type" "mve_move")
    508      1.1  mrg ])
    509      1.1  mrg 
    510      1.1  mrg ;;
    511      1.1  mrg ;; [vmovltq_u, vmovltq_s])
    512      1.1  mrg ;;
    513      1.1  mrg (define_insn "mve_vmovltq_<supf><mode>"
    514      1.1  mrg   [
    515      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
    516      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")]
    517      1.1  mrg 	 VMOVLTQ))
    518      1.1  mrg   ]
    519      1.1  mrg   "TARGET_HAVE_MVE"
    520  1.1.1.2  mrg   "vmovlt.<supf>%#<V_sz_elem>\t%q0, %q1"
    521      1.1  mrg   [(set_attr "type" "mve_move")
    522      1.1  mrg ])
    523      1.1  mrg 
    524      1.1  mrg ;;
    525      1.1  mrg ;; [vmovlbq_s, vmovlbq_u])
    526      1.1  mrg ;;
    527      1.1  mrg (define_insn "mve_vmovlbq_<supf><mode>"
    528      1.1  mrg   [
    529      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
    530      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")]
    531      1.1  mrg 	 VMOVLBQ))
    532      1.1  mrg   ]
    533      1.1  mrg   "TARGET_HAVE_MVE"
    534  1.1.1.2  mrg   "vmovlb.<supf>%#<V_sz_elem>\t%q0, %q1"
    535      1.1  mrg   [(set_attr "type" "mve_move")
    536      1.1  mrg ])
    537      1.1  mrg 
    538      1.1  mrg ;;
    539      1.1  mrg ;; [vcvtpq_s, vcvtpq_u])
    540      1.1  mrg ;;
    541      1.1  mrg (define_insn "mve_vcvtpq_<supf><mode>"
    542      1.1  mrg   [
    543      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    544      1.1  mrg 	(unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
    545      1.1  mrg 	 VCVTPQ))
    546      1.1  mrg   ]
    547      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    548  1.1.1.2  mrg   "vcvtp.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q1"
    549      1.1  mrg   [(set_attr "type" "mve_move")
    550      1.1  mrg ])
    551      1.1  mrg 
    552      1.1  mrg ;;
    553      1.1  mrg ;; [vcvtnq_s, vcvtnq_u])
    554      1.1  mrg ;;
    555      1.1  mrg (define_insn "mve_vcvtnq_<supf><mode>"
    556      1.1  mrg   [
    557      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    558      1.1  mrg 	(unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
    559      1.1  mrg 	 VCVTNQ))
    560      1.1  mrg   ]
    561      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    562  1.1.1.2  mrg   "vcvtn.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q1"
    563      1.1  mrg   [(set_attr "type" "mve_move")
    564      1.1  mrg ])
    565      1.1  mrg 
    566      1.1  mrg ;;
    567      1.1  mrg ;; [vcvtmq_s, vcvtmq_u])
    568      1.1  mrg ;;
    569      1.1  mrg (define_insn "mve_vcvtmq_<supf><mode>"
    570      1.1  mrg   [
    571      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    572      1.1  mrg 	(unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
    573      1.1  mrg 	 VCVTMQ))
    574      1.1  mrg   ]
    575      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    576  1.1.1.2  mrg   "vcvtm.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q1"
    577      1.1  mrg   [(set_attr "type" "mve_move")
    578      1.1  mrg ])
    579      1.1  mrg 
    580      1.1  mrg ;;
    581      1.1  mrg ;; [vcvtaq_u, vcvtaq_s])
    582      1.1  mrg ;;
    583      1.1  mrg (define_insn "mve_vcvtaq_<supf><mode>"
    584      1.1  mrg   [
    585      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    586      1.1  mrg 	(unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
    587      1.1  mrg 	 VCVTAQ))
    588      1.1  mrg   ]
    589      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    590  1.1.1.2  mrg   "vcvta.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q1"
    591      1.1  mrg   [(set_attr "type" "mve_move")
    592      1.1  mrg ])
    593      1.1  mrg 
    594      1.1  mrg ;;
    595      1.1  mrg ;; [vmvnq_n_u, vmvnq_n_s])
    596      1.1  mrg ;;
    597      1.1  mrg (define_insn "mve_vmvnq_n_<supf><mode>"
    598      1.1  mrg   [
    599      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    600  1.1.1.2  mrg 	(unspec:MVE_5 [(match_operand:<V_elem> 1 "immediate_operand" "i")]
    601      1.1  mrg 	 VMVNQ_N))
    602      1.1  mrg   ]
    603      1.1  mrg   "TARGET_HAVE_MVE"
    604  1.1.1.2  mrg   "vmvn.i%#<V_sz_elem>\t%q0, %1"
    605      1.1  mrg   [(set_attr "type" "mve_move")
    606      1.1  mrg ])
    607      1.1  mrg 
    608      1.1  mrg ;;
    609      1.1  mrg ;; [vrev16q_u, vrev16q_s])
    610      1.1  mrg ;;
    611      1.1  mrg (define_insn "mve_vrev16q_<supf>v16qi"
    612      1.1  mrg   [
    613      1.1  mrg    (set (match_operand:V16QI 0 "s_register_operand" "=w")
    614      1.1  mrg 	(unspec:V16QI [(match_operand:V16QI 1 "s_register_operand" "w")]
    615      1.1  mrg 	 VREV16Q))
    616      1.1  mrg   ]
    617      1.1  mrg   "TARGET_HAVE_MVE"
    618  1.1.1.2  mrg   "vrev16.8\t%q0, %q1"
    619      1.1  mrg   [(set_attr "type" "mve_move")
    620      1.1  mrg ])
    621      1.1  mrg 
    622      1.1  mrg ;;
    623      1.1  mrg ;; [vaddlvq_s vaddlvq_u])
    624      1.1  mrg ;;
    625      1.1  mrg (define_insn "mve_vaddlvq_<supf>v4si"
    626      1.1  mrg   [
    627      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
    628      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")]
    629      1.1  mrg 	 VADDLVQ))
    630      1.1  mrg   ]
    631      1.1  mrg   "TARGET_HAVE_MVE"
    632  1.1.1.2  mrg   "vaddlv.<supf>32\t%Q0, %R0, %q1"
    633      1.1  mrg   [(set_attr "type" "mve_move")
    634      1.1  mrg ])
    635      1.1  mrg 
    636      1.1  mrg ;;
    637      1.1  mrg ;; [vctp8q vctp16q vctp32q vctp64q])
    638      1.1  mrg ;;
    639      1.1  mrg (define_insn "mve_vctp<mode1>qhi"
    640      1.1  mrg   [
    641      1.1  mrg    (set (match_operand:HI 0 "vpr_register_operand" "=Up")
    642      1.1  mrg 	(unspec:HI [(match_operand:SI 1 "s_register_operand" "r")]
    643      1.1  mrg 	VCTPQ))
    644      1.1  mrg   ]
    645      1.1  mrg   "TARGET_HAVE_MVE"
    646  1.1.1.2  mrg   "vctp.<mode1>\t%1"
    647      1.1  mrg   [(set_attr "type" "mve_move")
    648      1.1  mrg ])
    649      1.1  mrg 
    650      1.1  mrg ;;
    651      1.1  mrg ;; [vpnot])
    652      1.1  mrg ;;
    653      1.1  mrg (define_insn "mve_vpnothi"
    654      1.1  mrg   [
    655      1.1  mrg    (set (match_operand:HI 0 "vpr_register_operand" "=Up")
    656      1.1  mrg 	(unspec:HI [(match_operand:HI 1 "vpr_register_operand" "0")]
    657      1.1  mrg 	 VPNOT))
    658      1.1  mrg   ]
    659      1.1  mrg   "TARGET_HAVE_MVE"
    660      1.1  mrg   "vpnot"
    661      1.1  mrg   [(set_attr "type" "mve_move")
    662      1.1  mrg ])
    663      1.1  mrg 
    664      1.1  mrg ;;
    665      1.1  mrg ;; [vsubq_n_f])
    666      1.1  mrg ;;
    667      1.1  mrg (define_insn "mve_vsubq_n_f<mode>"
    668      1.1  mrg   [
    669      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    670      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
    671      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
    672      1.1  mrg 	 VSUBQ_N_F))
    673      1.1  mrg   ]
    674      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    675  1.1.1.2  mrg   "vsub.f<V_sz_elem>\t%q0, %q1, %2"
    676      1.1  mrg   [(set_attr "type" "mve_move")
    677      1.1  mrg ])
    678      1.1  mrg 
    679      1.1  mrg ;;
    680      1.1  mrg ;; [vbrsrq_n_f])
    681      1.1  mrg ;;
    682      1.1  mrg (define_insn "mve_vbrsrq_n_f<mode>"
    683      1.1  mrg   [
    684      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    685      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
    686      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")]
    687      1.1  mrg 	 VBRSRQ_N_F))
    688      1.1  mrg   ]
    689      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    690  1.1.1.2  mrg   "vbrsr.<V_sz_elem>\t%q0, %q1, %2"
    691      1.1  mrg   [(set_attr "type" "mve_move")
    692      1.1  mrg ])
    693      1.1  mrg 
    694      1.1  mrg ;;
    695      1.1  mrg ;; [vcvtq_n_to_f_s, vcvtq_n_to_f_u])
    696      1.1  mrg ;;
    697      1.1  mrg (define_insn "mve_vcvtq_n_to_f_<supf><mode>"
    698      1.1  mrg   [
    699      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    700      1.1  mrg 	(unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")
    701      1.1  mrg 		       (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
    702      1.1  mrg 	 VCVTQ_N_TO_F))
    703      1.1  mrg   ]
    704      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    705      1.1  mrg   "vcvt.f<V_sz_elem>.<supf><V_sz_elem>\t%q0, %q1, %2"
    706      1.1  mrg   [(set_attr "type" "mve_move")
    707      1.1  mrg ])
    708      1.1  mrg 
    709      1.1  mrg ;; [vcreateq_f])
    710      1.1  mrg ;;
    711      1.1  mrg (define_insn "mve_vcreateq_f<mode>"
    712      1.1  mrg   [
    713      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
    714      1.1  mrg 	(unspec:MVE_0 [(match_operand:DI 1 "s_register_operand" "r")
    715      1.1  mrg 		       (match_operand:DI 2 "s_register_operand" "r")]
    716      1.1  mrg 	 VCREATEQ_F))
    717      1.1  mrg   ]
    718      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    719  1.1.1.2  mrg   "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2"
    720      1.1  mrg   [(set_attr "type" "mve_move")
    721      1.1  mrg    (set_attr "length""8")])
    722      1.1  mrg 
    723      1.1  mrg ;;
    724      1.1  mrg ;; [vcreateq_u, vcreateq_s])
    725      1.1  mrg ;;
    726      1.1  mrg (define_insn "mve_vcreateq_<supf><mode>"
    727      1.1  mrg   [
    728      1.1  mrg    (set (match_operand:MVE_1 0 "s_register_operand" "=w")
    729      1.1  mrg 	(unspec:MVE_1 [(match_operand:DI 1 "s_register_operand" "r")
    730      1.1  mrg 		       (match_operand:DI 2 "s_register_operand" "r")]
    731      1.1  mrg 	 VCREATEQ))
    732      1.1  mrg   ]
    733      1.1  mrg   "TARGET_HAVE_MVE"
    734  1.1.1.2  mrg   "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2"
    735      1.1  mrg   [(set_attr "type" "mve_move")
    736      1.1  mrg    (set_attr "length""8")])
    737      1.1  mrg 
    738      1.1  mrg ;;
    739      1.1  mrg ;; [vshrq_n_s, vshrq_n_u])
    740      1.1  mrg ;;
    741  1.1.1.2  mrg ;; Version that takes an immediate as operand 2.
    742      1.1  mrg (define_insn "mve_vshrq_n_<supf><mode>"
    743      1.1  mrg   [
    744      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    745      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
    746      1.1  mrg 		       (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
    747      1.1  mrg 	 VSHRQ_N))
    748      1.1  mrg   ]
    749      1.1  mrg   "TARGET_HAVE_MVE"
    750      1.1  mrg   "vshr.<supf><V_sz_elem>\t%q0, %q1, %2"
    751      1.1  mrg   [(set_attr "type" "mve_move")
    752      1.1  mrg ])
    753      1.1  mrg 
    754  1.1.1.2  mrg ;; Versions that take constant vectors as operand 2 (with all elements
    755  1.1.1.2  mrg ;; equal).
    756  1.1.1.2  mrg (define_insn "mve_vshrq_n_s<mode>_imm"
    757  1.1.1.2  mrg   [
    758  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    759  1.1.1.2  mrg 	(ashiftrt:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
    760  1.1.1.2  mrg 			(match_operand:MVE_2 2 "imm_for_neon_rshift_operand" "i")))
    761  1.1.1.2  mrg   ]
    762  1.1.1.2  mrg   "TARGET_HAVE_MVE"
    763  1.1.1.2  mrg   {
    764  1.1.1.2  mrg     return neon_output_shift_immediate ("vshr", 's', &operands[2],
    765  1.1.1.2  mrg 					<MODE>mode,
    766  1.1.1.2  mrg 					VALID_NEON_QREG_MODE (<MODE>mode),
    767  1.1.1.2  mrg 					true);
    768  1.1.1.2  mrg   }
    769  1.1.1.2  mrg   [(set_attr "type" "mve_move")
    770  1.1.1.2  mrg ])
    771  1.1.1.2  mrg (define_insn "mve_vshrq_n_u<mode>_imm"
    772  1.1.1.2  mrg   [
    773  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    774  1.1.1.2  mrg 	(lshiftrt:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
    775  1.1.1.2  mrg 			(match_operand:MVE_2 2 "imm_for_neon_rshift_operand" "i")))
    776  1.1.1.2  mrg   ]
    777  1.1.1.2  mrg   "TARGET_HAVE_MVE"
    778  1.1.1.2  mrg   {
    779  1.1.1.2  mrg     return neon_output_shift_immediate ("vshr", 'u', &operands[2],
    780  1.1.1.2  mrg 					<MODE>mode,
    781  1.1.1.2  mrg 					VALID_NEON_QREG_MODE (<MODE>mode),
    782  1.1.1.2  mrg 					true);
    783  1.1.1.2  mrg   }
    784  1.1.1.2  mrg   [(set_attr "type" "mve_move")
    785  1.1.1.2  mrg ])
    786  1.1.1.2  mrg 
    787      1.1  mrg ;;
    788      1.1  mrg ;; [vcvtq_n_from_f_s, vcvtq_n_from_f_u])
    789      1.1  mrg ;;
    790      1.1  mrg (define_insn "mve_vcvtq_n_from_f_<supf><mode>"
    791      1.1  mrg   [
    792      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
    793      1.1  mrg 	(unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")
    794      1.1  mrg 		       (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
    795      1.1  mrg 	 VCVTQ_N_FROM_F))
    796      1.1  mrg   ]
    797      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    798      1.1  mrg   "vcvt.<supf><V_sz_elem>.f<V_sz_elem>\t%q0, %q1, %2"
    799      1.1  mrg   [(set_attr "type" "mve_move")
    800      1.1  mrg ])
    801      1.1  mrg 
    802      1.1  mrg ;;
    803      1.1  mrg ;; [vaddlvq_p_s])
    804      1.1  mrg ;;
    805      1.1  mrg (define_insn "mve_vaddlvq_p_<supf>v4si"
    806      1.1  mrg   [
    807      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
    808      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
    809  1.1.1.2  mrg 		    (match_operand:V4BI 2 "vpr_register_operand" "Up")]
    810      1.1  mrg 	 VADDLVQ_P))
    811      1.1  mrg   ]
    812      1.1  mrg   "TARGET_HAVE_MVE"
    813  1.1.1.2  mrg   "vpst\;vaddlvt.<supf>32\t%Q0, %R0, %q1"
    814      1.1  mrg   [(set_attr "type" "mve_move")
    815      1.1  mrg    (set_attr "length""8")])
    816      1.1  mrg 
    817      1.1  mrg ;;
    818  1.1.1.2  mrg ;; [vcmpneq_, vcmpcsq_, vcmpeqq_, vcmpgeq_, vcmpgtq_, vcmphiq_, vcmpleq_, vcmpltq_])
    819      1.1  mrg ;;
    820  1.1.1.2  mrg (define_insn "@mve_vcmp<mve_cmp_op>q_<mode>"
    821      1.1  mrg   [
    822  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
    823  1.1.1.2  mrg 	(MVE_COMPARISONS:<MVE_VPRED> (match_operand:MVE_2 1 "s_register_operand" "w")
    824  1.1.1.2  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    825      1.1  mrg   ]
    826      1.1  mrg   "TARGET_HAVE_MVE"
    827  1.1.1.2  mrg   "vcmp.<mve_cmp_type>%#<V_sz_elem>\t<mve_cmp_op>, %q1, %q2"
    828      1.1  mrg   [(set_attr "type" "mve_move")
    829      1.1  mrg ])
    830      1.1  mrg 
    831      1.1  mrg ;;
    832  1.1.1.2  mrg ;; [vcmpcsq_n_, vcmpeqq_n_, vcmpgeq_n_, vcmpgtq_n_, vcmphiq_n_, vcmpleq_n_, vcmpltq_n_, vcmpneq_n_])
    833      1.1  mrg ;;
    834  1.1.1.2  mrg (define_insn "mve_vcmp<mve_cmp_op>q_n_<mode>"
    835      1.1  mrg   [
    836  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
    837  1.1.1.2  mrg 	(MVE_COMPARISONS:<MVE_VPRED>
    838  1.1.1.2  mrg 	 (match_operand:MVE_2 1 "s_register_operand" "w")
    839  1.1.1.2  mrg 	 (vec_duplicate:MVE_2 (match_operand:<V_elem> 2 "s_register_operand" "r"))))
    840      1.1  mrg   ]
    841      1.1  mrg   "TARGET_HAVE_MVE"
    842  1.1.1.2  mrg   "vcmp.<mve_cmp_type>%#<V_sz_elem>	<mve_cmp_op>, %q1, %2"
    843      1.1  mrg   [(set_attr "type" "mve_move")
    844      1.1  mrg ])
    845      1.1  mrg 
    846      1.1  mrg ;;
    847  1.1.1.2  mrg ;; [vshlq_s, vshlq_u])
    848  1.1.1.2  mrg ;; See vec-common.md
    849  1.1.1.2  mrg 
    850  1.1.1.2  mrg ;;
    851      1.1  mrg ;; [vabdq_s, vabdq_u])
    852      1.1  mrg ;;
    853      1.1  mrg (define_insn "mve_vabdq_<supf><mode>"
    854      1.1  mrg   [
    855      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    856      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
    857      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
    858      1.1  mrg 	 VABDQ))
    859      1.1  mrg   ]
    860      1.1  mrg   "TARGET_HAVE_MVE"
    861      1.1  mrg   "vabd.<supf>%#<V_sz_elem>	%q0, %q1, %q2"
    862      1.1  mrg   [(set_attr "type" "mve_move")
    863      1.1  mrg ])
    864      1.1  mrg 
    865      1.1  mrg ;;
    866      1.1  mrg ;; [vaddq_n_s, vaddq_n_u])
    867      1.1  mrg ;;
    868      1.1  mrg (define_insn "mve_vaddq_n_<supf><mode>"
    869      1.1  mrg   [
    870      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    871      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
    872      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
    873      1.1  mrg 	 VADDQ_N))
    874      1.1  mrg   ]
    875      1.1  mrg   "TARGET_HAVE_MVE"
    876  1.1.1.2  mrg   "vadd.i%#<V_sz_elem>\t%q0, %q1, %2"
    877      1.1  mrg   [(set_attr "type" "mve_move")
    878      1.1  mrg ])
    879      1.1  mrg 
    880      1.1  mrg ;;
    881      1.1  mrg ;; [vaddvaq_s, vaddvaq_u])
    882      1.1  mrg ;;
    883      1.1  mrg (define_insn "mve_vaddvaq_<supf><mode>"
    884      1.1  mrg   [
    885      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
    886      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
    887      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")]
    888      1.1  mrg 	 VADDVAQ))
    889      1.1  mrg   ]
    890      1.1  mrg   "TARGET_HAVE_MVE"
    891  1.1.1.2  mrg   "vaddva.<supf>%#<V_sz_elem>\t%0, %q2"
    892      1.1  mrg   [(set_attr "type" "mve_move")
    893      1.1  mrg ])
    894      1.1  mrg 
    895      1.1  mrg ;;
    896      1.1  mrg ;; [vaddvq_p_u, vaddvq_p_s])
    897      1.1  mrg ;;
    898      1.1  mrg (define_insn "mve_vaddvq_p_<supf><mode>"
    899      1.1  mrg   [
    900      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
    901      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
    902  1.1.1.2  mrg 		    (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
    903      1.1  mrg 	 VADDVQ_P))
    904      1.1  mrg   ]
    905      1.1  mrg   "TARGET_HAVE_MVE"
    906      1.1  mrg   "vpst\;vaddvt.<supf>%#<V_sz_elem>	%0, %q1"
    907      1.1  mrg   [(set_attr "type" "mve_move")
    908      1.1  mrg    (set_attr "length""8")])
    909      1.1  mrg 
    910      1.1  mrg ;;
    911      1.1  mrg ;; [vandq_u, vandq_s])
    912      1.1  mrg ;;
    913  1.1.1.2  mrg ;; signed and unsigned versions are the same: define the unsigned
    914  1.1.1.2  mrg ;; insn, and use an expander for the signed one as we still reference
    915  1.1.1.2  mrg ;; both names from arm_mve.h.
    916  1.1.1.2  mrg ;; We use the same code as in neon.md (TODO: avoid this duplication).
    917  1.1.1.2  mrg (define_insn "mve_vandq_u<mode>"
    918      1.1  mrg   [
    919  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w,w")
    920  1.1.1.2  mrg 	(and:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w,0")
    921  1.1.1.2  mrg 		   (match_operand:MVE_2 2 "neon_inv_logic_op2" "w,DL")))
    922      1.1  mrg   ]
    923      1.1  mrg   "TARGET_HAVE_MVE"
    924  1.1.1.2  mrg   "@
    925  1.1.1.2  mrg    vand\t%q0, %q1, %q2
    926  1.1.1.2  mrg    * return neon_output_logic_immediate (\"vand\", &operands[2], <MODE>mode, 1, VALID_NEON_QREG_MODE (<MODE>mode));"
    927      1.1  mrg   [(set_attr "type" "mve_move")
    928      1.1  mrg ])
    929  1.1.1.2  mrg (define_expand "mve_vandq_s<mode>"
    930  1.1.1.2  mrg   [
    931  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
    932  1.1.1.2  mrg 	(and:MVE_2 (match_operand:MVE_2 1 "s_register_operand")
    933  1.1.1.2  mrg 		   (match_operand:MVE_2 2 "neon_inv_logic_op2")))
    934  1.1.1.2  mrg   ]
    935  1.1.1.2  mrg   "TARGET_HAVE_MVE"
    936  1.1.1.2  mrg )
    937      1.1  mrg 
    938      1.1  mrg ;;
    939      1.1  mrg ;; [vbicq_s, vbicq_u])
    940      1.1  mrg ;;
    941  1.1.1.2  mrg (define_insn "mve_vbicq_u<mode>"
    942      1.1  mrg   [
    943      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    944  1.1.1.2  mrg 	(and:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand" "w"))
    945  1.1.1.2  mrg 			      (match_operand:MVE_2 1 "s_register_operand" "w")))
    946      1.1  mrg   ]
    947      1.1  mrg   "TARGET_HAVE_MVE"
    948  1.1.1.2  mrg   "vbic\t%q0, %q1, %q2"
    949      1.1  mrg   [(set_attr "type" "mve_move")
    950      1.1  mrg ])
    951      1.1  mrg 
    952  1.1.1.2  mrg (define_expand "mve_vbicq_s<mode>"
    953  1.1.1.2  mrg   [
    954  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
    955  1.1.1.2  mrg 	(and:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand"))
    956  1.1.1.2  mrg 		   (match_operand:MVE_2 1 "s_register_operand")))
    957  1.1.1.2  mrg   ]
    958  1.1.1.2  mrg   "TARGET_HAVE_MVE"
    959  1.1.1.2  mrg )
    960  1.1.1.2  mrg 
    961      1.1  mrg ;;
    962      1.1  mrg ;; [vbrsrq_n_u, vbrsrq_n_s])
    963      1.1  mrg ;;
    964      1.1  mrg (define_insn "mve_vbrsrq_n_<supf><mode>"
    965      1.1  mrg   [
    966      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
    967      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
    968      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")]
    969      1.1  mrg 	 VBRSRQ_N))
    970      1.1  mrg   ]
    971      1.1  mrg   "TARGET_HAVE_MVE"
    972  1.1.1.2  mrg   "vbrsr.%#<V_sz_elem>\t%q0, %q1, %2"
    973      1.1  mrg   [(set_attr "type" "mve_move")
    974      1.1  mrg ])
    975      1.1  mrg 
    976      1.1  mrg ;;
    977  1.1.1.2  mrg ;; [vcaddq, vcaddq_rot90, vcadd_rot180, vcadd_rot270])
    978      1.1  mrg ;;
    979  1.1.1.2  mrg (define_insn "mve_vcaddq<mve_rot><mode>"
    980      1.1  mrg   [
    981      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
    982      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
    983      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
    984  1.1.1.2  mrg 	 VCADD))
    985      1.1  mrg   ]
    986      1.1  mrg   "TARGET_HAVE_MVE"
    987  1.1.1.2  mrg   "vcadd.i%#<V_sz_elem>	%q0, %q1, %q2, #<rot>"
    988      1.1  mrg   [(set_attr "type" "mve_move")
    989      1.1  mrg ])
    990      1.1  mrg 
    991  1.1.1.2  mrg ;; Auto vectorizer pattern for int vcadd
    992  1.1.1.2  mrg (define_expand "cadd<rot><mode>3"
    993  1.1.1.2  mrg   [(set (match_operand:MVE_2 0 "register_operand")
    994  1.1.1.2  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "register_operand")
    995  1.1.1.2  mrg 		       (match_operand:MVE_2 2 "register_operand")]
    996  1.1.1.2  mrg 	  VCADD))]
    997  1.1.1.2  mrg   "TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN"
    998  1.1.1.2  mrg )
    999      1.1  mrg 
   1000      1.1  mrg ;;
   1001  1.1.1.2  mrg ;; [veorq_u, veorq_s])
   1002      1.1  mrg ;;
   1003  1.1.1.2  mrg (define_insn "mve_veorq_u<mode>"
   1004      1.1  mrg   [
   1005  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1006  1.1.1.2  mrg 	(xor:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1007  1.1.1.2  mrg 		   (match_operand:MVE_2 2 "s_register_operand" "w")))
   1008      1.1  mrg   ]
   1009      1.1  mrg   "TARGET_HAVE_MVE"
   1010  1.1.1.2  mrg   "veor\t%q0, %q1, %q2"
   1011      1.1  mrg   [(set_attr "type" "mve_move")
   1012      1.1  mrg ])
   1013  1.1.1.2  mrg (define_expand "mve_veorq_s<mode>"
   1014      1.1  mrg   [
   1015  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
   1016  1.1.1.2  mrg 	(xor:MVE_2 (match_operand:MVE_2 1 "s_register_operand")
   1017  1.1.1.2  mrg 		   (match_operand:MVE_2 2 "s_register_operand")))
   1018      1.1  mrg   ]
   1019      1.1  mrg   "TARGET_HAVE_MVE"
   1020  1.1.1.2  mrg )
   1021      1.1  mrg 
   1022      1.1  mrg ;;
   1023      1.1  mrg ;; [vhaddq_n_u, vhaddq_n_s])
   1024      1.1  mrg ;;
   1025      1.1  mrg (define_insn "mve_vhaddq_n_<supf><mode>"
   1026      1.1  mrg   [
   1027      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1028      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1029      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1030      1.1  mrg 	 VHADDQ_N))
   1031      1.1  mrg   ]
   1032      1.1  mrg   "TARGET_HAVE_MVE"
   1033      1.1  mrg   "vhadd.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1034      1.1  mrg   [(set_attr "type" "mve_move")
   1035      1.1  mrg ])
   1036      1.1  mrg 
   1037      1.1  mrg ;;
   1038      1.1  mrg ;; [vhaddq_s, vhaddq_u])
   1039      1.1  mrg ;;
   1040  1.1.1.2  mrg (define_insn "@mve_vhaddq_<supf><mode>"
   1041      1.1  mrg   [
   1042      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1043      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1044      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1045      1.1  mrg 	 VHADDQ))
   1046      1.1  mrg   ]
   1047      1.1  mrg   "TARGET_HAVE_MVE"
   1048      1.1  mrg   "vhadd.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1049      1.1  mrg   [(set_attr "type" "mve_move")
   1050      1.1  mrg ])
   1051      1.1  mrg 
   1052      1.1  mrg ;;
   1053      1.1  mrg ;; [vhcaddq_rot270_s])
   1054      1.1  mrg ;;
   1055      1.1  mrg (define_insn "mve_vhcaddq_rot270_s<mode>"
   1056      1.1  mrg   [
   1057      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
   1058      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1059      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1060      1.1  mrg 	 VHCADDQ_ROT270_S))
   1061      1.1  mrg   ]
   1062      1.1  mrg   "TARGET_HAVE_MVE"
   1063      1.1  mrg   "vhcadd.s%#<V_sz_elem>\t%q0, %q1, %q2, #270"
   1064      1.1  mrg   [(set_attr "type" "mve_move")
   1065      1.1  mrg ])
   1066      1.1  mrg 
   1067      1.1  mrg ;;
   1068      1.1  mrg ;; [vhcaddq_rot90_s])
   1069      1.1  mrg ;;
   1070      1.1  mrg (define_insn "mve_vhcaddq_rot90_s<mode>"
   1071      1.1  mrg   [
   1072      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
   1073      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1074      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1075      1.1  mrg 	 VHCADDQ_ROT90_S))
   1076      1.1  mrg   ]
   1077      1.1  mrg   "TARGET_HAVE_MVE"
   1078      1.1  mrg   "vhcadd.s%#<V_sz_elem>\t%q0, %q1, %q2, #90"
   1079      1.1  mrg   [(set_attr "type" "mve_move")
   1080      1.1  mrg ])
   1081      1.1  mrg 
   1082      1.1  mrg ;;
   1083      1.1  mrg ;; [vhsubq_n_u, vhsubq_n_s])
   1084      1.1  mrg ;;
   1085      1.1  mrg (define_insn "mve_vhsubq_n_<supf><mode>"
   1086      1.1  mrg   [
   1087      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1088      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1089      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1090      1.1  mrg 	 VHSUBQ_N))
   1091      1.1  mrg   ]
   1092      1.1  mrg   "TARGET_HAVE_MVE"
   1093      1.1  mrg   "vhsub.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1094      1.1  mrg   [(set_attr "type" "mve_move")
   1095      1.1  mrg ])
   1096      1.1  mrg 
   1097      1.1  mrg ;;
   1098      1.1  mrg ;; [vhsubq_s, vhsubq_u])
   1099      1.1  mrg ;;
   1100      1.1  mrg (define_insn "mve_vhsubq_<supf><mode>"
   1101      1.1  mrg   [
   1102      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1103      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1104      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1105      1.1  mrg 	 VHSUBQ))
   1106      1.1  mrg   ]
   1107      1.1  mrg   "TARGET_HAVE_MVE"
   1108      1.1  mrg   "vhsub.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1109      1.1  mrg   [(set_attr "type" "mve_move")
   1110      1.1  mrg ])
   1111      1.1  mrg 
   1112      1.1  mrg ;;
   1113      1.1  mrg ;; [vmaxaq_s])
   1114      1.1  mrg ;;
   1115      1.1  mrg (define_insn "mve_vmaxaq_s<mode>"
   1116      1.1  mrg   [
   1117      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1118      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   1119      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1120      1.1  mrg 	 VMAXAQ_S))
   1121      1.1  mrg   ]
   1122      1.1  mrg   "TARGET_HAVE_MVE"
   1123      1.1  mrg   "vmaxa.s%#<V_sz_elem>	%q0, %q2"
   1124      1.1  mrg   [(set_attr "type" "mve_move")
   1125      1.1  mrg ])
   1126      1.1  mrg 
   1127      1.1  mrg ;;
   1128      1.1  mrg ;; [vmaxavq_s])
   1129      1.1  mrg ;;
   1130      1.1  mrg (define_insn "mve_vmaxavq_s<mode>"
   1131      1.1  mrg   [
   1132      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   1133      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   1134      1.1  mrg 			  (match_operand:MVE_2 2 "s_register_operand" "w")]
   1135      1.1  mrg 	 VMAXAVQ_S))
   1136      1.1  mrg   ]
   1137      1.1  mrg   "TARGET_HAVE_MVE"
   1138      1.1  mrg   "vmaxav.s%#<V_sz_elem>\t%0, %q2"
   1139      1.1  mrg   [(set_attr "type" "mve_move")
   1140      1.1  mrg ])
   1141      1.1  mrg 
   1142      1.1  mrg ;;
   1143      1.1  mrg ;; [vmaxq_u, vmaxq_s])
   1144      1.1  mrg ;;
   1145  1.1.1.2  mrg (define_insn "mve_vmaxq_s<mode>"
   1146      1.1  mrg   [
   1147      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1148  1.1.1.2  mrg 	(smax:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1149  1.1.1.2  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
   1150  1.1.1.2  mrg   ]
   1151  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1152  1.1.1.2  mrg   "vmax.%#<V_s_elem>\t%q0, %q1, %q2"
   1153  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   1154  1.1.1.2  mrg ])
   1155  1.1.1.2  mrg 
   1156  1.1.1.2  mrg (define_insn "mve_vmaxq_u<mode>"
   1157  1.1.1.2  mrg   [
   1158  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1159  1.1.1.2  mrg 	(umax:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1160  1.1.1.2  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
   1161      1.1  mrg   ]
   1162      1.1  mrg   "TARGET_HAVE_MVE"
   1163  1.1.1.2  mrg   "vmax.%#<V_u_elem>\t%q0, %q1, %q2"
   1164      1.1  mrg   [(set_attr "type" "mve_move")
   1165      1.1  mrg ])
   1166      1.1  mrg 
   1167      1.1  mrg ;;
   1168      1.1  mrg ;; [vmaxvq_u, vmaxvq_s])
   1169      1.1  mrg ;;
   1170      1.1  mrg (define_insn "mve_vmaxvq_<supf><mode>"
   1171      1.1  mrg   [
   1172      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   1173      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   1174      1.1  mrg 			  (match_operand:MVE_2 2 "s_register_operand" "w")]
   1175      1.1  mrg 	 VMAXVQ))
   1176      1.1  mrg   ]
   1177      1.1  mrg   "TARGET_HAVE_MVE"
   1178      1.1  mrg   "vmaxv.<supf>%#<V_sz_elem>\t%0, %q2"
   1179      1.1  mrg   [(set_attr "type" "mve_move")
   1180      1.1  mrg ])
   1181      1.1  mrg 
   1182      1.1  mrg ;;
   1183      1.1  mrg ;; [vminaq_s])
   1184      1.1  mrg ;;
   1185      1.1  mrg (define_insn "mve_vminaq_s<mode>"
   1186      1.1  mrg   [
   1187      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1188      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   1189      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1190      1.1  mrg 	 VMINAQ_S))
   1191      1.1  mrg   ]
   1192      1.1  mrg   "TARGET_HAVE_MVE"
   1193      1.1  mrg   "vmina.s%#<V_sz_elem>\t%q0, %q2"
   1194      1.1  mrg   [(set_attr "type" "mve_move")
   1195      1.1  mrg ])
   1196      1.1  mrg 
   1197      1.1  mrg ;;
   1198      1.1  mrg ;; [vminavq_s])
   1199      1.1  mrg ;;
   1200      1.1  mrg (define_insn "mve_vminavq_s<mode>"
   1201      1.1  mrg   [
   1202      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   1203      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   1204      1.1  mrg 			  (match_operand:MVE_2 2 "s_register_operand" "w")]
   1205      1.1  mrg 	 VMINAVQ_S))
   1206      1.1  mrg   ]
   1207      1.1  mrg   "TARGET_HAVE_MVE"
   1208      1.1  mrg   "vminav.s%#<V_sz_elem>\t%0, %q2"
   1209      1.1  mrg   [(set_attr "type" "mve_move")
   1210      1.1  mrg ])
   1211      1.1  mrg 
   1212      1.1  mrg ;;
   1213      1.1  mrg ;; [vminq_s, vminq_u])
   1214      1.1  mrg ;;
   1215  1.1.1.2  mrg (define_insn "mve_vminq_s<mode>"
   1216      1.1  mrg   [
   1217      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1218  1.1.1.2  mrg 	(smin:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1219  1.1.1.2  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
   1220      1.1  mrg   ]
   1221      1.1  mrg   "TARGET_HAVE_MVE"
   1222  1.1.1.2  mrg   "vmin.%#<V_s_elem>\t%q0, %q1, %q2"
   1223  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   1224  1.1.1.2  mrg ])
   1225  1.1.1.2  mrg 
   1226  1.1.1.2  mrg (define_insn "mve_vminq_u<mode>"
   1227  1.1.1.2  mrg   [
   1228  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1229  1.1.1.2  mrg 	(umin:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1230  1.1.1.2  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
   1231  1.1.1.2  mrg   ]
   1232  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1233  1.1.1.2  mrg   "vmin.%#<V_u_elem>\t%q0, %q1, %q2"
   1234      1.1  mrg   [(set_attr "type" "mve_move")
   1235      1.1  mrg ])
   1236      1.1  mrg 
   1237      1.1  mrg ;;
   1238      1.1  mrg ;; [vminvq_u, vminvq_s])
   1239      1.1  mrg ;;
   1240      1.1  mrg (define_insn "mve_vminvq_<supf><mode>"
   1241      1.1  mrg   [
   1242      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   1243      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   1244      1.1  mrg 			  (match_operand:MVE_2 2 "s_register_operand" "w")]
   1245      1.1  mrg 	 VMINVQ))
   1246      1.1  mrg   ]
   1247      1.1  mrg   "TARGET_HAVE_MVE"
   1248      1.1  mrg   "vminv.<supf>%#<V_sz_elem>\t%0, %q2"
   1249      1.1  mrg   [(set_attr "type" "mve_move")
   1250      1.1  mrg ])
   1251      1.1  mrg 
   1252      1.1  mrg ;;
   1253      1.1  mrg ;; [vmladavq_u, vmladavq_s])
   1254      1.1  mrg ;;
   1255      1.1  mrg (define_insn "mve_vmladavq_<supf><mode>"
   1256      1.1  mrg   [
   1257      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   1258      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   1259      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")]
   1260      1.1  mrg 	 VMLADAVQ))
   1261      1.1  mrg   ]
   1262      1.1  mrg   "TARGET_HAVE_MVE"
   1263      1.1  mrg   "vmladav.<supf>%#<V_sz_elem>\t%0, %q1, %q2"
   1264      1.1  mrg   [(set_attr "type" "mve_move")
   1265      1.1  mrg ])
   1266      1.1  mrg 
   1267      1.1  mrg ;;
   1268      1.1  mrg ;; [vmladavxq_s])
   1269      1.1  mrg ;;
   1270      1.1  mrg (define_insn "mve_vmladavxq_s<mode>"
   1271      1.1  mrg   [
   1272      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   1273      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   1274      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")]
   1275      1.1  mrg 	 VMLADAVXQ_S))
   1276      1.1  mrg   ]
   1277      1.1  mrg   "TARGET_HAVE_MVE"
   1278      1.1  mrg   "vmladavx.s%#<V_sz_elem>\t%0, %q1, %q2"
   1279      1.1  mrg   [(set_attr "type" "mve_move")
   1280      1.1  mrg ])
   1281      1.1  mrg 
   1282      1.1  mrg ;;
   1283      1.1  mrg ;; [vmlsdavq_s])
   1284      1.1  mrg ;;
   1285      1.1  mrg (define_insn "mve_vmlsdavq_s<mode>"
   1286      1.1  mrg   [
   1287      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   1288      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   1289      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")]
   1290      1.1  mrg 	 VMLSDAVQ_S))
   1291      1.1  mrg   ]
   1292      1.1  mrg   "TARGET_HAVE_MVE"
   1293      1.1  mrg   "vmlsdav.s%#<V_sz_elem>\t%0, %q1, %q2"
   1294      1.1  mrg   [(set_attr "type" "mve_move")
   1295      1.1  mrg ])
   1296      1.1  mrg 
   1297      1.1  mrg ;;
   1298      1.1  mrg ;; [vmlsdavxq_s])
   1299      1.1  mrg ;;
   1300      1.1  mrg (define_insn "mve_vmlsdavxq_s<mode>"
   1301      1.1  mrg   [
   1302      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   1303      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   1304      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")]
   1305      1.1  mrg 	 VMLSDAVXQ_S))
   1306      1.1  mrg   ]
   1307      1.1  mrg   "TARGET_HAVE_MVE"
   1308      1.1  mrg   "vmlsdavx.s%#<V_sz_elem>\t%0, %q1, %q2"
   1309      1.1  mrg   [(set_attr "type" "mve_move")
   1310      1.1  mrg ])
   1311      1.1  mrg 
   1312      1.1  mrg ;;
   1313      1.1  mrg ;; [vmulhq_s, vmulhq_u])
   1314      1.1  mrg ;;
   1315      1.1  mrg (define_insn "mve_vmulhq_<supf><mode>"
   1316      1.1  mrg   [
   1317      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1318      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1319      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1320      1.1  mrg 	 VMULHQ))
   1321      1.1  mrg   ]
   1322      1.1  mrg   "TARGET_HAVE_MVE"
   1323      1.1  mrg   "vmulh.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1324      1.1  mrg   [(set_attr "type" "mve_move")
   1325      1.1  mrg ])
   1326      1.1  mrg 
   1327      1.1  mrg ;;
   1328      1.1  mrg ;; [vmullbq_int_u, vmullbq_int_s])
   1329      1.1  mrg ;;
   1330      1.1  mrg (define_insn "mve_vmullbq_int_<supf><mode>"
   1331      1.1  mrg   [
   1332      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   1333      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_2 1 "s_register_operand" "w")
   1334      1.1  mrg 				  (match_operand:MVE_2 2 "s_register_operand" "w")]
   1335      1.1  mrg 	 VMULLBQ_INT))
   1336      1.1  mrg   ]
   1337      1.1  mrg   "TARGET_HAVE_MVE"
   1338      1.1  mrg   "vmullb.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1339      1.1  mrg   [(set_attr "type" "mve_move")
   1340      1.1  mrg ])
   1341      1.1  mrg 
   1342      1.1  mrg ;;
   1343      1.1  mrg ;; [vmulltq_int_u, vmulltq_int_s])
   1344      1.1  mrg ;;
   1345      1.1  mrg (define_insn "mve_vmulltq_int_<supf><mode>"
   1346      1.1  mrg   [
   1347      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   1348      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_2 1 "s_register_operand" "w")
   1349      1.1  mrg 				  (match_operand:MVE_2 2 "s_register_operand" "w")]
   1350      1.1  mrg 	 VMULLTQ_INT))
   1351      1.1  mrg   ]
   1352      1.1  mrg   "TARGET_HAVE_MVE"
   1353      1.1  mrg   "vmullt.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1354      1.1  mrg   [(set_attr "type" "mve_move")
   1355      1.1  mrg ])
   1356      1.1  mrg 
   1357      1.1  mrg ;;
   1358      1.1  mrg ;; [vmulq_n_u, vmulq_n_s])
   1359      1.1  mrg ;;
   1360      1.1  mrg (define_insn "mve_vmulq_n_<supf><mode>"
   1361      1.1  mrg   [
   1362      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1363      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1364      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1365      1.1  mrg 	 VMULQ_N))
   1366      1.1  mrg   ]
   1367      1.1  mrg   "TARGET_HAVE_MVE"
   1368      1.1  mrg   "vmul.i%#<V_sz_elem>\t%q0, %q1, %2"
   1369      1.1  mrg   [(set_attr "type" "mve_move")
   1370      1.1  mrg ])
   1371      1.1  mrg 
   1372      1.1  mrg ;;
   1373      1.1  mrg ;; [vmulq_u, vmulq_s])
   1374      1.1  mrg ;;
   1375      1.1  mrg (define_insn "mve_vmulq_<supf><mode>"
   1376      1.1  mrg   [
   1377      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1378      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1379      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1380      1.1  mrg 	 VMULQ))
   1381      1.1  mrg   ]
   1382      1.1  mrg   "TARGET_HAVE_MVE"
   1383      1.1  mrg   "vmul.i%#<V_sz_elem>\t%q0, %q1, %q2"
   1384      1.1  mrg   [(set_attr "type" "mve_move")
   1385      1.1  mrg ])
   1386      1.1  mrg 
   1387  1.1.1.2  mrg (define_insn "mve_vmulq<mode>"
   1388  1.1.1.2  mrg   [
   1389  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1390  1.1.1.2  mrg 	(mult:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1391  1.1.1.2  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
   1392  1.1.1.2  mrg   ]
   1393  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1394  1.1.1.2  mrg   "vmul.i%#<V_sz_elem>\t%q0, %q1, %q2"
   1395  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   1396  1.1.1.2  mrg ])
   1397  1.1.1.2  mrg 
   1398      1.1  mrg ;;
   1399      1.1  mrg ;; [vornq_u, vornq_s])
   1400      1.1  mrg ;;
   1401  1.1.1.2  mrg (define_insn "mve_vornq_s<mode>"
   1402      1.1  mrg   [
   1403      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1404  1.1.1.2  mrg 	(ior:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand" "w"))
   1405  1.1.1.2  mrg 		   (match_operand:MVE_2 1 "s_register_operand" "w")))
   1406      1.1  mrg   ]
   1407      1.1  mrg   "TARGET_HAVE_MVE"
   1408  1.1.1.2  mrg    "vorn\t%q0, %q1, %q2"
   1409      1.1  mrg   [(set_attr "type" "mve_move")
   1410      1.1  mrg ])
   1411      1.1  mrg 
   1412  1.1.1.2  mrg (define_expand "mve_vornq_u<mode>"
   1413  1.1.1.2  mrg   [
   1414  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
   1415  1.1.1.2  mrg 	(ior:MVE_2 (not:MVE_2 (match_operand:MVE_2 2 "s_register_operand"))
   1416  1.1.1.2  mrg 		   (match_operand:MVE_2 1 "s_register_operand")))
   1417  1.1.1.2  mrg   ]
   1418  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1419  1.1.1.2  mrg )
   1420  1.1.1.2  mrg 
   1421      1.1  mrg ;;
   1422      1.1  mrg ;; [vorrq_s, vorrq_u])
   1423      1.1  mrg ;;
   1424  1.1.1.2  mrg ;; signed and unsigned versions are the same: define the unsigned
   1425  1.1.1.2  mrg ;; insn, and use an expander for the signed one as we still reference
   1426  1.1.1.2  mrg ;; both names from arm_mve.h.
   1427  1.1.1.2  mrg ;; We use the same code as in neon.md (TODO: avoid this duplication).
   1428  1.1.1.2  mrg (define_insn "mve_vorrq_s<mode>"
   1429      1.1  mrg   [
   1430  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w,w")
   1431  1.1.1.2  mrg 	(ior:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w,0")
   1432  1.1.1.2  mrg 		   (match_operand:MVE_2 2 "neon_logic_op2" "w,Dl")))
   1433      1.1  mrg   ]
   1434      1.1  mrg   "TARGET_HAVE_MVE"
   1435  1.1.1.2  mrg   "@
   1436  1.1.1.2  mrg    vorr\t%q0, %q1, %q2
   1437  1.1.1.2  mrg    * return neon_output_logic_immediate (\"vorr\", &operands[2], <MODE>mode, 0, VALID_NEON_QREG_MODE (<MODE>mode));"
   1438      1.1  mrg   [(set_attr "type" "mve_move")
   1439      1.1  mrg ])
   1440  1.1.1.2  mrg (define_expand "mve_vorrq_u<mode>"
   1441  1.1.1.2  mrg   [
   1442  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand")
   1443  1.1.1.2  mrg 	(ior:MVE_2 (match_operand:MVE_2 1 "s_register_operand")
   1444  1.1.1.2  mrg 		   (match_operand:MVE_2 2 "neon_logic_op2")))
   1445  1.1.1.2  mrg   ]
   1446  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1447  1.1.1.2  mrg )
   1448      1.1  mrg 
   1449      1.1  mrg ;;
   1450      1.1  mrg ;; [vqaddq_n_s, vqaddq_n_u])
   1451      1.1  mrg ;;
   1452      1.1  mrg (define_insn "mve_vqaddq_n_<supf><mode>"
   1453      1.1  mrg   [
   1454      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1455      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1456      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1457      1.1  mrg 	 VQADDQ_N))
   1458      1.1  mrg   ]
   1459      1.1  mrg   "TARGET_HAVE_MVE"
   1460      1.1  mrg   "vqadd.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1461      1.1  mrg   [(set_attr "type" "mve_move")
   1462      1.1  mrg ])
   1463      1.1  mrg 
   1464      1.1  mrg ;;
   1465      1.1  mrg ;; [vqaddq_u, vqaddq_s])
   1466      1.1  mrg ;;
   1467      1.1  mrg (define_insn "mve_vqaddq_<supf><mode>"
   1468      1.1  mrg   [
   1469      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1470      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1471      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1472      1.1  mrg 	 VQADDQ))
   1473      1.1  mrg   ]
   1474      1.1  mrg   "TARGET_HAVE_MVE"
   1475      1.1  mrg   "vqadd.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1476      1.1  mrg   [(set_attr "type" "mve_move")
   1477      1.1  mrg ])
   1478      1.1  mrg 
   1479      1.1  mrg ;;
   1480      1.1  mrg ;; [vqdmulhq_n_s])
   1481      1.1  mrg ;;
   1482      1.1  mrg (define_insn "mve_vqdmulhq_n_s<mode>"
   1483      1.1  mrg   [
   1484      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1485      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1486      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1487      1.1  mrg 	 VQDMULHQ_N_S))
   1488      1.1  mrg   ]
   1489      1.1  mrg   "TARGET_HAVE_MVE"
   1490      1.1  mrg   "vqdmulh.s%#<V_sz_elem>\t%q0, %q1, %2"
   1491      1.1  mrg   [(set_attr "type" "mve_move")
   1492      1.1  mrg ])
   1493      1.1  mrg 
   1494      1.1  mrg ;;
   1495      1.1  mrg ;; [vqdmulhq_s])
   1496      1.1  mrg ;;
   1497      1.1  mrg (define_insn "mve_vqdmulhq_s<mode>"
   1498      1.1  mrg   [
   1499      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1500      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1501      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1502      1.1  mrg 	 VQDMULHQ_S))
   1503      1.1  mrg   ]
   1504      1.1  mrg   "TARGET_HAVE_MVE"
   1505      1.1  mrg   "vqdmulh.s%#<V_sz_elem>\t%q0, %q1, %q2"
   1506      1.1  mrg   [(set_attr "type" "mve_move")
   1507      1.1  mrg ])
   1508      1.1  mrg 
   1509      1.1  mrg ;;
   1510      1.1  mrg ;; [vqrdmulhq_n_s])
   1511      1.1  mrg ;;
   1512      1.1  mrg (define_insn "mve_vqrdmulhq_n_s<mode>"
   1513      1.1  mrg   [
   1514      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1515      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1516      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1517      1.1  mrg 	 VQRDMULHQ_N_S))
   1518      1.1  mrg   ]
   1519      1.1  mrg   "TARGET_HAVE_MVE"
   1520      1.1  mrg   "vqrdmulh.s%#<V_sz_elem>\t%q0, %q1, %2"
   1521      1.1  mrg   [(set_attr "type" "mve_move")
   1522      1.1  mrg ])
   1523      1.1  mrg 
   1524      1.1  mrg ;;
   1525      1.1  mrg ;; [vqrdmulhq_s])
   1526      1.1  mrg ;;
   1527      1.1  mrg (define_insn "mve_vqrdmulhq_s<mode>"
   1528      1.1  mrg   [
   1529      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1530      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1531      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1532      1.1  mrg 	 VQRDMULHQ_S))
   1533      1.1  mrg   ]
   1534      1.1  mrg   "TARGET_HAVE_MVE"
   1535      1.1  mrg   "vqrdmulh.s%#<V_sz_elem>\t%q0, %q1, %q2"
   1536      1.1  mrg   [(set_attr "type" "mve_move")
   1537      1.1  mrg ])
   1538      1.1  mrg 
   1539      1.1  mrg ;;
   1540      1.1  mrg ;; [vqrshlq_n_s, vqrshlq_n_u])
   1541      1.1  mrg ;;
   1542      1.1  mrg (define_insn "mve_vqrshlq_n_<supf><mode>"
   1543      1.1  mrg   [
   1544      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1545      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   1546      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")]
   1547      1.1  mrg 	 VQRSHLQ_N))
   1548      1.1  mrg   ]
   1549      1.1  mrg   "TARGET_HAVE_MVE"
   1550      1.1  mrg   "vqrshl.<supf>%#<V_sz_elem>\t%q0, %2"
   1551      1.1  mrg   [(set_attr "type" "mve_move")
   1552      1.1  mrg ])
   1553      1.1  mrg 
   1554      1.1  mrg ;;
   1555      1.1  mrg ;; [vqrshlq_s, vqrshlq_u])
   1556      1.1  mrg ;;
   1557      1.1  mrg (define_insn "mve_vqrshlq_<supf><mode>"
   1558      1.1  mrg   [
   1559      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1560      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1561      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1562      1.1  mrg 	 VQRSHLQ))
   1563      1.1  mrg   ]
   1564      1.1  mrg   "TARGET_HAVE_MVE"
   1565      1.1  mrg   "vqrshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1566      1.1  mrg   [(set_attr "type" "mve_move")
   1567      1.1  mrg ])
   1568      1.1  mrg 
   1569      1.1  mrg ;;
   1570      1.1  mrg ;; [vqshlq_n_s, vqshlq_n_u])
   1571      1.1  mrg ;;
   1572      1.1  mrg (define_insn "mve_vqshlq_n_<supf><mode>"
   1573      1.1  mrg   [
   1574      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1575      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1576      1.1  mrg 		       (match_operand:SI 2 "immediate_operand" "i")]
   1577      1.1  mrg 	 VQSHLQ_N))
   1578      1.1  mrg   ]
   1579      1.1  mrg   "TARGET_HAVE_MVE"
   1580      1.1  mrg   "vqshl.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1581      1.1  mrg   [(set_attr "type" "mve_move")
   1582      1.1  mrg ])
   1583      1.1  mrg 
   1584      1.1  mrg ;;
   1585      1.1  mrg ;; [vqshlq_r_u, vqshlq_r_s])
   1586      1.1  mrg ;;
   1587      1.1  mrg (define_insn "mve_vqshlq_r_<supf><mode>"
   1588      1.1  mrg   [
   1589      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1590      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   1591      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")]
   1592      1.1  mrg 	 VQSHLQ_R))
   1593      1.1  mrg   ]
   1594      1.1  mrg   "TARGET_HAVE_MVE"
   1595      1.1  mrg   "vqshl.<supf>%#<V_sz_elem>\t%q0, %2"
   1596      1.1  mrg   [(set_attr "type" "mve_move")
   1597      1.1  mrg ])
   1598      1.1  mrg 
   1599      1.1  mrg ;;
   1600      1.1  mrg ;; [vqshlq_s, vqshlq_u])
   1601      1.1  mrg ;;
   1602      1.1  mrg (define_insn "mve_vqshlq_<supf><mode>"
   1603      1.1  mrg   [
   1604      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1605      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1606      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1607      1.1  mrg 	 VQSHLQ))
   1608      1.1  mrg   ]
   1609      1.1  mrg   "TARGET_HAVE_MVE"
   1610      1.1  mrg   "vqshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1611      1.1  mrg   [(set_attr "type" "mve_move")
   1612      1.1  mrg ])
   1613      1.1  mrg 
   1614      1.1  mrg ;;
   1615      1.1  mrg ;; [vqshluq_n_s])
   1616      1.1  mrg ;;
   1617      1.1  mrg (define_insn "mve_vqshluq_n_s<mode>"
   1618      1.1  mrg   [
   1619      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1620      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1621  1.1.1.2  mrg 		       (match_operand:SI 2 "<MVE_pred>" "<MVE_constraint>")]
   1622      1.1  mrg 	 VQSHLUQ_N_S))
   1623      1.1  mrg   ]
   1624      1.1  mrg   "TARGET_HAVE_MVE"
   1625      1.1  mrg   "vqshlu.s%#<V_sz_elem>\t%q0, %q1, %2"
   1626      1.1  mrg   [(set_attr "type" "mve_move")
   1627      1.1  mrg ])
   1628      1.1  mrg 
   1629      1.1  mrg ;;
   1630      1.1  mrg ;; [vqsubq_n_s, vqsubq_n_u])
   1631      1.1  mrg ;;
   1632      1.1  mrg (define_insn "mve_vqsubq_n_<supf><mode>"
   1633      1.1  mrg   [
   1634      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1635      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1636      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1637      1.1  mrg 	 VQSUBQ_N))
   1638      1.1  mrg   ]
   1639      1.1  mrg   "TARGET_HAVE_MVE"
   1640      1.1  mrg   "vqsub.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1641      1.1  mrg   [(set_attr "type" "mve_move")
   1642      1.1  mrg ])
   1643      1.1  mrg 
   1644      1.1  mrg ;;
   1645      1.1  mrg ;; [vqsubq_u, vqsubq_s])
   1646      1.1  mrg ;;
   1647      1.1  mrg (define_insn "mve_vqsubq_<supf><mode>"
   1648      1.1  mrg   [
   1649      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1650      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1651      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1652      1.1  mrg 	 VQSUBQ))
   1653      1.1  mrg   ]
   1654      1.1  mrg   "TARGET_HAVE_MVE"
   1655      1.1  mrg   "vqsub.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1656      1.1  mrg   [(set_attr "type" "mve_move")
   1657      1.1  mrg ])
   1658      1.1  mrg 
   1659      1.1  mrg ;;
   1660      1.1  mrg ;; [vrhaddq_s, vrhaddq_u])
   1661      1.1  mrg ;;
   1662  1.1.1.2  mrg (define_insn "@mve_vrhaddq_<supf><mode>"
   1663      1.1  mrg   [
   1664      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1665      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1666      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1667      1.1  mrg 	 VRHADDQ))
   1668      1.1  mrg   ]
   1669      1.1  mrg   "TARGET_HAVE_MVE"
   1670      1.1  mrg   "vrhadd.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1671      1.1  mrg   [(set_attr "type" "mve_move")
   1672      1.1  mrg ])
   1673      1.1  mrg 
   1674      1.1  mrg ;;
   1675      1.1  mrg ;; [vrmulhq_s, vrmulhq_u])
   1676      1.1  mrg ;;
   1677      1.1  mrg (define_insn "mve_vrmulhq_<supf><mode>"
   1678      1.1  mrg   [
   1679      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1680      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1681      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1682      1.1  mrg 	 VRMULHQ))
   1683      1.1  mrg   ]
   1684      1.1  mrg   "TARGET_HAVE_MVE"
   1685      1.1  mrg   "vrmulh.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1686      1.1  mrg   [(set_attr "type" "mve_move")
   1687      1.1  mrg ])
   1688      1.1  mrg 
   1689      1.1  mrg ;;
   1690      1.1  mrg ;; [vrshlq_n_u, vrshlq_n_s])
   1691      1.1  mrg ;;
   1692      1.1  mrg (define_insn "mve_vrshlq_n_<supf><mode>"
   1693      1.1  mrg   [
   1694      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1695      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   1696      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")]
   1697      1.1  mrg 	 VRSHLQ_N))
   1698      1.1  mrg   ]
   1699      1.1  mrg   "TARGET_HAVE_MVE"
   1700      1.1  mrg   "vrshl.<supf>%#<V_sz_elem>\t%q0, %2"
   1701      1.1  mrg   [(set_attr "type" "mve_move")
   1702      1.1  mrg ])
   1703      1.1  mrg 
   1704      1.1  mrg ;;
   1705      1.1  mrg ;; [vrshlq_s, vrshlq_u])
   1706      1.1  mrg ;;
   1707      1.1  mrg (define_insn "mve_vrshlq_<supf><mode>"
   1708      1.1  mrg   [
   1709      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1710      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1711      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1712      1.1  mrg 	 VRSHLQ))
   1713      1.1  mrg   ]
   1714      1.1  mrg   "TARGET_HAVE_MVE"
   1715      1.1  mrg   "vrshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
   1716      1.1  mrg   [(set_attr "type" "mve_move")
   1717      1.1  mrg ])
   1718      1.1  mrg 
   1719      1.1  mrg ;;
   1720      1.1  mrg ;; [vrshrq_n_s, vrshrq_n_u])
   1721      1.1  mrg ;;
   1722      1.1  mrg (define_insn "mve_vrshrq_n_<supf><mode>"
   1723      1.1  mrg   [
   1724      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1725      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1726      1.1  mrg 		       (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
   1727      1.1  mrg 	 VRSHRQ_N))
   1728      1.1  mrg   ]
   1729      1.1  mrg   "TARGET_HAVE_MVE"
   1730      1.1  mrg   "vrshr.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1731      1.1  mrg   [(set_attr "type" "mve_move")
   1732      1.1  mrg ])
   1733      1.1  mrg 
   1734      1.1  mrg ;;
   1735      1.1  mrg ;; [vshlq_n_u, vshlq_n_s])
   1736      1.1  mrg ;;
   1737      1.1  mrg (define_insn "mve_vshlq_n_<supf><mode>"
   1738      1.1  mrg   [
   1739      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1740      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1741      1.1  mrg 		       (match_operand:SI 2 "immediate_operand" "i")]
   1742      1.1  mrg 	 VSHLQ_N))
   1743      1.1  mrg   ]
   1744      1.1  mrg   "TARGET_HAVE_MVE"
   1745      1.1  mrg   "vshl.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   1746      1.1  mrg   [(set_attr "type" "mve_move")
   1747      1.1  mrg ])
   1748      1.1  mrg 
   1749      1.1  mrg ;;
   1750      1.1  mrg ;; [vshlq_r_s, vshlq_r_u])
   1751      1.1  mrg ;;
   1752      1.1  mrg (define_insn "mve_vshlq_r_<supf><mode>"
   1753      1.1  mrg   [
   1754      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1755      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   1756      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")]
   1757      1.1  mrg 	 VSHLQ_R))
   1758      1.1  mrg   ]
   1759      1.1  mrg   "TARGET_HAVE_MVE"
   1760      1.1  mrg   "vshl.<supf>%#<V_sz_elem>\t%q0, %2"
   1761      1.1  mrg   [(set_attr "type" "mve_move")
   1762      1.1  mrg ])
   1763      1.1  mrg 
   1764      1.1  mrg ;;
   1765      1.1  mrg ;; [vsubq_n_s, vsubq_n_u])
   1766      1.1  mrg ;;
   1767      1.1  mrg (define_insn "mve_vsubq_n_<supf><mode>"
   1768      1.1  mrg   [
   1769      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1770  1.1.1.2  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1771  1.1.1.2  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1772  1.1.1.2  mrg 	 VSUBQ_N))
   1773      1.1  mrg   ]
   1774  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1775  1.1.1.2  mrg   "vsub.i%#<V_sz_elem>\t%q0, %q1, %2"
   1776      1.1  mrg   [(set_attr "type" "mve_move")
   1777      1.1  mrg ])
   1778      1.1  mrg 
   1779      1.1  mrg ;;
   1780  1.1.1.2  mrg ;; [vsubq_s, vsubq_u])
   1781      1.1  mrg ;;
   1782  1.1.1.2  mrg (define_insn "mve_vsubq_<supf><mode>"
   1783      1.1  mrg   [
   1784  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1785  1.1.1.2  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
   1786  1.1.1.2  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   1787  1.1.1.2  mrg 	 VSUBQ))
   1788      1.1  mrg   ]
   1789  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1790  1.1.1.2  mrg   "vsub.i%#<V_sz_elem>\t%q0, %q1, %q2"
   1791      1.1  mrg   [(set_attr "type" "mve_move")
   1792      1.1  mrg ])
   1793      1.1  mrg 
   1794  1.1.1.2  mrg (define_insn "mve_vsubq<mode>"
   1795      1.1  mrg   [
   1796  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   1797  1.1.1.2  mrg 	(minus:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   1798  1.1.1.2  mrg 		     (match_operand:MVE_2 2 "s_register_operand" "w")))
   1799      1.1  mrg   ]
   1800  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1801  1.1.1.2  mrg   "vsub.i%#<V_sz_elem>\t%q0, %q1, %q2"
   1802      1.1  mrg   [(set_attr "type" "mve_move")
   1803      1.1  mrg ])
   1804      1.1  mrg 
   1805      1.1  mrg ;;
   1806  1.1.1.2  mrg ;; [vabdq_f])
   1807      1.1  mrg ;;
   1808  1.1.1.2  mrg (define_insn "mve_vabdq_f<mode>"
   1809      1.1  mrg   [
   1810  1.1.1.2  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   1811  1.1.1.2  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
   1812  1.1.1.2  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
   1813  1.1.1.2  mrg 	 VABDQ_F))
   1814      1.1  mrg   ]
   1815      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1816  1.1.1.2  mrg   "vabd.f%#<V_sz_elem>	%q0, %q1, %q2"
   1817      1.1  mrg   [(set_attr "type" "mve_move")
   1818      1.1  mrg ])
   1819      1.1  mrg 
   1820      1.1  mrg ;;
   1821  1.1.1.2  mrg ;; [vaddlvaq_s vaddlvaq_u])
   1822      1.1  mrg ;;
   1823  1.1.1.2  mrg (define_insn "mve_vaddlvaq_<supf>v4si"
   1824      1.1  mrg   [
   1825  1.1.1.2  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   1826  1.1.1.2  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   1827  1.1.1.2  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")]
   1828  1.1.1.2  mrg 	 VADDLVAQ))
   1829      1.1  mrg   ]
   1830  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1831  1.1.1.2  mrg   "vaddlva.<supf>32\t%Q0, %R0, %q2"
   1832      1.1  mrg   [(set_attr "type" "mve_move")
   1833      1.1  mrg ])
   1834      1.1  mrg 
   1835      1.1  mrg ;;
   1836  1.1.1.2  mrg ;; [vaddq_n_f])
   1837      1.1  mrg ;;
   1838  1.1.1.2  mrg (define_insn "mve_vaddq_n_f<mode>"
   1839      1.1  mrg   [
   1840  1.1.1.2  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   1841  1.1.1.2  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
   1842  1.1.1.2  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   1843  1.1.1.2  mrg 	 VADDQ_N_F))
   1844      1.1  mrg   ]
   1845      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1846  1.1.1.2  mrg   "vadd.f%#<V_sz_elem>\t%q0, %q1, %2"
   1847      1.1  mrg   [(set_attr "type" "mve_move")
   1848      1.1  mrg ])
   1849      1.1  mrg 
   1850      1.1  mrg ;;
   1851  1.1.1.2  mrg ;; [vandq_f])
   1852      1.1  mrg ;;
   1853  1.1.1.2  mrg (define_insn "mve_vandq_f<mode>"
   1854      1.1  mrg   [
   1855  1.1.1.2  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   1856  1.1.1.2  mrg 	(and:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   1857  1.1.1.2  mrg 		   (match_operand:MVE_0 2 "s_register_operand" "w")))
   1858      1.1  mrg   ]
   1859      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1860  1.1.1.2  mrg   "vand\t%q0, %q1, %q2"
   1861      1.1  mrg   [(set_attr "type" "mve_move")
   1862      1.1  mrg ])
   1863      1.1  mrg 
   1864      1.1  mrg ;;
   1865  1.1.1.2  mrg ;; [vbicq_f])
   1866      1.1  mrg ;;
   1867  1.1.1.2  mrg (define_insn "mve_vbicq_f<mode>"
   1868      1.1  mrg   [
   1869  1.1.1.2  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   1870  1.1.1.2  mrg 	(and:MVE_0 (not:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w"))
   1871  1.1.1.2  mrg 			      (match_operand:MVE_0 2 "s_register_operand" "w")))
   1872      1.1  mrg   ]
   1873      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1874  1.1.1.2  mrg   "vbic\t%q0, %q1, %q2"
   1875      1.1  mrg   [(set_attr "type" "mve_move")
   1876      1.1  mrg ])
   1877      1.1  mrg 
   1878      1.1  mrg ;;
   1879  1.1.1.2  mrg ;; [vbicq_n_s, vbicq_n_u])
   1880      1.1  mrg ;;
   1881  1.1.1.2  mrg (define_insn "mve_vbicq_n_<supf><mode>"
   1882      1.1  mrg   [
   1883  1.1.1.2  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   1884  1.1.1.2  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   1885  1.1.1.2  mrg 		       (match_operand:SI 2 "immediate_operand" "i")]
   1886  1.1.1.2  mrg 	 VBICQ_N))
   1887      1.1  mrg   ]
   1888  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   1889  1.1.1.2  mrg   "vbic.i%#<V_sz_elem>\t%q0, %2"
   1890      1.1  mrg   [(set_attr "type" "mve_move")
   1891      1.1  mrg ])
   1892      1.1  mrg 
   1893      1.1  mrg ;;
   1894  1.1.1.2  mrg ;; [vcaddq, vcaddq_rot90, vcadd_rot180, vcadd_rot270])
   1895      1.1  mrg ;;
   1896  1.1.1.2  mrg (define_insn "mve_vcaddq<mve_rot><mode>"
   1897      1.1  mrg   [
   1898      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   1899      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
   1900      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
   1901  1.1.1.2  mrg 	 VCADD))
   1902      1.1  mrg   ]
   1903      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1904  1.1.1.2  mrg   "vcadd.f%#<V_sz_elem>	%q0, %q1, %q2, #<rot>"
   1905      1.1  mrg   [(set_attr "type" "mve_move")
   1906      1.1  mrg ])
   1907      1.1  mrg 
   1908      1.1  mrg ;;
   1909  1.1.1.2  mrg ;; [vcmpeqq_f, vcmpgeq_f, vcmpgtq_f, vcmpleq_f, vcmpltq_f, vcmpneq_f])
   1910      1.1  mrg ;;
   1911  1.1.1.2  mrg (define_insn "@mve_vcmp<mve_cmp_op>q_f<mode>"
   1912      1.1  mrg   [
   1913  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   1914  1.1.1.2  mrg 	(MVE_FP_COMPARISONS:<MVE_VPRED> (match_operand:MVE_0 1 "s_register_operand" "w")
   1915  1.1.1.2  mrg 			       (match_operand:MVE_0 2 "s_register_operand" "w")))
   1916      1.1  mrg   ]
   1917      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1918  1.1.1.2  mrg   "vcmp.f%#<V_sz_elem>	<mve_cmp_op>, %q1, %q2"
   1919      1.1  mrg   [(set_attr "type" "mve_move")
   1920      1.1  mrg ])
   1921      1.1  mrg 
   1922      1.1  mrg ;;
   1923  1.1.1.2  mrg ;; [vcmpeqq_n_f, vcmpgeq_n_f, vcmpgtq_n_f, vcmpleq_n_f, vcmpltq_n_f, vcmpneq_n_f])
   1924      1.1  mrg ;;
   1925  1.1.1.2  mrg (define_insn "@mve_vcmp<mve_cmp_op>q_n_f<mode>"
   1926      1.1  mrg   [
   1927  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   1928  1.1.1.2  mrg 	(MVE_FP_COMPARISONS:<MVE_VPRED>
   1929  1.1.1.2  mrg 	 (match_operand:MVE_0 1 "s_register_operand" "w")
   1930  1.1.1.2  mrg 	 (vec_duplicate:MVE_0 (match_operand:<V_elem> 2 "s_register_operand" "r"))))
   1931      1.1  mrg   ]
   1932      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1933  1.1.1.2  mrg   "vcmp.f%#<V_sz_elem>	<mve_cmp_op>, %q1, %2"
   1934      1.1  mrg   [(set_attr "type" "mve_move")
   1935      1.1  mrg ])
   1936      1.1  mrg 
   1937      1.1  mrg ;;
   1938  1.1.1.2  mrg ;; [vcmulq, vcmulq_rot90, vcmulq_rot180, vcmulq_rot270])
   1939      1.1  mrg ;;
   1940  1.1.1.2  mrg (define_insn "mve_vcmulq<mve_rot><mode>"
   1941      1.1  mrg   [
   1942      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   1943      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
   1944      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
   1945  1.1.1.2  mrg 	 VCMUL))
   1946      1.1  mrg   ]
   1947      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1948  1.1.1.2  mrg   "vcmul.f%#<V_sz_elem>	%q0, %q1, %q2, #<rot>"
   1949      1.1  mrg   [(set_attr "type" "mve_move")
   1950      1.1  mrg ])
   1951      1.1  mrg 
   1952      1.1  mrg ;;
   1953      1.1  mrg ;; [vctp8q_m vctp16q_m vctp32q_m vctp64q_m])
   1954      1.1  mrg ;;
   1955      1.1  mrg (define_insn "mve_vctp<mode1>q_mhi"
   1956      1.1  mrg   [
   1957      1.1  mrg    (set (match_operand:HI 0 "vpr_register_operand" "=Up")
   1958      1.1  mrg 	(unspec:HI [(match_operand:SI 1 "s_register_operand" "r")
   1959      1.1  mrg 		    (match_operand:HI 2 "vpr_register_operand" "Up")]
   1960      1.1  mrg 	 VCTPQ_M))
   1961      1.1  mrg   ]
   1962      1.1  mrg   "TARGET_HAVE_MVE"
   1963  1.1.1.2  mrg   "vpst\;vctpt.<mode1>\t%1"
   1964      1.1  mrg   [(set_attr "type" "mve_move")
   1965      1.1  mrg    (set_attr "length""8")])
   1966      1.1  mrg 
   1967      1.1  mrg ;;
   1968      1.1  mrg ;; [vcvtbq_f16_f32])
   1969      1.1  mrg ;;
   1970      1.1  mrg (define_insn "mve_vcvtbq_f16_f32v8hf"
   1971      1.1  mrg   [
   1972      1.1  mrg    (set (match_operand:V8HF 0 "s_register_operand" "=w")
   1973      1.1  mrg 	(unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
   1974      1.1  mrg 		      (match_operand:V4SF 2 "s_register_operand" "w")]
   1975      1.1  mrg 	 VCVTBQ_F16_F32))
   1976      1.1  mrg   ]
   1977      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1978  1.1.1.2  mrg   "vcvtb.f16.f32\t%q0, %q2"
   1979      1.1  mrg   [(set_attr "type" "mve_move")
   1980      1.1  mrg ])
   1981      1.1  mrg 
   1982      1.1  mrg ;;
   1983      1.1  mrg ;; [vcvttq_f16_f32])
   1984      1.1  mrg ;;
   1985      1.1  mrg (define_insn "mve_vcvttq_f16_f32v8hf"
   1986      1.1  mrg   [
   1987      1.1  mrg    (set (match_operand:V8HF 0 "s_register_operand" "=w")
   1988      1.1  mrg 	(unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
   1989      1.1  mrg 		      (match_operand:V4SF 2 "s_register_operand" "w")]
   1990      1.1  mrg 	 VCVTTQ_F16_F32))
   1991      1.1  mrg   ]
   1992      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   1993  1.1.1.2  mrg   "vcvtt.f16.f32\t%q0, %q2"
   1994      1.1  mrg   [(set_attr "type" "mve_move")
   1995      1.1  mrg ])
   1996      1.1  mrg 
   1997      1.1  mrg ;;
   1998      1.1  mrg ;; [veorq_f])
   1999      1.1  mrg ;;
   2000      1.1  mrg (define_insn "mve_veorq_f<mode>"
   2001      1.1  mrg   [
   2002      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2003  1.1.1.2  mrg 	(xor:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   2004  1.1.1.2  mrg 		   (match_operand:MVE_0 2 "s_register_operand" "w")))
   2005      1.1  mrg   ]
   2006      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2007  1.1.1.2  mrg   "veor\t%q0, %q1, %q2"
   2008      1.1  mrg   [(set_attr "type" "mve_move")
   2009      1.1  mrg ])
   2010      1.1  mrg 
   2011      1.1  mrg ;;
   2012      1.1  mrg ;; [vmaxnmaq_f])
   2013      1.1  mrg ;;
   2014      1.1  mrg (define_insn "mve_vmaxnmaq_f<mode>"
   2015      1.1  mrg   [
   2016      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2017      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   2018      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
   2019      1.1  mrg 	 VMAXNMAQ_F))
   2020      1.1  mrg   ]
   2021      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2022      1.1  mrg   "vmaxnma.f%#<V_sz_elem>	%q0, %q2"
   2023      1.1  mrg   [(set_attr "type" "mve_move")
   2024      1.1  mrg ])
   2025      1.1  mrg 
   2026      1.1  mrg ;;
   2027      1.1  mrg ;; [vmaxnmavq_f])
   2028      1.1  mrg ;;
   2029      1.1  mrg (define_insn "mve_vmaxnmavq_f<mode>"
   2030      1.1  mrg   [
   2031      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   2032      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   2033      1.1  mrg 			  (match_operand:MVE_0 2 "s_register_operand" "w")]
   2034      1.1  mrg 	 VMAXNMAVQ_F))
   2035      1.1  mrg   ]
   2036      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2037      1.1  mrg   "vmaxnmav.f%#<V_sz_elem>	%0, %q2"
   2038      1.1  mrg   [(set_attr "type" "mve_move")
   2039      1.1  mrg ])
   2040      1.1  mrg 
   2041      1.1  mrg ;;
   2042      1.1  mrg ;; [vmaxnmq_f])
   2043      1.1  mrg ;;
   2044      1.1  mrg (define_insn "mve_vmaxnmq_f<mode>"
   2045      1.1  mrg   [
   2046      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2047  1.1.1.2  mrg 	(smax:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   2048  1.1.1.2  mrg 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
   2049      1.1  mrg   ]
   2050      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2051      1.1  mrg   "vmaxnm.f%#<V_sz_elem>	%q0, %q1, %q2"
   2052      1.1  mrg   [(set_attr "type" "mve_move")
   2053      1.1  mrg ])
   2054      1.1  mrg 
   2055      1.1  mrg ;;
   2056      1.1  mrg ;; [vmaxnmvq_f])
   2057      1.1  mrg ;;
   2058      1.1  mrg (define_insn "mve_vmaxnmvq_f<mode>"
   2059      1.1  mrg   [
   2060      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   2061      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   2062      1.1  mrg 			  (match_operand:MVE_0 2 "s_register_operand" "w")]
   2063      1.1  mrg 	 VMAXNMVQ_F))
   2064      1.1  mrg   ]
   2065      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2066      1.1  mrg   "vmaxnmv.f%#<V_sz_elem>	%0, %q2"
   2067      1.1  mrg   [(set_attr "type" "mve_move")
   2068      1.1  mrg ])
   2069      1.1  mrg 
   2070      1.1  mrg ;;
   2071      1.1  mrg ;; [vminnmaq_f])
   2072      1.1  mrg ;;
   2073      1.1  mrg (define_insn "mve_vminnmaq_f<mode>"
   2074      1.1  mrg   [
   2075      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2076      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   2077      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")]
   2078      1.1  mrg 	 VMINNMAQ_F))
   2079      1.1  mrg   ]
   2080      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2081      1.1  mrg   "vminnma.f%#<V_sz_elem>	%q0, %q2"
   2082      1.1  mrg   [(set_attr "type" "mve_move")
   2083      1.1  mrg ])
   2084      1.1  mrg 
   2085      1.1  mrg ;;
   2086      1.1  mrg ;; [vminnmavq_f])
   2087      1.1  mrg ;;
   2088      1.1  mrg (define_insn "mve_vminnmavq_f<mode>"
   2089      1.1  mrg   [
   2090      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   2091      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   2092      1.1  mrg 			  (match_operand:MVE_0 2 "s_register_operand" "w")]
   2093      1.1  mrg 	 VMINNMAVQ_F))
   2094      1.1  mrg   ]
   2095      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2096      1.1  mrg   "vminnmav.f%#<V_sz_elem>	%0, %q2"
   2097      1.1  mrg   [(set_attr "type" "mve_move")
   2098      1.1  mrg ])
   2099      1.1  mrg 
   2100      1.1  mrg ;;
   2101      1.1  mrg ;; [vminnmq_f])
   2102      1.1  mrg ;;
   2103      1.1  mrg (define_insn "mve_vminnmq_f<mode>"
   2104      1.1  mrg   [
   2105      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2106  1.1.1.2  mrg 	(smin:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   2107  1.1.1.2  mrg 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
   2108      1.1  mrg   ]
   2109      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2110      1.1  mrg   "vminnm.f%#<V_sz_elem>	%q0, %q1, %q2"
   2111      1.1  mrg   [(set_attr "type" "mve_move")
   2112      1.1  mrg ])
   2113      1.1  mrg 
   2114      1.1  mrg ;;
   2115      1.1  mrg ;; [vminnmvq_f])
   2116      1.1  mrg ;;
   2117      1.1  mrg (define_insn "mve_vminnmvq_f<mode>"
   2118      1.1  mrg   [
   2119      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   2120      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   2121      1.1  mrg 			  (match_operand:MVE_0 2 "s_register_operand" "w")]
   2122      1.1  mrg 	 VMINNMVQ_F))
   2123      1.1  mrg   ]
   2124      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2125      1.1  mrg   "vminnmv.f%#<V_sz_elem>	%0, %q2"
   2126      1.1  mrg   [(set_attr "type" "mve_move")
   2127      1.1  mrg ])
   2128      1.1  mrg 
   2129      1.1  mrg ;;
   2130      1.1  mrg ;; [vmlaldavq_u, vmlaldavq_s])
   2131      1.1  mrg ;;
   2132      1.1  mrg (define_insn "mve_vmlaldavq_<supf><mode>"
   2133      1.1  mrg   [
   2134      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2135      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   2136      1.1  mrg 		    (match_operand:MVE_5 2 "s_register_operand" "w")]
   2137      1.1  mrg 	 VMLALDAVQ))
   2138      1.1  mrg   ]
   2139      1.1  mrg   "TARGET_HAVE_MVE"
   2140      1.1  mrg   "vmlaldav.<supf>%#<V_sz_elem>	%Q0, %R0, %q1, %q2"
   2141      1.1  mrg   [(set_attr "type" "mve_move")
   2142      1.1  mrg ])
   2143      1.1  mrg 
   2144      1.1  mrg ;;
   2145      1.1  mrg ;; [vmlaldavxq_s])
   2146      1.1  mrg ;;
   2147      1.1  mrg (define_insn "mve_vmlaldavxq_s<mode>"
   2148      1.1  mrg   [
   2149      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2150      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   2151      1.1  mrg 		    (match_operand:MVE_5 2 "s_register_operand" "w")]
   2152      1.1  mrg 	 VMLALDAVXQ_S))
   2153      1.1  mrg   ]
   2154      1.1  mrg   "TARGET_HAVE_MVE"
   2155  1.1.1.2  mrg   "vmlaldavx.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   2156      1.1  mrg   [(set_attr "type" "mve_move")
   2157      1.1  mrg ])
   2158      1.1  mrg 
   2159      1.1  mrg ;;
   2160      1.1  mrg ;; [vmlsldavq_s])
   2161      1.1  mrg ;;
   2162      1.1  mrg (define_insn "mve_vmlsldavq_s<mode>"
   2163      1.1  mrg   [
   2164      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2165      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   2166      1.1  mrg 		    (match_operand:MVE_5 2 "s_register_operand" "w")]
   2167      1.1  mrg 	 VMLSLDAVQ_S))
   2168      1.1  mrg   ]
   2169      1.1  mrg   "TARGET_HAVE_MVE"
   2170  1.1.1.2  mrg   "vmlsldav.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   2171      1.1  mrg   [(set_attr "type" "mve_move")
   2172      1.1  mrg ])
   2173      1.1  mrg 
   2174      1.1  mrg ;;
   2175      1.1  mrg ;; [vmlsldavxq_s])
   2176      1.1  mrg ;;
   2177      1.1  mrg (define_insn "mve_vmlsldavxq_s<mode>"
   2178      1.1  mrg   [
   2179      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2180      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   2181      1.1  mrg 		    (match_operand:MVE_5 2 "s_register_operand" "w")]
   2182      1.1  mrg 	 VMLSLDAVXQ_S))
   2183      1.1  mrg   ]
   2184      1.1  mrg   "TARGET_HAVE_MVE"
   2185  1.1.1.2  mrg   "vmlsldavx.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   2186      1.1  mrg   [(set_attr "type" "mve_move")
   2187      1.1  mrg ])
   2188      1.1  mrg 
   2189      1.1  mrg ;;
   2190      1.1  mrg ;; [vmovnbq_u, vmovnbq_s])
   2191      1.1  mrg ;;
   2192      1.1  mrg (define_insn "mve_vmovnbq_<supf><mode>"
   2193      1.1  mrg   [
   2194      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2195      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2196      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")]
   2197      1.1  mrg 	 VMOVNBQ))
   2198      1.1  mrg   ]
   2199      1.1  mrg   "TARGET_HAVE_MVE"
   2200      1.1  mrg   "vmovnb.i%#<V_sz_elem>	%q0, %q2"
   2201      1.1  mrg   [(set_attr "type" "mve_move")
   2202      1.1  mrg ])
   2203      1.1  mrg 
   2204      1.1  mrg ;;
   2205      1.1  mrg ;; [vmovntq_s, vmovntq_u])
   2206      1.1  mrg ;;
   2207      1.1  mrg (define_insn "mve_vmovntq_<supf><mode>"
   2208      1.1  mrg   [
   2209      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2210      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2211      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")]
   2212      1.1  mrg 	 VMOVNTQ))
   2213      1.1  mrg   ]
   2214      1.1  mrg   "TARGET_HAVE_MVE"
   2215      1.1  mrg   "vmovnt.i%#<V_sz_elem>	%q0, %q2"
   2216      1.1  mrg   [(set_attr "type" "mve_move")
   2217      1.1  mrg ])
   2218      1.1  mrg 
   2219      1.1  mrg ;;
   2220      1.1  mrg ;; [vmulq_f])
   2221      1.1  mrg ;;
   2222      1.1  mrg (define_insn "mve_vmulq_f<mode>"
   2223      1.1  mrg   [
   2224      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2225  1.1.1.2  mrg 	(mult:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   2226  1.1.1.2  mrg 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
   2227      1.1  mrg   ]
   2228      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2229      1.1  mrg   "vmul.f%#<V_sz_elem>	%q0, %q1, %q2"
   2230      1.1  mrg   [(set_attr "type" "mve_move")
   2231      1.1  mrg ])
   2232      1.1  mrg 
   2233      1.1  mrg ;;
   2234      1.1  mrg ;; [vmulq_n_f])
   2235      1.1  mrg ;;
   2236      1.1  mrg (define_insn "mve_vmulq_n_f<mode>"
   2237      1.1  mrg   [
   2238      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2239      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
   2240      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")]
   2241      1.1  mrg 	 VMULQ_N_F))
   2242      1.1  mrg   ]
   2243      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2244      1.1  mrg   "vmul.f%#<V_sz_elem>	%q0, %q1, %2"
   2245      1.1  mrg   [(set_attr "type" "mve_move")
   2246      1.1  mrg ])
   2247      1.1  mrg 
   2248      1.1  mrg ;;
   2249      1.1  mrg ;; [vornq_f])
   2250      1.1  mrg ;;
   2251      1.1  mrg (define_insn "mve_vornq_f<mode>"
   2252      1.1  mrg   [
   2253      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2254  1.1.1.2  mrg 	(ior:MVE_0 (not:MVE_0 (match_operand:MVE_0 2 "s_register_operand" "w"))
   2255  1.1.1.2  mrg 		   (match_operand:MVE_0 1 "s_register_operand" "w")))
   2256      1.1  mrg   ]
   2257      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2258  1.1.1.2  mrg   "vorn\t%q0, %q1, %q2"
   2259      1.1  mrg   [(set_attr "type" "mve_move")
   2260      1.1  mrg ])
   2261      1.1  mrg 
   2262      1.1  mrg ;;
   2263      1.1  mrg ;; [vorrq_f])
   2264      1.1  mrg ;;
   2265      1.1  mrg (define_insn "mve_vorrq_f<mode>"
   2266      1.1  mrg   [
   2267      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2268  1.1.1.2  mrg 	(ior:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   2269  1.1.1.2  mrg 		   (match_operand:MVE_0 2 "s_register_operand" "w")))
   2270      1.1  mrg   ]
   2271      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2272  1.1.1.2  mrg   "vorr\t%q0, %q1, %q2"
   2273      1.1  mrg   [(set_attr "type" "mve_move")
   2274      1.1  mrg ])
   2275      1.1  mrg 
   2276      1.1  mrg ;;
   2277      1.1  mrg ;; [vorrq_n_u, vorrq_n_s])
   2278      1.1  mrg ;;
   2279      1.1  mrg (define_insn "mve_vorrq_n_<supf><mode>"
   2280      1.1  mrg   [
   2281      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   2282      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   2283      1.1  mrg 		       (match_operand:SI 2 "immediate_operand" "i")]
   2284      1.1  mrg 	 VORRQ_N))
   2285      1.1  mrg   ]
   2286      1.1  mrg   "TARGET_HAVE_MVE"
   2287      1.1  mrg   "vorr.i%#<V_sz_elem>	%q0, %2"
   2288      1.1  mrg   [(set_attr "type" "mve_move")
   2289      1.1  mrg ])
   2290      1.1  mrg 
   2291      1.1  mrg ;;
   2292      1.1  mrg ;; [vqdmullbq_n_s])
   2293      1.1  mrg ;;
   2294      1.1  mrg (define_insn "mve_vqdmullbq_n_s<mode>"
   2295      1.1  mrg   [
   2296      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   2297      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w")
   2298      1.1  mrg 				  (match_operand:<V_elem> 2 "s_register_operand" "r")]
   2299      1.1  mrg 	 VQDMULLBQ_N_S))
   2300      1.1  mrg   ]
   2301      1.1  mrg   "TARGET_HAVE_MVE"
   2302      1.1  mrg   "vqdmullb.s%#<V_sz_elem>	%q0, %q1, %2"
   2303      1.1  mrg   [(set_attr "type" "mve_move")
   2304      1.1  mrg ])
   2305      1.1  mrg 
   2306      1.1  mrg ;;
   2307      1.1  mrg ;; [vqdmullbq_s])
   2308      1.1  mrg ;;
   2309      1.1  mrg (define_insn "mve_vqdmullbq_s<mode>"
   2310      1.1  mrg   [
   2311      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   2312      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w")
   2313      1.1  mrg 				  (match_operand:MVE_5 2 "s_register_operand" "w")]
   2314      1.1  mrg 	 VQDMULLBQ_S))
   2315      1.1  mrg   ]
   2316      1.1  mrg   "TARGET_HAVE_MVE"
   2317      1.1  mrg   "vqdmullb.s%#<V_sz_elem>	%q0, %q1, %q2"
   2318      1.1  mrg   [(set_attr "type" "mve_move")
   2319      1.1  mrg ])
   2320      1.1  mrg 
   2321      1.1  mrg ;;
   2322      1.1  mrg ;; [vqdmulltq_n_s])
   2323      1.1  mrg ;;
   2324      1.1  mrg (define_insn "mve_vqdmulltq_n_s<mode>"
   2325      1.1  mrg   [
   2326      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   2327      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w")
   2328      1.1  mrg 				  (match_operand:<V_elem> 2 "s_register_operand" "r")]
   2329      1.1  mrg 	 VQDMULLTQ_N_S))
   2330      1.1  mrg   ]
   2331      1.1  mrg   "TARGET_HAVE_MVE"
   2332      1.1  mrg   "vqdmullt.s%#<V_sz_elem>	%q0, %q1, %2"
   2333      1.1  mrg   [(set_attr "type" "mve_move")
   2334      1.1  mrg ])
   2335      1.1  mrg 
   2336      1.1  mrg ;;
   2337      1.1  mrg ;; [vqdmulltq_s])
   2338      1.1  mrg ;;
   2339      1.1  mrg (define_insn "mve_vqdmulltq_s<mode>"
   2340      1.1  mrg   [
   2341      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   2342      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w")
   2343      1.1  mrg 				  (match_operand:MVE_5 2 "s_register_operand" "w")]
   2344      1.1  mrg 	 VQDMULLTQ_S))
   2345      1.1  mrg   ]
   2346      1.1  mrg   "TARGET_HAVE_MVE"
   2347      1.1  mrg   "vqdmullt.s%#<V_sz_elem>	%q0, %q1, %q2"
   2348      1.1  mrg   [(set_attr "type" "mve_move")
   2349      1.1  mrg ])
   2350      1.1  mrg 
   2351      1.1  mrg ;;
   2352      1.1  mrg ;; [vqmovnbq_u, vqmovnbq_s])
   2353      1.1  mrg ;;
   2354      1.1  mrg (define_insn "mve_vqmovnbq_<supf><mode>"
   2355      1.1  mrg   [
   2356      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2357      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2358      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")]
   2359      1.1  mrg 	 VQMOVNBQ))
   2360      1.1  mrg   ]
   2361      1.1  mrg   "TARGET_HAVE_MVE"
   2362      1.1  mrg   "vqmovnb.<supf>%#<V_sz_elem>	%q0, %q2"
   2363      1.1  mrg   [(set_attr "type" "mve_move")
   2364      1.1  mrg ])
   2365      1.1  mrg 
   2366      1.1  mrg ;;
   2367      1.1  mrg ;; [vqmovntq_u, vqmovntq_s])
   2368      1.1  mrg ;;
   2369      1.1  mrg (define_insn "mve_vqmovntq_<supf><mode>"
   2370      1.1  mrg   [
   2371      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2372      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2373      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")]
   2374      1.1  mrg 	 VQMOVNTQ))
   2375      1.1  mrg   ]
   2376      1.1  mrg   "TARGET_HAVE_MVE"
   2377      1.1  mrg   "vqmovnt.<supf>%#<V_sz_elem>	%q0, %q2"
   2378      1.1  mrg   [(set_attr "type" "mve_move")
   2379      1.1  mrg ])
   2380      1.1  mrg 
   2381      1.1  mrg ;;
   2382      1.1  mrg ;; [vqmovunbq_s])
   2383      1.1  mrg ;;
   2384      1.1  mrg (define_insn "mve_vqmovunbq_s<mode>"
   2385      1.1  mrg   [
   2386      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2387      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2388      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")]
   2389      1.1  mrg 	 VQMOVUNBQ_S))
   2390      1.1  mrg   ]
   2391      1.1  mrg   "TARGET_HAVE_MVE"
   2392      1.1  mrg   "vqmovunb.s%#<V_sz_elem>	%q0, %q2"
   2393      1.1  mrg   [(set_attr "type" "mve_move")
   2394      1.1  mrg ])
   2395      1.1  mrg 
   2396      1.1  mrg ;;
   2397      1.1  mrg ;; [vqmovuntq_s])
   2398      1.1  mrg ;;
   2399      1.1  mrg (define_insn "mve_vqmovuntq_s<mode>"
   2400      1.1  mrg   [
   2401      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2402      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2403      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")]
   2404      1.1  mrg 	 VQMOVUNTQ_S))
   2405      1.1  mrg   ]
   2406      1.1  mrg   "TARGET_HAVE_MVE"
   2407      1.1  mrg   "vqmovunt.s%#<V_sz_elem>	%q0, %q2"
   2408      1.1  mrg   [(set_attr "type" "mve_move")
   2409      1.1  mrg ])
   2410      1.1  mrg 
   2411      1.1  mrg ;;
   2412      1.1  mrg ;; [vrmlaldavhxq_s])
   2413      1.1  mrg ;;
   2414      1.1  mrg (define_insn "mve_vrmlaldavhxq_sv4si"
   2415      1.1  mrg   [
   2416      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2417      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   2418      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")]
   2419      1.1  mrg 	 VRMLALDAVHXQ_S))
   2420      1.1  mrg   ]
   2421      1.1  mrg   "TARGET_HAVE_MVE"
   2422  1.1.1.2  mrg   "vrmlaldavhx.s32\t%Q0, %R0, %q1, %q2"
   2423      1.1  mrg   [(set_attr "type" "mve_move")
   2424      1.1  mrg ])
   2425      1.1  mrg 
   2426      1.1  mrg ;;
   2427      1.1  mrg ;; [vrmlsldavhq_s])
   2428      1.1  mrg ;;
   2429      1.1  mrg (define_insn "mve_vrmlsldavhq_sv4si"
   2430      1.1  mrg   [
   2431      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2432      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   2433      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")]
   2434      1.1  mrg 	 VRMLSLDAVHQ_S))
   2435      1.1  mrg   ]
   2436      1.1  mrg   "TARGET_HAVE_MVE"
   2437      1.1  mrg   "vrmlsldavh.s32\t%Q0, %R0, %q1, %q2"
   2438      1.1  mrg   [(set_attr "type" "mve_move")
   2439      1.1  mrg ])
   2440      1.1  mrg 
   2441      1.1  mrg ;;
   2442      1.1  mrg ;; [vrmlsldavhxq_s])
   2443      1.1  mrg ;;
   2444      1.1  mrg (define_insn "mve_vrmlsldavhxq_sv4si"
   2445      1.1  mrg   [
   2446      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2447      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   2448      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")]
   2449      1.1  mrg 	 VRMLSLDAVHXQ_S))
   2450      1.1  mrg   ]
   2451      1.1  mrg   "TARGET_HAVE_MVE"
   2452      1.1  mrg   "vrmlsldavhx.s32\t%Q0, %R0, %q1, %q2"
   2453      1.1  mrg   [(set_attr "type" "mve_move")
   2454      1.1  mrg ])
   2455      1.1  mrg 
   2456      1.1  mrg ;;
   2457      1.1  mrg ;; [vshllbq_n_s, vshllbq_n_u])
   2458      1.1  mrg ;;
   2459      1.1  mrg (define_insn "mve_vshllbq_n_<supf><mode>"
   2460      1.1  mrg   [
   2461      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   2462      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")
   2463      1.1  mrg 				  (match_operand:SI 2 "immediate_operand" "i")]
   2464      1.1  mrg 	 VSHLLBQ_N))
   2465      1.1  mrg   ]
   2466      1.1  mrg   "TARGET_HAVE_MVE"
   2467      1.1  mrg   "vshllb.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   2468      1.1  mrg   [(set_attr "type" "mve_move")
   2469      1.1  mrg ])
   2470      1.1  mrg 
   2471      1.1  mrg ;;
   2472      1.1  mrg ;; [vshlltq_n_u, vshlltq_n_s])
   2473      1.1  mrg ;;
   2474      1.1  mrg (define_insn "mve_vshlltq_n_<supf><mode>"
   2475      1.1  mrg   [
   2476      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   2477      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")
   2478      1.1  mrg 				  (match_operand:SI 2 "immediate_operand" "i")]
   2479      1.1  mrg 	 VSHLLTQ_N))
   2480      1.1  mrg   ]
   2481      1.1  mrg   "TARGET_HAVE_MVE"
   2482      1.1  mrg   "vshllt.<supf>%#<V_sz_elem>\t%q0, %q1, %2"
   2483      1.1  mrg   [(set_attr "type" "mve_move")
   2484      1.1  mrg ])
   2485      1.1  mrg 
   2486      1.1  mrg ;;
   2487      1.1  mrg ;; [vsubq_f])
   2488      1.1  mrg ;;
   2489      1.1  mrg (define_insn "mve_vsubq_f<mode>"
   2490      1.1  mrg   [
   2491      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2492  1.1.1.2  mrg 	(minus:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   2493  1.1.1.2  mrg 		     (match_operand:MVE_0 2 "s_register_operand" "w")))
   2494      1.1  mrg   ]
   2495      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2496      1.1  mrg   "vsub.f%#<V_sz_elem>\t%q0, %q1, %q2"
   2497      1.1  mrg   [(set_attr "type" "mve_move")
   2498      1.1  mrg ])
   2499      1.1  mrg 
   2500      1.1  mrg ;;
   2501      1.1  mrg ;; [vmulltq_poly_p])
   2502      1.1  mrg ;;
   2503      1.1  mrg (define_insn "mve_vmulltq_poly_p<mode>"
   2504      1.1  mrg   [
   2505      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   2506      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")
   2507      1.1  mrg 				  (match_operand:MVE_3 2 "s_register_operand" "w")]
   2508      1.1  mrg 	 VMULLTQ_POLY_P))
   2509      1.1  mrg   ]
   2510      1.1  mrg   "TARGET_HAVE_MVE"
   2511      1.1  mrg   "vmullt.p%#<V_sz_elem>\t%q0, %q1, %q2"
   2512      1.1  mrg   [(set_attr "type" "mve_move")
   2513      1.1  mrg ])
   2514      1.1  mrg 
   2515      1.1  mrg ;;
   2516      1.1  mrg ;; [vmullbq_poly_p])
   2517      1.1  mrg ;;
   2518      1.1  mrg (define_insn "mve_vmullbq_poly_p<mode>"
   2519      1.1  mrg   [
   2520      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   2521      1.1  mrg 	(unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")
   2522      1.1  mrg 				  (match_operand:MVE_3 2 "s_register_operand" "w")]
   2523      1.1  mrg 	 VMULLBQ_POLY_P))
   2524      1.1  mrg   ]
   2525      1.1  mrg   "TARGET_HAVE_MVE"
   2526      1.1  mrg   "vmullb.p%#<V_sz_elem>\t%q0, %q1, %q2"
   2527      1.1  mrg   [(set_attr "type" "mve_move")
   2528      1.1  mrg ])
   2529      1.1  mrg 
   2530      1.1  mrg ;;
   2531      1.1  mrg ;; [vrmlaldavhq_u vrmlaldavhq_s])
   2532      1.1  mrg ;;
   2533      1.1  mrg (define_insn "mve_vrmlaldavhq_<supf>v4si"
   2534      1.1  mrg   [
   2535      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2536      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   2537      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")]
   2538      1.1  mrg 	 VRMLALDAVHQ))
   2539      1.1  mrg   ]
   2540      1.1  mrg   "TARGET_HAVE_MVE"
   2541  1.1.1.2  mrg   "vrmlaldavh.<supf>32\t%Q0, %R0, %q1, %q2"
   2542      1.1  mrg   [(set_attr "type" "mve_move")
   2543      1.1  mrg ])
   2544      1.1  mrg 
   2545      1.1  mrg ;;
   2546      1.1  mrg ;; [vbicq_m_n_s, vbicq_m_n_u])
   2547      1.1  mrg ;;
   2548      1.1  mrg (define_insn "mve_vbicq_m_n_<supf><mode>"
   2549      1.1  mrg   [
   2550      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   2551      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   2552      1.1  mrg 		       (match_operand:SI 2 "immediate_operand" "i")
   2553  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2554      1.1  mrg 	 VBICQ_M_N))
   2555      1.1  mrg   ]
   2556      1.1  mrg   "TARGET_HAVE_MVE"
   2557  1.1.1.2  mrg   "vpst\;vbict.i%#<V_sz_elem>\t%q0, %2"
   2558      1.1  mrg   [(set_attr "type" "mve_move")
   2559      1.1  mrg    (set_attr "length""8")])
   2560      1.1  mrg ;;
   2561      1.1  mrg ;; [vcmpeqq_m_f])
   2562      1.1  mrg ;;
   2563      1.1  mrg (define_insn "mve_vcmpeqq_m_f<mode>"
   2564      1.1  mrg   [
   2565  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2566  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   2567      1.1  mrg 		    (match_operand:MVE_0 2 "s_register_operand" "w")
   2568  1.1.1.2  mrg 		    (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2569      1.1  mrg 	 VCMPEQQ_M_F))
   2570      1.1  mrg   ]
   2571      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2572      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	eq, %q1, %q2"
   2573      1.1  mrg   [(set_attr "type" "mve_move")
   2574      1.1  mrg    (set_attr "length""8")])
   2575      1.1  mrg ;;
   2576      1.1  mrg ;; [vcvtaq_m_u, vcvtaq_m_s])
   2577      1.1  mrg ;;
   2578      1.1  mrg (define_insn "mve_vcvtaq_m_<supf><mode>"
   2579      1.1  mrg   [
   2580      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   2581      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   2582      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   2583  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2584      1.1  mrg 	 VCVTAQ_M))
   2585      1.1  mrg   ]
   2586      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2587      1.1  mrg   "vpst\;vcvtat.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2"
   2588      1.1  mrg   [(set_attr "type" "mve_move")
   2589      1.1  mrg    (set_attr "length""8")])
   2590      1.1  mrg ;;
   2591      1.1  mrg ;; [vcvtq_m_to_f_s, vcvtq_m_to_f_u])
   2592      1.1  mrg ;;
   2593      1.1  mrg (define_insn "mve_vcvtq_m_to_f_<supf><mode>"
   2594      1.1  mrg   [
   2595      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   2596      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   2597      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   2598  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2599      1.1  mrg 	 VCVTQ_M_TO_F))
   2600      1.1  mrg   ]
   2601      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   2602  1.1.1.2  mrg   "vpst\;vcvtt.f%#<V_sz_elem>.<supf>%#<V_sz_elem>\t%q0, %q2"
   2603      1.1  mrg   [(set_attr "type" "mve_move")
   2604      1.1  mrg    (set_attr "length""8")])
   2605      1.1  mrg ;;
   2606      1.1  mrg ;; [vqrshrnbq_n_u, vqrshrnbq_n_s])
   2607      1.1  mrg ;;
   2608      1.1  mrg (define_insn "mve_vqrshrnbq_n_<supf><mode>"
   2609      1.1  mrg   [
   2610      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2611      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2612      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")
   2613  1.1.1.2  mrg 				 (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   2614      1.1  mrg 	 VQRSHRNBQ_N))
   2615      1.1  mrg   ]
   2616      1.1  mrg   "TARGET_HAVE_MVE"
   2617      1.1  mrg   "vqrshrnb.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   2618      1.1  mrg   [(set_attr "type" "mve_move")
   2619      1.1  mrg ])
   2620      1.1  mrg ;;
   2621      1.1  mrg ;; [vqrshrunbq_n_s])
   2622      1.1  mrg ;;
   2623      1.1  mrg (define_insn "mve_vqrshrunbq_n_s<mode>"
   2624      1.1  mrg   [
   2625      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   2626      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   2627      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")
   2628  1.1.1.2  mrg 				 (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   2629      1.1  mrg 	 VQRSHRUNBQ_N_S))
   2630      1.1  mrg   ]
   2631      1.1  mrg   "TARGET_HAVE_MVE"
   2632      1.1  mrg   "vqrshrunb.s%#<V_sz_elem>\t%q0, %q2, %3"
   2633      1.1  mrg   [(set_attr "type" "mve_move")
   2634      1.1  mrg ])
   2635      1.1  mrg ;;
   2636      1.1  mrg ;; [vrmlaldavhaq_s vrmlaldavhaq_u])
   2637      1.1  mrg ;;
   2638      1.1  mrg (define_insn "mve_vrmlaldavhaq_<supf>v4si"
   2639      1.1  mrg   [
   2640      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   2641      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   2642      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")
   2643      1.1  mrg 		    (match_operand:V4SI 3 "s_register_operand" "w")]
   2644      1.1  mrg 	 VRMLALDAVHAQ))
   2645      1.1  mrg   ]
   2646      1.1  mrg   "TARGET_HAVE_MVE"
   2647  1.1.1.2  mrg   "vrmlaldavha.<supf>32\t%Q0, %R0, %q2, %q3"
   2648      1.1  mrg   [(set_attr "type" "mve_move")
   2649      1.1  mrg ])
   2650      1.1  mrg 
   2651      1.1  mrg ;;
   2652      1.1  mrg ;; [vabavq_s, vabavq_u])
   2653      1.1  mrg ;;
   2654      1.1  mrg (define_insn "mve_vabavq_<supf><mode>"
   2655      1.1  mrg   [
   2656      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=r")
   2657      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   2658      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")
   2659      1.1  mrg 		    (match_operand:MVE_2 3 "s_register_operand" "w")]
   2660      1.1  mrg 	 VABAVQ))
   2661      1.1  mrg   ]
   2662      1.1  mrg   "TARGET_HAVE_MVE"
   2663      1.1  mrg   "vabav.<supf>%#<V_sz_elem>\t%0, %q2, %q3"
   2664      1.1  mrg   [(set_attr "type" "mve_move")
   2665      1.1  mrg ])
   2666      1.1  mrg 
   2667      1.1  mrg ;;
   2668      1.1  mrg ;; [vshlcq_u vshlcq_s]
   2669      1.1  mrg ;;
   2670      1.1  mrg (define_expand "mve_vshlcq_vec_<supf><mode>"
   2671      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   2672      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   2673      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   2674      1.1  mrg   (match_operand:SI 3 "mve_imm_32")
   2675      1.1  mrg   (unspec:MVE_2 [(const_int 0)] VSHLCQ)]
   2676      1.1  mrg  "TARGET_HAVE_MVE"
   2677      1.1  mrg {
   2678      1.1  mrg   rtx ignore_wb = gen_reg_rtx (SImode);
   2679      1.1  mrg   emit_insn(gen_mve_vshlcq_<supf><mode>(operands[0], ignore_wb, operands[1],
   2680      1.1  mrg 				      operands[2], operands[3]));
   2681      1.1  mrg   DONE;
   2682      1.1  mrg })
   2683      1.1  mrg 
   2684      1.1  mrg (define_expand "mve_vshlcq_carry_<supf><mode>"
   2685      1.1  mrg  [(match_operand:SI 0 "s_register_operand")
   2686      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   2687      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   2688      1.1  mrg   (match_operand:SI 3 "mve_imm_32")
   2689      1.1  mrg   (unspec:MVE_2 [(const_int 0)] VSHLCQ)]
   2690      1.1  mrg  "TARGET_HAVE_MVE"
   2691      1.1  mrg {
   2692      1.1  mrg   rtx ignore_vec = gen_reg_rtx (<MODE>mode);
   2693      1.1  mrg   emit_insn(gen_mve_vshlcq_<supf><mode>(ignore_vec, operands[0], operands[1],
   2694      1.1  mrg 				      operands[2], operands[3]));
   2695      1.1  mrg   DONE;
   2696      1.1  mrg })
   2697      1.1  mrg 
   2698      1.1  mrg (define_insn "mve_vshlcq_<supf><mode>"
   2699      1.1  mrg  [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   2700      1.1  mrg        (unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0")
   2701      1.1  mrg 		      (match_operand:SI 3 "s_register_operand" "1")
   2702      1.1  mrg 		      (match_operand:SI 4 "mve_imm_32" "Rf")]
   2703      1.1  mrg 	VSHLCQ))
   2704      1.1  mrg   (set (match_operand:SI  1 "s_register_operand" "=r")
   2705      1.1  mrg        (unspec:SI [(match_dup 2)
   2706      1.1  mrg 		   (match_dup 3)
   2707      1.1  mrg 		   (match_dup 4)]
   2708      1.1  mrg 	VSHLCQ))]
   2709      1.1  mrg  "TARGET_HAVE_MVE"
   2710  1.1.1.2  mrg  "vshlc\t%q0, %1, %4")
   2711      1.1  mrg 
   2712      1.1  mrg ;;
   2713      1.1  mrg ;; [vabsq_m_s])
   2714      1.1  mrg ;;
   2715      1.1  mrg (define_insn "mve_vabsq_m_s<mode>"
   2716      1.1  mrg   [
   2717      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   2718      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   2719      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2720  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2721      1.1  mrg 	 VABSQ_M_S))
   2722      1.1  mrg   ]
   2723      1.1  mrg   "TARGET_HAVE_MVE"
   2724      1.1  mrg   "vpst\;vabst.s%#<V_sz_elem>	%q0, %q2"
   2725      1.1  mrg   [(set_attr "type" "mve_move")
   2726      1.1  mrg    (set_attr "length""8")])
   2727      1.1  mrg 
   2728      1.1  mrg ;;
   2729      1.1  mrg ;; [vaddvaq_p_u, vaddvaq_p_s])
   2730      1.1  mrg ;;
   2731      1.1  mrg (define_insn "mve_vaddvaq_p_<supf><mode>"
   2732      1.1  mrg   [
   2733      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   2734      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   2735      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2736  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2737      1.1  mrg 	 VADDVAQ_P))
   2738      1.1  mrg   ]
   2739      1.1  mrg   "TARGET_HAVE_MVE"
   2740      1.1  mrg   "vpst\;vaddvat.<supf>%#<V_sz_elem>	%0, %q2"
   2741      1.1  mrg   [(set_attr "type" "mve_move")
   2742      1.1  mrg    (set_attr "length""8")])
   2743      1.1  mrg 
   2744      1.1  mrg ;;
   2745      1.1  mrg ;; [vclsq_m_s])
   2746      1.1  mrg ;;
   2747      1.1  mrg (define_insn "mve_vclsq_m_s<mode>"
   2748      1.1  mrg   [
   2749      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   2750      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   2751      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2752  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2753      1.1  mrg 	 VCLSQ_M_S))
   2754      1.1  mrg   ]
   2755      1.1  mrg   "TARGET_HAVE_MVE"
   2756      1.1  mrg   "vpst\;vclst.s%#<V_sz_elem>	%q0, %q2"
   2757      1.1  mrg   [(set_attr "type" "mve_move")
   2758      1.1  mrg    (set_attr "length""8")])
   2759      1.1  mrg 
   2760      1.1  mrg ;;
   2761      1.1  mrg ;; [vclzq_m_s, vclzq_m_u])
   2762      1.1  mrg ;;
   2763      1.1  mrg (define_insn "mve_vclzq_m_<supf><mode>"
   2764      1.1  mrg   [
   2765      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   2766      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   2767      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2768  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2769      1.1  mrg 	 VCLZQ_M))
   2770      1.1  mrg   ]
   2771      1.1  mrg   "TARGET_HAVE_MVE"
   2772      1.1  mrg   "vpst\;vclzt.i%#<V_sz_elem>	%q0, %q2"
   2773      1.1  mrg   [(set_attr "type" "mve_move")
   2774      1.1  mrg    (set_attr "length""8")])
   2775      1.1  mrg 
   2776      1.1  mrg ;;
   2777      1.1  mrg ;; [vcmpcsq_m_n_u])
   2778      1.1  mrg ;;
   2779      1.1  mrg (define_insn "mve_vcmpcsq_m_n_u<mode>"
   2780      1.1  mrg   [
   2781  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2782  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2783      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2784  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2785      1.1  mrg 	 VCMPCSQ_M_N_U))
   2786      1.1  mrg   ]
   2787      1.1  mrg   "TARGET_HAVE_MVE"
   2788      1.1  mrg   "vpst\;vcmpt.u%#<V_sz_elem>	cs, %q1, %2"
   2789      1.1  mrg   [(set_attr "type" "mve_move")
   2790      1.1  mrg    (set_attr "length""8")])
   2791      1.1  mrg 
   2792      1.1  mrg ;;
   2793      1.1  mrg ;; [vcmpcsq_m_u])
   2794      1.1  mrg ;;
   2795      1.1  mrg (define_insn "mve_vcmpcsq_m_u<mode>"
   2796      1.1  mrg   [
   2797  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2798  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2799      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2800  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2801      1.1  mrg 	 VCMPCSQ_M_U))
   2802      1.1  mrg   ]
   2803      1.1  mrg   "TARGET_HAVE_MVE"
   2804      1.1  mrg   "vpst\;vcmpt.u%#<V_sz_elem>	cs, %q1, %q2"
   2805      1.1  mrg   [(set_attr "type" "mve_move")
   2806      1.1  mrg    (set_attr "length""8")])
   2807      1.1  mrg 
   2808      1.1  mrg ;;
   2809      1.1  mrg ;; [vcmpeqq_m_n_u, vcmpeqq_m_n_s])
   2810      1.1  mrg ;;
   2811      1.1  mrg (define_insn "mve_vcmpeqq_m_n_<supf><mode>"
   2812      1.1  mrg   [
   2813  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2814  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2815      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2816  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2817      1.1  mrg 	 VCMPEQQ_M_N))
   2818      1.1  mrg   ]
   2819      1.1  mrg   "TARGET_HAVE_MVE"
   2820      1.1  mrg   "vpst\;vcmpt.i%#<V_sz_elem>	eq, %q1, %2"
   2821      1.1  mrg   [(set_attr "type" "mve_move")
   2822      1.1  mrg    (set_attr "length""8")])
   2823      1.1  mrg 
   2824      1.1  mrg ;;
   2825      1.1  mrg ;; [vcmpeqq_m_u, vcmpeqq_m_s])
   2826      1.1  mrg ;;
   2827      1.1  mrg (define_insn "mve_vcmpeqq_m_<supf><mode>"
   2828      1.1  mrg   [
   2829  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2830  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2831      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2832  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2833      1.1  mrg 	 VCMPEQQ_M))
   2834      1.1  mrg   ]
   2835      1.1  mrg   "TARGET_HAVE_MVE"
   2836      1.1  mrg   "vpst\;vcmpt.i%#<V_sz_elem>	eq, %q1, %q2"
   2837      1.1  mrg   [(set_attr "type" "mve_move")
   2838      1.1  mrg    (set_attr "length""8")])
   2839      1.1  mrg 
   2840      1.1  mrg ;;
   2841      1.1  mrg ;; [vcmpgeq_m_n_s])
   2842      1.1  mrg ;;
   2843      1.1  mrg (define_insn "mve_vcmpgeq_m_n_s<mode>"
   2844      1.1  mrg   [
   2845  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2846  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2847      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2848  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2849      1.1  mrg 	 VCMPGEQ_M_N_S))
   2850      1.1  mrg   ]
   2851      1.1  mrg   "TARGET_HAVE_MVE"
   2852      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	ge, %q1, %2"
   2853      1.1  mrg   [(set_attr "type" "mve_move")
   2854      1.1  mrg    (set_attr "length""8")])
   2855      1.1  mrg 
   2856      1.1  mrg ;;
   2857      1.1  mrg ;; [vcmpgeq_m_s])
   2858      1.1  mrg ;;
   2859      1.1  mrg (define_insn "mve_vcmpgeq_m_s<mode>"
   2860      1.1  mrg   [
   2861  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2862  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2863      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2864  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2865      1.1  mrg 	 VCMPGEQ_M_S))
   2866      1.1  mrg   ]
   2867      1.1  mrg   "TARGET_HAVE_MVE"
   2868      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	ge, %q1, %q2"
   2869      1.1  mrg   [(set_attr "type" "mve_move")
   2870      1.1  mrg    (set_attr "length""8")])
   2871      1.1  mrg 
   2872      1.1  mrg ;;
   2873      1.1  mrg ;; [vcmpgtq_m_n_s])
   2874      1.1  mrg ;;
   2875      1.1  mrg (define_insn "mve_vcmpgtq_m_n_s<mode>"
   2876      1.1  mrg   [
   2877  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2878  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2879      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2880  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2881      1.1  mrg 	 VCMPGTQ_M_N_S))
   2882      1.1  mrg   ]
   2883      1.1  mrg   "TARGET_HAVE_MVE"
   2884      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	gt, %q1, %2"
   2885      1.1  mrg   [(set_attr "type" "mve_move")
   2886      1.1  mrg    (set_attr "length""8")])
   2887      1.1  mrg 
   2888      1.1  mrg ;;
   2889      1.1  mrg ;; [vcmpgtq_m_s])
   2890      1.1  mrg ;;
   2891      1.1  mrg (define_insn "mve_vcmpgtq_m_s<mode>"
   2892      1.1  mrg   [
   2893  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2894  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2895      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2896  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2897      1.1  mrg 	 VCMPGTQ_M_S))
   2898      1.1  mrg   ]
   2899      1.1  mrg   "TARGET_HAVE_MVE"
   2900      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	gt, %q1, %q2"
   2901      1.1  mrg   [(set_attr "type" "mve_move")
   2902      1.1  mrg    (set_attr "length""8")])
   2903      1.1  mrg 
   2904      1.1  mrg ;;
   2905      1.1  mrg ;; [vcmphiq_m_n_u])
   2906      1.1  mrg ;;
   2907      1.1  mrg (define_insn "mve_vcmphiq_m_n_u<mode>"
   2908      1.1  mrg   [
   2909  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2910  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2911      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2912  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2913      1.1  mrg 	 VCMPHIQ_M_N_U))
   2914      1.1  mrg   ]
   2915      1.1  mrg   "TARGET_HAVE_MVE"
   2916      1.1  mrg   "vpst\;vcmpt.u%#<V_sz_elem>	hi, %q1, %2"
   2917      1.1  mrg   [(set_attr "type" "mve_move")
   2918      1.1  mrg    (set_attr "length""8")])
   2919      1.1  mrg 
   2920      1.1  mrg ;;
   2921      1.1  mrg ;; [vcmphiq_m_u])
   2922      1.1  mrg ;;
   2923      1.1  mrg (define_insn "mve_vcmphiq_m_u<mode>"
   2924      1.1  mrg   [
   2925  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2926  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2927      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2928  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2929      1.1  mrg 	 VCMPHIQ_M_U))
   2930      1.1  mrg   ]
   2931      1.1  mrg   "TARGET_HAVE_MVE"
   2932      1.1  mrg   "vpst\;vcmpt.u%#<V_sz_elem>	hi, %q1, %q2"
   2933      1.1  mrg   [(set_attr "type" "mve_move")
   2934      1.1  mrg    (set_attr "length""8")])
   2935      1.1  mrg 
   2936      1.1  mrg ;;
   2937      1.1  mrg ;; [vcmpleq_m_n_s])
   2938      1.1  mrg ;;
   2939      1.1  mrg (define_insn "mve_vcmpleq_m_n_s<mode>"
   2940      1.1  mrg   [
   2941  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2942  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2943      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2944  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2945      1.1  mrg 	 VCMPLEQ_M_N_S))
   2946      1.1  mrg   ]
   2947      1.1  mrg   "TARGET_HAVE_MVE"
   2948      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	le, %q1, %2"
   2949      1.1  mrg   [(set_attr "type" "mve_move")
   2950      1.1  mrg    (set_attr "length""8")])
   2951      1.1  mrg 
   2952      1.1  mrg ;;
   2953      1.1  mrg ;; [vcmpleq_m_s])
   2954      1.1  mrg ;;
   2955      1.1  mrg (define_insn "mve_vcmpleq_m_s<mode>"
   2956      1.1  mrg   [
   2957  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2958  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2959      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2960  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2961      1.1  mrg 	 VCMPLEQ_M_S))
   2962      1.1  mrg   ]
   2963      1.1  mrg   "TARGET_HAVE_MVE"
   2964      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	le, %q1, %q2"
   2965      1.1  mrg   [(set_attr "type" "mve_move")
   2966      1.1  mrg    (set_attr "length""8")])
   2967      1.1  mrg 
   2968      1.1  mrg ;;
   2969      1.1  mrg ;; [vcmpltq_m_n_s])
   2970      1.1  mrg ;;
   2971      1.1  mrg (define_insn "mve_vcmpltq_m_n_s<mode>"
   2972      1.1  mrg   [
   2973  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2974  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2975      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   2976  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2977      1.1  mrg 	 VCMPLTQ_M_N_S))
   2978      1.1  mrg   ]
   2979      1.1  mrg   "TARGET_HAVE_MVE"
   2980      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	lt, %q1, %2"
   2981      1.1  mrg   [(set_attr "type" "mve_move")
   2982      1.1  mrg    (set_attr "length""8")])
   2983      1.1  mrg 
   2984      1.1  mrg ;;
   2985      1.1  mrg ;; [vcmpltq_m_s])
   2986      1.1  mrg ;;
   2987      1.1  mrg (define_insn "mve_vcmpltq_m_s<mode>"
   2988      1.1  mrg   [
   2989  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   2990  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   2991      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   2992  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   2993      1.1  mrg 	 VCMPLTQ_M_S))
   2994      1.1  mrg   ]
   2995      1.1  mrg   "TARGET_HAVE_MVE"
   2996      1.1  mrg   "vpst\;vcmpt.s%#<V_sz_elem>	lt, %q1, %q2"
   2997      1.1  mrg   [(set_attr "type" "mve_move")
   2998      1.1  mrg    (set_attr "length""8")])
   2999      1.1  mrg 
   3000      1.1  mrg ;;
   3001      1.1  mrg ;; [vcmpneq_m_n_u, vcmpneq_m_n_s])
   3002      1.1  mrg ;;
   3003      1.1  mrg (define_insn "mve_vcmpneq_m_n_<supf><mode>"
   3004      1.1  mrg   [
   3005  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3006  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   3007      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3008  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3009      1.1  mrg 	 VCMPNEQ_M_N))
   3010      1.1  mrg   ]
   3011      1.1  mrg   "TARGET_HAVE_MVE"
   3012      1.1  mrg   "vpst\;vcmpt.i%#<V_sz_elem>	ne, %q1, %2"
   3013      1.1  mrg   [(set_attr "type" "mve_move")
   3014      1.1  mrg    (set_attr "length""8")])
   3015      1.1  mrg 
   3016      1.1  mrg ;;
   3017      1.1  mrg ;; [vcmpneq_m_s, vcmpneq_m_u])
   3018      1.1  mrg ;;
   3019      1.1  mrg (define_insn "mve_vcmpneq_m_<supf><mode>"
   3020      1.1  mrg   [
   3021  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3022  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_2 1 "s_register_operand" "w")
   3023      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3024  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3025      1.1  mrg 	 VCMPNEQ_M))
   3026      1.1  mrg   ]
   3027      1.1  mrg   "TARGET_HAVE_MVE"
   3028      1.1  mrg   "vpst\;vcmpt.i%#<V_sz_elem>	ne, %q1, %q2"
   3029      1.1  mrg   [(set_attr "type" "mve_move")
   3030      1.1  mrg    (set_attr "length""8")])
   3031      1.1  mrg 
   3032      1.1  mrg ;;
   3033      1.1  mrg ;; [vdupq_m_n_s, vdupq_m_n_u])
   3034      1.1  mrg ;;
   3035      1.1  mrg (define_insn "mve_vdupq_m_n_<supf><mode>"
   3036      1.1  mrg   [
   3037      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3038      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3039      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3040  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3041      1.1  mrg 	 VDUPQ_M_N))
   3042      1.1  mrg   ]
   3043      1.1  mrg   "TARGET_HAVE_MVE"
   3044  1.1.1.2  mrg   "vpst\;vdupt.%#<V_sz_elem>\t%q0, %2"
   3045      1.1  mrg   [(set_attr "type" "mve_move")
   3046      1.1  mrg    (set_attr "length""8")])
   3047      1.1  mrg 
   3048      1.1  mrg ;;
   3049      1.1  mrg ;; [vmaxaq_m_s])
   3050      1.1  mrg ;;
   3051      1.1  mrg (define_insn "mve_vmaxaq_m_s<mode>"
   3052      1.1  mrg   [
   3053      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3054      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3055      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3056  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3057      1.1  mrg 	 VMAXAQ_M_S))
   3058      1.1  mrg   ]
   3059      1.1  mrg   "TARGET_HAVE_MVE"
   3060      1.1  mrg   "vpst\;vmaxat.s%#<V_sz_elem>	%q0, %q2"
   3061      1.1  mrg   [(set_attr "type" "mve_move")
   3062      1.1  mrg    (set_attr "length""8")])
   3063      1.1  mrg 
   3064      1.1  mrg ;;
   3065      1.1  mrg ;; [vmaxavq_p_s])
   3066      1.1  mrg ;;
   3067      1.1  mrg (define_insn "mve_vmaxavq_p_s<mode>"
   3068      1.1  mrg   [
   3069      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   3070      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   3071      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3072  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3073      1.1  mrg 	 VMAXAVQ_P_S))
   3074      1.1  mrg   ]
   3075      1.1  mrg   "TARGET_HAVE_MVE"
   3076      1.1  mrg   "vpst\;vmaxavt.s%#<V_sz_elem>	%0, %q2"
   3077      1.1  mrg   [(set_attr "type" "mve_move")
   3078      1.1  mrg    (set_attr "length""8")])
   3079      1.1  mrg 
   3080      1.1  mrg ;;
   3081      1.1  mrg ;; [vmaxvq_p_u, vmaxvq_p_s])
   3082      1.1  mrg ;;
   3083      1.1  mrg (define_insn "mve_vmaxvq_p_<supf><mode>"
   3084      1.1  mrg   [
   3085      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   3086      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   3087      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3088  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3089      1.1  mrg 	 VMAXVQ_P))
   3090      1.1  mrg   ]
   3091      1.1  mrg   "TARGET_HAVE_MVE"
   3092      1.1  mrg   "vpst\;vmaxvt.<supf>%#<V_sz_elem>	%0, %q2"
   3093      1.1  mrg   [(set_attr "type" "mve_move")
   3094      1.1  mrg    (set_attr "length""8")])
   3095      1.1  mrg 
   3096      1.1  mrg ;;
   3097      1.1  mrg ;; [vminaq_m_s])
   3098      1.1  mrg ;;
   3099      1.1  mrg (define_insn "mve_vminaq_m_s<mode>"
   3100      1.1  mrg   [
   3101      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3102      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3103      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3104  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3105      1.1  mrg 	 VMINAQ_M_S))
   3106      1.1  mrg   ]
   3107      1.1  mrg   "TARGET_HAVE_MVE"
   3108      1.1  mrg   "vpst\;vminat.s%#<V_sz_elem>	%q0, %q2"
   3109      1.1  mrg   [(set_attr "type" "mve_move")
   3110      1.1  mrg    (set_attr "length""8")])
   3111      1.1  mrg 
   3112      1.1  mrg ;;
   3113      1.1  mrg ;; [vminavq_p_s])
   3114      1.1  mrg ;;
   3115      1.1  mrg (define_insn "mve_vminavq_p_s<mode>"
   3116      1.1  mrg   [
   3117      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   3118      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   3119      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3120  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3121      1.1  mrg 	 VMINAVQ_P_S))
   3122      1.1  mrg   ]
   3123      1.1  mrg   "TARGET_HAVE_MVE"
   3124      1.1  mrg   "vpst\;vminavt.s%#<V_sz_elem>	%0, %q2"
   3125      1.1  mrg   [(set_attr "type" "mve_move")
   3126      1.1  mrg    (set_attr "length""8")])
   3127      1.1  mrg 
   3128      1.1  mrg ;;
   3129      1.1  mrg ;; [vminvq_p_s, vminvq_p_u])
   3130      1.1  mrg ;;
   3131      1.1  mrg (define_insn "mve_vminvq_p_<supf><mode>"
   3132      1.1  mrg   [
   3133      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   3134      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   3135      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3136  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3137      1.1  mrg 	 VMINVQ_P))
   3138      1.1  mrg   ]
   3139      1.1  mrg   "TARGET_HAVE_MVE"
   3140      1.1  mrg   "vpst\;vminvt.<supf>%#<V_sz_elem>\t%0, %q2"
   3141      1.1  mrg   [(set_attr "type" "mve_move")
   3142      1.1  mrg    (set_attr "length""8")])
   3143      1.1  mrg 
   3144      1.1  mrg ;;
   3145      1.1  mrg ;; [vmladavaq_u, vmladavaq_s])
   3146      1.1  mrg ;;
   3147      1.1  mrg (define_insn "mve_vmladavaq_<supf><mode>"
   3148      1.1  mrg   [
   3149      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3150      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   3151      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3152      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3153      1.1  mrg 	 VMLADAVAQ))
   3154      1.1  mrg   ]
   3155      1.1  mrg   "TARGET_HAVE_MVE"
   3156      1.1  mrg   "vmladava.<supf>%#<V_sz_elem>	%0, %q2, %q3"
   3157      1.1  mrg   [(set_attr "type" "mve_move")
   3158      1.1  mrg ])
   3159      1.1  mrg 
   3160      1.1  mrg ;;
   3161      1.1  mrg ;; [vmladavq_p_u, vmladavq_p_s])
   3162      1.1  mrg ;;
   3163      1.1  mrg (define_insn "mve_vmladavq_p_<supf><mode>"
   3164      1.1  mrg   [
   3165      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3166      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   3167      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3168  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3169      1.1  mrg 	 VMLADAVQ_P))
   3170      1.1  mrg   ]
   3171      1.1  mrg   "TARGET_HAVE_MVE"
   3172      1.1  mrg   "vpst\;vmladavt.<supf>%#<V_sz_elem>\t%0, %q1, %q2"
   3173      1.1  mrg   [(set_attr "type" "mve_move")
   3174      1.1  mrg    (set_attr "length""8")])
   3175      1.1  mrg 
   3176      1.1  mrg ;;
   3177      1.1  mrg ;; [vmladavxq_p_s])
   3178      1.1  mrg ;;
   3179      1.1  mrg (define_insn "mve_vmladavxq_p_s<mode>"
   3180      1.1  mrg   [
   3181      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3182      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   3183      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3184  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3185      1.1  mrg 	 VMLADAVXQ_P_S))
   3186      1.1  mrg   ]
   3187      1.1  mrg   "TARGET_HAVE_MVE"
   3188      1.1  mrg   "vpst\;vmladavxt.s%#<V_sz_elem>\t%0, %q1, %q2"
   3189      1.1  mrg   [(set_attr "type" "mve_move")
   3190      1.1  mrg    (set_attr "length""8")])
   3191      1.1  mrg 
   3192      1.1  mrg ;;
   3193      1.1  mrg ;; [vmlaq_n_u, vmlaq_n_s])
   3194      1.1  mrg ;;
   3195      1.1  mrg (define_insn "mve_vmlaq_n_<supf><mode>"
   3196      1.1  mrg   [
   3197      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3198      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3199      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3200      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   3201      1.1  mrg 	 VMLAQ_N))
   3202      1.1  mrg   ]
   3203      1.1  mrg   "TARGET_HAVE_MVE"
   3204      1.1  mrg   "vmla.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   3205      1.1  mrg   [(set_attr "type" "mve_move")
   3206      1.1  mrg ])
   3207      1.1  mrg 
   3208      1.1  mrg ;;
   3209      1.1  mrg ;; [vmlasq_n_u, vmlasq_n_s])
   3210      1.1  mrg ;;
   3211      1.1  mrg (define_insn "mve_vmlasq_n_<supf><mode>"
   3212      1.1  mrg   [
   3213      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3214      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3215      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3216      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   3217      1.1  mrg 	 VMLASQ_N))
   3218      1.1  mrg   ]
   3219      1.1  mrg   "TARGET_HAVE_MVE"
   3220      1.1  mrg   "vmlas.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   3221      1.1  mrg   [(set_attr "type" "mve_move")
   3222      1.1  mrg ])
   3223      1.1  mrg 
   3224      1.1  mrg ;;
   3225      1.1  mrg ;; [vmlsdavq_p_s])
   3226      1.1  mrg ;;
   3227      1.1  mrg (define_insn "mve_vmlsdavq_p_s<mode>"
   3228      1.1  mrg   [
   3229      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3230      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   3231      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3232  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3233      1.1  mrg 	 VMLSDAVQ_P_S))
   3234      1.1  mrg   ]
   3235      1.1  mrg   "TARGET_HAVE_MVE"
   3236      1.1  mrg   "vpst\;vmlsdavt.s%#<V_sz_elem>	%0, %q1, %q2"
   3237      1.1  mrg   [(set_attr "type" "mve_move")
   3238      1.1  mrg    (set_attr "length""8")])
   3239      1.1  mrg 
   3240      1.1  mrg ;;
   3241      1.1  mrg ;; [vmlsdavxq_p_s])
   3242      1.1  mrg ;;
   3243      1.1  mrg (define_insn "mve_vmlsdavxq_p_s<mode>"
   3244      1.1  mrg   [
   3245      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3246      1.1  mrg 	(unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
   3247      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3248  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3249      1.1  mrg 	 VMLSDAVXQ_P_S))
   3250      1.1  mrg   ]
   3251      1.1  mrg   "TARGET_HAVE_MVE"
   3252      1.1  mrg   "vpst\;vmlsdavxt.s%#<V_sz_elem>	%0, %q1, %q2"
   3253      1.1  mrg   [(set_attr "type" "mve_move")
   3254      1.1  mrg    (set_attr "length""8")])
   3255      1.1  mrg 
   3256      1.1  mrg ;;
   3257      1.1  mrg ;; [vmvnq_m_s, vmvnq_m_u])
   3258      1.1  mrg ;;
   3259      1.1  mrg (define_insn "mve_vmvnq_m_<supf><mode>"
   3260      1.1  mrg   [
   3261      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3262      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3263      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3264  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3265      1.1  mrg 	 VMVNQ_M))
   3266      1.1  mrg   ]
   3267      1.1  mrg   "TARGET_HAVE_MVE"
   3268  1.1.1.2  mrg   "vpst\;vmvnt\t%q0, %q2"
   3269      1.1  mrg   [(set_attr "type" "mve_move")
   3270      1.1  mrg    (set_attr "length""8")])
   3271      1.1  mrg 
   3272      1.1  mrg ;;
   3273      1.1  mrg ;; [vnegq_m_s])
   3274      1.1  mrg ;;
   3275      1.1  mrg (define_insn "mve_vnegq_m_s<mode>"
   3276      1.1  mrg   [
   3277      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3278      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3279      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3280  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3281      1.1  mrg 	 VNEGQ_M_S))
   3282      1.1  mrg   ]
   3283      1.1  mrg   "TARGET_HAVE_MVE"
   3284      1.1  mrg   "vpst\;vnegt.s%#<V_sz_elem>\t%q0, %q2"
   3285      1.1  mrg   [(set_attr "type" "mve_move")
   3286      1.1  mrg    (set_attr "length""8")])
   3287      1.1  mrg 
   3288      1.1  mrg ;;
   3289      1.1  mrg ;; [vpselq_u, vpselq_s])
   3290      1.1  mrg ;;
   3291  1.1.1.2  mrg (define_insn "@mve_vpselq_<supf><mode>"
   3292      1.1  mrg   [
   3293      1.1  mrg    (set (match_operand:MVE_1 0 "s_register_operand" "=w")
   3294      1.1  mrg 	(unspec:MVE_1 [(match_operand:MVE_1 1 "s_register_operand" "w")
   3295      1.1  mrg 		       (match_operand:MVE_1 2 "s_register_operand" "w")
   3296  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3297      1.1  mrg 	 VPSELQ))
   3298      1.1  mrg   ]
   3299      1.1  mrg   "TARGET_HAVE_MVE"
   3300  1.1.1.2  mrg   "vpsel\t%q0, %q1, %q2"
   3301      1.1  mrg   [(set_attr "type" "mve_move")
   3302      1.1  mrg ])
   3303      1.1  mrg 
   3304      1.1  mrg ;;
   3305      1.1  mrg ;; [vqabsq_m_s])
   3306      1.1  mrg ;;
   3307      1.1  mrg (define_insn "mve_vqabsq_m_s<mode>"
   3308      1.1  mrg   [
   3309      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3310      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3311      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3312  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3313      1.1  mrg 	 VQABSQ_M_S))
   3314      1.1  mrg   ]
   3315      1.1  mrg   "TARGET_HAVE_MVE"
   3316      1.1  mrg   "vpst\;vqabst.s%#<V_sz_elem>\t%q0, %q2"
   3317      1.1  mrg   [(set_attr "type" "mve_move")
   3318      1.1  mrg    (set_attr "length""8")])
   3319      1.1  mrg 
   3320      1.1  mrg ;;
   3321      1.1  mrg ;; [vqdmlahq_n_s])
   3322      1.1  mrg ;;
   3323      1.1  mrg (define_insn "mve_vqdmlahq_n_<supf><mode>"
   3324      1.1  mrg   [
   3325      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3326      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3327      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3328      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   3329      1.1  mrg 	 VQDMLAHQ_N))
   3330      1.1  mrg   ]
   3331      1.1  mrg   "TARGET_HAVE_MVE"
   3332      1.1  mrg   "vqdmlah.s%#<V_sz_elem>\t%q0, %q2, %3"
   3333      1.1  mrg   [(set_attr "type" "mve_move")
   3334      1.1  mrg ])
   3335      1.1  mrg 
   3336      1.1  mrg ;;
   3337      1.1  mrg ;; [vqdmlashq_n_s])
   3338      1.1  mrg ;;
   3339      1.1  mrg (define_insn "mve_vqdmlashq_n_<supf><mode>"
   3340      1.1  mrg   [
   3341      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3342      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3343      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3344      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   3345      1.1  mrg 	 VQDMLASHQ_N))
   3346      1.1  mrg   ]
   3347      1.1  mrg   "TARGET_HAVE_MVE"
   3348      1.1  mrg   "vqdmlash.s%#<V_sz_elem>\t%q0, %q2, %3"
   3349      1.1  mrg   [(set_attr "type" "mve_move")
   3350      1.1  mrg ])
   3351      1.1  mrg 
   3352      1.1  mrg ;;
   3353      1.1  mrg ;; [vqnegq_m_s])
   3354      1.1  mrg ;;
   3355      1.1  mrg (define_insn "mve_vqnegq_m_s<mode>"
   3356      1.1  mrg   [
   3357      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3358      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3359      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3360  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3361      1.1  mrg 	 VQNEGQ_M_S))
   3362      1.1  mrg   ]
   3363      1.1  mrg   "TARGET_HAVE_MVE"
   3364      1.1  mrg   "vpst\;vqnegt.s%#<V_sz_elem>	%q0, %q2"
   3365      1.1  mrg   [(set_attr "type" "mve_move")
   3366      1.1  mrg    (set_attr "length""8")])
   3367      1.1  mrg 
   3368      1.1  mrg ;;
   3369      1.1  mrg ;; [vqrdmladhq_s])
   3370      1.1  mrg ;;
   3371      1.1  mrg (define_insn "mve_vqrdmladhq_s<mode>"
   3372      1.1  mrg   [
   3373      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3374      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3375      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3376      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3377      1.1  mrg 	 VQRDMLADHQ_S))
   3378      1.1  mrg   ]
   3379      1.1  mrg   "TARGET_HAVE_MVE"
   3380      1.1  mrg   "vqrdmladh.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3381      1.1  mrg   [(set_attr "type" "mve_move")
   3382      1.1  mrg ])
   3383      1.1  mrg 
   3384      1.1  mrg ;;
   3385      1.1  mrg ;; [vqrdmladhxq_s])
   3386      1.1  mrg ;;
   3387      1.1  mrg (define_insn "mve_vqrdmladhxq_s<mode>"
   3388      1.1  mrg   [
   3389      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3390      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3391      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3392      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3393      1.1  mrg 	 VQRDMLADHXQ_S))
   3394      1.1  mrg   ]
   3395      1.1  mrg   "TARGET_HAVE_MVE"
   3396      1.1  mrg   "vqrdmladhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3397      1.1  mrg   [(set_attr "type" "mve_move")
   3398      1.1  mrg ])
   3399      1.1  mrg 
   3400      1.1  mrg ;;
   3401      1.1  mrg ;; [vqrdmlahq_n_s])
   3402      1.1  mrg ;;
   3403      1.1  mrg (define_insn "mve_vqrdmlahq_n_<supf><mode>"
   3404      1.1  mrg   [
   3405      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3406      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3407      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3408      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   3409      1.1  mrg 	 VQRDMLAHQ_N))
   3410      1.1  mrg   ]
   3411      1.1  mrg   "TARGET_HAVE_MVE"
   3412      1.1  mrg   "vqrdmlah.s%#<V_sz_elem>\t%q0, %q2, %3"
   3413      1.1  mrg   [(set_attr "type" "mve_move")
   3414      1.1  mrg ])
   3415      1.1  mrg 
   3416      1.1  mrg ;;
   3417      1.1  mrg ;; [vqrdmlashq_n_s])
   3418      1.1  mrg ;;
   3419      1.1  mrg (define_insn "mve_vqrdmlashq_n_<supf><mode>"
   3420      1.1  mrg   [
   3421      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3422      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3423      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3424      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   3425      1.1  mrg 	 VQRDMLASHQ_N))
   3426      1.1  mrg   ]
   3427      1.1  mrg   "TARGET_HAVE_MVE"
   3428      1.1  mrg   "vqrdmlash.s%#<V_sz_elem>\t%q0, %q2, %3"
   3429      1.1  mrg   [(set_attr "type" "mve_move")
   3430      1.1  mrg ])
   3431      1.1  mrg 
   3432      1.1  mrg ;;
   3433      1.1  mrg ;; [vqrdmlsdhq_s])
   3434      1.1  mrg ;;
   3435      1.1  mrg (define_insn "mve_vqrdmlsdhq_s<mode>"
   3436      1.1  mrg   [
   3437      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3438      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3439      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3440      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3441      1.1  mrg 	 VQRDMLSDHQ_S))
   3442      1.1  mrg   ]
   3443      1.1  mrg   "TARGET_HAVE_MVE"
   3444      1.1  mrg   "vqrdmlsdh.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3445      1.1  mrg   [(set_attr "type" "mve_move")
   3446      1.1  mrg ])
   3447      1.1  mrg 
   3448      1.1  mrg ;;
   3449      1.1  mrg ;; [vqrdmlsdhxq_s])
   3450      1.1  mrg ;;
   3451      1.1  mrg (define_insn "mve_vqrdmlsdhxq_s<mode>"
   3452      1.1  mrg   [
   3453      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3454      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3455      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3456      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3457      1.1  mrg 	 VQRDMLSDHXQ_S))
   3458      1.1  mrg   ]
   3459      1.1  mrg   "TARGET_HAVE_MVE"
   3460      1.1  mrg   "vqrdmlsdhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3461      1.1  mrg   [(set_attr "type" "mve_move")
   3462      1.1  mrg ])
   3463      1.1  mrg 
   3464      1.1  mrg ;;
   3465      1.1  mrg ;; [vqrshlq_m_n_s, vqrshlq_m_n_u])
   3466      1.1  mrg ;;
   3467      1.1  mrg (define_insn "mve_vqrshlq_m_n_<supf><mode>"
   3468      1.1  mrg   [
   3469      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3470      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3471      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")
   3472  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3473      1.1  mrg 	 VQRSHLQ_M_N))
   3474      1.1  mrg   ]
   3475      1.1  mrg   "TARGET_HAVE_MVE"
   3476      1.1  mrg   "vpst\;vqrshlt.<supf>%#<V_sz_elem>	%q0, %2"
   3477      1.1  mrg   [(set_attr "type" "mve_move")
   3478      1.1  mrg    (set_attr "length""8")])
   3479      1.1  mrg 
   3480      1.1  mrg ;;
   3481      1.1  mrg ;; [vqshlq_m_r_u, vqshlq_m_r_s])
   3482      1.1  mrg ;;
   3483      1.1  mrg (define_insn "mve_vqshlq_m_r_<supf><mode>"
   3484      1.1  mrg   [
   3485      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3486      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3487      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")
   3488  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3489      1.1  mrg 	 VQSHLQ_M_R))
   3490      1.1  mrg   ]
   3491      1.1  mrg   "TARGET_HAVE_MVE"
   3492      1.1  mrg   "vpst\;vqshlt.<supf>%#<V_sz_elem>\t%q0, %2"
   3493      1.1  mrg   [(set_attr "type" "mve_move")
   3494      1.1  mrg    (set_attr "length""8")])
   3495      1.1  mrg 
   3496      1.1  mrg ;;
   3497      1.1  mrg ;; [vrev64q_m_u, vrev64q_m_s])
   3498      1.1  mrg ;;
   3499      1.1  mrg (define_insn "mve_vrev64q_m_<supf><mode>"
   3500      1.1  mrg   [
   3501  1.1.1.2  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=&w")
   3502      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3503      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3504  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3505      1.1  mrg 	 VREV64Q_M))
   3506      1.1  mrg   ]
   3507      1.1  mrg   "TARGET_HAVE_MVE"
   3508      1.1  mrg   "vpst\;vrev64t.%#<V_sz_elem>\t%q0, %q2"
   3509      1.1  mrg   [(set_attr "type" "mve_move")
   3510      1.1  mrg    (set_attr "length""8")])
   3511      1.1  mrg 
   3512      1.1  mrg ;;
   3513      1.1  mrg ;; [vrshlq_m_n_s, vrshlq_m_n_u])
   3514      1.1  mrg ;;
   3515      1.1  mrg (define_insn "mve_vrshlq_m_n_<supf><mode>"
   3516      1.1  mrg   [
   3517      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3518      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3519      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")
   3520  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3521      1.1  mrg 	 VRSHLQ_M_N))
   3522      1.1  mrg   ]
   3523      1.1  mrg   "TARGET_HAVE_MVE"
   3524      1.1  mrg   "vpst\;vrshlt.<supf>%#<V_sz_elem>\t%q0, %2"
   3525      1.1  mrg   [(set_attr "type" "mve_move")
   3526      1.1  mrg    (set_attr "length""8")])
   3527      1.1  mrg 
   3528      1.1  mrg ;;
   3529      1.1  mrg ;; [vshlq_m_r_u, vshlq_m_r_s])
   3530      1.1  mrg ;;
   3531      1.1  mrg (define_insn "mve_vshlq_m_r_<supf><mode>"
   3532      1.1  mrg   [
   3533      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3534      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3535      1.1  mrg 		       (match_operand:SI 2 "s_register_operand" "r")
   3536  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3537      1.1  mrg 	 VSHLQ_M_R))
   3538      1.1  mrg   ]
   3539      1.1  mrg   "TARGET_HAVE_MVE"
   3540      1.1  mrg   "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %2"
   3541      1.1  mrg   [(set_attr "type" "mve_move")
   3542      1.1  mrg    (set_attr "length""8")])
   3543      1.1  mrg 
   3544      1.1  mrg ;;
   3545      1.1  mrg ;; [vsliq_n_u, vsliq_n_s])
   3546      1.1  mrg ;;
   3547      1.1  mrg (define_insn "mve_vsliq_n_<supf><mode>"
   3548      1.1  mrg   [
   3549      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3550      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3551      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3552      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>")]
   3553      1.1  mrg 	 VSLIQ_N))
   3554      1.1  mrg   ]
   3555      1.1  mrg   "TARGET_HAVE_MVE"
   3556      1.1  mrg   "vsli.%#<V_sz_elem>\t%q0, %q2, %3"
   3557      1.1  mrg   [(set_attr "type" "mve_move")
   3558      1.1  mrg ])
   3559      1.1  mrg 
   3560      1.1  mrg ;;
   3561      1.1  mrg ;; [vsriq_n_u, vsriq_n_s])
   3562      1.1  mrg ;;
   3563      1.1  mrg (define_insn "mve_vsriq_n_<supf><mode>"
   3564      1.1  mrg   [
   3565      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3566      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3567      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3568  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")]
   3569      1.1  mrg 	 VSRIQ_N))
   3570      1.1  mrg   ]
   3571      1.1  mrg   "TARGET_HAVE_MVE"
   3572      1.1  mrg   "vsri.%#<V_sz_elem>\t%q0, %q2, %3"
   3573      1.1  mrg   [(set_attr "type" "mve_move")
   3574      1.1  mrg ])
   3575      1.1  mrg 
   3576      1.1  mrg ;;
   3577      1.1  mrg ;; [vqdmlsdhxq_s])
   3578      1.1  mrg ;;
   3579      1.1  mrg (define_insn "mve_vqdmlsdhxq_s<mode>"
   3580      1.1  mrg   [
   3581      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3582      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3583      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3584      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3585      1.1  mrg 	 VQDMLSDHXQ_S))
   3586      1.1  mrg   ]
   3587      1.1  mrg   "TARGET_HAVE_MVE"
   3588      1.1  mrg   "vqdmlsdhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3589      1.1  mrg   [(set_attr "type" "mve_move")
   3590      1.1  mrg ])
   3591      1.1  mrg 
   3592      1.1  mrg ;;
   3593      1.1  mrg ;; [vqdmlsdhq_s])
   3594      1.1  mrg ;;
   3595      1.1  mrg (define_insn "mve_vqdmlsdhq_s<mode>"
   3596      1.1  mrg   [
   3597      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3598      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3599      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3600      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3601      1.1  mrg 	 VQDMLSDHQ_S))
   3602      1.1  mrg   ]
   3603      1.1  mrg   "TARGET_HAVE_MVE"
   3604      1.1  mrg   "vqdmlsdh.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3605      1.1  mrg   [(set_attr "type" "mve_move")
   3606      1.1  mrg ])
   3607      1.1  mrg 
   3608      1.1  mrg ;;
   3609      1.1  mrg ;; [vqdmladhxq_s])
   3610      1.1  mrg ;;
   3611      1.1  mrg (define_insn "mve_vqdmladhxq_s<mode>"
   3612      1.1  mrg   [
   3613      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3614      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3615      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3616      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3617      1.1  mrg 	 VQDMLADHXQ_S))
   3618      1.1  mrg   ]
   3619      1.1  mrg   "TARGET_HAVE_MVE"
   3620      1.1  mrg   "vqdmladhx.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3621      1.1  mrg   [(set_attr "type" "mve_move")
   3622      1.1  mrg ])
   3623      1.1  mrg 
   3624      1.1  mrg ;;
   3625      1.1  mrg ;; [vqdmladhq_s])
   3626      1.1  mrg ;;
   3627      1.1  mrg (define_insn "mve_vqdmladhq_s<mode>"
   3628      1.1  mrg   [
   3629      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   3630      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   3631      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   3632      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")]
   3633      1.1  mrg 	 VQDMLADHQ_S))
   3634      1.1  mrg   ]
   3635      1.1  mrg   "TARGET_HAVE_MVE"
   3636      1.1  mrg   "vqdmladh.s%#<V_sz_elem>\t%q0, %q2, %q3"
   3637      1.1  mrg   [(set_attr "type" "mve_move")
   3638      1.1  mrg ])
   3639      1.1  mrg 
   3640      1.1  mrg ;;
   3641      1.1  mrg ;; [vmlsdavaxq_s])
   3642      1.1  mrg ;;
   3643      1.1  mrg (define_insn "mve_vmlsdavaxq_s<mode>"
   3644      1.1  mrg   [
   3645      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3646      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   3647      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")
   3648      1.1  mrg 		    (match_operand:MVE_2 3 "s_register_operand" "w")]
   3649      1.1  mrg 	 VMLSDAVAXQ_S))
   3650      1.1  mrg   ]
   3651      1.1  mrg   "TARGET_HAVE_MVE"
   3652      1.1  mrg   "vmlsdavax.s%#<V_sz_elem>\t%0, %q2, %q3"
   3653      1.1  mrg   [(set_attr "type" "mve_move")
   3654      1.1  mrg ])
   3655      1.1  mrg 
   3656      1.1  mrg ;;
   3657      1.1  mrg ;; [vmlsdavaq_s])
   3658      1.1  mrg ;;
   3659      1.1  mrg (define_insn "mve_vmlsdavaq_s<mode>"
   3660      1.1  mrg   [
   3661      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3662      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   3663      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")
   3664      1.1  mrg 		    (match_operand:MVE_2 3 "s_register_operand" "w")]
   3665      1.1  mrg 	 VMLSDAVAQ_S))
   3666      1.1  mrg   ]
   3667      1.1  mrg   "TARGET_HAVE_MVE"
   3668      1.1  mrg   "vmlsdava.s%#<V_sz_elem>\t%0, %q2, %q3"
   3669      1.1  mrg   [(set_attr "type" "mve_move")
   3670      1.1  mrg ])
   3671      1.1  mrg 
   3672      1.1  mrg ;;
   3673      1.1  mrg ;; [vmladavaxq_s])
   3674      1.1  mrg ;;
   3675      1.1  mrg (define_insn "mve_vmladavaxq_s<mode>"
   3676      1.1  mrg   [
   3677      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   3678      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   3679      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")
   3680      1.1  mrg 		    (match_operand:MVE_2 3 "s_register_operand" "w")]
   3681      1.1  mrg 	 VMLADAVAXQ_S))
   3682      1.1  mrg   ]
   3683      1.1  mrg   "TARGET_HAVE_MVE"
   3684      1.1  mrg   "vmladavax.s%#<V_sz_elem>\t%0, %q2, %q3"
   3685      1.1  mrg   [(set_attr "type" "mve_move")
   3686      1.1  mrg ])
   3687      1.1  mrg ;;
   3688      1.1  mrg ;; [vabsq_m_f])
   3689      1.1  mrg ;;
   3690      1.1  mrg (define_insn "mve_vabsq_m_f<mode>"
   3691      1.1  mrg   [
   3692      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   3693      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   3694      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   3695  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3696      1.1  mrg 	 VABSQ_M_F))
   3697      1.1  mrg   ]
   3698      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3699      1.1  mrg   "vpst\;vabst.f%#<V_sz_elem>	%q0, %q2"
   3700      1.1  mrg   [(set_attr "type" "mve_move")
   3701      1.1  mrg    (set_attr "length""8")])
   3702      1.1  mrg 
   3703      1.1  mrg ;;
   3704      1.1  mrg ;; [vaddlvaq_p_s vaddlvaq_p_u])
   3705      1.1  mrg ;;
   3706      1.1  mrg (define_insn "mve_vaddlvaq_p_<supf>v4si"
   3707      1.1  mrg   [
   3708      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   3709      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   3710      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   3711  1.1.1.2  mrg 		       (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   3712      1.1  mrg 	 VADDLVAQ_P))
   3713      1.1  mrg   ]
   3714      1.1  mrg   "TARGET_HAVE_MVE"
   3715  1.1.1.2  mrg   "vpst\;vaddlvat.<supf>32\t%Q0, %R0, %q2"
   3716      1.1  mrg   [(set_attr "type" "mve_move")
   3717      1.1  mrg    (set_attr "length""8")])
   3718      1.1  mrg ;;
   3719  1.1.1.2  mrg ;; [vcmlaq, vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270])
   3720      1.1  mrg ;;
   3721  1.1.1.2  mrg (define_insn "mve_vcmlaq<mve_rot><mode>"
   3722      1.1  mrg   [
   3723  1.1.1.2  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w,w")
   3724  1.1.1.2  mrg 	(plus:MVE_0 (match_operand:MVE_0 1 "reg_or_zero_operand" "Dz,0")
   3725  1.1.1.2  mrg 		    (unspec:MVE_0
   3726  1.1.1.2  mrg 		        [(match_operand:MVE_0 2 "s_register_operand" "w,w")
   3727  1.1.1.2  mrg 		         (match_operand:MVE_0 3 "s_register_operand" "w,w")]
   3728  1.1.1.2  mrg 		     VCMLA)))
   3729      1.1  mrg   ]
   3730      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3731  1.1.1.2  mrg   "@
   3732  1.1.1.2  mrg    vcmul.f%#<V_sz_elem>	%q0, %q2, %q3, #<rot>
   3733  1.1.1.2  mrg    vcmla.f%#<V_sz_elem>	%q0, %q2, %q3, #<rot>"
   3734      1.1  mrg   [(set_attr "type" "mve_move")
   3735      1.1  mrg ])
   3736      1.1  mrg 
   3737      1.1  mrg ;;
   3738      1.1  mrg ;; [vcmpeqq_m_n_f])
   3739      1.1  mrg ;;
   3740      1.1  mrg (define_insn "mve_vcmpeqq_m_n_f<mode>"
   3741      1.1  mrg   [
   3742  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3743  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3744      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3745  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3746      1.1  mrg 	 VCMPEQQ_M_N_F))
   3747      1.1  mrg   ]
   3748      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3749      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	eq, %q1, %2"
   3750      1.1  mrg   [(set_attr "type" "mve_move")
   3751      1.1  mrg    (set_attr "length""8")])
   3752      1.1  mrg 
   3753      1.1  mrg ;;
   3754      1.1  mrg ;; [vcmpgeq_m_f])
   3755      1.1  mrg ;;
   3756      1.1  mrg (define_insn "mve_vcmpgeq_m_f<mode>"
   3757      1.1  mrg   [
   3758  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3759  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3760      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   3761  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3762      1.1  mrg 	 VCMPGEQ_M_F))
   3763      1.1  mrg   ]
   3764      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3765      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	ge, %q1, %q2"
   3766      1.1  mrg   [(set_attr "type" "mve_move")
   3767      1.1  mrg    (set_attr "length""8")])
   3768      1.1  mrg 
   3769      1.1  mrg ;;
   3770      1.1  mrg ;; [vcmpgeq_m_n_f])
   3771      1.1  mrg ;;
   3772      1.1  mrg (define_insn "mve_vcmpgeq_m_n_f<mode>"
   3773      1.1  mrg   [
   3774  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3775  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3776      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3777  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3778      1.1  mrg 	 VCMPGEQ_M_N_F))
   3779      1.1  mrg   ]
   3780      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3781      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	ge, %q1, %2"
   3782      1.1  mrg   [(set_attr "type" "mve_move")
   3783      1.1  mrg    (set_attr "length""8")])
   3784      1.1  mrg 
   3785      1.1  mrg ;;
   3786      1.1  mrg ;; [vcmpgtq_m_f])
   3787      1.1  mrg ;;
   3788      1.1  mrg (define_insn "mve_vcmpgtq_m_f<mode>"
   3789      1.1  mrg   [
   3790  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3791  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3792      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   3793  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3794      1.1  mrg 	 VCMPGTQ_M_F))
   3795      1.1  mrg   ]
   3796      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3797      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	gt, %q1, %q2"
   3798      1.1  mrg   [(set_attr "type" "mve_move")
   3799      1.1  mrg    (set_attr "length""8")])
   3800      1.1  mrg 
   3801      1.1  mrg ;;
   3802      1.1  mrg ;; [vcmpgtq_m_n_f])
   3803      1.1  mrg ;;
   3804      1.1  mrg (define_insn "mve_vcmpgtq_m_n_f<mode>"
   3805      1.1  mrg   [
   3806  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3807  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3808      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3809  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3810      1.1  mrg 	 VCMPGTQ_M_N_F))
   3811      1.1  mrg   ]
   3812      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3813      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	gt, %q1, %2"
   3814      1.1  mrg   [(set_attr "type" "mve_move")
   3815      1.1  mrg    (set_attr "length""8")])
   3816      1.1  mrg 
   3817      1.1  mrg ;;
   3818      1.1  mrg ;; [vcmpleq_m_f])
   3819      1.1  mrg ;;
   3820      1.1  mrg (define_insn "mve_vcmpleq_m_f<mode>"
   3821      1.1  mrg   [
   3822  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3823  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3824      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   3825  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3826      1.1  mrg 	 VCMPLEQ_M_F))
   3827      1.1  mrg   ]
   3828      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3829      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	le, %q1, %q2"
   3830      1.1  mrg   [(set_attr "type" "mve_move")
   3831      1.1  mrg    (set_attr "length""8")])
   3832      1.1  mrg 
   3833      1.1  mrg ;;
   3834      1.1  mrg ;; [vcmpleq_m_n_f])
   3835      1.1  mrg ;;
   3836      1.1  mrg (define_insn "mve_vcmpleq_m_n_f<mode>"
   3837      1.1  mrg   [
   3838  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3839  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3840      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3841  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3842      1.1  mrg 	 VCMPLEQ_M_N_F))
   3843      1.1  mrg   ]
   3844      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3845      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	le, %q1, %2"
   3846      1.1  mrg   [(set_attr "type" "mve_move")
   3847      1.1  mrg    (set_attr "length""8")])
   3848      1.1  mrg 
   3849      1.1  mrg ;;
   3850      1.1  mrg ;; [vcmpltq_m_f])
   3851      1.1  mrg ;;
   3852      1.1  mrg (define_insn "mve_vcmpltq_m_f<mode>"
   3853      1.1  mrg   [
   3854  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3855  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3856      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   3857  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3858      1.1  mrg 	 VCMPLTQ_M_F))
   3859      1.1  mrg   ]
   3860      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3861      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	lt, %q1, %q2"
   3862      1.1  mrg   [(set_attr "type" "mve_move")
   3863      1.1  mrg    (set_attr "length""8")])
   3864      1.1  mrg 
   3865      1.1  mrg ;;
   3866      1.1  mrg ;; [vcmpltq_m_n_f])
   3867      1.1  mrg ;;
   3868      1.1  mrg (define_insn "mve_vcmpltq_m_n_f<mode>"
   3869      1.1  mrg   [
   3870  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3871  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3872      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3873  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3874      1.1  mrg 	 VCMPLTQ_M_N_F))
   3875      1.1  mrg   ]
   3876      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3877      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	lt, %q1, %2"
   3878      1.1  mrg   [(set_attr "type" "mve_move")
   3879      1.1  mrg    (set_attr "length""8")])
   3880      1.1  mrg 
   3881      1.1  mrg ;;
   3882      1.1  mrg ;; [vcmpneq_m_f])
   3883      1.1  mrg ;;
   3884      1.1  mrg (define_insn "mve_vcmpneq_m_f<mode>"
   3885      1.1  mrg   [
   3886  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3887  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3888      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   3889  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3890      1.1  mrg 	 VCMPNEQ_M_F))
   3891      1.1  mrg   ]
   3892      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3893      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	ne, %q1, %q2"
   3894      1.1  mrg   [(set_attr "type" "mve_move")
   3895      1.1  mrg    (set_attr "length""8")])
   3896      1.1  mrg 
   3897      1.1  mrg ;;
   3898      1.1  mrg ;; [vcmpneq_m_n_f])
   3899      1.1  mrg ;;
   3900      1.1  mrg (define_insn "mve_vcmpneq_m_n_f<mode>"
   3901      1.1  mrg   [
   3902  1.1.1.2  mrg    (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
   3903  1.1.1.2  mrg 	(unspec:<MVE_VPRED> [(match_operand:MVE_0 1 "s_register_operand" "w")
   3904      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3905  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3906      1.1  mrg 	 VCMPNEQ_M_N_F))
   3907      1.1  mrg   ]
   3908      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3909      1.1  mrg   "vpst\;vcmpt.f%#<V_sz_elem>	ne, %q1, %2"
   3910      1.1  mrg   [(set_attr "type" "mve_move")
   3911      1.1  mrg    (set_attr "length""8")])
   3912      1.1  mrg 
   3913      1.1  mrg ;;
   3914      1.1  mrg ;; [vcvtbq_m_f16_f32])
   3915      1.1  mrg ;;
   3916      1.1  mrg (define_insn "mve_vcvtbq_m_f16_f32v8hf"
   3917      1.1  mrg   [
   3918      1.1  mrg    (set (match_operand:V8HF 0 "s_register_operand" "=w")
   3919      1.1  mrg 	(unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
   3920      1.1  mrg 		       (match_operand:V4SF 2 "s_register_operand" "w")
   3921  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3922      1.1  mrg 	 VCVTBQ_M_F16_F32))
   3923      1.1  mrg   ]
   3924      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3925  1.1.1.2  mrg   "vpst\;vcvtbt.f16.f32\t%q0, %q2"
   3926      1.1  mrg   [(set_attr "type" "mve_move")
   3927      1.1  mrg    (set_attr "length""8")])
   3928      1.1  mrg 
   3929      1.1  mrg ;;
   3930      1.1  mrg ;; [vcvtbq_m_f32_f16])
   3931      1.1  mrg ;;
   3932      1.1  mrg (define_insn "mve_vcvtbq_m_f32_f16v4sf"
   3933      1.1  mrg   [
   3934      1.1  mrg    (set (match_operand:V4SF 0 "s_register_operand" "=w")
   3935      1.1  mrg 	(unspec:V4SF [(match_operand:V4SF 1 "s_register_operand" "0")
   3936      1.1  mrg 		       (match_operand:V8HF 2 "s_register_operand" "w")
   3937  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3938      1.1  mrg 	 VCVTBQ_M_F32_F16))
   3939      1.1  mrg   ]
   3940      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3941  1.1.1.2  mrg   "vpst\;vcvtbt.f32.f16\t%q0, %q2"
   3942      1.1  mrg   [(set_attr "type" "mve_move")
   3943      1.1  mrg    (set_attr "length""8")])
   3944      1.1  mrg 
   3945      1.1  mrg ;;
   3946      1.1  mrg ;; [vcvttq_m_f16_f32])
   3947      1.1  mrg ;;
   3948      1.1  mrg (define_insn "mve_vcvttq_m_f16_f32v8hf"
   3949      1.1  mrg   [
   3950      1.1  mrg    (set (match_operand:V8HF 0 "s_register_operand" "=w")
   3951      1.1  mrg 	(unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
   3952      1.1  mrg 		       (match_operand:V4SF 2 "s_register_operand" "w")
   3953  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3954      1.1  mrg 	 VCVTTQ_M_F16_F32))
   3955      1.1  mrg   ]
   3956      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3957  1.1.1.2  mrg   "vpst\;vcvttt.f16.f32\t%q0, %q2"
   3958      1.1  mrg   [(set_attr "type" "mve_move")
   3959      1.1  mrg    (set_attr "length""8")])
   3960      1.1  mrg 
   3961      1.1  mrg ;;
   3962      1.1  mrg ;; [vcvttq_m_f32_f16])
   3963      1.1  mrg ;;
   3964      1.1  mrg (define_insn "mve_vcvttq_m_f32_f16v4sf"
   3965      1.1  mrg   [
   3966      1.1  mrg    (set (match_operand:V4SF 0 "s_register_operand" "=w")
   3967      1.1  mrg 	(unspec:V4SF [(match_operand:V4SF 1 "s_register_operand" "0")
   3968      1.1  mrg 		       (match_operand:V8HF 2 "s_register_operand" "w")
   3969  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3970      1.1  mrg 	 VCVTTQ_M_F32_F16))
   3971      1.1  mrg   ]
   3972      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3973  1.1.1.2  mrg   "vpst\;vcvttt.f32.f16\t%q0, %q2"
   3974      1.1  mrg   [(set_attr "type" "mve_move")
   3975      1.1  mrg    (set_attr "length""8")])
   3976      1.1  mrg 
   3977      1.1  mrg ;;
   3978      1.1  mrg ;; [vdupq_m_n_f])
   3979      1.1  mrg ;;
   3980      1.1  mrg (define_insn "mve_vdupq_m_n_f<mode>"
   3981      1.1  mrg   [
   3982      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   3983      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   3984      1.1  mrg 		       (match_operand:<V_elem> 2 "s_register_operand" "r")
   3985  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   3986      1.1  mrg 	 VDUPQ_M_N_F))
   3987      1.1  mrg   ]
   3988      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   3989  1.1.1.2  mrg   "vpst\;vdupt.%#<V_sz_elem>\t%q0, %2"
   3990      1.1  mrg   [(set_attr "type" "mve_move")
   3991      1.1  mrg    (set_attr "length""8")])
   3992      1.1  mrg 
   3993      1.1  mrg ;;
   3994      1.1  mrg ;; [vfmaq_f])
   3995      1.1  mrg ;;
   3996      1.1  mrg (define_insn "mve_vfmaq_f<mode>"
   3997      1.1  mrg   [
   3998      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   3999      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4000      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4001      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")]
   4002      1.1  mrg 	 VFMAQ_F))
   4003      1.1  mrg   ]
   4004      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4005      1.1  mrg   "vfma.f%#<V_sz_elem>	%q0, %q2, %q3"
   4006      1.1  mrg   [(set_attr "type" "mve_move")
   4007      1.1  mrg ])
   4008      1.1  mrg 
   4009      1.1  mrg ;;
   4010      1.1  mrg ;; [vfmaq_n_f])
   4011      1.1  mrg ;;
   4012      1.1  mrg (define_insn "mve_vfmaq_n_f<mode>"
   4013      1.1  mrg   [
   4014      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4015      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4016      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4017      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   4018      1.1  mrg 	 VFMAQ_N_F))
   4019      1.1  mrg   ]
   4020      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4021      1.1  mrg   "vfma.f%#<V_sz_elem>	%q0, %q2, %3"
   4022      1.1  mrg   [(set_attr "type" "mve_move")
   4023      1.1  mrg ])
   4024      1.1  mrg 
   4025      1.1  mrg ;;
   4026      1.1  mrg ;; [vfmasq_n_f])
   4027      1.1  mrg ;;
   4028      1.1  mrg (define_insn "mve_vfmasq_n_f<mode>"
   4029      1.1  mrg   [
   4030      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4031      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4032      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4033      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")]
   4034      1.1  mrg 	 VFMASQ_N_F))
   4035      1.1  mrg   ]
   4036      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4037      1.1  mrg   "vfmas.f%#<V_sz_elem>	%q0, %q2, %3"
   4038      1.1  mrg   [(set_attr "type" "mve_move")
   4039      1.1  mrg ])
   4040      1.1  mrg ;;
   4041      1.1  mrg ;; [vfmsq_f])
   4042      1.1  mrg ;;
   4043      1.1  mrg (define_insn "mve_vfmsq_f<mode>"
   4044      1.1  mrg   [
   4045      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4046      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4047      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4048      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")]
   4049      1.1  mrg 	 VFMSQ_F))
   4050      1.1  mrg   ]
   4051      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4052      1.1  mrg   "vfms.f%#<V_sz_elem>	%q0, %q2, %q3"
   4053      1.1  mrg   [(set_attr "type" "mve_move")
   4054      1.1  mrg ])
   4055      1.1  mrg 
   4056      1.1  mrg ;;
   4057      1.1  mrg ;; [vmaxnmaq_m_f])
   4058      1.1  mrg ;;
   4059      1.1  mrg (define_insn "mve_vmaxnmaq_m_f<mode>"
   4060      1.1  mrg   [
   4061      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4062      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4063      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4064  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4065      1.1  mrg 	 VMAXNMAQ_M_F))
   4066      1.1  mrg   ]
   4067      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4068      1.1  mrg   "vpst\;vmaxnmat.f%#<V_sz_elem>	%q0, %q2"
   4069      1.1  mrg   [(set_attr "type" "mve_move")
   4070      1.1  mrg    (set_attr "length""8")])
   4071      1.1  mrg ;;
   4072      1.1  mrg ;; [vmaxnmavq_p_f])
   4073      1.1  mrg ;;
   4074      1.1  mrg (define_insn "mve_vmaxnmavq_p_f<mode>"
   4075      1.1  mrg   [
   4076      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   4077      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   4078      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4079  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4080      1.1  mrg 	 VMAXNMAVQ_P_F))
   4081      1.1  mrg   ]
   4082      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4083      1.1  mrg   "vpst\;vmaxnmavt.f%#<V_sz_elem>	%0, %q2"
   4084      1.1  mrg   [(set_attr "type" "mve_move")
   4085      1.1  mrg    (set_attr "length""8")])
   4086      1.1  mrg 
   4087      1.1  mrg ;;
   4088      1.1  mrg ;; [vmaxnmvq_p_f])
   4089      1.1  mrg ;;
   4090      1.1  mrg (define_insn "mve_vmaxnmvq_p_f<mode>"
   4091      1.1  mrg   [
   4092      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   4093      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   4094      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4095  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4096      1.1  mrg 	 VMAXNMVQ_P_F))
   4097      1.1  mrg   ]
   4098      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4099      1.1  mrg   "vpst\;vmaxnmvt.f%#<V_sz_elem>	%0, %q2"
   4100      1.1  mrg   [(set_attr "type" "mve_move")
   4101      1.1  mrg    (set_attr "length""8")])
   4102      1.1  mrg ;;
   4103      1.1  mrg ;; [vminnmaq_m_f])
   4104      1.1  mrg ;;
   4105      1.1  mrg (define_insn "mve_vminnmaq_m_f<mode>"
   4106      1.1  mrg   [
   4107      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4108      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4109      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4110  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4111      1.1  mrg 	 VMINNMAQ_M_F))
   4112      1.1  mrg   ]
   4113      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4114      1.1  mrg   "vpst\;vminnmat.f%#<V_sz_elem>	%q0, %q2"
   4115      1.1  mrg   [(set_attr "type" "mve_move")
   4116      1.1  mrg    (set_attr "length""8")])
   4117      1.1  mrg 
   4118      1.1  mrg ;;
   4119      1.1  mrg ;; [vminnmavq_p_f])
   4120      1.1  mrg ;;
   4121      1.1  mrg (define_insn "mve_vminnmavq_p_f<mode>"
   4122      1.1  mrg   [
   4123      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   4124      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   4125      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4126  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4127      1.1  mrg 	 VMINNMAVQ_P_F))
   4128      1.1  mrg   ]
   4129      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4130      1.1  mrg   "vpst\;vminnmavt.f%#<V_sz_elem>	%0, %q2"
   4131      1.1  mrg   [(set_attr "type" "mve_move")
   4132      1.1  mrg    (set_attr "length""8")])
   4133      1.1  mrg ;;
   4134      1.1  mrg ;; [vminnmvq_p_f])
   4135      1.1  mrg ;;
   4136      1.1  mrg (define_insn "mve_vminnmvq_p_f<mode>"
   4137      1.1  mrg   [
   4138      1.1  mrg    (set (match_operand:<V_elem> 0 "s_register_operand" "=r")
   4139      1.1  mrg 	(unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0")
   4140      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4141  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4142      1.1  mrg 	 VMINNMVQ_P_F))
   4143      1.1  mrg   ]
   4144      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4145      1.1  mrg   "vpst\;vminnmvt.f%#<V_sz_elem>	%0, %q2"
   4146      1.1  mrg   [(set_attr "type" "mve_move")
   4147      1.1  mrg    (set_attr "length""8")])
   4148      1.1  mrg 
   4149      1.1  mrg ;;
   4150      1.1  mrg ;; [vmlaldavaq_s, vmlaldavaq_u])
   4151      1.1  mrg ;;
   4152      1.1  mrg (define_insn "mve_vmlaldavaq_<supf><mode>"
   4153      1.1  mrg   [
   4154      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4155      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4156      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4157      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")]
   4158      1.1  mrg 	 VMLALDAVAQ))
   4159      1.1  mrg   ]
   4160      1.1  mrg   "TARGET_HAVE_MVE"
   4161  1.1.1.2  mrg   "vmlaldava.<supf>%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   4162      1.1  mrg   [(set_attr "type" "mve_move")
   4163      1.1  mrg ])
   4164      1.1  mrg 
   4165      1.1  mrg ;;
   4166      1.1  mrg ;; [vmlaldavaxq_s])
   4167      1.1  mrg ;;
   4168      1.1  mrg (define_insn "mve_vmlaldavaxq_s<mode>"
   4169      1.1  mrg   [
   4170      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4171      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4172      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4173      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")]
   4174      1.1  mrg 	 VMLALDAVAXQ_S))
   4175      1.1  mrg   ]
   4176      1.1  mrg   "TARGET_HAVE_MVE"
   4177  1.1.1.2  mrg   "vmlaldavax.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   4178      1.1  mrg   [(set_attr "type" "mve_move")
   4179      1.1  mrg ])
   4180      1.1  mrg 
   4181      1.1  mrg ;;
   4182      1.1  mrg ;; [vmlaldavq_p_u, vmlaldavq_p_s])
   4183      1.1  mrg ;;
   4184      1.1  mrg (define_insn "mve_vmlaldavq_p_<supf><mode>"
   4185      1.1  mrg   [
   4186      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4187      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   4188      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4189  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4190      1.1  mrg 	 VMLALDAVQ_P))
   4191      1.1  mrg   ]
   4192      1.1  mrg   "TARGET_HAVE_MVE"
   4193  1.1.1.2  mrg   "vpst\;vmlaldavt.<supf>%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   4194      1.1  mrg   [(set_attr "type" "mve_move")
   4195      1.1  mrg    (set_attr "length""8")])
   4196      1.1  mrg 
   4197      1.1  mrg ;;
   4198      1.1  mrg ;; [vmlaldavxq_p_s])
   4199      1.1  mrg ;;
   4200      1.1  mrg (define_insn "mve_vmlaldavxq_p_s<mode>"
   4201      1.1  mrg   [
   4202      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4203      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   4204      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4205  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4206      1.1  mrg 	 VMLALDAVXQ_P_S))
   4207      1.1  mrg   ]
   4208      1.1  mrg   "TARGET_HAVE_MVE"
   4209      1.1  mrg   "vpst\;vmlaldavxt.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   4210      1.1  mrg   [(set_attr "type" "mve_move")
   4211      1.1  mrg    (set_attr "length""8")])
   4212      1.1  mrg ;;
   4213      1.1  mrg ;; [vmlsldavaq_s])
   4214      1.1  mrg ;;
   4215      1.1  mrg (define_insn "mve_vmlsldavaq_s<mode>"
   4216      1.1  mrg   [
   4217      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4218      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4219      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4220      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")]
   4221      1.1  mrg 	 VMLSLDAVAQ_S))
   4222      1.1  mrg   ]
   4223      1.1  mrg   "TARGET_HAVE_MVE"
   4224  1.1.1.2  mrg   "vmlsldava.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   4225      1.1  mrg   [(set_attr "type" "mve_move")
   4226      1.1  mrg ])
   4227      1.1  mrg 
   4228      1.1  mrg ;;
   4229      1.1  mrg ;; [vmlsldavaxq_s])
   4230      1.1  mrg ;;
   4231      1.1  mrg (define_insn "mve_vmlsldavaxq_s<mode>"
   4232      1.1  mrg   [
   4233      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4234      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4235      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4236      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")]
   4237      1.1  mrg 	 VMLSLDAVAXQ_S))
   4238      1.1  mrg   ]
   4239      1.1  mrg   "TARGET_HAVE_MVE"
   4240  1.1.1.2  mrg   "vmlsldavax.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   4241      1.1  mrg   [(set_attr "type" "mve_move")
   4242      1.1  mrg ])
   4243      1.1  mrg 
   4244      1.1  mrg ;;
   4245      1.1  mrg ;; [vmlsldavq_p_s])
   4246      1.1  mrg ;;
   4247      1.1  mrg (define_insn "mve_vmlsldavq_p_s<mode>"
   4248      1.1  mrg   [
   4249      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4250      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   4251      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4252  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4253      1.1  mrg 	 VMLSLDAVQ_P_S))
   4254      1.1  mrg   ]
   4255      1.1  mrg   "TARGET_HAVE_MVE"
   4256  1.1.1.2  mrg   "vpst\;vmlsldavt.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   4257      1.1  mrg   [(set_attr "type" "mve_move")
   4258      1.1  mrg    (set_attr "length""8")])
   4259      1.1  mrg 
   4260      1.1  mrg ;;
   4261      1.1  mrg ;; [vmlsldavxq_p_s])
   4262      1.1  mrg ;;
   4263      1.1  mrg (define_insn "mve_vmlsldavxq_p_s<mode>"
   4264      1.1  mrg   [
   4265      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4266      1.1  mrg 	(unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w")
   4267      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4268  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4269      1.1  mrg 	 VMLSLDAVXQ_P_S))
   4270      1.1  mrg   ]
   4271      1.1  mrg   "TARGET_HAVE_MVE"
   4272  1.1.1.2  mrg   "vpst\;vmlsldavxt.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2"
   4273      1.1  mrg   [(set_attr "type" "mve_move")
   4274      1.1  mrg    (set_attr "length""8")])
   4275      1.1  mrg ;;
   4276      1.1  mrg ;; [vmovlbq_m_u, vmovlbq_m_s])
   4277      1.1  mrg ;;
   4278      1.1  mrg (define_insn "mve_vmovlbq_m_<supf><mode>"
   4279      1.1  mrg   [
   4280      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   4281      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   4282      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   4283  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4284      1.1  mrg 	 VMOVLBQ_M))
   4285      1.1  mrg   ]
   4286      1.1  mrg   "TARGET_HAVE_MVE"
   4287      1.1  mrg   "vpst\;vmovlbt.<supf>%#<V_sz_elem>	%q0, %q2"
   4288      1.1  mrg   [(set_attr "type" "mve_move")
   4289      1.1  mrg    (set_attr "length""8")])
   4290      1.1  mrg ;;
   4291      1.1  mrg ;; [vmovltq_m_u, vmovltq_m_s])
   4292      1.1  mrg ;;
   4293      1.1  mrg (define_insn "mve_vmovltq_m_<supf><mode>"
   4294      1.1  mrg   [
   4295      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   4296      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   4297      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   4298  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4299      1.1  mrg 	 VMOVLTQ_M))
   4300      1.1  mrg   ]
   4301      1.1  mrg   "TARGET_HAVE_MVE"
   4302      1.1  mrg   "vpst\;vmovltt.<supf>%#<V_sz_elem>	%q0, %q2"
   4303      1.1  mrg   [(set_attr "type" "mve_move")
   4304      1.1  mrg    (set_attr "length""8")])
   4305      1.1  mrg ;;
   4306      1.1  mrg ;; [vmovnbq_m_u, vmovnbq_m_s])
   4307      1.1  mrg ;;
   4308      1.1  mrg (define_insn "mve_vmovnbq_m_<supf><mode>"
   4309      1.1  mrg   [
   4310      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4311      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4312      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4313  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4314      1.1  mrg 	 VMOVNBQ_M))
   4315      1.1  mrg   ]
   4316      1.1  mrg   "TARGET_HAVE_MVE"
   4317      1.1  mrg   "vpst\;vmovnbt.i%#<V_sz_elem>	%q0, %q2"
   4318      1.1  mrg   [(set_attr "type" "mve_move")
   4319      1.1  mrg    (set_attr "length""8")])
   4320      1.1  mrg 
   4321      1.1  mrg ;;
   4322      1.1  mrg ;; [vmovntq_m_u, vmovntq_m_s])
   4323      1.1  mrg ;;
   4324      1.1  mrg (define_insn "mve_vmovntq_m_<supf><mode>"
   4325      1.1  mrg   [
   4326      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4327      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4328      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4329  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4330      1.1  mrg 	 VMOVNTQ_M))
   4331      1.1  mrg   ]
   4332      1.1  mrg   "TARGET_HAVE_MVE"
   4333      1.1  mrg   "vpst\;vmovntt.i%#<V_sz_elem>	%q0, %q2"
   4334      1.1  mrg   [(set_attr "type" "mve_move")
   4335      1.1  mrg    (set_attr "length""8")])
   4336      1.1  mrg 
   4337      1.1  mrg ;;
   4338      1.1  mrg ;; [vmvnq_m_n_u, vmvnq_m_n_s])
   4339      1.1  mrg ;;
   4340      1.1  mrg (define_insn "mve_vmvnq_m_n_<supf><mode>"
   4341      1.1  mrg   [
   4342      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4343      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4344      1.1  mrg 		       (match_operand:SI 2 "immediate_operand" "i")
   4345  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4346      1.1  mrg 	 VMVNQ_M_N))
   4347      1.1  mrg   ]
   4348      1.1  mrg   "TARGET_HAVE_MVE"
   4349  1.1.1.2  mrg   "vpst\;vmvnt.i%#<V_sz_elem>\t%q0, %2"
   4350      1.1  mrg   [(set_attr "type" "mve_move")
   4351      1.1  mrg    (set_attr "length""8")])
   4352      1.1  mrg ;;
   4353      1.1  mrg ;; [vnegq_m_f])
   4354      1.1  mrg ;;
   4355      1.1  mrg (define_insn "mve_vnegq_m_f<mode>"
   4356      1.1  mrg   [
   4357      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4358      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4359      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4360  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4361      1.1  mrg 	 VNEGQ_M_F))
   4362      1.1  mrg   ]
   4363      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4364      1.1  mrg   "vpst\;vnegt.f%#<V_sz_elem>	%q0, %q2"
   4365      1.1  mrg   [(set_attr "type" "mve_move")
   4366      1.1  mrg    (set_attr "length""8")])
   4367      1.1  mrg 
   4368      1.1  mrg ;;
   4369      1.1  mrg ;; [vorrq_m_n_s, vorrq_m_n_u])
   4370      1.1  mrg ;;
   4371      1.1  mrg (define_insn "mve_vorrq_m_n_<supf><mode>"
   4372      1.1  mrg   [
   4373      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4374      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4375      1.1  mrg 		       (match_operand:SI 2 "immediate_operand" "i")
   4376  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4377      1.1  mrg 	 VORRQ_M_N))
   4378      1.1  mrg   ]
   4379      1.1  mrg   "TARGET_HAVE_MVE"
   4380  1.1.1.2  mrg   "vpst\;vorrt.i%#<V_sz_elem>\t%q0, %2"
   4381      1.1  mrg   [(set_attr "type" "mve_move")
   4382      1.1  mrg    (set_attr "length""8")])
   4383      1.1  mrg ;;
   4384      1.1  mrg ;; [vpselq_f])
   4385      1.1  mrg ;;
   4386  1.1.1.2  mrg (define_insn "@mve_vpselq_f<mode>"
   4387      1.1  mrg   [
   4388      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4389      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
   4390      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4391  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4392      1.1  mrg 	 VPSELQ_F))
   4393      1.1  mrg   ]
   4394      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4395  1.1.1.2  mrg   "vpsel\t%q0, %q1, %q2"
   4396      1.1  mrg   [(set_attr "type" "mve_move")
   4397      1.1  mrg ])
   4398      1.1  mrg 
   4399      1.1  mrg ;;
   4400      1.1  mrg ;; [vqmovnbq_m_s, vqmovnbq_m_u])
   4401      1.1  mrg ;;
   4402      1.1  mrg (define_insn "mve_vqmovnbq_m_<supf><mode>"
   4403      1.1  mrg   [
   4404      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4405      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4406      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4407  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4408      1.1  mrg 	 VQMOVNBQ_M))
   4409      1.1  mrg   ]
   4410      1.1  mrg   "TARGET_HAVE_MVE"
   4411      1.1  mrg   "vpst\;vqmovnbt.<supf>%#<V_sz_elem>	%q0, %q2"
   4412      1.1  mrg   [(set_attr "type" "mve_move")
   4413      1.1  mrg    (set_attr "length""8")])
   4414      1.1  mrg 
   4415      1.1  mrg ;;
   4416      1.1  mrg ;; [vqmovntq_m_u, vqmovntq_m_s])
   4417      1.1  mrg ;;
   4418      1.1  mrg (define_insn "mve_vqmovntq_m_<supf><mode>"
   4419      1.1  mrg   [
   4420      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4421      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4422      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4423  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4424      1.1  mrg 	 VQMOVNTQ_M))
   4425      1.1  mrg   ]
   4426      1.1  mrg   "TARGET_HAVE_MVE"
   4427      1.1  mrg   "vpst\;vqmovntt.<supf>%#<V_sz_elem>	%q0, %q2"
   4428      1.1  mrg   [(set_attr "type" "mve_move")
   4429      1.1  mrg    (set_attr "length""8")])
   4430      1.1  mrg 
   4431      1.1  mrg ;;
   4432      1.1  mrg ;; [vqmovunbq_m_s])
   4433      1.1  mrg ;;
   4434      1.1  mrg (define_insn "mve_vqmovunbq_m_s<mode>"
   4435      1.1  mrg   [
   4436      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4437      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4438      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4439  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4440      1.1  mrg 	 VQMOVUNBQ_M_S))
   4441      1.1  mrg   ]
   4442      1.1  mrg   "TARGET_HAVE_MVE"
   4443      1.1  mrg   "vpst\;vqmovunbt.s%#<V_sz_elem>	%q0, %q2"
   4444      1.1  mrg   [(set_attr "type" "mve_move")
   4445      1.1  mrg    (set_attr "length""8")])
   4446      1.1  mrg 
   4447      1.1  mrg ;;
   4448      1.1  mrg ;; [vqmovuntq_m_s])
   4449      1.1  mrg ;;
   4450      1.1  mrg (define_insn "mve_vqmovuntq_m_s<mode>"
   4451      1.1  mrg   [
   4452      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4453      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4454      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4455  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4456      1.1  mrg 	 VQMOVUNTQ_M_S))
   4457      1.1  mrg   ]
   4458      1.1  mrg   "TARGET_HAVE_MVE"
   4459      1.1  mrg   "vpst\;vqmovuntt.s%#<V_sz_elem>	%q0, %q2"
   4460      1.1  mrg   [(set_attr "type" "mve_move")
   4461      1.1  mrg    (set_attr "length""8")])
   4462      1.1  mrg 
   4463      1.1  mrg ;;
   4464      1.1  mrg ;; [vqrshrntq_n_u, vqrshrntq_n_s])
   4465      1.1  mrg ;;
   4466      1.1  mrg (define_insn "mve_vqrshrntq_n_<supf><mode>"
   4467      1.1  mrg   [
   4468      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4469      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4470      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4471  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4472      1.1  mrg 	 VQRSHRNTQ_N))
   4473      1.1  mrg   ]
   4474      1.1  mrg   "TARGET_HAVE_MVE"
   4475      1.1  mrg   "vqrshrnt.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   4476      1.1  mrg   [(set_attr "type" "mve_move")
   4477      1.1  mrg ])
   4478      1.1  mrg 
   4479      1.1  mrg ;;
   4480      1.1  mrg ;; [vqrshruntq_n_s])
   4481      1.1  mrg ;;
   4482      1.1  mrg (define_insn "mve_vqrshruntq_n_s<mode>"
   4483      1.1  mrg   [
   4484      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4485      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4486      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4487  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4488      1.1  mrg 	 VQRSHRUNTQ_N_S))
   4489      1.1  mrg   ]
   4490      1.1  mrg   "TARGET_HAVE_MVE"
   4491      1.1  mrg   "vqrshrunt.s%#<V_sz_elem>	%q0, %q2, %3"
   4492      1.1  mrg   [(set_attr "type" "mve_move")
   4493      1.1  mrg ])
   4494      1.1  mrg 
   4495      1.1  mrg ;;
   4496      1.1  mrg ;; [vqshrnbq_n_u, vqshrnbq_n_s])
   4497      1.1  mrg ;;
   4498      1.1  mrg (define_insn "mve_vqshrnbq_n_<supf><mode>"
   4499      1.1  mrg   [
   4500      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4501      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4502      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4503      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4504      1.1  mrg 	 VQSHRNBQ_N))
   4505      1.1  mrg   ]
   4506      1.1  mrg   "TARGET_HAVE_MVE"
   4507      1.1  mrg   "vqshrnb.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   4508      1.1  mrg   [(set_attr "type" "mve_move")
   4509      1.1  mrg ])
   4510      1.1  mrg 
   4511      1.1  mrg ;;
   4512      1.1  mrg ;; [vqshrntq_n_u, vqshrntq_n_s])
   4513      1.1  mrg ;;
   4514      1.1  mrg (define_insn "mve_vqshrntq_n_<supf><mode>"
   4515      1.1  mrg   [
   4516      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4517      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4518      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4519      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4520      1.1  mrg 	 VQSHRNTQ_N))
   4521      1.1  mrg   ]
   4522      1.1  mrg   "TARGET_HAVE_MVE"
   4523      1.1  mrg   "vqshrnt.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   4524      1.1  mrg   [(set_attr "type" "mve_move")
   4525      1.1  mrg ])
   4526      1.1  mrg 
   4527      1.1  mrg ;;
   4528      1.1  mrg ;; [vqshrunbq_n_s])
   4529      1.1  mrg ;;
   4530      1.1  mrg (define_insn "mve_vqshrunbq_n_s<mode>"
   4531      1.1  mrg   [
   4532      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4533      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4534      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4535      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4536      1.1  mrg 	 VQSHRUNBQ_N_S))
   4537      1.1  mrg   ]
   4538      1.1  mrg   "TARGET_HAVE_MVE"
   4539      1.1  mrg   "vqshrunb.s%#<V_sz_elem>	%q0, %q2, %3"
   4540      1.1  mrg   [(set_attr "type" "mve_move")
   4541      1.1  mrg ])
   4542      1.1  mrg 
   4543      1.1  mrg ;;
   4544      1.1  mrg ;; [vqshruntq_n_s])
   4545      1.1  mrg ;;
   4546      1.1  mrg (define_insn "mve_vqshruntq_n_s<mode>"
   4547      1.1  mrg   [
   4548      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4549      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4550      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4551      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4552      1.1  mrg 	 VQSHRUNTQ_N_S))
   4553      1.1  mrg   ]
   4554      1.1  mrg   "TARGET_HAVE_MVE"
   4555      1.1  mrg   "vqshrunt.s%#<V_sz_elem>	%q0, %q2, %3"
   4556      1.1  mrg   [(set_attr "type" "mve_move")
   4557      1.1  mrg ])
   4558      1.1  mrg 
   4559      1.1  mrg ;;
   4560      1.1  mrg ;; [vrev32q_m_f])
   4561      1.1  mrg ;;
   4562      1.1  mrg (define_insn "mve_vrev32q_m_fv8hf"
   4563      1.1  mrg   [
   4564      1.1  mrg    (set (match_operand:V8HF 0 "s_register_operand" "=w")
   4565      1.1  mrg 	(unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0")
   4566      1.1  mrg 		       (match_operand:V8HF 2 "s_register_operand" "w")
   4567  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4568      1.1  mrg 	 VREV32Q_M_F))
   4569      1.1  mrg   ]
   4570      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4571  1.1.1.2  mrg   "vpst\;vrev32t.16\t%q0, %q2"
   4572      1.1  mrg   [(set_attr "type" "mve_move")
   4573      1.1  mrg    (set_attr "length""8")])
   4574      1.1  mrg 
   4575      1.1  mrg ;;
   4576      1.1  mrg ;; [vrev32q_m_s, vrev32q_m_u])
   4577      1.1  mrg ;;
   4578      1.1  mrg (define_insn "mve_vrev32q_m_<supf><mode>"
   4579      1.1  mrg   [
   4580      1.1  mrg    (set (match_operand:MVE_3 0 "s_register_operand" "=w")
   4581      1.1  mrg 	(unspec:MVE_3 [(match_operand:MVE_3 1 "s_register_operand" "0")
   4582      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   4583  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4584      1.1  mrg 	 VREV32Q_M))
   4585      1.1  mrg   ]
   4586      1.1  mrg   "TARGET_HAVE_MVE"
   4587  1.1.1.2  mrg   "vpst\;vrev32t.%#<V_sz_elem>\t%q0, %q2"
   4588      1.1  mrg   [(set_attr "type" "mve_move")
   4589      1.1  mrg    (set_attr "length""8")])
   4590      1.1  mrg 
   4591      1.1  mrg ;;
   4592      1.1  mrg ;; [vrev64q_m_f])
   4593      1.1  mrg ;;
   4594      1.1  mrg (define_insn "mve_vrev64q_m_f<mode>"
   4595      1.1  mrg   [
   4596  1.1.1.2  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=&w")
   4597      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4598      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4599  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4600      1.1  mrg 	 VREV64Q_M_F))
   4601      1.1  mrg   ]
   4602      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4603  1.1.1.2  mrg   "vpst\;vrev64t.%#<V_sz_elem>\t%q0, %q2"
   4604      1.1  mrg   [(set_attr "type" "mve_move")
   4605      1.1  mrg    (set_attr "length""8")])
   4606      1.1  mrg 
   4607      1.1  mrg ;;
   4608      1.1  mrg ;; [vrmlaldavhaxq_s])
   4609      1.1  mrg ;;
   4610      1.1  mrg (define_insn "mve_vrmlaldavhaxq_sv4si"
   4611      1.1  mrg   [
   4612      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4613      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4614      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   4615      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")]
   4616      1.1  mrg 	 VRMLALDAVHAXQ_S))
   4617      1.1  mrg   ]
   4618      1.1  mrg   "TARGET_HAVE_MVE"
   4619  1.1.1.2  mrg   "vrmlaldavhax.s32\t%Q0, %R0, %q2, %q3"
   4620      1.1  mrg   [(set_attr "type" "mve_move")
   4621      1.1  mrg ])
   4622      1.1  mrg 
   4623      1.1  mrg ;;
   4624      1.1  mrg ;; [vrmlaldavhxq_p_s])
   4625      1.1  mrg ;;
   4626      1.1  mrg (define_insn "mve_vrmlaldavhxq_p_sv4si"
   4627      1.1  mrg   [
   4628      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4629      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   4630      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   4631  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4632      1.1  mrg 	 VRMLALDAVHXQ_P_S))
   4633      1.1  mrg   ]
   4634      1.1  mrg   "TARGET_HAVE_MVE"
   4635  1.1.1.2  mrg   "vpst\;vrmlaldavhxt.s32\t%Q0, %R0, %q1, %q2"
   4636      1.1  mrg   [(set_attr "type" "mve_move")
   4637      1.1  mrg    (set_attr "length""8")])
   4638      1.1  mrg 
   4639      1.1  mrg ;;
   4640      1.1  mrg ;; [vrmlsldavhaxq_s])
   4641      1.1  mrg ;;
   4642      1.1  mrg (define_insn "mve_vrmlsldavhaxq_sv4si"
   4643      1.1  mrg   [
   4644      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4645      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4646      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   4647      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")]
   4648      1.1  mrg 	 VRMLSLDAVHAXQ_S))
   4649      1.1  mrg   ]
   4650      1.1  mrg   "TARGET_HAVE_MVE"
   4651  1.1.1.2  mrg   "vrmlsldavhax.s32\t%Q0, %R0, %q2, %q3"
   4652      1.1  mrg   [(set_attr "type" "mve_move")
   4653      1.1  mrg ])
   4654      1.1  mrg 
   4655      1.1  mrg ;;
   4656      1.1  mrg ;; [vrmlsldavhq_p_s])
   4657      1.1  mrg ;;
   4658      1.1  mrg (define_insn "mve_vrmlsldavhq_p_sv4si"
   4659      1.1  mrg   [
   4660      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4661      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   4662      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   4663  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4664      1.1  mrg 	 VRMLSLDAVHQ_P_S))
   4665      1.1  mrg   ]
   4666      1.1  mrg   "TARGET_HAVE_MVE"
   4667  1.1.1.2  mrg   "vpst\;vrmlsldavht.s32\t%Q0, %R0, %q1, %q2"
   4668      1.1  mrg   [(set_attr "type" "mve_move")
   4669      1.1  mrg    (set_attr "length""8")])
   4670      1.1  mrg 
   4671      1.1  mrg ;;
   4672      1.1  mrg ;; [vrmlsldavhxq_p_s])
   4673      1.1  mrg ;;
   4674      1.1  mrg (define_insn "mve_vrmlsldavhxq_p_sv4si"
   4675      1.1  mrg   [
   4676      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4677      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   4678      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   4679  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4680      1.1  mrg 	 VRMLSLDAVHXQ_P_S))
   4681      1.1  mrg   ]
   4682      1.1  mrg   "TARGET_HAVE_MVE"
   4683  1.1.1.2  mrg   "vpst\;vrmlsldavhxt.s32\t%Q0, %R0, %q1, %q2"
   4684      1.1  mrg   [(set_attr "type" "mve_move")
   4685      1.1  mrg    (set_attr "length""8")])
   4686      1.1  mrg 
   4687      1.1  mrg ;;
   4688      1.1  mrg ;; [vrndaq_m_f])
   4689      1.1  mrg ;;
   4690      1.1  mrg (define_insn "mve_vrndaq_m_f<mode>"
   4691      1.1  mrg   [
   4692      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4693      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4694      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4695  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4696      1.1  mrg 	 VRNDAQ_M_F))
   4697      1.1  mrg   ]
   4698      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4699      1.1  mrg   "vpst\;vrintat.f%#<V_sz_elem>	%q0, %q2"
   4700      1.1  mrg   [(set_attr "type" "mve_move")
   4701      1.1  mrg    (set_attr "length""8")])
   4702      1.1  mrg 
   4703      1.1  mrg ;;
   4704      1.1  mrg ;; [vrndmq_m_f])
   4705      1.1  mrg ;;
   4706      1.1  mrg (define_insn "mve_vrndmq_m_f<mode>"
   4707      1.1  mrg   [
   4708      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4709      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4710      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4711  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4712      1.1  mrg 	 VRNDMQ_M_F))
   4713      1.1  mrg   ]
   4714      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4715      1.1  mrg   "vpst\;vrintmt.f%#<V_sz_elem>	%q0, %q2"
   4716      1.1  mrg   [(set_attr "type" "mve_move")
   4717      1.1  mrg    (set_attr "length""8")])
   4718      1.1  mrg 
   4719      1.1  mrg ;;
   4720      1.1  mrg ;; [vrndnq_m_f])
   4721      1.1  mrg ;;
   4722      1.1  mrg (define_insn "mve_vrndnq_m_f<mode>"
   4723      1.1  mrg   [
   4724      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4725      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4726      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4727  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4728      1.1  mrg 	 VRNDNQ_M_F))
   4729      1.1  mrg   ]
   4730      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4731      1.1  mrg   "vpst\;vrintnt.f%#<V_sz_elem>	%q0, %q2"
   4732      1.1  mrg   [(set_attr "type" "mve_move")
   4733      1.1  mrg    (set_attr "length""8")])
   4734      1.1  mrg 
   4735      1.1  mrg ;;
   4736      1.1  mrg ;; [vrndpq_m_f])
   4737      1.1  mrg ;;
   4738      1.1  mrg (define_insn "mve_vrndpq_m_f<mode>"
   4739      1.1  mrg   [
   4740      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4741      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4742      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4743  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4744      1.1  mrg 	 VRNDPQ_M_F))
   4745      1.1  mrg   ]
   4746      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4747      1.1  mrg   "vpst\;vrintpt.f%#<V_sz_elem>	%q0, %q2"
   4748      1.1  mrg   [(set_attr "type" "mve_move")
   4749      1.1  mrg    (set_attr "length""8")])
   4750      1.1  mrg 
   4751      1.1  mrg ;;
   4752      1.1  mrg ;; [vrndxq_m_f])
   4753      1.1  mrg ;;
   4754      1.1  mrg (define_insn "mve_vrndxq_m_f<mode>"
   4755      1.1  mrg   [
   4756      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   4757      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   4758      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   4759  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4760      1.1  mrg 	 VRNDXQ_M_F))
   4761      1.1  mrg   ]
   4762      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4763      1.1  mrg   "vpst\;vrintxt.f%#<V_sz_elem>	%q0, %q2"
   4764      1.1  mrg   [(set_attr "type" "mve_move")
   4765      1.1  mrg    (set_attr "length""8")])
   4766      1.1  mrg 
   4767      1.1  mrg ;;
   4768      1.1  mrg ;; [vrshrnbq_n_s, vrshrnbq_n_u])
   4769      1.1  mrg ;;
   4770      1.1  mrg (define_insn "mve_vrshrnbq_n_<supf><mode>"
   4771      1.1  mrg   [
   4772      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4773      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4774      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4775  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4776      1.1  mrg 	 VRSHRNBQ_N))
   4777      1.1  mrg   ]
   4778      1.1  mrg   "TARGET_HAVE_MVE"
   4779      1.1  mrg   "vrshrnb.i%#<V_sz_elem>	%q0, %q2, %3"
   4780      1.1  mrg   [(set_attr "type" "mve_move")
   4781      1.1  mrg ])
   4782      1.1  mrg 
   4783      1.1  mrg ;;
   4784      1.1  mrg ;; [vrshrntq_n_u, vrshrntq_n_s])
   4785      1.1  mrg ;;
   4786      1.1  mrg (define_insn "mve_vrshrntq_n_<supf><mode>"
   4787      1.1  mrg   [
   4788      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4789      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4790      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4791  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4792      1.1  mrg 	 VRSHRNTQ_N))
   4793      1.1  mrg   ]
   4794      1.1  mrg   "TARGET_HAVE_MVE"
   4795      1.1  mrg   "vrshrnt.i%#<V_sz_elem>	%q0, %q2, %3"
   4796      1.1  mrg   [(set_attr "type" "mve_move")
   4797      1.1  mrg ])
   4798      1.1  mrg 
   4799      1.1  mrg ;;
   4800      1.1  mrg ;; [vshrnbq_n_u, vshrnbq_n_s])
   4801      1.1  mrg ;;
   4802      1.1  mrg (define_insn "mve_vshrnbq_n_<supf><mode>"
   4803      1.1  mrg   [
   4804      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4805      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4806      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   4807      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4808      1.1  mrg 	 VSHRNBQ_N))
   4809      1.1  mrg   ]
   4810      1.1  mrg   "TARGET_HAVE_MVE"
   4811      1.1  mrg   "vshrnb.i%#<V_sz_elem>	%q0, %q2, %3"
   4812      1.1  mrg   [(set_attr "type" "mve_move")
   4813      1.1  mrg ])
   4814      1.1  mrg 
   4815      1.1  mrg ;;
   4816      1.1  mrg ;; [vshrntq_n_s, vshrntq_n_u])
   4817      1.1  mrg ;;
   4818      1.1  mrg (define_insn "mve_vshrntq_n_<supf><mode>"
   4819      1.1  mrg   [
   4820      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   4821      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   4822      1.1  mrg 				 (match_operand:MVE_5 2 "s_register_operand" "w")
   4823      1.1  mrg 				 (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
   4824      1.1  mrg 	 VSHRNTQ_N))
   4825      1.1  mrg   ]
   4826      1.1  mrg   "TARGET_HAVE_MVE"
   4827      1.1  mrg   "vshrnt.i%#<V_sz_elem>\t%q0, %q2, %3"
   4828      1.1  mrg   [(set_attr "type" "mve_move")
   4829      1.1  mrg ])
   4830      1.1  mrg 
   4831      1.1  mrg ;;
   4832      1.1  mrg ;; [vcvtmq_m_s, vcvtmq_m_u])
   4833      1.1  mrg ;;
   4834      1.1  mrg (define_insn "mve_vcvtmq_m_<supf><mode>"
   4835      1.1  mrg   [
   4836      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4837      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4838      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   4839  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4840      1.1  mrg 	 VCVTMQ_M))
   4841      1.1  mrg   ]
   4842      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4843      1.1  mrg   "vpst\;vcvtmt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2"
   4844      1.1  mrg   [(set_attr "type" "mve_move")
   4845      1.1  mrg    (set_attr "length""8")])
   4846      1.1  mrg 
   4847      1.1  mrg ;;
   4848      1.1  mrg ;; [vcvtpq_m_u, vcvtpq_m_s])
   4849      1.1  mrg ;;
   4850      1.1  mrg (define_insn "mve_vcvtpq_m_<supf><mode>"
   4851      1.1  mrg   [
   4852      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4853      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4854      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   4855  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4856      1.1  mrg 	 VCVTPQ_M))
   4857      1.1  mrg   ]
   4858      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4859      1.1  mrg   "vpst\;vcvtpt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2"
   4860      1.1  mrg   [(set_attr "type" "mve_move")
   4861      1.1  mrg    (set_attr "length""8")])
   4862      1.1  mrg 
   4863      1.1  mrg ;;
   4864      1.1  mrg ;; [vcvtnq_m_s, vcvtnq_m_u])
   4865      1.1  mrg ;;
   4866      1.1  mrg (define_insn "mve_vcvtnq_m_<supf><mode>"
   4867      1.1  mrg   [
   4868      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4869      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4870      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   4871  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4872      1.1  mrg 	 VCVTNQ_M))
   4873      1.1  mrg   ]
   4874      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4875      1.1  mrg   "vpst\;vcvtnt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2"
   4876      1.1  mrg   [(set_attr "type" "mve_move")
   4877      1.1  mrg    (set_attr "length""8")])
   4878      1.1  mrg 
   4879      1.1  mrg ;;
   4880      1.1  mrg ;; [vcvtq_m_n_from_f_s, vcvtq_m_n_from_f_u])
   4881      1.1  mrg ;;
   4882      1.1  mrg (define_insn "mve_vcvtq_m_n_from_f_<supf><mode>"
   4883      1.1  mrg   [
   4884      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4885      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4886      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   4887      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")
   4888  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   4889      1.1  mrg 	 VCVTQ_M_N_FROM_F))
   4890      1.1  mrg   ]
   4891      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4892      1.1  mrg   "vpst\;vcvtt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2, %3"
   4893      1.1  mrg   [(set_attr "type" "mve_move")
   4894      1.1  mrg    (set_attr "length""8")])
   4895      1.1  mrg 
   4896      1.1  mrg ;;
   4897      1.1  mrg ;; [vrev16q_m_u, vrev16q_m_s])
   4898      1.1  mrg ;;
   4899      1.1  mrg (define_insn "mve_vrev16q_m_<supf>v16qi"
   4900      1.1  mrg   [
   4901      1.1  mrg    (set (match_operand:V16QI 0 "s_register_operand" "=w")
   4902      1.1  mrg 	(unspec:V16QI [(match_operand:V16QI 1 "s_register_operand" "0")
   4903      1.1  mrg 		       (match_operand:V16QI 2 "s_register_operand" "w")
   4904  1.1.1.2  mrg 		       (match_operand:V16BI 3 "vpr_register_operand" "Up")]
   4905      1.1  mrg 	 VREV16Q_M))
   4906      1.1  mrg   ]
   4907      1.1  mrg   "TARGET_HAVE_MVE"
   4908  1.1.1.2  mrg   "vpst\;vrev16t.8\t%q0, %q2"
   4909      1.1  mrg   [(set_attr "type" "mve_move")
   4910      1.1  mrg    (set_attr "length""8")])
   4911      1.1  mrg 
   4912      1.1  mrg ;;
   4913      1.1  mrg ;; [vcvtq_m_from_f_u, vcvtq_m_from_f_s])
   4914      1.1  mrg ;;
   4915      1.1  mrg (define_insn "mve_vcvtq_m_from_f_<supf><mode>"
   4916      1.1  mrg   [
   4917      1.1  mrg    (set (match_operand:MVE_5 0 "s_register_operand" "=w")
   4918      1.1  mrg 	(unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0")
   4919      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   4920  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   4921      1.1  mrg 	 VCVTQ_M_FROM_F))
   4922      1.1  mrg   ]
   4923      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   4924      1.1  mrg   "vpst\;vcvtt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2"
   4925      1.1  mrg   [(set_attr "type" "mve_move")
   4926      1.1  mrg    (set_attr "length""8")])
   4927      1.1  mrg 
   4928      1.1  mrg ;;
   4929      1.1  mrg ;; [vrmlaldavhq_p_u vrmlaldavhq_p_s])
   4930      1.1  mrg ;;
   4931      1.1  mrg (define_insn "mve_vrmlaldavhq_p_<supf>v4si"
   4932      1.1  mrg   [
   4933      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4934      1.1  mrg 	(unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
   4935      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")
   4936  1.1.1.2  mrg 		    (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   4937      1.1  mrg 	 VRMLALDAVHQ_P))
   4938      1.1  mrg   ]
   4939      1.1  mrg   "TARGET_HAVE_MVE"
   4940  1.1.1.2  mrg   "vpst\;vrmlaldavht.<supf>32\t%Q0, %R0, %q1, %q2"
   4941      1.1  mrg   [(set_attr "type" "mve_move")
   4942      1.1  mrg    (set_attr "length""8")])
   4943      1.1  mrg 
   4944      1.1  mrg ;;
   4945      1.1  mrg ;; [vrmlsldavhaq_s])
   4946      1.1  mrg ;;
   4947      1.1  mrg (define_insn "mve_vrmlsldavhaq_sv4si"
   4948      1.1  mrg   [
   4949      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   4950      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   4951      1.1  mrg 		    (match_operand:V4SI 2 "s_register_operand" "w")
   4952      1.1  mrg 		    (match_operand:V4SI 3 "s_register_operand" "w")]
   4953      1.1  mrg 	 VRMLSLDAVHAQ_S))
   4954      1.1  mrg   ]
   4955      1.1  mrg   "TARGET_HAVE_MVE"
   4956  1.1.1.2  mrg   "vrmlsldavha.s32\t%Q0, %R0, %q2, %q3"
   4957      1.1  mrg   [(set_attr "type" "mve_move")
   4958      1.1  mrg ])
   4959      1.1  mrg 
   4960      1.1  mrg ;;
   4961      1.1  mrg ;; [vabavq_p_s, vabavq_p_u])
   4962      1.1  mrg ;;
   4963      1.1  mrg (define_insn "mve_vabavq_p_<supf><mode>"
   4964      1.1  mrg   [
   4965      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=r")
   4966      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   4967      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")
   4968      1.1  mrg 		    (match_operand:MVE_2 3 "s_register_operand" "w")
   4969  1.1.1.2  mrg 		    (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   4970      1.1  mrg 	 VABAVQ_P))
   4971      1.1  mrg   ]
   4972      1.1  mrg   "TARGET_HAVE_MVE"
   4973      1.1  mrg   "vpst\;vabavt.<supf>%#<V_sz_elem>\t%0, %q2, %q3"
   4974      1.1  mrg   [(set_attr "type" "mve_move")
   4975  1.1.1.2  mrg    (set_attr "length" "8")])
   4976      1.1  mrg 
   4977      1.1  mrg ;;
   4978      1.1  mrg ;; [vqshluq_m_n_s])
   4979      1.1  mrg ;;
   4980      1.1  mrg (define_insn "mve_vqshluq_m_n_s<mode>"
   4981      1.1  mrg   [
   4982      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   4983      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   4984      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   4985  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>")
   4986  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   4987      1.1  mrg 	 VQSHLUQ_M_N_S))
   4988      1.1  mrg   ]
   4989      1.1  mrg   "TARGET_HAVE_MVE"
   4990      1.1  mrg   "vpst\n\tvqshlut.s%#<V_sz_elem>\t%q0, %q2, %3"
   4991  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   4992  1.1.1.2  mrg    (set_attr "length" "8")])
   4993      1.1  mrg 
   4994      1.1  mrg ;;
   4995      1.1  mrg ;; [vshlq_m_s, vshlq_m_u])
   4996      1.1  mrg ;;
   4997      1.1  mrg (define_insn "mve_vshlq_m_<supf><mode>"
   4998      1.1  mrg   [
   4999      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5000      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5001      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5002      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5003  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5004      1.1  mrg 	 VSHLQ_M))
   5005      1.1  mrg   ]
   5006      1.1  mrg   "TARGET_HAVE_MVE"
   5007      1.1  mrg   "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5008  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   5009  1.1.1.2  mrg    (set_attr "length" "8")])
   5010      1.1  mrg 
   5011      1.1  mrg ;;
   5012      1.1  mrg ;; [vsriq_m_n_s, vsriq_m_n_u])
   5013      1.1  mrg ;;
   5014      1.1  mrg (define_insn "mve_vsriq_m_n_<supf><mode>"
   5015      1.1  mrg   [
   5016      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5017      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5018      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5019  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")
   5020  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5021      1.1  mrg 	 VSRIQ_M_N))
   5022      1.1  mrg   ]
   5023      1.1  mrg   "TARGET_HAVE_MVE"
   5024      1.1  mrg   "vpst\;vsrit.%#<V_sz_elem>\t%q0, %q2, %3"
   5025  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   5026  1.1.1.2  mrg    (set_attr "length" "8")])
   5027      1.1  mrg 
   5028      1.1  mrg ;;
   5029      1.1  mrg ;; [vsubq_m_u, vsubq_m_s])
   5030      1.1  mrg ;;
   5031      1.1  mrg (define_insn "mve_vsubq_m_<supf><mode>"
   5032      1.1  mrg   [
   5033      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5034      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5035      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5036      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5037  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5038      1.1  mrg 	 VSUBQ_M))
   5039      1.1  mrg   ]
   5040      1.1  mrg   "TARGET_HAVE_MVE"
   5041      1.1  mrg   "vpst\;vsubt.i%#<V_sz_elem>\t%q0, %q2, %q3"
   5042  1.1.1.2  mrg   [(set_attr "type" "mve_move")
   5043  1.1.1.2  mrg    (set_attr "length" "8")])
   5044      1.1  mrg 
   5045      1.1  mrg ;;
   5046      1.1  mrg ;; [vcvtq_m_n_to_f_u, vcvtq_m_n_to_f_s])
   5047      1.1  mrg ;;
   5048      1.1  mrg (define_insn "mve_vcvtq_m_n_to_f_<supf><mode>"
   5049      1.1  mrg   [
   5050      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   5051      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   5052      1.1  mrg 		       (match_operand:<MVE_CNVT> 2 "s_register_operand" "w")
   5053      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")
   5054  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5055      1.1  mrg 	 VCVTQ_M_N_TO_F))
   5056      1.1  mrg   ]
   5057      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   5058      1.1  mrg   "vpst\;vcvtt.f%#<V_sz_elem>.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5059      1.1  mrg   [(set_attr "type" "mve_move")
   5060      1.1  mrg    (set_attr "length""8")])
   5061      1.1  mrg ;;
   5062      1.1  mrg ;; [vabdq_m_s, vabdq_m_u])
   5063      1.1  mrg ;;
   5064      1.1  mrg (define_insn "mve_vabdq_m_<supf><mode>"
   5065      1.1  mrg   [
   5066      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5067      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5068      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5069      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5070  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5071      1.1  mrg 	 VABDQ_M))
   5072      1.1  mrg   ]
   5073      1.1  mrg   "TARGET_HAVE_MVE"
   5074      1.1  mrg   "vpst\;vabdt.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5075      1.1  mrg   [(set_attr "type" "mve_move")
   5076      1.1  mrg    (set_attr "length""8")])
   5077      1.1  mrg 
   5078      1.1  mrg ;;
   5079      1.1  mrg ;; [vaddq_m_n_s, vaddq_m_n_u])
   5080      1.1  mrg ;;
   5081      1.1  mrg (define_insn "mve_vaddq_m_n_<supf><mode>"
   5082      1.1  mrg   [
   5083      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5084      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5085      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5086      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5087  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5088      1.1  mrg 	 VADDQ_M_N))
   5089      1.1  mrg   ]
   5090      1.1  mrg   "TARGET_HAVE_MVE"
   5091      1.1  mrg   "vpst\;vaddt.i%#<V_sz_elem>	%q0, %q2, %3"
   5092      1.1  mrg   [(set_attr "type" "mve_move")
   5093      1.1  mrg    (set_attr "length""8")])
   5094      1.1  mrg 
   5095      1.1  mrg ;;
   5096      1.1  mrg ;; [vaddq_m_u, vaddq_m_s])
   5097      1.1  mrg ;;
   5098      1.1  mrg (define_insn "mve_vaddq_m_<supf><mode>"
   5099      1.1  mrg   [
   5100      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5101      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5102      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5103      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5104  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5105      1.1  mrg 	 VADDQ_M))
   5106      1.1  mrg   ]
   5107      1.1  mrg   "TARGET_HAVE_MVE"
   5108      1.1  mrg   "vpst\;vaddt.i%#<V_sz_elem>	%q0, %q2, %q3"
   5109      1.1  mrg   [(set_attr "type" "mve_move")
   5110      1.1  mrg    (set_attr "length""8")])
   5111      1.1  mrg 
   5112      1.1  mrg ;;
   5113      1.1  mrg ;; [vandq_m_u, vandq_m_s])
   5114      1.1  mrg ;;
   5115      1.1  mrg (define_insn "mve_vandq_m_<supf><mode>"
   5116      1.1  mrg   [
   5117      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5118      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5119      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5120      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5121  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5122      1.1  mrg 	 VANDQ_M))
   5123      1.1  mrg   ]
   5124      1.1  mrg   "TARGET_HAVE_MVE"
   5125  1.1.1.2  mrg   "vpst\;vandt\t%q0, %q2, %q3"
   5126      1.1  mrg   [(set_attr "type" "mve_move")
   5127      1.1  mrg    (set_attr "length""8")])
   5128      1.1  mrg 
   5129      1.1  mrg ;;
   5130      1.1  mrg ;; [vbicq_m_u, vbicq_m_s])
   5131      1.1  mrg ;;
   5132      1.1  mrg (define_insn "mve_vbicq_m_<supf><mode>"
   5133      1.1  mrg   [
   5134      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5135      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5136      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5137      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5138  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5139      1.1  mrg 	 VBICQ_M))
   5140      1.1  mrg   ]
   5141      1.1  mrg   "TARGET_HAVE_MVE"
   5142  1.1.1.2  mrg   "vpst\;vbict\t%q0, %q2, %q3"
   5143      1.1  mrg   [(set_attr "type" "mve_move")
   5144      1.1  mrg    (set_attr "length""8")])
   5145      1.1  mrg 
   5146      1.1  mrg ;;
   5147      1.1  mrg ;; [vbrsrq_m_n_u, vbrsrq_m_n_s])
   5148      1.1  mrg ;;
   5149      1.1  mrg (define_insn "mve_vbrsrq_m_n_<supf><mode>"
   5150      1.1  mrg   [
   5151      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5152      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5153      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5154      1.1  mrg 		       (match_operand:SI 3 "s_register_operand" "r")
   5155  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5156      1.1  mrg 	 VBRSRQ_M_N))
   5157      1.1  mrg   ]
   5158      1.1  mrg   "TARGET_HAVE_MVE"
   5159      1.1  mrg   "vpst\;vbrsrt.%#<V_sz_elem>	%q0, %q2, %3"
   5160      1.1  mrg   [(set_attr "type" "mve_move")
   5161      1.1  mrg    (set_attr "length""8")])
   5162      1.1  mrg 
   5163      1.1  mrg ;;
   5164      1.1  mrg ;; [vcaddq_rot270_m_u, vcaddq_rot270_m_s])
   5165      1.1  mrg ;;
   5166      1.1  mrg (define_insn "mve_vcaddq_rot270_m_<supf><mode>"
   5167      1.1  mrg   [
   5168      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
   5169      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5170      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5171      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5172  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5173      1.1  mrg 	 VCADDQ_ROT270_M))
   5174      1.1  mrg   ]
   5175      1.1  mrg   "TARGET_HAVE_MVE"
   5176      1.1  mrg   "vpst\;vcaddt.i%#<V_sz_elem>	%q0, %q2, %q3, #270"
   5177      1.1  mrg   [(set_attr "type" "mve_move")
   5178      1.1  mrg    (set_attr "length""8")])
   5179      1.1  mrg 
   5180      1.1  mrg ;;
   5181      1.1  mrg ;; [vcaddq_rot90_m_u, vcaddq_rot90_m_s])
   5182      1.1  mrg ;;
   5183      1.1  mrg (define_insn "mve_vcaddq_rot90_m_<supf><mode>"
   5184      1.1  mrg   [
   5185      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
   5186      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5187      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5188      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5189  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5190      1.1  mrg 	 VCADDQ_ROT90_M))
   5191      1.1  mrg   ]
   5192      1.1  mrg   "TARGET_HAVE_MVE"
   5193      1.1  mrg   "vpst\;vcaddt.i%#<V_sz_elem>	%q0, %q2, %q3, #90"
   5194      1.1  mrg   [(set_attr "type" "mve_move")
   5195      1.1  mrg    (set_attr "length""8")])
   5196      1.1  mrg 
   5197      1.1  mrg ;;
   5198      1.1  mrg ;; [veorq_m_s, veorq_m_u])
   5199      1.1  mrg ;;
   5200      1.1  mrg (define_insn "mve_veorq_m_<supf><mode>"
   5201      1.1  mrg   [
   5202      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5203      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5204      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5205      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5206  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5207      1.1  mrg 	 VEORQ_M))
   5208      1.1  mrg   ]
   5209      1.1  mrg   "TARGET_HAVE_MVE"
   5210  1.1.1.2  mrg   "vpst\;veort\t%q0, %q2, %q3"
   5211      1.1  mrg   [(set_attr "type" "mve_move")
   5212      1.1  mrg    (set_attr "length""8")])
   5213      1.1  mrg 
   5214      1.1  mrg ;;
   5215      1.1  mrg ;; [vhaddq_m_n_s, vhaddq_m_n_u])
   5216      1.1  mrg ;;
   5217      1.1  mrg (define_insn "mve_vhaddq_m_n_<supf><mode>"
   5218      1.1  mrg   [
   5219      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5220      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5221      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5222      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5223  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5224      1.1  mrg 	 VHADDQ_M_N))
   5225      1.1  mrg   ]
   5226      1.1  mrg   "TARGET_HAVE_MVE"
   5227      1.1  mrg   "vpst\;vhaddt.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   5228      1.1  mrg   [(set_attr "type" "mve_move")
   5229      1.1  mrg    (set_attr "length""8")])
   5230      1.1  mrg 
   5231      1.1  mrg ;;
   5232      1.1  mrg ;; [vhaddq_m_s, vhaddq_m_u])
   5233      1.1  mrg ;;
   5234      1.1  mrg (define_insn "mve_vhaddq_m_<supf><mode>"
   5235      1.1  mrg   [
   5236      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5237      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5238      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5239      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5240  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5241      1.1  mrg 	 VHADDQ_M))
   5242      1.1  mrg   ]
   5243      1.1  mrg   "TARGET_HAVE_MVE"
   5244      1.1  mrg   "vpst\;vhaddt.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5245      1.1  mrg   [(set_attr "type" "mve_move")
   5246      1.1  mrg    (set_attr "length""8")])
   5247      1.1  mrg 
   5248      1.1  mrg ;;
   5249      1.1  mrg ;; [vhsubq_m_n_s, vhsubq_m_n_u])
   5250      1.1  mrg ;;
   5251      1.1  mrg (define_insn "mve_vhsubq_m_n_<supf><mode>"
   5252      1.1  mrg   [
   5253      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5254      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5255      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5256      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5257  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5258      1.1  mrg 	 VHSUBQ_M_N))
   5259      1.1  mrg   ]
   5260      1.1  mrg   "TARGET_HAVE_MVE"
   5261      1.1  mrg   "vpst\;vhsubt.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   5262      1.1  mrg   [(set_attr "type" "mve_move")
   5263      1.1  mrg    (set_attr "length""8")])
   5264      1.1  mrg 
   5265      1.1  mrg ;;
   5266      1.1  mrg ;; [vhsubq_m_s, vhsubq_m_u])
   5267      1.1  mrg ;;
   5268      1.1  mrg (define_insn "mve_vhsubq_m_<supf><mode>"
   5269      1.1  mrg   [
   5270      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5271      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5272      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5273      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5274  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5275      1.1  mrg 	 VHSUBQ_M))
   5276      1.1  mrg   ]
   5277      1.1  mrg   "TARGET_HAVE_MVE"
   5278      1.1  mrg   "vpst\;vhsubt.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5279      1.1  mrg   [(set_attr "type" "mve_move")
   5280      1.1  mrg    (set_attr "length""8")])
   5281      1.1  mrg 
   5282      1.1  mrg ;;
   5283      1.1  mrg ;; [vmaxq_m_s, vmaxq_m_u])
   5284      1.1  mrg ;;
   5285      1.1  mrg (define_insn "mve_vmaxq_m_<supf><mode>"
   5286      1.1  mrg   [
   5287      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5288      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5289      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5290      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5291  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5292      1.1  mrg 	 VMAXQ_M))
   5293      1.1  mrg   ]
   5294      1.1  mrg   "TARGET_HAVE_MVE"
   5295      1.1  mrg   "vpst\;vmaxt.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5296      1.1  mrg   [(set_attr "type" "mve_move")
   5297      1.1  mrg    (set_attr "length""8")])
   5298      1.1  mrg 
   5299      1.1  mrg ;;
   5300      1.1  mrg ;; [vminq_m_s, vminq_m_u])
   5301      1.1  mrg ;;
   5302      1.1  mrg (define_insn "mve_vminq_m_<supf><mode>"
   5303      1.1  mrg   [
   5304      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5305      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5306      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5307      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5308  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5309      1.1  mrg 	 VMINQ_M))
   5310      1.1  mrg   ]
   5311      1.1  mrg   "TARGET_HAVE_MVE"
   5312      1.1  mrg   "vpst\;vmint.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5313      1.1  mrg   [(set_attr "type" "mve_move")
   5314      1.1  mrg    (set_attr "length""8")])
   5315      1.1  mrg 
   5316      1.1  mrg ;;
   5317      1.1  mrg ;; [vmladavaq_p_u, vmladavaq_p_s])
   5318      1.1  mrg ;;
   5319      1.1  mrg (define_insn "mve_vmladavaq_p_<supf><mode>"
   5320      1.1  mrg   [
   5321      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   5322      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   5323      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")
   5324      1.1  mrg 		    (match_operand:MVE_2 3 "s_register_operand" "w")
   5325  1.1.1.2  mrg 		    (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5326      1.1  mrg 	 VMLADAVAQ_P))
   5327      1.1  mrg   ]
   5328      1.1  mrg   "TARGET_HAVE_MVE"
   5329      1.1  mrg   "vpst\;vmladavat.<supf>%#<V_sz_elem>	%0, %q2, %q3"
   5330      1.1  mrg   [(set_attr "type" "mve_move")
   5331      1.1  mrg    (set_attr "length""8")])
   5332      1.1  mrg 
   5333      1.1  mrg ;;
   5334      1.1  mrg ;; [vmlaq_m_n_s, vmlaq_m_n_u])
   5335      1.1  mrg ;;
   5336      1.1  mrg (define_insn "mve_vmlaq_m_n_<supf><mode>"
   5337      1.1  mrg   [
   5338      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5339      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5340      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5341      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5342  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5343      1.1  mrg 	 VMLAQ_M_N))
   5344      1.1  mrg   ]
   5345      1.1  mrg   "TARGET_HAVE_MVE"
   5346      1.1  mrg   "vpst\;vmlat.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   5347      1.1  mrg   [(set_attr "type" "mve_move")
   5348      1.1  mrg    (set_attr "length""8")])
   5349      1.1  mrg 
   5350      1.1  mrg ;;
   5351      1.1  mrg ;; [vmlasq_m_n_u, vmlasq_m_n_s])
   5352      1.1  mrg ;;
   5353      1.1  mrg (define_insn "mve_vmlasq_m_n_<supf><mode>"
   5354      1.1  mrg   [
   5355      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5356      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5357      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5358      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5359  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5360      1.1  mrg 	 VMLASQ_M_N))
   5361      1.1  mrg   ]
   5362      1.1  mrg   "TARGET_HAVE_MVE"
   5363      1.1  mrg   "vpst\;vmlast.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   5364      1.1  mrg   [(set_attr "type" "mve_move")
   5365      1.1  mrg    (set_attr "length""8")])
   5366      1.1  mrg 
   5367      1.1  mrg ;;
   5368      1.1  mrg ;; [vmulhq_m_s, vmulhq_m_u])
   5369      1.1  mrg ;;
   5370      1.1  mrg (define_insn "mve_vmulhq_m_<supf><mode>"
   5371      1.1  mrg   [
   5372      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5373      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5374      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5375      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5376  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5377      1.1  mrg 	 VMULHQ_M))
   5378      1.1  mrg   ]
   5379      1.1  mrg   "TARGET_HAVE_MVE"
   5380      1.1  mrg   "vpst\;vmulht.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5381      1.1  mrg   [(set_attr "type" "mve_move")
   5382      1.1  mrg    (set_attr "length""8")])
   5383      1.1  mrg 
   5384      1.1  mrg ;;
   5385      1.1  mrg ;; [vmullbq_int_m_u, vmullbq_int_m_s])
   5386      1.1  mrg ;;
   5387      1.1  mrg (define_insn "mve_vmullbq_int_m_<supf><mode>"
   5388      1.1  mrg   [
   5389      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   5390      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   5391      1.1  mrg 				  (match_operand:MVE_2 2 "s_register_operand" "w")
   5392      1.1  mrg 				  (match_operand:MVE_2 3 "s_register_operand" "w")
   5393  1.1.1.2  mrg 				  (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5394      1.1  mrg 	 VMULLBQ_INT_M))
   5395      1.1  mrg   ]
   5396      1.1  mrg   "TARGET_HAVE_MVE"
   5397      1.1  mrg   "vpst\;vmullbt.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5398      1.1  mrg   [(set_attr "type" "mve_move")
   5399      1.1  mrg    (set_attr "length""8")])
   5400      1.1  mrg 
   5401      1.1  mrg ;;
   5402      1.1  mrg ;; [vmulltq_int_m_s, vmulltq_int_m_u])
   5403      1.1  mrg ;;
   5404      1.1  mrg (define_insn "mve_vmulltq_int_m_<supf><mode>"
   5405      1.1  mrg   [
   5406      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   5407      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   5408      1.1  mrg 				  (match_operand:MVE_2 2 "s_register_operand" "w")
   5409      1.1  mrg 				  (match_operand:MVE_2 3 "s_register_operand" "w")
   5410  1.1.1.2  mrg 				  (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5411      1.1  mrg 	 VMULLTQ_INT_M))
   5412      1.1  mrg   ]
   5413      1.1  mrg   "TARGET_HAVE_MVE"
   5414      1.1  mrg   "vpst\;vmulltt.<supf>%#<V_sz_elem>	%q0, %q2, %q3"
   5415      1.1  mrg   [(set_attr "type" "mve_move")
   5416      1.1  mrg    (set_attr "length""8")])
   5417      1.1  mrg 
   5418      1.1  mrg ;;
   5419      1.1  mrg ;; [vmulq_m_n_u, vmulq_m_n_s])
   5420      1.1  mrg ;;
   5421      1.1  mrg (define_insn "mve_vmulq_m_n_<supf><mode>"
   5422      1.1  mrg   [
   5423      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5424      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5425      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5426      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5427  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5428      1.1  mrg 	 VMULQ_M_N))
   5429      1.1  mrg   ]
   5430      1.1  mrg   "TARGET_HAVE_MVE"
   5431      1.1  mrg   "vpst\;vmult.i%#<V_sz_elem>	%q0, %q2, %3"
   5432      1.1  mrg   [(set_attr "type" "mve_move")
   5433      1.1  mrg    (set_attr "length""8")])
   5434      1.1  mrg 
   5435      1.1  mrg ;;
   5436      1.1  mrg ;; [vmulq_m_s, vmulq_m_u])
   5437      1.1  mrg ;;
   5438      1.1  mrg (define_insn "mve_vmulq_m_<supf><mode>"
   5439      1.1  mrg   [
   5440      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5441      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5442      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5443      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5444  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5445      1.1  mrg 	 VMULQ_M))
   5446      1.1  mrg   ]
   5447      1.1  mrg   "TARGET_HAVE_MVE"
   5448      1.1  mrg   "vpst\;vmult.i%#<V_sz_elem>	%q0, %q2, %q3"
   5449      1.1  mrg   [(set_attr "type" "mve_move")
   5450      1.1  mrg    (set_attr "length""8")])
   5451      1.1  mrg 
   5452      1.1  mrg ;;
   5453      1.1  mrg ;; [vornq_m_u, vornq_m_s])
   5454      1.1  mrg ;;
   5455      1.1  mrg (define_insn "mve_vornq_m_<supf><mode>"
   5456      1.1  mrg   [
   5457      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5458      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5459      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5460      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5461  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5462      1.1  mrg 	 VORNQ_M))
   5463      1.1  mrg   ]
   5464      1.1  mrg   "TARGET_HAVE_MVE"
   5465  1.1.1.2  mrg   "vpst\;vornt\t%q0, %q2, %q3"
   5466      1.1  mrg   [(set_attr "type" "mve_move")
   5467      1.1  mrg    (set_attr "length""8")])
   5468      1.1  mrg 
   5469      1.1  mrg ;;
   5470      1.1  mrg ;; [vorrq_m_s, vorrq_m_u])
   5471      1.1  mrg ;;
   5472      1.1  mrg (define_insn "mve_vorrq_m_<supf><mode>"
   5473      1.1  mrg   [
   5474      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5475      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5476      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5477      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5478  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5479      1.1  mrg 	 VORRQ_M))
   5480      1.1  mrg   ]
   5481      1.1  mrg   "TARGET_HAVE_MVE"
   5482  1.1.1.2  mrg   "vpst\;vorrt\t%q0, %q2, %q3"
   5483      1.1  mrg   [(set_attr "type" "mve_move")
   5484      1.1  mrg    (set_attr "length""8")])
   5485      1.1  mrg 
   5486      1.1  mrg ;;
   5487      1.1  mrg ;; [vqaddq_m_n_u, vqaddq_m_n_s])
   5488      1.1  mrg ;;
   5489      1.1  mrg (define_insn "mve_vqaddq_m_n_<supf><mode>"
   5490      1.1  mrg   [
   5491      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5492      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5493      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5494      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5495  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5496      1.1  mrg 	 VQADDQ_M_N))
   5497      1.1  mrg   ]
   5498      1.1  mrg   "TARGET_HAVE_MVE"
   5499      1.1  mrg   "vpst\;vqaddt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5500      1.1  mrg   [(set_attr "type" "mve_move")
   5501      1.1  mrg    (set_attr "length""8")])
   5502      1.1  mrg 
   5503      1.1  mrg ;;
   5504      1.1  mrg ;; [vqaddq_m_u, vqaddq_m_s])
   5505      1.1  mrg ;;
   5506      1.1  mrg (define_insn "mve_vqaddq_m_<supf><mode>"
   5507      1.1  mrg   [
   5508      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5509      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5510      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5511      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5512  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5513      1.1  mrg 	 VQADDQ_M))
   5514      1.1  mrg   ]
   5515      1.1  mrg   "TARGET_HAVE_MVE"
   5516      1.1  mrg   "vpst\;vqaddt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5517      1.1  mrg   [(set_attr "type" "mve_move")
   5518      1.1  mrg    (set_attr "length""8")])
   5519      1.1  mrg 
   5520      1.1  mrg ;;
   5521      1.1  mrg ;; [vqdmlahq_m_n_s])
   5522      1.1  mrg ;;
   5523      1.1  mrg (define_insn "mve_vqdmlahq_m_n_s<mode>"
   5524      1.1  mrg   [
   5525      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5526      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5527      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5528      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5529  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5530      1.1  mrg 	 VQDMLAHQ_M_N_S))
   5531      1.1  mrg   ]
   5532      1.1  mrg   "TARGET_HAVE_MVE"
   5533      1.1  mrg   "vpst\;vqdmlaht.s%#<V_sz_elem>\t%q0, %q2, %3"
   5534      1.1  mrg   [(set_attr "type" "mve_move")
   5535      1.1  mrg    (set_attr "length""8")])
   5536      1.1  mrg 
   5537      1.1  mrg ;;
   5538      1.1  mrg ;; [vqdmlashq_m_n_s])
   5539      1.1  mrg ;;
   5540      1.1  mrg (define_insn "mve_vqdmlashq_m_n_s<mode>"
   5541      1.1  mrg   [
   5542      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5543      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5544      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5545      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5546  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5547      1.1  mrg 	 VQDMLASHQ_M_N_S))
   5548      1.1  mrg   ]
   5549      1.1  mrg   "TARGET_HAVE_MVE"
   5550      1.1  mrg   "vpst\;vqdmlasht.s%#<V_sz_elem>\t%q0, %q2, %3"
   5551      1.1  mrg   [(set_attr "type" "mve_move")
   5552      1.1  mrg    (set_attr "length""8")])
   5553      1.1  mrg 
   5554      1.1  mrg ;;
   5555      1.1  mrg ;; [vqrdmlahq_m_n_s])
   5556      1.1  mrg ;;
   5557      1.1  mrg (define_insn "mve_vqrdmlahq_m_n_s<mode>"
   5558      1.1  mrg   [
   5559      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5560      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5561      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5562      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5563  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5564      1.1  mrg 	 VQRDMLAHQ_M_N_S))
   5565      1.1  mrg   ]
   5566      1.1  mrg   "TARGET_HAVE_MVE"
   5567      1.1  mrg   "vpst\;vqrdmlaht.s%#<V_sz_elem>\t%q0, %q2, %3"
   5568      1.1  mrg   [(set_attr "type" "mve_move")
   5569      1.1  mrg    (set_attr "length""8")])
   5570      1.1  mrg 
   5571      1.1  mrg ;;
   5572      1.1  mrg ;; [vqrdmlashq_m_n_s])
   5573      1.1  mrg ;;
   5574      1.1  mrg (define_insn "mve_vqrdmlashq_m_n_s<mode>"
   5575      1.1  mrg   [
   5576      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5577      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5578      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5579      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5580  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5581      1.1  mrg 	 VQRDMLASHQ_M_N_S))
   5582      1.1  mrg   ]
   5583      1.1  mrg   "TARGET_HAVE_MVE"
   5584      1.1  mrg   "vpst\;vqrdmlasht.s%#<V_sz_elem>\t%q0, %q2, %3"
   5585      1.1  mrg   [(set_attr "type" "mve_move")
   5586      1.1  mrg    (set_attr "length""8")])
   5587      1.1  mrg 
   5588      1.1  mrg ;;
   5589      1.1  mrg ;; [vqrshlq_m_u, vqrshlq_m_s])
   5590      1.1  mrg ;;
   5591      1.1  mrg (define_insn "mve_vqrshlq_m_<supf><mode>"
   5592      1.1  mrg   [
   5593      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5594      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5595      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5596      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5597  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5598      1.1  mrg 	 VQRSHLQ_M))
   5599      1.1  mrg   ]
   5600      1.1  mrg   "TARGET_HAVE_MVE"
   5601      1.1  mrg   "vpst\;vqrshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5602      1.1  mrg   [(set_attr "type" "mve_move")
   5603      1.1  mrg    (set_attr "length""8")])
   5604      1.1  mrg 
   5605      1.1  mrg ;;
   5606      1.1  mrg ;; [vqshlq_m_n_s, vqshlq_m_n_u])
   5607      1.1  mrg ;;
   5608      1.1  mrg (define_insn "mve_vqshlq_m_n_<supf><mode>"
   5609      1.1  mrg   [
   5610      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5611      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5612      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5613      1.1  mrg 		       (match_operand:SI 3 "immediate_operand" "i")
   5614  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5615      1.1  mrg 	 VQSHLQ_M_N))
   5616      1.1  mrg   ]
   5617      1.1  mrg   "TARGET_HAVE_MVE"
   5618      1.1  mrg   "vpst\;vqshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5619      1.1  mrg   [(set_attr "type" "mve_move")
   5620      1.1  mrg    (set_attr "length""8")])
   5621      1.1  mrg 
   5622      1.1  mrg ;;
   5623      1.1  mrg ;; [vqshlq_m_u, vqshlq_m_s])
   5624      1.1  mrg ;;
   5625      1.1  mrg (define_insn "mve_vqshlq_m_<supf><mode>"
   5626      1.1  mrg   [
   5627      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5628      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5629      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5630      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5631  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5632      1.1  mrg 	 VQSHLQ_M))
   5633      1.1  mrg   ]
   5634      1.1  mrg   "TARGET_HAVE_MVE"
   5635      1.1  mrg   "vpst\;vqshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5636      1.1  mrg   [(set_attr "type" "mve_move")
   5637      1.1  mrg    (set_attr "length""8")])
   5638      1.1  mrg 
   5639      1.1  mrg ;;
   5640      1.1  mrg ;; [vqsubq_m_n_u, vqsubq_m_n_s])
   5641      1.1  mrg ;;
   5642      1.1  mrg (define_insn "mve_vqsubq_m_n_<supf><mode>"
   5643      1.1  mrg   [
   5644      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5645      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5646      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5647      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5648  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5649      1.1  mrg 	 VQSUBQ_M_N))
   5650      1.1  mrg   ]
   5651      1.1  mrg   "TARGET_HAVE_MVE"
   5652      1.1  mrg   "vpst\;vqsubt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5653      1.1  mrg   [(set_attr "type" "mve_move")
   5654      1.1  mrg    (set_attr "length""8")])
   5655      1.1  mrg 
   5656      1.1  mrg ;;
   5657      1.1  mrg ;; [vqsubq_m_u, vqsubq_m_s])
   5658      1.1  mrg ;;
   5659      1.1  mrg (define_insn "mve_vqsubq_m_<supf><mode>"
   5660      1.1  mrg   [
   5661      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5662      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5663      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5664      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5665  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5666      1.1  mrg 	 VQSUBQ_M))
   5667      1.1  mrg   ]
   5668      1.1  mrg   "TARGET_HAVE_MVE"
   5669      1.1  mrg   "vpst\;vqsubt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5670      1.1  mrg   [(set_attr "type" "mve_move")
   5671      1.1  mrg    (set_attr "length""8")])
   5672      1.1  mrg 
   5673      1.1  mrg ;;
   5674      1.1  mrg ;; [vrhaddq_m_u, vrhaddq_m_s])
   5675      1.1  mrg ;;
   5676      1.1  mrg (define_insn "mve_vrhaddq_m_<supf><mode>"
   5677      1.1  mrg   [
   5678      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5679      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5680      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5681      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5682  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5683      1.1  mrg 	 VRHADDQ_M))
   5684      1.1  mrg   ]
   5685      1.1  mrg   "TARGET_HAVE_MVE"
   5686      1.1  mrg   "vpst\;vrhaddt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5687      1.1  mrg   [(set_attr "type" "mve_move")
   5688      1.1  mrg    (set_attr "length""8")])
   5689      1.1  mrg 
   5690      1.1  mrg ;;
   5691      1.1  mrg ;; [vrmulhq_m_u, vrmulhq_m_s])
   5692      1.1  mrg ;;
   5693      1.1  mrg (define_insn "mve_vrmulhq_m_<supf><mode>"
   5694      1.1  mrg   [
   5695      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5696      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5697      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5698      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5699  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5700      1.1  mrg 	 VRMULHQ_M))
   5701      1.1  mrg   ]
   5702      1.1  mrg   "TARGET_HAVE_MVE"
   5703      1.1  mrg   "vpst\;vrmulht.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5704      1.1  mrg   [(set_attr "type" "mve_move")
   5705      1.1  mrg    (set_attr "length""8")])
   5706      1.1  mrg 
   5707      1.1  mrg ;;
   5708      1.1  mrg ;; [vrshlq_m_s, vrshlq_m_u])
   5709      1.1  mrg ;;
   5710      1.1  mrg (define_insn "mve_vrshlq_m_<supf><mode>"
   5711      1.1  mrg   [
   5712      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5713      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5714      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5715      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5716  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5717      1.1  mrg 	 VRSHLQ_M))
   5718      1.1  mrg   ]
   5719      1.1  mrg   "TARGET_HAVE_MVE"
   5720      1.1  mrg   "vpst\;vrshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
   5721      1.1  mrg   [(set_attr "type" "mve_move")
   5722      1.1  mrg    (set_attr "length""8")])
   5723      1.1  mrg 
   5724      1.1  mrg ;;
   5725      1.1  mrg ;; [vrshrq_m_n_s, vrshrq_m_n_u])
   5726      1.1  mrg ;;
   5727      1.1  mrg (define_insn "mve_vrshrq_m_n_<supf><mode>"
   5728      1.1  mrg   [
   5729      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5730      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5731      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5732      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")
   5733  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5734      1.1  mrg 	 VRSHRQ_M_N))
   5735      1.1  mrg   ]
   5736      1.1  mrg   "TARGET_HAVE_MVE"
   5737      1.1  mrg   "vpst\;vrshrt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5738      1.1  mrg   [(set_attr "type" "mve_move")
   5739      1.1  mrg    (set_attr "length""8")])
   5740      1.1  mrg 
   5741      1.1  mrg ;;
   5742      1.1  mrg ;; [vshlq_m_n_s, vshlq_m_n_u])
   5743      1.1  mrg ;;
   5744      1.1  mrg (define_insn "mve_vshlq_m_n_<supf><mode>"
   5745      1.1  mrg   [
   5746      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5747      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5748      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5749      1.1  mrg 		       (match_operand:SI 3 "immediate_operand" "i")
   5750  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5751      1.1  mrg 	 VSHLQ_M_N))
   5752      1.1  mrg   ]
   5753      1.1  mrg   "TARGET_HAVE_MVE"
   5754      1.1  mrg   "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5755      1.1  mrg   [(set_attr "type" "mve_move")
   5756      1.1  mrg    (set_attr "length""8")])
   5757      1.1  mrg 
   5758      1.1  mrg ;;
   5759      1.1  mrg ;; [vshrq_m_n_s, vshrq_m_n_u])
   5760      1.1  mrg ;;
   5761      1.1  mrg (define_insn "mve_vshrq_m_n_<supf><mode>"
   5762      1.1  mrg   [
   5763      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5764      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5765      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5766      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")
   5767  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5768      1.1  mrg 	 VSHRQ_M_N))
   5769      1.1  mrg   ]
   5770      1.1  mrg   "TARGET_HAVE_MVE"
   5771      1.1  mrg   "vpst\;vshrt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   5772      1.1  mrg   [(set_attr "type" "mve_move")
   5773      1.1  mrg    (set_attr "length""8")])
   5774      1.1  mrg 
   5775      1.1  mrg ;;
   5776      1.1  mrg ;; [vsliq_m_n_u, vsliq_m_n_s])
   5777      1.1  mrg ;;
   5778      1.1  mrg (define_insn "mve_vsliq_m_n_<supf><mode>"
   5779      1.1  mrg    [
   5780      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5781      1.1  mrg        (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5782      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5783      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>")
   5784  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5785      1.1  mrg 	 VSLIQ_M_N))
   5786      1.1  mrg   ]
   5787      1.1  mrg   "TARGET_HAVE_MVE"
   5788      1.1  mrg   "vpst\;vslit.%#<V_sz_elem>\t%q0, %q2, %3"
   5789      1.1  mrg   [(set_attr "type" "mve_move")
   5790      1.1  mrg    (set_attr "length""8")])
   5791      1.1  mrg 
   5792      1.1  mrg ;;
   5793      1.1  mrg ;; [vsubq_m_n_s, vsubq_m_n_u])
   5794      1.1  mrg ;;
   5795      1.1  mrg (define_insn "mve_vsubq_m_n_<supf><mode>"
   5796      1.1  mrg   [
   5797      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5798      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5799      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5800      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5801  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5802      1.1  mrg 	 VSUBQ_M_N))
   5803      1.1  mrg   ]
   5804      1.1  mrg   "TARGET_HAVE_MVE"
   5805      1.1  mrg   "vpst\;vsubt.i%#<V_sz_elem>\t%q0, %q2, %3"
   5806      1.1  mrg   [(set_attr "type" "mve_move")
   5807      1.1  mrg    (set_attr "length""8")])
   5808      1.1  mrg 
   5809      1.1  mrg ;;
   5810      1.1  mrg ;; [vhcaddq_rot270_m_s])
   5811      1.1  mrg ;;
   5812      1.1  mrg (define_insn "mve_vhcaddq_rot270_m_s<mode>"
   5813      1.1  mrg   [
   5814      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
   5815      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5816      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5817      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5818  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5819      1.1  mrg 	 VHCADDQ_ROT270_M_S))
   5820      1.1  mrg   ]
   5821      1.1  mrg   "TARGET_HAVE_MVE"
   5822      1.1  mrg   "vpst\;vhcaddt.s%#<V_sz_elem>\t%q0, %q2, %q3, #270"
   5823      1.1  mrg   [(set_attr "type" "mve_move")
   5824      1.1  mrg    (set_attr "length""8")])
   5825      1.1  mrg 
   5826      1.1  mrg ;;
   5827      1.1  mrg ;; [vhcaddq_rot90_m_s])
   5828      1.1  mrg ;;
   5829      1.1  mrg (define_insn "mve_vhcaddq_rot90_m_s<mode>"
   5830      1.1  mrg   [
   5831      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
   5832      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5833      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5834      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5835  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5836      1.1  mrg 	 VHCADDQ_ROT90_M_S))
   5837      1.1  mrg   ]
   5838      1.1  mrg   "TARGET_HAVE_MVE"
   5839      1.1  mrg   "vpst\;vhcaddt.s%#<V_sz_elem>\t%q0, %q2, %q3, #90"
   5840      1.1  mrg   [(set_attr "type" "mve_move")
   5841      1.1  mrg    (set_attr "length""8")])
   5842      1.1  mrg 
   5843      1.1  mrg ;;
   5844      1.1  mrg ;; [vmladavaxq_p_s])
   5845      1.1  mrg ;;
   5846      1.1  mrg (define_insn "mve_vmladavaxq_p_s<mode>"
   5847      1.1  mrg   [
   5848      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   5849      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   5850      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5851      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5852  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5853      1.1  mrg 	 VMLADAVAXQ_P_S))
   5854      1.1  mrg   ]
   5855      1.1  mrg   "TARGET_HAVE_MVE"
   5856      1.1  mrg   "vpst\;vmladavaxt.s%#<V_sz_elem>\t%0, %q2, %q3"
   5857      1.1  mrg   [(set_attr "type" "mve_move")
   5858      1.1  mrg    (set_attr "length""8")])
   5859      1.1  mrg 
   5860      1.1  mrg ;;
   5861      1.1  mrg ;; [vmlsdavaq_p_s])
   5862      1.1  mrg ;;
   5863      1.1  mrg (define_insn "mve_vmlsdavaq_p_s<mode>"
   5864      1.1  mrg   [
   5865      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   5866      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   5867      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5868      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5869  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5870      1.1  mrg 	 VMLSDAVAQ_P_S))
   5871      1.1  mrg   ]
   5872      1.1  mrg   "TARGET_HAVE_MVE"
   5873      1.1  mrg   "vpst\;vmlsdavat.s%#<V_sz_elem>\t%0, %q2, %q3"
   5874      1.1  mrg   [(set_attr "type" "mve_move")
   5875      1.1  mrg    (set_attr "length""8")])
   5876      1.1  mrg 
   5877      1.1  mrg ;;
   5878      1.1  mrg ;; [vmlsdavaxq_p_s])
   5879      1.1  mrg ;;
   5880      1.1  mrg (define_insn "mve_vmlsdavaxq_p_s<mode>"
   5881      1.1  mrg   [
   5882      1.1  mrg    (set (match_operand:SI 0 "s_register_operand" "=Te")
   5883      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
   5884      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5885      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5886  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5887      1.1  mrg 	 VMLSDAVAXQ_P_S))
   5888      1.1  mrg   ]
   5889      1.1  mrg   "TARGET_HAVE_MVE"
   5890      1.1  mrg   "vpst\;vmlsdavaxt.s%#<V_sz_elem>\t%0, %q2, %q3"
   5891      1.1  mrg   [(set_attr "type" "mve_move")
   5892      1.1  mrg    (set_attr "length""8")])
   5893      1.1  mrg 
   5894      1.1  mrg ;;
   5895      1.1  mrg ;; [vqdmladhq_m_s])
   5896      1.1  mrg ;;
   5897      1.1  mrg (define_insn "mve_vqdmladhq_m_s<mode>"
   5898      1.1  mrg   [
   5899      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5900      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5901      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5902      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5903  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5904      1.1  mrg 	 VQDMLADHQ_M_S))
   5905      1.1  mrg   ]
   5906      1.1  mrg   "TARGET_HAVE_MVE"
   5907      1.1  mrg   "vpst\;vqdmladht.s%#<V_sz_elem>\t%q0, %q2, %q3"
   5908      1.1  mrg   [(set_attr "type" "mve_move")
   5909      1.1  mrg    (set_attr "length""8")])
   5910      1.1  mrg 
   5911      1.1  mrg ;;
   5912      1.1  mrg ;; [vqdmladhxq_m_s])
   5913      1.1  mrg ;;
   5914      1.1  mrg (define_insn "mve_vqdmladhxq_m_s<mode>"
   5915      1.1  mrg   [
   5916      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5917      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5918      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5919      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5920  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5921      1.1  mrg 	 VQDMLADHXQ_M_S))
   5922      1.1  mrg   ]
   5923      1.1  mrg   "TARGET_HAVE_MVE"
   5924      1.1  mrg   "vpst\;vqdmladhxt.s%#<V_sz_elem>\t%q0, %q2, %q3"
   5925      1.1  mrg   [(set_attr "type" "mve_move")
   5926      1.1  mrg    (set_attr "length""8")])
   5927      1.1  mrg 
   5928      1.1  mrg ;;
   5929      1.1  mrg ;; [vqdmlsdhq_m_s])
   5930      1.1  mrg ;;
   5931      1.1  mrg (define_insn "mve_vqdmlsdhq_m_s<mode>"
   5932      1.1  mrg   [
   5933      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5934      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5935      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5936      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5937  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5938      1.1  mrg 	 VQDMLSDHQ_M_S))
   5939      1.1  mrg   ]
   5940      1.1  mrg   "TARGET_HAVE_MVE"
   5941      1.1  mrg   "vpst\;vqdmlsdht.s%#<V_sz_elem>\t%q0, %q2, %q3"
   5942      1.1  mrg   [(set_attr "type" "mve_move")
   5943      1.1  mrg    (set_attr "length""8")])
   5944      1.1  mrg 
   5945      1.1  mrg ;;
   5946      1.1  mrg ;; [vqdmlsdhxq_m_s])
   5947      1.1  mrg ;;
   5948      1.1  mrg (define_insn "mve_vqdmlsdhxq_m_s<mode>"
   5949      1.1  mrg   [
   5950      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5951      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5952      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5953      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5954  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5955      1.1  mrg 	 VQDMLSDHXQ_M_S))
   5956      1.1  mrg   ]
   5957      1.1  mrg   "TARGET_HAVE_MVE"
   5958      1.1  mrg   "vpst\;vqdmlsdhxt.s%#<V_sz_elem>\t%q0, %q2, %q3"
   5959      1.1  mrg   [(set_attr "type" "mve_move")
   5960      1.1  mrg    (set_attr "length""8")])
   5961      1.1  mrg 
   5962      1.1  mrg ;;
   5963      1.1  mrg ;; [vqdmulhq_m_n_s])
   5964      1.1  mrg ;;
   5965      1.1  mrg (define_insn "mve_vqdmulhq_m_n_s<mode>"
   5966      1.1  mrg   [
   5967      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5968      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5969      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5970      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   5971  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5972      1.1  mrg 	 VQDMULHQ_M_N_S))
   5973      1.1  mrg   ]
   5974      1.1  mrg   "TARGET_HAVE_MVE"
   5975      1.1  mrg   "vpst\;vqdmulht.s%#<V_sz_elem>\t%q0, %q2, %3"
   5976      1.1  mrg   [(set_attr "type" "mve_move")
   5977      1.1  mrg    (set_attr "length""8")])
   5978      1.1  mrg 
   5979      1.1  mrg ;;
   5980      1.1  mrg ;; [vqdmulhq_m_s])
   5981      1.1  mrg ;;
   5982      1.1  mrg (define_insn "mve_vqdmulhq_m_s<mode>"
   5983      1.1  mrg   [
   5984      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   5985      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   5986      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   5987      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   5988  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   5989      1.1  mrg 	 VQDMULHQ_M_S))
   5990      1.1  mrg   ]
   5991      1.1  mrg   "TARGET_HAVE_MVE"
   5992      1.1  mrg   "vpst\;vqdmulht.s%#<V_sz_elem>\t%q0, %q2, %q3"
   5993      1.1  mrg   [(set_attr "type" "mve_move")
   5994      1.1  mrg    (set_attr "length""8")])
   5995      1.1  mrg 
   5996      1.1  mrg ;;
   5997      1.1  mrg ;; [vqrdmladhq_m_s])
   5998      1.1  mrg ;;
   5999      1.1  mrg (define_insn "mve_vqrdmladhq_m_s<mode>"
   6000      1.1  mrg   [
   6001      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   6002      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   6003      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   6004      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   6005  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6006      1.1  mrg 	 VQRDMLADHQ_M_S))
   6007      1.1  mrg   ]
   6008      1.1  mrg   "TARGET_HAVE_MVE"
   6009      1.1  mrg   "vpst\;vqrdmladht.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6010      1.1  mrg   [(set_attr "type" "mve_move")
   6011      1.1  mrg    (set_attr "length""8")])
   6012      1.1  mrg 
   6013      1.1  mrg ;;
   6014      1.1  mrg ;; [vqrdmladhxq_m_s])
   6015      1.1  mrg ;;
   6016      1.1  mrg (define_insn "mve_vqrdmladhxq_m_s<mode>"
   6017      1.1  mrg   [
   6018      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   6019      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   6020      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   6021      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   6022  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6023      1.1  mrg 	 VQRDMLADHXQ_M_S))
   6024      1.1  mrg   ]
   6025      1.1  mrg   "TARGET_HAVE_MVE"
   6026      1.1  mrg   "vpst\;vqrdmladhxt.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6027      1.1  mrg   [(set_attr "type" "mve_move")
   6028      1.1  mrg    (set_attr "length""8")])
   6029      1.1  mrg 
   6030      1.1  mrg ;;
   6031      1.1  mrg ;; [vqrdmlsdhq_m_s])
   6032      1.1  mrg ;;
   6033      1.1  mrg (define_insn "mve_vqrdmlsdhq_m_s<mode>"
   6034      1.1  mrg   [
   6035      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   6036      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   6037      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   6038      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   6039  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6040      1.1  mrg 	 VQRDMLSDHQ_M_S))
   6041      1.1  mrg   ]
   6042      1.1  mrg   "TARGET_HAVE_MVE"
   6043      1.1  mrg   "vpst\;vqrdmlsdht.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6044      1.1  mrg   [(set_attr "type" "mve_move")
   6045      1.1  mrg    (set_attr "length""8")])
   6046      1.1  mrg 
   6047      1.1  mrg ;;
   6048      1.1  mrg ;; [vqrdmlsdhxq_m_s])
   6049      1.1  mrg ;;
   6050      1.1  mrg (define_insn "mve_vqrdmlsdhxq_m_s<mode>"
   6051      1.1  mrg   [
   6052      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   6053      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   6054      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   6055      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   6056  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6057      1.1  mrg 	 VQRDMLSDHXQ_M_S))
   6058      1.1  mrg   ]
   6059      1.1  mrg   "TARGET_HAVE_MVE"
   6060      1.1  mrg   "vpst\;vqrdmlsdhxt.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6061      1.1  mrg   [(set_attr "type" "mve_move")
   6062      1.1  mrg    (set_attr "length""8")])
   6063      1.1  mrg 
   6064      1.1  mrg ;;
   6065      1.1  mrg ;; [vqrdmulhq_m_n_s])
   6066      1.1  mrg ;;
   6067      1.1  mrg (define_insn "mve_vqrdmulhq_m_n_s<mode>"
   6068      1.1  mrg   [
   6069      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   6070      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   6071      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   6072      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   6073  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6074      1.1  mrg 	 VQRDMULHQ_M_N_S))
   6075      1.1  mrg   ]
   6076      1.1  mrg   "TARGET_HAVE_MVE"
   6077      1.1  mrg   "vpst\;vqrdmulht.s%#<V_sz_elem>\t%q0, %q2, %3"
   6078      1.1  mrg   [(set_attr "type" "mve_move")
   6079      1.1  mrg    (set_attr "length""8")])
   6080      1.1  mrg 
   6081      1.1  mrg ;;
   6082      1.1  mrg ;; [vqrdmulhq_m_s])
   6083      1.1  mrg ;;
   6084      1.1  mrg (define_insn "mve_vqrdmulhq_m_s<mode>"
   6085      1.1  mrg   [
   6086      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   6087      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   6088      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   6089      1.1  mrg 		       (match_operand:MVE_2 3 "s_register_operand" "w")
   6090  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6091      1.1  mrg 	 VQRDMULHQ_M_S))
   6092      1.1  mrg   ]
   6093      1.1  mrg   "TARGET_HAVE_MVE"
   6094      1.1  mrg   "vpst\;vqrdmulht.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6095      1.1  mrg   [(set_attr "type" "mve_move")
   6096      1.1  mrg    (set_attr "length""8")])
   6097      1.1  mrg 
   6098      1.1  mrg ;;
   6099      1.1  mrg ;; [vmlaldavaq_p_u, vmlaldavaq_p_s])
   6100      1.1  mrg ;;
   6101      1.1  mrg (define_insn "mve_vmlaldavaq_p_<supf><mode>"
   6102      1.1  mrg   [
   6103      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6104      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6105      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6106      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")
   6107  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6108      1.1  mrg 	 VMLALDAVAQ_P))
   6109      1.1  mrg   ]
   6110      1.1  mrg   "TARGET_HAVE_MVE"
   6111      1.1  mrg   "vpst\;vmlaldavat.<supf>%#<V_sz_elem>	%Q0, %R0, %q2, %q3"
   6112      1.1  mrg   [(set_attr "type" "mve_move")
   6113      1.1  mrg    (set_attr "length""8")])
   6114      1.1  mrg 
   6115      1.1  mrg ;;
   6116      1.1  mrg ;; [vmlaldavaxq_p_s])
   6117      1.1  mrg ;;
   6118      1.1  mrg (define_insn "mve_vmlaldavaxq_p_<supf><mode>"
   6119      1.1  mrg   [
   6120      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6121      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6122      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6123      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")
   6124  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6125      1.1  mrg 	 VMLALDAVAXQ_P))
   6126      1.1  mrg   ]
   6127      1.1  mrg   "TARGET_HAVE_MVE"
   6128  1.1.1.2  mrg   "vpst\;vmlaldavaxt.<supf>%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   6129      1.1  mrg   [(set_attr "type" "mve_move")
   6130      1.1  mrg    (set_attr "length""8")])
   6131      1.1  mrg 
   6132      1.1  mrg ;;
   6133      1.1  mrg ;; [vqrshrnbq_m_n_u, vqrshrnbq_m_n_s])
   6134      1.1  mrg ;;
   6135      1.1  mrg (define_insn "mve_vqrshrnbq_m_n_<supf><mode>"
   6136      1.1  mrg   [
   6137      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6138      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6139      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6140  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6141  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6142      1.1  mrg 	 VQRSHRNBQ_M_N))
   6143      1.1  mrg   ]
   6144      1.1  mrg   "TARGET_HAVE_MVE"
   6145      1.1  mrg   "vpst\;vqrshrnbt.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   6146      1.1  mrg   [(set_attr "type" "mve_move")
   6147      1.1  mrg    (set_attr "length""8")])
   6148      1.1  mrg 
   6149      1.1  mrg ;;
   6150      1.1  mrg ;; [vqrshrntq_m_n_s, vqrshrntq_m_n_u])
   6151      1.1  mrg ;;
   6152      1.1  mrg (define_insn "mve_vqrshrntq_m_n_<supf><mode>"
   6153      1.1  mrg   [
   6154      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6155      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6156      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6157  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6158  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6159      1.1  mrg 	 VQRSHRNTQ_M_N))
   6160      1.1  mrg   ]
   6161      1.1  mrg   "TARGET_HAVE_MVE"
   6162      1.1  mrg   "vpst\;vqrshrntt.<supf>%#<V_sz_elem>	%q0, %q2, %3"
   6163      1.1  mrg   [(set_attr "type" "mve_move")
   6164      1.1  mrg    (set_attr "length""8")])
   6165      1.1  mrg 
   6166      1.1  mrg ;;
   6167      1.1  mrg ;; [vqshrnbq_m_n_u, vqshrnbq_m_n_s])
   6168      1.1  mrg ;;
   6169      1.1  mrg (define_insn "mve_vqshrnbq_m_n_<supf><mode>"
   6170      1.1  mrg   [
   6171      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6172      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6173      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6174      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6175  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6176      1.1  mrg 	 VQSHRNBQ_M_N))
   6177      1.1  mrg   ]
   6178      1.1  mrg   "TARGET_HAVE_MVE"
   6179      1.1  mrg   "vpst\n\tvqshrnbt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   6180      1.1  mrg   [(set_attr "type" "mve_move")
   6181      1.1  mrg    (set_attr "length""8")])
   6182      1.1  mrg 
   6183      1.1  mrg ;;
   6184      1.1  mrg ;; [vqshrntq_m_n_s, vqshrntq_m_n_u])
   6185      1.1  mrg ;;
   6186      1.1  mrg (define_insn "mve_vqshrntq_m_n_<supf><mode>"
   6187      1.1  mrg   [
   6188      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6189      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6190      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6191      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6192  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6193      1.1  mrg 	 VQSHRNTQ_M_N))
   6194      1.1  mrg   ]
   6195      1.1  mrg   "TARGET_HAVE_MVE"
   6196      1.1  mrg   "vpst\;vqshrntt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   6197      1.1  mrg   [(set_attr "type" "mve_move")
   6198      1.1  mrg    (set_attr "length""8")])
   6199      1.1  mrg 
   6200      1.1  mrg ;;
   6201      1.1  mrg ;; [vrmlaldavhaq_p_s])
   6202      1.1  mrg ;;
   6203      1.1  mrg (define_insn "mve_vrmlaldavhaq_p_sv4si"
   6204      1.1  mrg   [
   6205      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6206      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6207      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   6208      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")
   6209  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6210      1.1  mrg 	 VRMLALDAVHAQ_P_S))
   6211      1.1  mrg   ]
   6212      1.1  mrg   "TARGET_HAVE_MVE"
   6213      1.1  mrg   "vpst\;vrmlaldavhat.s32\t%Q0, %R0, %q2, %q3"
   6214      1.1  mrg   [(set_attr "type" "mve_move")
   6215      1.1  mrg    (set_attr "length""8")])
   6216      1.1  mrg 
   6217      1.1  mrg ;;
   6218      1.1  mrg ;; [vrshrnbq_m_n_u, vrshrnbq_m_n_s])
   6219      1.1  mrg ;;
   6220      1.1  mrg (define_insn "mve_vrshrnbq_m_n_<supf><mode>"
   6221      1.1  mrg   [
   6222      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6223      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6224      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6225  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6226  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6227      1.1  mrg 	 VRSHRNBQ_M_N))
   6228      1.1  mrg   ]
   6229      1.1  mrg   "TARGET_HAVE_MVE"
   6230      1.1  mrg   "vpst\;vrshrnbt.i%#<V_sz_elem>\t%q0, %q2, %3"
   6231      1.1  mrg   [(set_attr "type" "mve_move")
   6232      1.1  mrg    (set_attr "length""8")])
   6233      1.1  mrg 
   6234      1.1  mrg ;;
   6235      1.1  mrg ;; [vrshrntq_m_n_u, vrshrntq_m_n_s])
   6236      1.1  mrg ;;
   6237      1.1  mrg (define_insn "mve_vrshrntq_m_n_<supf><mode>"
   6238      1.1  mrg   [
   6239      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6240      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6241      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6242  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6243  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6244      1.1  mrg 	 VRSHRNTQ_M_N))
   6245      1.1  mrg   ]
   6246      1.1  mrg   "TARGET_HAVE_MVE"
   6247      1.1  mrg   "vpst\;vrshrntt.i%#<V_sz_elem>\t%q0, %q2, %3"
   6248      1.1  mrg   [(set_attr "type" "mve_move")
   6249      1.1  mrg    (set_attr "length""8")])
   6250      1.1  mrg 
   6251      1.1  mrg ;;
   6252      1.1  mrg ;; [vshllbq_m_n_u, vshllbq_m_n_s])
   6253      1.1  mrg ;;
   6254      1.1  mrg (define_insn "mve_vshllbq_m_n_<supf><mode>"
   6255      1.1  mrg   [
   6256      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   6257      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6258      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   6259      1.1  mrg 		       (match_operand:SI 3 "immediate_operand" "i")
   6260  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6261      1.1  mrg 	 VSHLLBQ_M_N))
   6262      1.1  mrg   ]
   6263      1.1  mrg   "TARGET_HAVE_MVE"
   6264      1.1  mrg   "vpst\;vshllbt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   6265      1.1  mrg   [(set_attr "type" "mve_move")
   6266      1.1  mrg    (set_attr "length""8")])
   6267      1.1  mrg 
   6268      1.1  mrg ;;
   6269      1.1  mrg ;; [vshlltq_m_n_u, vshlltq_m_n_s])
   6270      1.1  mrg ;;
   6271      1.1  mrg (define_insn "mve_vshlltq_m_n_<supf><mode>"
   6272      1.1  mrg   [
   6273      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   6274      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6275      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   6276      1.1  mrg 		       (match_operand:SI 3 "immediate_operand" "i")
   6277  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6278      1.1  mrg 	 VSHLLTQ_M_N))
   6279      1.1  mrg   ]
   6280      1.1  mrg   "TARGET_HAVE_MVE"
   6281      1.1  mrg   "vpst\;vshlltt.<supf>%#<V_sz_elem>\t%q0, %q2, %3"
   6282      1.1  mrg   [(set_attr "type" "mve_move")
   6283      1.1  mrg    (set_attr "length""8")])
   6284      1.1  mrg 
   6285      1.1  mrg ;;
   6286      1.1  mrg ;; [vshrnbq_m_n_s, vshrnbq_m_n_u])
   6287      1.1  mrg ;;
   6288      1.1  mrg (define_insn "mve_vshrnbq_m_n_<supf><mode>"
   6289      1.1  mrg   [
   6290      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6291      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6292      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6293      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6294  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6295      1.1  mrg 	 VSHRNBQ_M_N))
   6296      1.1  mrg   ]
   6297      1.1  mrg   "TARGET_HAVE_MVE"
   6298      1.1  mrg   "vpst\;vshrnbt.i%#<V_sz_elem>\t%q0, %q2, %3"
   6299      1.1  mrg   [(set_attr "type" "mve_move")
   6300      1.1  mrg    (set_attr "length""8")])
   6301      1.1  mrg 
   6302      1.1  mrg ;;
   6303      1.1  mrg ;; [vshrntq_m_n_s, vshrntq_m_n_u])
   6304      1.1  mrg ;;
   6305      1.1  mrg (define_insn "mve_vshrntq_m_n_<supf><mode>"
   6306      1.1  mrg   [
   6307      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6308      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6309      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6310      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6311  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6312      1.1  mrg 	 VSHRNTQ_M_N))
   6313      1.1  mrg   ]
   6314      1.1  mrg   "TARGET_HAVE_MVE"
   6315      1.1  mrg   "vpst\;vshrntt.i%#<V_sz_elem>\t%q0, %q2, %3"
   6316      1.1  mrg   [(set_attr "type" "mve_move")
   6317      1.1  mrg    (set_attr "length""8")])
   6318      1.1  mrg 
   6319      1.1  mrg ;;
   6320      1.1  mrg ;; [vmlsldavaq_p_s])
   6321      1.1  mrg ;;
   6322      1.1  mrg (define_insn "mve_vmlsldavaq_p_s<mode>"
   6323      1.1  mrg   [
   6324      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6325      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6326      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6327      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")
   6328  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6329      1.1  mrg 	 VMLSLDAVAQ_P_S))
   6330      1.1  mrg   ]
   6331      1.1  mrg   "TARGET_HAVE_MVE"
   6332      1.1  mrg   "vpst\;vmlsldavat.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   6333      1.1  mrg   [(set_attr "type" "mve_move")
   6334      1.1  mrg    (set_attr "length""8")])
   6335      1.1  mrg 
   6336      1.1  mrg ;;
   6337      1.1  mrg ;; [vmlsldavaxq_p_s])
   6338      1.1  mrg ;;
   6339      1.1  mrg (define_insn "mve_vmlsldavaxq_p_s<mode>"
   6340      1.1  mrg   [
   6341      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6342      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6343      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6344      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")
   6345  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6346      1.1  mrg 	 VMLSLDAVAXQ_P_S))
   6347      1.1  mrg   ]
   6348      1.1  mrg   "TARGET_HAVE_MVE"
   6349      1.1  mrg   "vpst\;vmlsldavaxt.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
   6350      1.1  mrg   [(set_attr "type" "mve_move")
   6351      1.1  mrg    (set_attr "length""8")])
   6352      1.1  mrg 
   6353      1.1  mrg ;;
   6354      1.1  mrg ;; [vmullbq_poly_m_p])
   6355      1.1  mrg ;;
   6356      1.1  mrg (define_insn "mve_vmullbq_poly_m_p<mode>"
   6357      1.1  mrg   [
   6358      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   6359      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6360      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   6361      1.1  mrg 		       (match_operand:MVE_3 3 "s_register_operand" "w")
   6362  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6363      1.1  mrg 	 VMULLBQ_POLY_M_P))
   6364      1.1  mrg   ]
   6365      1.1  mrg   "TARGET_HAVE_MVE"
   6366      1.1  mrg   "vpst\;vmullbt.p%#<V_sz_elem>\t%q0, %q2, %q3"
   6367      1.1  mrg   [(set_attr "type" "mve_move")
   6368      1.1  mrg    (set_attr "length""8")])
   6369      1.1  mrg 
   6370      1.1  mrg ;;
   6371      1.1  mrg ;; [vmulltq_poly_m_p])
   6372      1.1  mrg ;;
   6373      1.1  mrg (define_insn "mve_vmulltq_poly_m_p<mode>"
   6374      1.1  mrg   [
   6375      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
   6376      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6377      1.1  mrg 		       (match_operand:MVE_3 2 "s_register_operand" "w")
   6378      1.1  mrg 		       (match_operand:MVE_3 3 "s_register_operand" "w")
   6379  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6380      1.1  mrg 	 VMULLTQ_POLY_M_P))
   6381      1.1  mrg   ]
   6382      1.1  mrg   "TARGET_HAVE_MVE"
   6383      1.1  mrg   "vpst\;vmulltt.p%#<V_sz_elem>\t%q0, %q2, %q3"
   6384      1.1  mrg   [(set_attr "type" "mve_move")
   6385      1.1  mrg    (set_attr "length""8")])
   6386      1.1  mrg 
   6387      1.1  mrg ;;
   6388      1.1  mrg ;; [vqdmullbq_m_n_s])
   6389      1.1  mrg ;;
   6390      1.1  mrg (define_insn "mve_vqdmullbq_m_n_s<mode>"
   6391      1.1  mrg   [
   6392      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   6393      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6394      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6395      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   6396  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6397      1.1  mrg 	 VQDMULLBQ_M_N_S))
   6398      1.1  mrg   ]
   6399      1.1  mrg   "TARGET_HAVE_MVE"
   6400      1.1  mrg   "vpst\;vqdmullbt.s%#<V_sz_elem>\t%q0, %q2, %3"
   6401      1.1  mrg   [(set_attr "type" "mve_move")
   6402      1.1  mrg    (set_attr "length""8")])
   6403      1.1  mrg 
   6404      1.1  mrg ;;
   6405      1.1  mrg ;; [vqdmullbq_m_s])
   6406      1.1  mrg ;;
   6407      1.1  mrg (define_insn "mve_vqdmullbq_m_s<mode>"
   6408      1.1  mrg   [
   6409      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   6410      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6411      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6412      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")
   6413  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6414      1.1  mrg 	 VQDMULLBQ_M_S))
   6415      1.1  mrg   ]
   6416      1.1  mrg   "TARGET_HAVE_MVE"
   6417      1.1  mrg   "vpst\;vqdmullbt.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6418      1.1  mrg   [(set_attr "type" "mve_move")
   6419      1.1  mrg    (set_attr "length""8")])
   6420      1.1  mrg 
   6421      1.1  mrg ;;
   6422      1.1  mrg ;; [vqdmulltq_m_n_s])
   6423      1.1  mrg ;;
   6424      1.1  mrg (define_insn "mve_vqdmulltq_m_n_s<mode>"
   6425      1.1  mrg   [
   6426      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   6427      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6428      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6429      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   6430  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6431      1.1  mrg 	 VQDMULLTQ_M_N_S))
   6432      1.1  mrg   ]
   6433      1.1  mrg   "TARGET_HAVE_MVE"
   6434      1.1  mrg   "vpst\;vqdmulltt.s%#<V_sz_elem>\t%q0, %q2, %3"
   6435      1.1  mrg   [(set_attr "type" "mve_move")
   6436      1.1  mrg    (set_attr "length""8")])
   6437      1.1  mrg 
   6438      1.1  mrg ;;
   6439      1.1  mrg ;; [vqdmulltq_m_s])
   6440      1.1  mrg ;;
   6441      1.1  mrg (define_insn "mve_vqdmulltq_m_s<mode>"
   6442      1.1  mrg   [
   6443      1.1  mrg    (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>")
   6444      1.1  mrg 	(unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0")
   6445      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6446      1.1  mrg 		       (match_operand:MVE_5 3 "s_register_operand" "w")
   6447  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6448      1.1  mrg 	 VQDMULLTQ_M_S))
   6449      1.1  mrg   ]
   6450      1.1  mrg   "TARGET_HAVE_MVE"
   6451      1.1  mrg   "vpst\;vqdmulltt.s%#<V_sz_elem>\t%q0, %q2, %q3"
   6452      1.1  mrg   [(set_attr "type" "mve_move")
   6453      1.1  mrg    (set_attr "length""8")])
   6454      1.1  mrg 
   6455      1.1  mrg ;;
   6456      1.1  mrg ;; [vqrshrunbq_m_n_s])
   6457      1.1  mrg ;;
   6458      1.1  mrg (define_insn "mve_vqrshrunbq_m_n_s<mode>"
   6459      1.1  mrg   [
   6460      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6461      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6462      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6463  1.1.1.2  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6464  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6465      1.1  mrg 	 VQRSHRUNBQ_M_N_S))
   6466      1.1  mrg   ]
   6467      1.1  mrg   "TARGET_HAVE_MVE"
   6468      1.1  mrg   "vpst\;vqrshrunbt.s%#<V_sz_elem>\t%q0, %q2, %3"
   6469      1.1  mrg   [(set_attr "type" "mve_move")
   6470      1.1  mrg    (set_attr "length""8")])
   6471      1.1  mrg 
   6472      1.1  mrg ;;
   6473      1.1  mrg ;; [vqrshruntq_m_n_s])
   6474      1.1  mrg ;;
   6475      1.1  mrg (define_insn "mve_vqrshruntq_m_n_s<mode>"
   6476      1.1  mrg   [
   6477      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6478      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6479      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6480      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6481  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6482      1.1  mrg 	 VQRSHRUNTQ_M_N_S))
   6483      1.1  mrg   ]
   6484      1.1  mrg   "TARGET_HAVE_MVE"
   6485      1.1  mrg   "vpst\;vqrshruntt.s%#<V_sz_elem>\t%q0, %q2, %3"
   6486      1.1  mrg   [(set_attr "type" "mve_move")
   6487      1.1  mrg    (set_attr "length""8")])
   6488      1.1  mrg 
   6489      1.1  mrg ;;
   6490      1.1  mrg ;; [vqshrunbq_m_n_s])
   6491      1.1  mrg ;;
   6492      1.1  mrg (define_insn "mve_vqshrunbq_m_n_s<mode>"
   6493      1.1  mrg   [
   6494      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6495      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6496      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6497      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6498  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6499      1.1  mrg 	 VQSHRUNBQ_M_N_S))
   6500      1.1  mrg   ]
   6501      1.1  mrg   "TARGET_HAVE_MVE"
   6502      1.1  mrg   "vpst\;vqshrunbt.s%#<V_sz_elem>\t%q0, %q2, %3"
   6503      1.1  mrg   [(set_attr "type" "mve_move")
   6504      1.1  mrg    (set_attr "length""8")])
   6505      1.1  mrg 
   6506      1.1  mrg ;;
   6507      1.1  mrg ;; [vqshruntq_m_n_s])
   6508      1.1  mrg ;;
   6509      1.1  mrg (define_insn "mve_vqshruntq_m_n_s<mode>"
   6510      1.1  mrg   [
   6511      1.1  mrg    (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
   6512      1.1  mrg 	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
   6513      1.1  mrg 		       (match_operand:MVE_5 2 "s_register_operand" "w")
   6514      1.1  mrg 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
   6515  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6516      1.1  mrg 	 VQSHRUNTQ_M_N_S))
   6517      1.1  mrg   ]
   6518      1.1  mrg   "TARGET_HAVE_MVE"
   6519      1.1  mrg   "vpst\;vqshruntt.s%#<V_sz_elem>\t%q0, %q2, %3"
   6520      1.1  mrg   [(set_attr "type" "mve_move")
   6521      1.1  mrg    (set_attr "length""8")])
   6522      1.1  mrg 
   6523      1.1  mrg ;;
   6524      1.1  mrg ;; [vrmlaldavhaq_p_u])
   6525      1.1  mrg ;;
   6526      1.1  mrg (define_insn "mve_vrmlaldavhaq_p_uv4si"
   6527      1.1  mrg   [
   6528      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6529      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6530      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   6531      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")
   6532  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6533      1.1  mrg 	 VRMLALDAVHAQ_P_U))
   6534      1.1  mrg   ]
   6535      1.1  mrg   "TARGET_HAVE_MVE"
   6536      1.1  mrg   "vpst\;vrmlaldavhat.u32\t%Q0, %R0, %q2, %q3"
   6537      1.1  mrg   [(set_attr "type" "mve_move")
   6538      1.1  mrg    (set_attr "length""8")])
   6539      1.1  mrg 
   6540      1.1  mrg ;;
   6541      1.1  mrg ;; [vrmlaldavhaxq_p_s])
   6542      1.1  mrg ;;
   6543      1.1  mrg (define_insn "mve_vrmlaldavhaxq_p_sv4si"
   6544      1.1  mrg   [
   6545      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6546      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6547      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   6548      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")
   6549  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6550      1.1  mrg 	 VRMLALDAVHAXQ_P_S))
   6551      1.1  mrg   ]
   6552      1.1  mrg   "TARGET_HAVE_MVE"
   6553      1.1  mrg   "vpst\;vrmlaldavhaxt.s32\t%Q0, %R0, %q2, %q3"
   6554      1.1  mrg   [(set_attr "type" "mve_move")
   6555      1.1  mrg    (set_attr "length""8")])
   6556      1.1  mrg 
   6557      1.1  mrg ;;
   6558      1.1  mrg ;; [vrmlsldavhaq_p_s])
   6559      1.1  mrg ;;
   6560      1.1  mrg (define_insn "mve_vrmlsldavhaq_p_sv4si"
   6561      1.1  mrg   [
   6562      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6563      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6564      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   6565      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")
   6566  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6567      1.1  mrg 	 VRMLSLDAVHAQ_P_S))
   6568      1.1  mrg   ]
   6569      1.1  mrg   "TARGET_HAVE_MVE"
   6570      1.1  mrg   "vpst\;vrmlsldavhat.s32\t%Q0, %R0, %q2, %q3"
   6571      1.1  mrg   [(set_attr "type" "mve_move")
   6572      1.1  mrg    (set_attr "length""8")])
   6573      1.1  mrg 
   6574      1.1  mrg ;;
   6575      1.1  mrg ;; [vrmlsldavhaxq_p_s])
   6576      1.1  mrg ;;
   6577      1.1  mrg (define_insn "mve_vrmlsldavhaxq_p_sv4si"
   6578      1.1  mrg   [
   6579      1.1  mrg    (set (match_operand:DI 0 "s_register_operand" "=r")
   6580      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "s_register_operand" "0")
   6581      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")
   6582      1.1  mrg 		       (match_operand:V4SI 3 "s_register_operand" "w")
   6583  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6584      1.1  mrg 	 VRMLSLDAVHAXQ_P_S))
   6585      1.1  mrg   ]
   6586      1.1  mrg   "TARGET_HAVE_MVE"
   6587      1.1  mrg   "vpst\;vrmlsldavhaxt.s32\t%Q0, %R0, %q2, %q3"
   6588      1.1  mrg   [(set_attr "type" "mve_move")
   6589      1.1  mrg    (set_attr "length""8")])
   6590      1.1  mrg ;;
   6591      1.1  mrg ;; [vabdq_m_f])
   6592      1.1  mrg ;;
   6593      1.1  mrg (define_insn "mve_vabdq_m_f<mode>"
   6594      1.1  mrg   [
   6595      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6596      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6597      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6598      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6599  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6600      1.1  mrg 	 VABDQ_M_F))
   6601      1.1  mrg   ]
   6602      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6603      1.1  mrg   "vpst\;vabdt.f%#<V_sz_elem>	%q0, %q2, %q3"
   6604      1.1  mrg   [(set_attr "type" "mve_move")
   6605      1.1  mrg    (set_attr "length""8")])
   6606      1.1  mrg 
   6607      1.1  mrg ;;
   6608      1.1  mrg ;; [vaddq_m_f])
   6609      1.1  mrg ;;
   6610      1.1  mrg (define_insn "mve_vaddq_m_f<mode>"
   6611      1.1  mrg   [
   6612      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6613      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6614      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6615      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6616  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6617      1.1  mrg 	 VADDQ_M_F))
   6618      1.1  mrg   ]
   6619      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6620      1.1  mrg   "vpst\;vaddt.f%#<V_sz_elem>	%q0, %q2, %q3"
   6621      1.1  mrg   [(set_attr "type" "mve_move")
   6622      1.1  mrg    (set_attr "length""8")])
   6623      1.1  mrg 
   6624      1.1  mrg ;;
   6625      1.1  mrg ;; [vaddq_m_n_f])
   6626      1.1  mrg ;;
   6627      1.1  mrg (define_insn "mve_vaddq_m_n_f<mode>"
   6628      1.1  mrg   [
   6629      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6630      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6631      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6632      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   6633  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6634      1.1  mrg 	 VADDQ_M_N_F))
   6635      1.1  mrg   ]
   6636      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6637      1.1  mrg   "vpst\;vaddt.f%#<V_sz_elem>	%q0, %q2, %3"
   6638      1.1  mrg   [(set_attr "type" "mve_move")
   6639      1.1  mrg    (set_attr "length""8")])
   6640      1.1  mrg 
   6641      1.1  mrg ;;
   6642      1.1  mrg ;; [vandq_m_f])
   6643      1.1  mrg ;;
   6644      1.1  mrg (define_insn "mve_vandq_m_f<mode>"
   6645      1.1  mrg   [
   6646      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6647      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6648      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6649      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6650  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6651      1.1  mrg 	 VANDQ_M_F))
   6652      1.1  mrg   ]
   6653      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6654  1.1.1.2  mrg   "vpst\;vandt\t%q0, %q2, %q3"
   6655      1.1  mrg   [(set_attr "type" "mve_move")
   6656      1.1  mrg    (set_attr "length""8")])
   6657      1.1  mrg 
   6658      1.1  mrg ;;
   6659      1.1  mrg ;; [vbicq_m_f])
   6660      1.1  mrg ;;
   6661      1.1  mrg (define_insn "mve_vbicq_m_f<mode>"
   6662      1.1  mrg   [
   6663      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6664      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6665      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6666      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6667  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6668      1.1  mrg 	 VBICQ_M_F))
   6669      1.1  mrg   ]
   6670      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6671  1.1.1.2  mrg   "vpst\;vbict\t%q0, %q2, %q3"
   6672      1.1  mrg   [(set_attr "type" "mve_move")
   6673      1.1  mrg    (set_attr "length""8")])
   6674      1.1  mrg 
   6675      1.1  mrg ;;
   6676      1.1  mrg ;; [vbrsrq_m_n_f])
   6677      1.1  mrg ;;
   6678      1.1  mrg (define_insn "mve_vbrsrq_m_n_f<mode>"
   6679      1.1  mrg   [
   6680      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6681      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6682      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6683      1.1  mrg 		       (match_operand:SI 3 "s_register_operand" "r")
   6684  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6685      1.1  mrg 	 VBRSRQ_M_N_F))
   6686      1.1  mrg   ]
   6687      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6688      1.1  mrg   "vpst\;vbrsrt.%#<V_sz_elem>	%q0, %q2, %3"
   6689      1.1  mrg   [(set_attr "type" "mve_move")
   6690      1.1  mrg    (set_attr "length""8")])
   6691      1.1  mrg 
   6692      1.1  mrg ;;
   6693      1.1  mrg ;; [vcaddq_rot270_m_f])
   6694      1.1  mrg ;;
   6695      1.1  mrg (define_insn "mve_vcaddq_rot270_m_f<mode>"
   6696      1.1  mrg   [
   6697      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   6698      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6699      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6700      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6701  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6702      1.1  mrg 	 VCADDQ_ROT270_M_F))
   6703      1.1  mrg   ]
   6704      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6705      1.1  mrg   "vpst\;vcaddt.f%#<V_sz_elem>	%q0, %q2, %q3, #270"
   6706      1.1  mrg   [(set_attr "type" "mve_move")
   6707      1.1  mrg    (set_attr "length""8")])
   6708      1.1  mrg 
   6709      1.1  mrg ;;
   6710      1.1  mrg ;; [vcaddq_rot90_m_f])
   6711      1.1  mrg ;;
   6712      1.1  mrg (define_insn "mve_vcaddq_rot90_m_f<mode>"
   6713      1.1  mrg   [
   6714      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   6715      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6716      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6717      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6718  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6719      1.1  mrg 	 VCADDQ_ROT90_M_F))
   6720      1.1  mrg   ]
   6721      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6722      1.1  mrg   "vpst\;vcaddt.f%#<V_sz_elem>	%q0, %q2, %q3, #90"
   6723      1.1  mrg   [(set_attr "type" "mve_move")
   6724      1.1  mrg    (set_attr "length""8")])
   6725      1.1  mrg 
   6726      1.1  mrg ;;
   6727      1.1  mrg ;; [vcmlaq_m_f])
   6728      1.1  mrg ;;
   6729      1.1  mrg (define_insn "mve_vcmlaq_m_f<mode>"
   6730      1.1  mrg   [
   6731      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6732      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6733      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6734      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6735  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6736      1.1  mrg 	 VCMLAQ_M_F))
   6737      1.1  mrg   ]
   6738      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6739      1.1  mrg   "vpst\;vcmlat.f%#<V_sz_elem>	%q0, %q2, %q3, #0"
   6740      1.1  mrg   [(set_attr "type" "mve_move")
   6741      1.1  mrg    (set_attr "length""8")])
   6742      1.1  mrg 
   6743      1.1  mrg ;;
   6744      1.1  mrg ;; [vcmlaq_rot180_m_f])
   6745      1.1  mrg ;;
   6746      1.1  mrg (define_insn "mve_vcmlaq_rot180_m_f<mode>"
   6747      1.1  mrg   [
   6748      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6749      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6750      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6751      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6752  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6753      1.1  mrg 	 VCMLAQ_ROT180_M_F))
   6754      1.1  mrg   ]
   6755      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6756      1.1  mrg   "vpst\;vcmlat.f%#<V_sz_elem>	%q0, %q2, %q3, #180"
   6757      1.1  mrg   [(set_attr "type" "mve_move")
   6758      1.1  mrg    (set_attr "length""8")])
   6759      1.1  mrg 
   6760      1.1  mrg ;;
   6761      1.1  mrg ;; [vcmlaq_rot270_m_f])
   6762      1.1  mrg ;;
   6763      1.1  mrg (define_insn "mve_vcmlaq_rot270_m_f<mode>"
   6764      1.1  mrg   [
   6765      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6766      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6767      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6768      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6769  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6770      1.1  mrg 	 VCMLAQ_ROT270_M_F))
   6771      1.1  mrg   ]
   6772      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6773      1.1  mrg   "vpst\;vcmlat.f%#<V_sz_elem>	%q0, %q2, %q3, #270"
   6774      1.1  mrg   [(set_attr "type" "mve_move")
   6775      1.1  mrg    (set_attr "length""8")])
   6776      1.1  mrg 
   6777      1.1  mrg ;;
   6778      1.1  mrg ;; [vcmlaq_rot90_m_f])
   6779      1.1  mrg ;;
   6780      1.1  mrg (define_insn "mve_vcmlaq_rot90_m_f<mode>"
   6781      1.1  mrg   [
   6782      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6783      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6784      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6785      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6786  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6787      1.1  mrg 	 VCMLAQ_ROT90_M_F))
   6788      1.1  mrg   ]
   6789      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6790      1.1  mrg   "vpst\;vcmlat.f%#<V_sz_elem>	%q0, %q2, %q3, #90"
   6791      1.1  mrg   [(set_attr "type" "mve_move")
   6792      1.1  mrg    (set_attr "length""8")])
   6793      1.1  mrg 
   6794      1.1  mrg ;;
   6795      1.1  mrg ;; [vcmulq_m_f])
   6796      1.1  mrg ;;
   6797      1.1  mrg (define_insn "mve_vcmulq_m_f<mode>"
   6798      1.1  mrg   [
   6799      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   6800      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6801      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6802      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6803  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6804      1.1  mrg 	 VCMULQ_M_F))
   6805      1.1  mrg   ]
   6806      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6807      1.1  mrg   "vpst\;vcmult.f%#<V_sz_elem>	%q0, %q2, %q3, #0"
   6808      1.1  mrg   [(set_attr "type" "mve_move")
   6809      1.1  mrg    (set_attr "length""8")])
   6810      1.1  mrg 
   6811      1.1  mrg ;;
   6812      1.1  mrg ;; [vcmulq_rot180_m_f])
   6813      1.1  mrg ;;
   6814      1.1  mrg (define_insn "mve_vcmulq_rot180_m_f<mode>"
   6815      1.1  mrg   [
   6816      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   6817      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6818      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6819      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6820  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6821      1.1  mrg 	 VCMULQ_ROT180_M_F))
   6822      1.1  mrg   ]
   6823      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6824      1.1  mrg   "vpst\;vcmult.f%#<V_sz_elem>	%q0, %q2, %q3, #180"
   6825      1.1  mrg   [(set_attr "type" "mve_move")
   6826      1.1  mrg    (set_attr "length""8")])
   6827      1.1  mrg 
   6828      1.1  mrg ;;
   6829      1.1  mrg ;; [vcmulq_rot270_m_f])
   6830      1.1  mrg ;;
   6831      1.1  mrg (define_insn "mve_vcmulq_rot270_m_f<mode>"
   6832      1.1  mrg   [
   6833      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   6834      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6835      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6836      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6837  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6838      1.1  mrg 	 VCMULQ_ROT270_M_F))
   6839      1.1  mrg   ]
   6840      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6841      1.1  mrg   "vpst\;vcmult.f%#<V_sz_elem>	%q0, %q2, %q3, #270"
   6842      1.1  mrg   [(set_attr "type" "mve_move")
   6843      1.1  mrg    (set_attr "length""8")])
   6844      1.1  mrg 
   6845      1.1  mrg ;;
   6846      1.1  mrg ;; [vcmulq_rot90_m_f])
   6847      1.1  mrg ;;
   6848      1.1  mrg (define_insn "mve_vcmulq_rot90_m_f<mode>"
   6849      1.1  mrg   [
   6850      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>")
   6851      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6852      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6853      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6854  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6855      1.1  mrg 	 VCMULQ_ROT90_M_F))
   6856      1.1  mrg   ]
   6857      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6858      1.1  mrg   "vpst\;vcmult.f%#<V_sz_elem>	%q0, %q2, %q3, #90"
   6859      1.1  mrg   [(set_attr "type" "mve_move")
   6860      1.1  mrg    (set_attr "length""8")])
   6861      1.1  mrg 
   6862      1.1  mrg ;;
   6863      1.1  mrg ;; [veorq_m_f])
   6864      1.1  mrg ;;
   6865      1.1  mrg (define_insn "mve_veorq_m_f<mode>"
   6866      1.1  mrg   [
   6867      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6868      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6869      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6870      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6871  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6872      1.1  mrg 	 VEORQ_M_F))
   6873      1.1  mrg   ]
   6874      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6875  1.1.1.2  mrg   "vpst\;veort\t%q0, %q2, %q3"
   6876      1.1  mrg   [(set_attr "type" "mve_move")
   6877      1.1  mrg    (set_attr "length""8")])
   6878      1.1  mrg 
   6879      1.1  mrg ;;
   6880      1.1  mrg ;; [vfmaq_m_f])
   6881      1.1  mrg ;;
   6882      1.1  mrg (define_insn "mve_vfmaq_m_f<mode>"
   6883      1.1  mrg   [
   6884      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6885      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6886      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6887      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6888  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6889      1.1  mrg 	 VFMAQ_M_F))
   6890      1.1  mrg   ]
   6891      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6892      1.1  mrg   "vpst\;vfmat.f%#<V_sz_elem>	%q0, %q2, %q3"
   6893      1.1  mrg   [(set_attr "type" "mve_move")
   6894      1.1  mrg    (set_attr "length""8")])
   6895      1.1  mrg 
   6896      1.1  mrg ;;
   6897      1.1  mrg ;; [vfmaq_m_n_f])
   6898      1.1  mrg ;;
   6899      1.1  mrg (define_insn "mve_vfmaq_m_n_f<mode>"
   6900      1.1  mrg   [
   6901      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6902      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6903      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6904      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   6905  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6906      1.1  mrg 	 VFMAQ_M_N_F))
   6907      1.1  mrg   ]
   6908      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6909      1.1  mrg   "vpst\;vfmat.f%#<V_sz_elem>	%q0, %q2, %3"
   6910      1.1  mrg   [(set_attr "type" "mve_move")
   6911      1.1  mrg    (set_attr "length""8")])
   6912      1.1  mrg 
   6913      1.1  mrg ;;
   6914      1.1  mrg ;; [vfmasq_m_n_f])
   6915      1.1  mrg ;;
   6916      1.1  mrg (define_insn "mve_vfmasq_m_n_f<mode>"
   6917      1.1  mrg   [
   6918      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6919      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6920      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6921      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   6922  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6923      1.1  mrg 	 VFMASQ_M_N_F))
   6924      1.1  mrg   ]
   6925      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6926      1.1  mrg   "vpst\;vfmast.f%#<V_sz_elem>	%q0, %q2, %3"
   6927      1.1  mrg   [(set_attr "type" "mve_move")
   6928      1.1  mrg    (set_attr "length""8")])
   6929      1.1  mrg 
   6930      1.1  mrg ;;
   6931      1.1  mrg ;; [vfmsq_m_f])
   6932      1.1  mrg ;;
   6933      1.1  mrg (define_insn "mve_vfmsq_m_f<mode>"
   6934      1.1  mrg   [
   6935      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6936      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6937      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6938      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6939  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6940      1.1  mrg 	 VFMSQ_M_F))
   6941      1.1  mrg   ]
   6942      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6943      1.1  mrg   "vpst\;vfmst.f%#<V_sz_elem>	%q0, %q2, %q3"
   6944      1.1  mrg   [(set_attr "type" "mve_move")
   6945      1.1  mrg    (set_attr "length""8")])
   6946      1.1  mrg 
   6947      1.1  mrg ;;
   6948      1.1  mrg ;; [vmaxnmq_m_f])
   6949      1.1  mrg ;;
   6950      1.1  mrg (define_insn "mve_vmaxnmq_m_f<mode>"
   6951      1.1  mrg   [
   6952      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6953      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6954      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6955      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6956  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6957      1.1  mrg 	 VMAXNMQ_M_F))
   6958      1.1  mrg   ]
   6959      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6960      1.1  mrg   "vpst\;vmaxnmt.f%#<V_sz_elem>	%q0, %q2, %q3"
   6961      1.1  mrg   [(set_attr "type" "mve_move")
   6962      1.1  mrg    (set_attr "length""8")])
   6963      1.1  mrg 
   6964      1.1  mrg ;;
   6965      1.1  mrg ;; [vminnmq_m_f])
   6966      1.1  mrg ;;
   6967      1.1  mrg (define_insn "mve_vminnmq_m_f<mode>"
   6968      1.1  mrg   [
   6969      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6970      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6971      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6972      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6973  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6974      1.1  mrg 	 VMINNMQ_M_F))
   6975      1.1  mrg   ]
   6976      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6977      1.1  mrg   "vpst\;vminnmt.f%#<V_sz_elem>	%q0, %q2, %q3"
   6978      1.1  mrg   [(set_attr "type" "mve_move")
   6979      1.1  mrg    (set_attr "length""8")])
   6980      1.1  mrg 
   6981      1.1  mrg ;;
   6982      1.1  mrg ;; [vmulq_m_f])
   6983      1.1  mrg ;;
   6984      1.1  mrg (define_insn "mve_vmulq_m_f<mode>"
   6985      1.1  mrg   [
   6986      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   6987      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   6988      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   6989      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   6990  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   6991      1.1  mrg 	 VMULQ_M_F))
   6992      1.1  mrg   ]
   6993      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   6994      1.1  mrg   "vpst\;vmult.f%#<V_sz_elem>	%q0, %q2, %q3"
   6995      1.1  mrg   [(set_attr "type" "mve_move")
   6996      1.1  mrg    (set_attr "length""8")])
   6997      1.1  mrg 
   6998      1.1  mrg ;;
   6999      1.1  mrg ;; [vmulq_m_n_f])
   7000      1.1  mrg ;;
   7001      1.1  mrg (define_insn "mve_vmulq_m_n_f<mode>"
   7002      1.1  mrg   [
   7003      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   7004      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   7005      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   7006      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   7007  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   7008      1.1  mrg 	 VMULQ_M_N_F))
   7009      1.1  mrg   ]
   7010      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7011      1.1  mrg   "vpst\;vmult.f%#<V_sz_elem>	%q0, %q2, %3"
   7012      1.1  mrg   [(set_attr "type" "mve_move")
   7013      1.1  mrg    (set_attr "length""8")])
   7014      1.1  mrg 
   7015      1.1  mrg ;;
   7016      1.1  mrg ;; [vornq_m_f])
   7017      1.1  mrg ;;
   7018      1.1  mrg (define_insn "mve_vornq_m_f<mode>"
   7019      1.1  mrg   [
   7020      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   7021      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   7022      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   7023      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   7024  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   7025      1.1  mrg 	 VORNQ_M_F))
   7026      1.1  mrg   ]
   7027      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7028  1.1.1.2  mrg   "vpst\;vornt\t%q0, %q2, %q3"
   7029      1.1  mrg   [(set_attr "type" "mve_move")
   7030      1.1  mrg    (set_attr "length""8")])
   7031      1.1  mrg 
   7032      1.1  mrg ;;
   7033      1.1  mrg ;; [vorrq_m_f])
   7034      1.1  mrg ;;
   7035      1.1  mrg (define_insn "mve_vorrq_m_f<mode>"
   7036      1.1  mrg   [
   7037      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   7038      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   7039      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   7040      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   7041  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   7042      1.1  mrg 	 VORRQ_M_F))
   7043      1.1  mrg   ]
   7044      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7045  1.1.1.2  mrg   "vpst\;vorrt\t%q0, %q2, %q3"
   7046      1.1  mrg   [(set_attr "type" "mve_move")
   7047      1.1  mrg    (set_attr "length""8")])
   7048      1.1  mrg 
   7049      1.1  mrg ;;
   7050      1.1  mrg ;; [vsubq_m_f])
   7051      1.1  mrg ;;
   7052      1.1  mrg (define_insn "mve_vsubq_m_f<mode>"
   7053      1.1  mrg   [
   7054      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   7055      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   7056      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   7057      1.1  mrg 		       (match_operand:MVE_0 3 "s_register_operand" "w")
   7058  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   7059      1.1  mrg 	 VSUBQ_M_F))
   7060      1.1  mrg   ]
   7061      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7062      1.1  mrg   "vpst\;vsubt.f%#<V_sz_elem>\t%q0, %q2, %q3"
   7063      1.1  mrg   [(set_attr "type" "mve_move")
   7064      1.1  mrg    (set_attr "length""8")])
   7065      1.1  mrg 
   7066      1.1  mrg ;;
   7067      1.1  mrg ;; [vsubq_m_n_f])
   7068      1.1  mrg ;;
   7069      1.1  mrg (define_insn "mve_vsubq_m_n_f<mode>"
   7070      1.1  mrg   [
   7071      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   7072      1.1  mrg 	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
   7073      1.1  mrg 		       (match_operand:MVE_0 2 "s_register_operand" "w")
   7074      1.1  mrg 		       (match_operand:<V_elem> 3 "s_register_operand" "r")
   7075  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
   7076      1.1  mrg 	 VSUBQ_M_N_F))
   7077      1.1  mrg   ]
   7078      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7079      1.1  mrg   "vpst\;vsubt.f%#<V_sz_elem>\t%q0, %q2, %3"
   7080      1.1  mrg   [(set_attr "type" "mve_move")
   7081      1.1  mrg    (set_attr "length""8")])
   7082      1.1  mrg 
   7083      1.1  mrg ;;
   7084      1.1  mrg ;; [vstrbq_s vstrbq_u]
   7085      1.1  mrg ;;
   7086      1.1  mrg (define_insn "mve_vstrbq_<supf><mode>"
   7087      1.1  mrg   [(set (match_operand:<MVE_B_ELEM> 0 "mve_memory_operand" "=Ux")
   7088      1.1  mrg 	(unspec:<MVE_B_ELEM> [(match_operand:MVE_2 1 "s_register_operand" "w")]
   7089      1.1  mrg 	 VSTRBQ))
   7090      1.1  mrg   ]
   7091      1.1  mrg   "TARGET_HAVE_MVE"
   7092      1.1  mrg {
   7093      1.1  mrg    rtx ops[2];
   7094      1.1  mrg    int regno = REGNO (operands[1]);
   7095      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   7096      1.1  mrg    ops[0]  = operands[0];
   7097      1.1  mrg    output_asm_insn("vstrb.<V_sz_elem>\t%q1, %E0",ops);
   7098      1.1  mrg    return "";
   7099      1.1  mrg }
   7100      1.1  mrg   [(set_attr "length" "4")])
   7101      1.1  mrg 
   7102      1.1  mrg ;;
   7103      1.1  mrg ;; [vstrbq_scatter_offset_s vstrbq_scatter_offset_u]
   7104      1.1  mrg ;;
   7105      1.1  mrg (define_expand "mve_vstrbq_scatter_offset_<supf><mode>"
   7106      1.1  mrg   [(match_operand:<MVE_B_ELEM> 0 "mve_scatter_memory")
   7107      1.1  mrg    (match_operand:MVE_2 1 "s_register_operand")
   7108      1.1  mrg    (match_operand:MVE_2 2 "s_register_operand")
   7109      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRBSOQ)]
   7110      1.1  mrg   "TARGET_HAVE_MVE"
   7111      1.1  mrg {
   7112      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   7113      1.1  mrg   gcc_assert (REG_P (ind));
   7114      1.1  mrg   emit_insn (gen_mve_vstrbq_scatter_offset_<supf><mode>_insn (ind, operands[1],
   7115      1.1  mrg 							      operands[2]));
   7116      1.1  mrg   DONE;
   7117      1.1  mrg })
   7118      1.1  mrg 
   7119      1.1  mrg (define_insn "mve_vstrbq_scatter_offset_<supf><mode>_insn"
   7120      1.1  mrg   [(set (mem:BLK (scratch))
   7121      1.1  mrg 	(unspec:BLK
   7122      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   7123      1.1  mrg 	   (match_operand:MVE_2 1 "s_register_operand" "w")
   7124      1.1  mrg 	   (match_operand:MVE_2 2 "s_register_operand" "w")]
   7125      1.1  mrg 	  VSTRBSOQ))]
   7126      1.1  mrg   "TARGET_HAVE_MVE"
   7127      1.1  mrg   "vstrb.<V_sz_elem>\t%q2, [%0, %q1]"
   7128      1.1  mrg   [(set_attr "length" "4")])
   7129      1.1  mrg 
   7130      1.1  mrg ;;
   7131      1.1  mrg ;; [vstrwq_scatter_base_s vstrwq_scatter_base_u]
   7132      1.1  mrg ;;
   7133      1.1  mrg (define_insn "mve_vstrwq_scatter_base_<supf>v4si"
   7134      1.1  mrg   [(set (mem:BLK (scratch))
   7135      1.1  mrg 	(unspec:BLK
   7136      1.1  mrg 		[(match_operand:V4SI 0 "s_register_operand" "w")
   7137      1.1  mrg 		 (match_operand:SI 1 "immediate_operand" "i")
   7138      1.1  mrg 		 (match_operand:V4SI 2 "s_register_operand" "w")]
   7139      1.1  mrg 	 VSTRWSBQ))
   7140      1.1  mrg   ]
   7141      1.1  mrg   "TARGET_HAVE_MVE"
   7142      1.1  mrg {
   7143      1.1  mrg    rtx ops[3];
   7144      1.1  mrg    ops[0] = operands[0];
   7145      1.1  mrg    ops[1] = operands[1];
   7146      1.1  mrg    ops[2] = operands[2];
   7147      1.1  mrg    output_asm_insn("vstrw.u32\t%q2, [%q0, %1]",ops);
   7148      1.1  mrg    return "";
   7149      1.1  mrg }
   7150      1.1  mrg   [(set_attr "length" "4")])
   7151      1.1  mrg 
   7152      1.1  mrg ;;
   7153      1.1  mrg ;; [vldrbq_gather_offset_s vldrbq_gather_offset_u]
   7154      1.1  mrg ;;
   7155      1.1  mrg (define_insn "mve_vldrbq_gather_offset_<supf><mode>"
   7156      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=&w")
   7157      1.1  mrg 	(unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "memory_operand" "Us")
   7158      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")]
   7159      1.1  mrg 	 VLDRBGOQ))
   7160      1.1  mrg   ]
   7161      1.1  mrg   "TARGET_HAVE_MVE"
   7162      1.1  mrg {
   7163      1.1  mrg    rtx ops[3];
   7164      1.1  mrg    ops[0] = operands[0];
   7165      1.1  mrg    ops[1] = operands[1];
   7166      1.1  mrg    ops[2] = operands[2];
   7167      1.1  mrg    if (!strcmp ("<supf>","s") && <V_sz_elem> == 8)
   7168      1.1  mrg      output_asm_insn ("vldrb.u8\t%q0, [%m1, %q2]",ops);
   7169      1.1  mrg    else
   7170      1.1  mrg      output_asm_insn ("vldrb.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops);
   7171      1.1  mrg    return "";
   7172      1.1  mrg }
   7173      1.1  mrg   [(set_attr "length" "4")])
   7174      1.1  mrg 
   7175      1.1  mrg ;;
   7176      1.1  mrg ;; [vldrbq_s vldrbq_u]
   7177      1.1  mrg ;;
   7178      1.1  mrg (define_insn "mve_vldrbq_<supf><mode>"
   7179      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   7180      1.1  mrg 	(unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "mve_memory_operand" "Ux")]
   7181      1.1  mrg 	 VLDRBQ))
   7182      1.1  mrg   ]
   7183      1.1  mrg   "TARGET_HAVE_MVE"
   7184      1.1  mrg {
   7185      1.1  mrg    rtx ops[2];
   7186      1.1  mrg    int regno = REGNO (operands[0]);
   7187      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7188      1.1  mrg    ops[1]  = operands[1];
   7189      1.1  mrg    if (<V_sz_elem> == 8)
   7190      1.1  mrg      output_asm_insn ("vldrb.<V_sz_elem>\t%q0, %E1",ops);
   7191      1.1  mrg    else
   7192      1.1  mrg      output_asm_insn ("vldrb.<supf><V_sz_elem>\t%q0, %E1",ops);
   7193      1.1  mrg    return "";
   7194      1.1  mrg }
   7195      1.1  mrg   [(set_attr "length" "4")])
   7196      1.1  mrg 
   7197      1.1  mrg ;;
   7198      1.1  mrg ;; [vldrwq_gather_base_s vldrwq_gather_base_u]
   7199      1.1  mrg ;;
   7200      1.1  mrg (define_insn "mve_vldrwq_gather_base_<supf>v4si"
   7201      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   7202      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   7203      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "i")]
   7204      1.1  mrg 	 VLDRWGBQ))
   7205      1.1  mrg   ]
   7206      1.1  mrg   "TARGET_HAVE_MVE"
   7207      1.1  mrg {
   7208      1.1  mrg    rtx ops[3];
   7209      1.1  mrg    ops[0] = operands[0];
   7210      1.1  mrg    ops[1] = operands[1];
   7211      1.1  mrg    ops[2] = operands[2];
   7212      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]",ops);
   7213      1.1  mrg    return "";
   7214      1.1  mrg }
   7215      1.1  mrg   [(set_attr "length" "4")])
   7216      1.1  mrg 
   7217      1.1  mrg ;;
   7218      1.1  mrg ;; [vstrbq_scatter_offset_p_s vstrbq_scatter_offset_p_u]
   7219      1.1  mrg ;;
   7220      1.1  mrg (define_expand "mve_vstrbq_scatter_offset_p_<supf><mode>"
   7221      1.1  mrg   [(match_operand:<MVE_B_ELEM>  0 "mve_scatter_memory")
   7222      1.1  mrg    (match_operand:MVE_2 1 "s_register_operand")
   7223      1.1  mrg    (match_operand:MVE_2 2 "s_register_operand")
   7224  1.1.1.2  mrg    (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")
   7225      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRBSOQ)]
   7226      1.1  mrg   "TARGET_HAVE_MVE"
   7227      1.1  mrg {
   7228      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   7229      1.1  mrg   gcc_assert (REG_P (ind));
   7230      1.1  mrg   emit_insn (
   7231      1.1  mrg     gen_mve_vstrbq_scatter_offset_p_<supf><mode>_insn (ind, operands[1],
   7232      1.1  mrg 						       operands[2],
   7233      1.1  mrg 						       operands[3]));
   7234      1.1  mrg   DONE;
   7235      1.1  mrg })
   7236      1.1  mrg 
   7237      1.1  mrg (define_insn "mve_vstrbq_scatter_offset_p_<supf><mode>_insn"
   7238      1.1  mrg   [(set (mem:BLK (scratch))
   7239      1.1  mrg 	(unspec:BLK
   7240      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   7241      1.1  mrg 	   (match_operand:MVE_2 1 "s_register_operand" "w")
   7242      1.1  mrg 	   (match_operand:MVE_2 2 "s_register_operand" "w")
   7243  1.1.1.2  mrg 	   (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   7244      1.1  mrg 	  VSTRBSOQ))]
   7245      1.1  mrg   "TARGET_HAVE_MVE"
   7246      1.1  mrg   "vpst\;vstrbt.<V_sz_elem>\t%q2, [%0, %q1]"
   7247      1.1  mrg   [(set_attr "length" "8")])
   7248      1.1  mrg 
   7249      1.1  mrg ;;
   7250      1.1  mrg ;; [vstrwq_scatter_base_p_s vstrwq_scatter_base_p_u]
   7251      1.1  mrg ;;
   7252      1.1  mrg (define_insn "mve_vstrwq_scatter_base_p_<supf>v4si"
   7253      1.1  mrg   [(set (mem:BLK (scratch))
   7254      1.1  mrg 	(unspec:BLK
   7255      1.1  mrg 		[(match_operand:V4SI 0 "s_register_operand" "w")
   7256      1.1  mrg 		 (match_operand:SI 1 "immediate_operand" "i")
   7257      1.1  mrg 		 (match_operand:V4SI 2 "s_register_operand" "w")
   7258  1.1.1.2  mrg 		 (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   7259      1.1  mrg 	 VSTRWSBQ))
   7260      1.1  mrg   ]
   7261      1.1  mrg   "TARGET_HAVE_MVE"
   7262      1.1  mrg {
   7263      1.1  mrg    rtx ops[3];
   7264      1.1  mrg    ops[0] = operands[0];
   7265      1.1  mrg    ops[1] = operands[1];
   7266      1.1  mrg    ops[2] = operands[2];
   7267      1.1  mrg    output_asm_insn ("vpst\n\tvstrwt.u32\t%q2, [%q0, %1]",ops);
   7268      1.1  mrg    return "";
   7269      1.1  mrg }
   7270      1.1  mrg   [(set_attr "length" "8")])
   7271      1.1  mrg 
   7272      1.1  mrg (define_insn "mve_vstrbq_p_<supf><mode>"
   7273      1.1  mrg   [(set (match_operand:<MVE_B_ELEM> 0 "mve_memory_operand" "=Ux")
   7274  1.1.1.2  mrg 	(unspec:<MVE_B_ELEM>
   7275  1.1.1.2  mrg 	 [(match_operand:MVE_2 1 "s_register_operand" "w")
   7276  1.1.1.2  mrg 	  (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")
   7277  1.1.1.2  mrg 	  (match_dup 0)]
   7278  1.1.1.2  mrg 	 VSTRBQ))]
   7279      1.1  mrg   "TARGET_HAVE_MVE"
   7280      1.1  mrg {
   7281      1.1  mrg    rtx ops[2];
   7282      1.1  mrg    int regno = REGNO (operands[1]);
   7283      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   7284      1.1  mrg    ops[0]  = operands[0];
   7285      1.1  mrg    output_asm_insn ("vpst\;vstrbt.<V_sz_elem>\t%q1, %E0",ops);
   7286      1.1  mrg    return "";
   7287      1.1  mrg }
   7288      1.1  mrg   [(set_attr "length" "8")])
   7289      1.1  mrg 
   7290      1.1  mrg ;;
   7291      1.1  mrg ;; [vldrbq_gather_offset_z_s vldrbq_gather_offset_z_u]
   7292      1.1  mrg ;;
   7293      1.1  mrg (define_insn "mve_vldrbq_gather_offset_z_<supf><mode>"
   7294      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=&w")
   7295      1.1  mrg 	(unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "memory_operand" "Us")
   7296      1.1  mrg 		       (match_operand:MVE_2 2 "s_register_operand" "w")
   7297  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   7298      1.1  mrg 	 VLDRBGOQ))
   7299      1.1  mrg   ]
   7300      1.1  mrg   "TARGET_HAVE_MVE"
   7301      1.1  mrg {
   7302      1.1  mrg    rtx ops[4];
   7303      1.1  mrg    ops[0] = operands[0];
   7304      1.1  mrg    ops[1] = operands[1];
   7305      1.1  mrg    ops[2] = operands[2];
   7306      1.1  mrg    ops[3] = operands[3];
   7307      1.1  mrg    if (!strcmp ("<supf>","s") && <V_sz_elem> == 8)
   7308      1.1  mrg      output_asm_insn ("vpst\n\tvldrbt.u8\t%q0, [%m1, %q2]",ops);
   7309      1.1  mrg    else
   7310      1.1  mrg      output_asm_insn ("vpst\n\tvldrbt.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops);
   7311      1.1  mrg    return "";
   7312      1.1  mrg }
   7313      1.1  mrg   [(set_attr "length" "8")])
   7314      1.1  mrg 
   7315      1.1  mrg ;;
   7316      1.1  mrg ;; [vldrbq_z_s vldrbq_z_u]
   7317      1.1  mrg ;;
   7318      1.1  mrg (define_insn "mve_vldrbq_z_<supf><mode>"
   7319      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   7320      1.1  mrg 	(unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "mve_memory_operand" "Ux")
   7321  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
   7322      1.1  mrg 	 VLDRBQ))
   7323      1.1  mrg   ]
   7324      1.1  mrg   "TARGET_HAVE_MVE"
   7325      1.1  mrg {
   7326      1.1  mrg    rtx ops[2];
   7327      1.1  mrg    int regno = REGNO (operands[0]);
   7328      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7329      1.1  mrg    ops[1]  = operands[1];
   7330      1.1  mrg    if (<V_sz_elem> == 8)
   7331      1.1  mrg      output_asm_insn ("vpst\;vldrbt.<V_sz_elem>\t%q0, %E1",ops);
   7332      1.1  mrg    else
   7333      1.1  mrg      output_asm_insn ("vpst\;vldrbt.<supf><V_sz_elem>\t%q0, %E1",ops);
   7334      1.1  mrg    return "";
   7335      1.1  mrg }
   7336      1.1  mrg   [(set_attr "length" "8")])
   7337      1.1  mrg 
   7338      1.1  mrg ;;
   7339      1.1  mrg ;; [vldrwq_gather_base_z_s vldrwq_gather_base_z_u]
   7340      1.1  mrg ;;
   7341      1.1  mrg (define_insn "mve_vldrwq_gather_base_z_<supf>v4si"
   7342      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   7343      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   7344      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "i")
   7345  1.1.1.2  mrg 		      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   7346      1.1  mrg 	 VLDRWGBQ))
   7347      1.1  mrg   ]
   7348      1.1  mrg   "TARGET_HAVE_MVE"
   7349      1.1  mrg {
   7350      1.1  mrg    rtx ops[3];
   7351      1.1  mrg    ops[0] = operands[0];
   7352      1.1  mrg    ops[1] = operands[1];
   7353      1.1  mrg    ops[2] = operands[2];
   7354      1.1  mrg    output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%q1, %2]",ops);
   7355      1.1  mrg    return "";
   7356      1.1  mrg }
   7357      1.1  mrg   [(set_attr "length" "8")])
   7358      1.1  mrg 
   7359      1.1  mrg ;;
   7360      1.1  mrg ;; [vldrhq_f]
   7361      1.1  mrg ;;
   7362      1.1  mrg (define_insn "mve_vldrhq_fv8hf"
   7363      1.1  mrg   [(set (match_operand:V8HF 0 "s_register_operand" "=w")
   7364      1.1  mrg 	(unspec:V8HF [(match_operand:V8HI 1 "mve_memory_operand" "Ux")]
   7365      1.1  mrg 	 VLDRHQ_F))
   7366      1.1  mrg   ]
   7367      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7368      1.1  mrg {
   7369      1.1  mrg    rtx ops[2];
   7370      1.1  mrg    int regno = REGNO (operands[0]);
   7371      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7372      1.1  mrg    ops[1]  = operands[1];
   7373      1.1  mrg    output_asm_insn ("vldrh.16\t%q0, %E1",ops);
   7374      1.1  mrg    return "";
   7375      1.1  mrg }
   7376      1.1  mrg   [(set_attr "length" "4")])
   7377      1.1  mrg 
   7378      1.1  mrg ;;
   7379      1.1  mrg ;; [vldrhq_gather_offset_s vldrhq_gather_offset_u]
   7380      1.1  mrg ;;
   7381      1.1  mrg (define_insn "mve_vldrhq_gather_offset_<supf><mode>"
   7382      1.1  mrg   [(set (match_operand:MVE_6 0 "s_register_operand" "=&w")
   7383      1.1  mrg 	(unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us")
   7384      1.1  mrg 		       (match_operand:MVE_6 2 "s_register_operand" "w")]
   7385      1.1  mrg 	VLDRHGOQ))
   7386      1.1  mrg   ]
   7387      1.1  mrg   "TARGET_HAVE_MVE"
   7388      1.1  mrg {
   7389      1.1  mrg    rtx ops[3];
   7390      1.1  mrg    ops[0] = operands[0];
   7391      1.1  mrg    ops[1] = operands[1];
   7392      1.1  mrg    ops[2] = operands[2];
   7393      1.1  mrg    if (!strcmp ("<supf>","s") && <V_sz_elem> == 16)
   7394      1.1  mrg      output_asm_insn ("vldrh.u16\t%q0, [%m1, %q2]",ops);
   7395      1.1  mrg    else
   7396      1.1  mrg      output_asm_insn ("vldrh.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops);
   7397      1.1  mrg    return "";
   7398      1.1  mrg }
   7399      1.1  mrg   [(set_attr "length" "4")])
   7400      1.1  mrg 
   7401      1.1  mrg ;;
   7402      1.1  mrg ;; [vldrhq_gather_offset_z_s vldrhq_gather_offset_z_u]
   7403      1.1  mrg ;;
   7404      1.1  mrg (define_insn "mve_vldrhq_gather_offset_z_<supf><mode>"
   7405      1.1  mrg   [(set (match_operand:MVE_6 0 "s_register_operand" "=&w")
   7406      1.1  mrg 	(unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us")
   7407      1.1  mrg 		       (match_operand:MVE_6 2 "s_register_operand" "w")
   7408  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")
   7409      1.1  mrg 	]VLDRHGOQ))
   7410      1.1  mrg   ]
   7411      1.1  mrg   "TARGET_HAVE_MVE"
   7412      1.1  mrg {
   7413      1.1  mrg    rtx ops[4];
   7414      1.1  mrg    ops[0] = operands[0];
   7415      1.1  mrg    ops[1] = operands[1];
   7416      1.1  mrg    ops[2] = operands[2];
   7417      1.1  mrg    ops[3] = operands[3];
   7418      1.1  mrg    if (!strcmp ("<supf>","s") && <V_sz_elem> == 16)
   7419      1.1  mrg      output_asm_insn ("vpst\n\tvldrht.u16\t%q0, [%m1, %q2]",ops);
   7420      1.1  mrg    else
   7421      1.1  mrg      output_asm_insn ("vpst\n\tvldrht.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops);
   7422      1.1  mrg    return "";
   7423      1.1  mrg }
   7424      1.1  mrg  [(set_attr "length" "8")])
   7425      1.1  mrg 
   7426      1.1  mrg ;;
   7427      1.1  mrg ;; [vldrhq_gather_shifted_offset_s vldrhq_gather_shifted_offset_u]
   7428      1.1  mrg ;;
   7429      1.1  mrg (define_insn "mve_vldrhq_gather_shifted_offset_<supf><mode>"
   7430      1.1  mrg   [(set (match_operand:MVE_6 0 "s_register_operand" "=&w")
   7431      1.1  mrg 	(unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us")
   7432      1.1  mrg 		       (match_operand:MVE_6 2 "s_register_operand" "w")]
   7433      1.1  mrg 	VLDRHGSOQ))
   7434      1.1  mrg   ]
   7435      1.1  mrg   "TARGET_HAVE_MVE"
   7436      1.1  mrg {
   7437      1.1  mrg    rtx ops[3];
   7438      1.1  mrg    ops[0] = operands[0];
   7439      1.1  mrg    ops[1] = operands[1];
   7440      1.1  mrg    ops[2] = operands[2];
   7441      1.1  mrg       if (!strcmp ("<supf>","s") && <V_sz_elem> == 16)
   7442      1.1  mrg      output_asm_insn ("vldrh.u16\t%q0, [%m1, %q2, uxtw #1]",ops);
   7443      1.1  mrg    else
   7444      1.1  mrg      output_asm_insn ("vldrh.<supf><V_sz_elem>\t%q0, [%m1, %q2, uxtw #1]",ops);
   7445      1.1  mrg    return "";
   7446      1.1  mrg }
   7447      1.1  mrg   [(set_attr "length" "4")])
   7448      1.1  mrg 
   7449      1.1  mrg ;;
   7450      1.1  mrg ;; [vldrhq_gather_shifted_offset_z_s vldrhq_gather_shited_offset_z_u]
   7451      1.1  mrg ;;
   7452      1.1  mrg (define_insn "mve_vldrhq_gather_shifted_offset_z_<supf><mode>"
   7453      1.1  mrg   [(set (match_operand:MVE_6 0 "s_register_operand" "=&w")
   7454      1.1  mrg 	(unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us")
   7455      1.1  mrg 		       (match_operand:MVE_6 2 "s_register_operand" "w")
   7456  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")
   7457      1.1  mrg 	]VLDRHGSOQ))
   7458      1.1  mrg   ]
   7459      1.1  mrg   "TARGET_HAVE_MVE"
   7460      1.1  mrg {
   7461      1.1  mrg    rtx ops[4];
   7462      1.1  mrg    ops[0] = operands[0];
   7463      1.1  mrg    ops[1] = operands[1];
   7464      1.1  mrg    ops[2] = operands[2];
   7465      1.1  mrg    ops[3] = operands[3];
   7466      1.1  mrg    if (!strcmp ("<supf>","s") && <V_sz_elem> == 16)
   7467      1.1  mrg      output_asm_insn ("vpst\n\tvldrht.u16\t%q0, [%m1, %q2, uxtw #1]",ops);
   7468      1.1  mrg    else
   7469      1.1  mrg      output_asm_insn ("vpst\n\tvldrht.<supf><V_sz_elem>\t%q0, [%m1, %q2, uxtw #1]",ops);
   7470      1.1  mrg    return "";
   7471      1.1  mrg }
   7472      1.1  mrg   [(set_attr "length" "8")])
   7473      1.1  mrg 
   7474      1.1  mrg ;;
   7475      1.1  mrg ;; [vldrhq_s, vldrhq_u]
   7476      1.1  mrg ;;
   7477      1.1  mrg (define_insn "mve_vldrhq_<supf><mode>"
   7478      1.1  mrg   [(set (match_operand:MVE_6 0 "s_register_operand" "=w")
   7479      1.1  mrg 	(unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "mve_memory_operand" "Ux")]
   7480      1.1  mrg 	 VLDRHQ))
   7481      1.1  mrg   ]
   7482      1.1  mrg   "TARGET_HAVE_MVE"
   7483      1.1  mrg {
   7484      1.1  mrg    rtx ops[2];
   7485      1.1  mrg    int regno = REGNO (operands[0]);
   7486      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7487      1.1  mrg    ops[1]  = operands[1];
   7488      1.1  mrg    if (<V_sz_elem> == 16)
   7489      1.1  mrg      output_asm_insn ("vldrh.16\t%q0, %E1",ops);
   7490      1.1  mrg    else
   7491      1.1  mrg      output_asm_insn ("vldrh.<supf><V_sz_elem>\t%q0, %E1",ops);
   7492      1.1  mrg    return "";
   7493      1.1  mrg }
   7494      1.1  mrg   [(set_attr "length" "4")])
   7495      1.1  mrg 
   7496      1.1  mrg ;;
   7497      1.1  mrg ;; [vldrhq_z_f]
   7498      1.1  mrg ;;
   7499      1.1  mrg (define_insn "mve_vldrhq_z_fv8hf"
   7500      1.1  mrg   [(set (match_operand:V8HF 0 "s_register_operand" "=w")
   7501      1.1  mrg 	(unspec:V8HF [(match_operand:V8HI 1 "mve_memory_operand" "Ux")
   7502  1.1.1.2  mrg 	(match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
   7503      1.1  mrg 	 VLDRHQ_F))
   7504      1.1  mrg   ]
   7505      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7506      1.1  mrg {
   7507      1.1  mrg    rtx ops[2];
   7508      1.1  mrg    int regno = REGNO (operands[0]);
   7509      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7510      1.1  mrg    ops[1]  = operands[1];
   7511      1.1  mrg    output_asm_insn ("vpst\;vldrht.16\t%q0, %E1",ops);
   7512      1.1  mrg    return "";
   7513      1.1  mrg }
   7514      1.1  mrg   [(set_attr "length" "8")])
   7515      1.1  mrg 
   7516      1.1  mrg ;;
   7517      1.1  mrg ;; [vldrhq_z_s vldrhq_z_u]
   7518      1.1  mrg ;;
   7519      1.1  mrg (define_insn "mve_vldrhq_z_<supf><mode>"
   7520      1.1  mrg   [(set (match_operand:MVE_6 0 "s_register_operand" "=w")
   7521      1.1  mrg 	(unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "mve_memory_operand" "Ux")
   7522  1.1.1.2  mrg 	(match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
   7523      1.1  mrg 	 VLDRHQ))
   7524      1.1  mrg   ]
   7525      1.1  mrg   "TARGET_HAVE_MVE"
   7526      1.1  mrg {
   7527      1.1  mrg    rtx ops[2];
   7528      1.1  mrg    int regno = REGNO (operands[0]);
   7529      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7530      1.1  mrg    ops[1]  = operands[1];
   7531      1.1  mrg    if (<V_sz_elem> == 16)
   7532      1.1  mrg      output_asm_insn ("vpst\;vldrht.16\t%q0, %E1",ops);
   7533      1.1  mrg    else
   7534      1.1  mrg      output_asm_insn ("vpst\;vldrht.<supf><V_sz_elem>\t%q0, %E1",ops);
   7535      1.1  mrg    return "";
   7536      1.1  mrg }
   7537      1.1  mrg   [(set_attr "length" "8")])
   7538      1.1  mrg 
   7539      1.1  mrg ;;
   7540      1.1  mrg ;; [vldrwq_f]
   7541      1.1  mrg ;;
   7542      1.1  mrg (define_insn "mve_vldrwq_fv4sf"
   7543      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=w")
   7544  1.1.1.2  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "mve_memory_operand" "Ux")]
   7545      1.1  mrg 	 VLDRWQ_F))
   7546      1.1  mrg   ]
   7547      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7548      1.1  mrg {
   7549      1.1  mrg    rtx ops[2];
   7550      1.1  mrg    int regno = REGNO (operands[0]);
   7551      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7552      1.1  mrg    ops[1]  = operands[1];
   7553      1.1  mrg    output_asm_insn ("vldrw.32\t%q0, %E1",ops);
   7554      1.1  mrg    return "";
   7555      1.1  mrg }
   7556      1.1  mrg   [(set_attr "length" "4")])
   7557      1.1  mrg 
   7558      1.1  mrg ;;
   7559      1.1  mrg ;; [vldrwq_s vldrwq_u]
   7560      1.1  mrg ;;
   7561      1.1  mrg (define_insn "mve_vldrwq_<supf>v4si"
   7562      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   7563  1.1.1.2  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "mve_memory_operand" "Ux")]
   7564      1.1  mrg 	 VLDRWQ))
   7565      1.1  mrg   ]
   7566      1.1  mrg   "TARGET_HAVE_MVE"
   7567      1.1  mrg {
   7568      1.1  mrg    rtx ops[2];
   7569      1.1  mrg    int regno = REGNO (operands[0]);
   7570      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7571      1.1  mrg    ops[1]  = operands[1];
   7572      1.1  mrg    output_asm_insn ("vldrw.32\t%q0, %E1",ops);
   7573      1.1  mrg    return "";
   7574      1.1  mrg }
   7575      1.1  mrg   [(set_attr "length" "4")])
   7576      1.1  mrg 
   7577      1.1  mrg ;;
   7578      1.1  mrg ;; [vldrwq_z_f]
   7579      1.1  mrg ;;
   7580      1.1  mrg (define_insn "mve_vldrwq_z_fv4sf"
   7581      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=w")
   7582  1.1.1.2  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "mve_memory_operand" "Ux")
   7583  1.1.1.2  mrg 	(match_operand:V4BI 2 "vpr_register_operand" "Up")]
   7584      1.1  mrg 	 VLDRWQ_F))
   7585      1.1  mrg   ]
   7586      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7587      1.1  mrg {
   7588      1.1  mrg    rtx ops[2];
   7589      1.1  mrg    int regno = REGNO (operands[0]);
   7590      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7591      1.1  mrg    ops[1]  = operands[1];
   7592      1.1  mrg    output_asm_insn ("vpst\;vldrwt.32\t%q0, %E1",ops);
   7593      1.1  mrg    return "";
   7594      1.1  mrg }
   7595      1.1  mrg   [(set_attr "length" "8")])
   7596      1.1  mrg 
   7597      1.1  mrg ;;
   7598      1.1  mrg ;; [vldrwq_z_s vldrwq_z_u]
   7599      1.1  mrg ;;
   7600      1.1  mrg (define_insn "mve_vldrwq_z_<supf>v4si"
   7601      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   7602  1.1.1.2  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "mve_memory_operand" "Ux")
   7603  1.1.1.2  mrg 	(match_operand:V4BI 2 "vpr_register_operand" "Up")]
   7604      1.1  mrg 	 VLDRWQ))
   7605      1.1  mrg   ]
   7606      1.1  mrg   "TARGET_HAVE_MVE"
   7607      1.1  mrg {
   7608      1.1  mrg    rtx ops[2];
   7609      1.1  mrg    int regno = REGNO (operands[0]);
   7610      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   7611      1.1  mrg    ops[1]  = operands[1];
   7612      1.1  mrg    output_asm_insn ("vpst\;vldrwt.32\t%q0, %E1",ops);
   7613      1.1  mrg    return "";
   7614      1.1  mrg }
   7615      1.1  mrg   [(set_attr "length" "8")])
   7616      1.1  mrg 
   7617      1.1  mrg (define_expand "mve_vld1q_f<mode>"
   7618      1.1  mrg   [(match_operand:MVE_0 0 "s_register_operand")
   7619      1.1  mrg    (unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "mve_memory_operand")] VLD1Q_F)
   7620      1.1  mrg   ]
   7621      1.1  mrg   "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
   7622      1.1  mrg {
   7623      1.1  mrg   emit_insn (gen_mve_vldr<V_sz_elem1>q_f<mode>(operands[0],operands[1]));
   7624      1.1  mrg   DONE;
   7625      1.1  mrg })
   7626      1.1  mrg 
   7627      1.1  mrg (define_expand "mve_vld1q_<supf><mode>"
   7628      1.1  mrg   [(match_operand:MVE_2 0 "s_register_operand")
   7629      1.1  mrg    (unspec:MVE_2 [(match_operand:MVE_2 1 "mve_memory_operand")] VLD1Q)
   7630      1.1  mrg   ]
   7631      1.1  mrg   "TARGET_HAVE_MVE"
   7632      1.1  mrg {
   7633      1.1  mrg   emit_insn (gen_mve_vldr<V_sz_elem1>q_<supf><mode>(operands[0],operands[1]));
   7634      1.1  mrg   DONE;
   7635      1.1  mrg })
   7636      1.1  mrg 
   7637      1.1  mrg ;;
   7638      1.1  mrg ;; [vldrdq_gather_base_s vldrdq_gather_base_u]
   7639      1.1  mrg ;;
   7640      1.1  mrg (define_insn "mve_vldrdq_gather_base_<supf>v2di"
   7641      1.1  mrg   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   7642      1.1  mrg 	(unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w")
   7643      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "i")]
   7644      1.1  mrg 	 VLDRDGBQ))
   7645      1.1  mrg   ]
   7646      1.1  mrg   "TARGET_HAVE_MVE"
   7647      1.1  mrg {
   7648      1.1  mrg    rtx ops[3];
   7649      1.1  mrg    ops[0] = operands[0];
   7650      1.1  mrg    ops[1] = operands[1];
   7651      1.1  mrg    ops[2] = operands[2];
   7652      1.1  mrg    output_asm_insn ("vldrd.64\t%q0, [%q1, %2]",ops);
   7653      1.1  mrg    return "";
   7654      1.1  mrg }
   7655      1.1  mrg   [(set_attr "length" "4")])
   7656      1.1  mrg 
   7657      1.1  mrg ;;
   7658      1.1  mrg ;; [vldrdq_gather_base_z_s vldrdq_gather_base_z_u]
   7659      1.1  mrg ;;
   7660      1.1  mrg (define_insn "mve_vldrdq_gather_base_z_<supf>v2di"
   7661      1.1  mrg   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   7662      1.1  mrg 	(unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w")
   7663      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "i")
   7664      1.1  mrg 		      (match_operand:HI 3 "vpr_register_operand" "Up")]
   7665      1.1  mrg 	 VLDRDGBQ))
   7666      1.1  mrg   ]
   7667      1.1  mrg   "TARGET_HAVE_MVE"
   7668      1.1  mrg {
   7669      1.1  mrg    rtx ops[3];
   7670      1.1  mrg    ops[0] = operands[0];
   7671      1.1  mrg    ops[1] = operands[1];
   7672      1.1  mrg    ops[2] = operands[2];
   7673      1.1  mrg    output_asm_insn ("vpst\n\tvldrdt.u64\t%q0, [%q1, %2]",ops);
   7674      1.1  mrg    return "";
   7675      1.1  mrg }
   7676      1.1  mrg   [(set_attr "length" "8")])
   7677      1.1  mrg 
   7678      1.1  mrg ;;
   7679      1.1  mrg ;; [vldrdq_gather_offset_s vldrdq_gather_offset_u]
   7680      1.1  mrg ;;
   7681      1.1  mrg (define_insn "mve_vldrdq_gather_offset_<supf>v2di"
   7682      1.1  mrg  [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   7683      1.1  mrg        (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
   7684      1.1  mrg 		     (match_operand:V2DI 2 "s_register_operand" "w")]
   7685      1.1  mrg 	VLDRDGOQ))
   7686      1.1  mrg  ]
   7687      1.1  mrg  "TARGET_HAVE_MVE"
   7688      1.1  mrg {
   7689      1.1  mrg   rtx ops[3];
   7690      1.1  mrg   ops[0] = operands[0];
   7691      1.1  mrg   ops[1] = operands[1];
   7692      1.1  mrg   ops[2] = operands[2];
   7693      1.1  mrg   output_asm_insn ("vldrd.u64\t%q0, [%m1, %q2]",ops);
   7694      1.1  mrg   return "";
   7695      1.1  mrg }
   7696      1.1  mrg  [(set_attr "length" "4")])
   7697      1.1  mrg 
   7698      1.1  mrg ;;
   7699      1.1  mrg ;; [vldrdq_gather_offset_z_s vldrdq_gather_offset_z_u]
   7700      1.1  mrg ;;
   7701      1.1  mrg (define_insn "mve_vldrdq_gather_offset_z_<supf>v2di"
   7702      1.1  mrg  [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   7703      1.1  mrg        (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
   7704      1.1  mrg 		     (match_operand:V2DI 2 "s_register_operand" "w")
   7705      1.1  mrg 		     (match_operand:HI 3 "vpr_register_operand" "Up")]
   7706      1.1  mrg 	VLDRDGOQ))
   7707      1.1  mrg  ]
   7708      1.1  mrg  "TARGET_HAVE_MVE"
   7709      1.1  mrg {
   7710      1.1  mrg   rtx ops[3];
   7711      1.1  mrg   ops[0] = operands[0];
   7712      1.1  mrg   ops[1] = operands[1];
   7713      1.1  mrg   ops[2] = operands[2];
   7714      1.1  mrg   output_asm_insn ("vpst\n\tvldrdt.u64\t%q0, [%m1, %q2]",ops);
   7715      1.1  mrg   return "";
   7716      1.1  mrg }
   7717      1.1  mrg  [(set_attr "length" "8")])
   7718      1.1  mrg 
   7719      1.1  mrg ;;
   7720      1.1  mrg ;; [vldrdq_gather_shifted_offset_s vldrdq_gather_shifted_offset_u]
   7721      1.1  mrg ;;
   7722      1.1  mrg (define_insn "mve_vldrdq_gather_shifted_offset_<supf>v2di"
   7723      1.1  mrg   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   7724      1.1  mrg 	(unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
   7725      1.1  mrg 		      (match_operand:V2DI 2 "s_register_operand" "w")]
   7726      1.1  mrg 	 VLDRDGSOQ))
   7727      1.1  mrg   ]
   7728      1.1  mrg   "TARGET_HAVE_MVE"
   7729      1.1  mrg {
   7730      1.1  mrg    rtx ops[3];
   7731      1.1  mrg    ops[0] = operands[0];
   7732      1.1  mrg    ops[1] = operands[1];
   7733      1.1  mrg    ops[2] = operands[2];
   7734      1.1  mrg    output_asm_insn ("vldrd.u64\t%q0, [%m1, %q2, uxtw #3]",ops);
   7735      1.1  mrg    return "";
   7736      1.1  mrg }
   7737      1.1  mrg   [(set_attr "length" "4")])
   7738      1.1  mrg 
   7739      1.1  mrg ;;
   7740      1.1  mrg ;; [vldrdq_gather_shifted_offset_z_s vldrdq_gather_shifted_offset_z_u]
   7741      1.1  mrg ;;
   7742      1.1  mrg (define_insn "mve_vldrdq_gather_shifted_offset_z_<supf>v2di"
   7743      1.1  mrg   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   7744      1.1  mrg 	(unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
   7745      1.1  mrg 		      (match_operand:V2DI 2 "s_register_operand" "w")
   7746      1.1  mrg 		      (match_operand:HI 3 "vpr_register_operand" "Up")]
   7747      1.1  mrg 	 VLDRDGSOQ))
   7748      1.1  mrg   ]
   7749      1.1  mrg   "TARGET_HAVE_MVE"
   7750      1.1  mrg {
   7751      1.1  mrg    rtx ops[3];
   7752      1.1  mrg    ops[0] = operands[0];
   7753      1.1  mrg    ops[1] = operands[1];
   7754      1.1  mrg    ops[2] = operands[2];
   7755      1.1  mrg    output_asm_insn ("vpst\n\tvldrdt.u64\t%q0, [%m1, %q2, uxtw #3]",ops);
   7756      1.1  mrg    return "";
   7757      1.1  mrg }
   7758      1.1  mrg   [(set_attr "length" "8")])
   7759      1.1  mrg 
   7760      1.1  mrg ;;
   7761      1.1  mrg ;; [vldrhq_gather_offset_f]
   7762      1.1  mrg ;;
   7763      1.1  mrg (define_insn "mve_vldrhq_gather_offset_fv8hf"
   7764      1.1  mrg   [(set (match_operand:V8HF 0 "s_register_operand" "=&w")
   7765      1.1  mrg 	(unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us")
   7766      1.1  mrg 		      (match_operand:V8HI 2 "s_register_operand" "w")]
   7767      1.1  mrg 	 VLDRHQGO_F))
   7768      1.1  mrg   ]
   7769      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7770      1.1  mrg {
   7771      1.1  mrg    rtx ops[3];
   7772      1.1  mrg    ops[0] = operands[0];
   7773      1.1  mrg    ops[1] = operands[1];
   7774      1.1  mrg    ops[2] = operands[2];
   7775      1.1  mrg    output_asm_insn ("vldrh.f16\t%q0, [%m1, %q2]",ops);
   7776      1.1  mrg    return "";
   7777      1.1  mrg }
   7778      1.1  mrg   [(set_attr "length" "4")])
   7779      1.1  mrg 
   7780      1.1  mrg ;;
   7781      1.1  mrg ;; [vldrhq_gather_offset_z_f]
   7782      1.1  mrg ;;
   7783      1.1  mrg (define_insn "mve_vldrhq_gather_offset_z_fv8hf"
   7784      1.1  mrg   [(set (match_operand:V8HF 0 "s_register_operand" "=&w")
   7785      1.1  mrg 	(unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us")
   7786      1.1  mrg 		      (match_operand:V8HI 2 "s_register_operand" "w")
   7787  1.1.1.2  mrg 		      (match_operand:V8BI 3 "vpr_register_operand" "Up")]
   7788      1.1  mrg 	 VLDRHQGO_F))
   7789      1.1  mrg   ]
   7790      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7791      1.1  mrg {
   7792      1.1  mrg    rtx ops[4];
   7793      1.1  mrg    ops[0] = operands[0];
   7794      1.1  mrg    ops[1] = operands[1];
   7795      1.1  mrg    ops[2] = operands[2];
   7796      1.1  mrg    ops[3] = operands[3];
   7797      1.1  mrg    output_asm_insn ("vpst\n\tvldrht.f16\t%q0, [%m1, %q2]",ops);
   7798      1.1  mrg    return "";
   7799      1.1  mrg }
   7800      1.1  mrg   [(set_attr "length" "8")])
   7801      1.1  mrg 
   7802      1.1  mrg ;;
   7803      1.1  mrg ;; [vldrhq_gather_shifted_offset_f]
   7804      1.1  mrg ;;
   7805      1.1  mrg (define_insn "mve_vldrhq_gather_shifted_offset_fv8hf"
   7806      1.1  mrg   [(set (match_operand:V8HF 0 "s_register_operand" "=&w")
   7807      1.1  mrg 	(unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us")
   7808      1.1  mrg 		      (match_operand:V8HI 2 "s_register_operand" "w")]
   7809      1.1  mrg 	 VLDRHQGSO_F))
   7810      1.1  mrg   ]
   7811      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7812      1.1  mrg {
   7813      1.1  mrg    rtx ops[3];
   7814      1.1  mrg    ops[0] = operands[0];
   7815      1.1  mrg    ops[1] = operands[1];
   7816      1.1  mrg    ops[2] = operands[2];
   7817      1.1  mrg    output_asm_insn ("vldrh.f16\t%q0, [%m1, %q2, uxtw #1]",ops);
   7818      1.1  mrg    return "";
   7819      1.1  mrg }
   7820      1.1  mrg   [(set_attr "length" "4")])
   7821      1.1  mrg 
   7822      1.1  mrg ;;
   7823      1.1  mrg ;; [vldrhq_gather_shifted_offset_z_f]
   7824      1.1  mrg ;;
   7825      1.1  mrg (define_insn "mve_vldrhq_gather_shifted_offset_z_fv8hf"
   7826      1.1  mrg   [(set (match_operand:V8HF 0 "s_register_operand" "=&w")
   7827      1.1  mrg 	(unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us")
   7828      1.1  mrg 		      (match_operand:V8HI 2 "s_register_operand" "w")
   7829  1.1.1.2  mrg 		      (match_operand:V8BI 3 "vpr_register_operand" "Up")]
   7830      1.1  mrg 	 VLDRHQGSO_F))
   7831      1.1  mrg   ]
   7832      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7833      1.1  mrg {
   7834      1.1  mrg    rtx ops[4];
   7835      1.1  mrg    ops[0] = operands[0];
   7836      1.1  mrg    ops[1] = operands[1];
   7837      1.1  mrg    ops[2] = operands[2];
   7838      1.1  mrg    ops[3] = operands[3];
   7839      1.1  mrg    output_asm_insn ("vpst\n\tvldrht.f16\t%q0, [%m1, %q2, uxtw #1]",ops);
   7840      1.1  mrg    return "";
   7841      1.1  mrg }
   7842      1.1  mrg   [(set_attr "length" "8")])
   7843      1.1  mrg 
   7844      1.1  mrg ;;
   7845      1.1  mrg ;; [vldrwq_gather_base_f]
   7846      1.1  mrg ;;
   7847      1.1  mrg (define_insn "mve_vldrwq_gather_base_fv4sf"
   7848      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   7849      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "s_register_operand" "w")
   7850      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "i")]
   7851      1.1  mrg 	 VLDRWQGB_F))
   7852      1.1  mrg   ]
   7853      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7854      1.1  mrg {
   7855      1.1  mrg    rtx ops[3];
   7856      1.1  mrg    ops[0] = operands[0];
   7857      1.1  mrg    ops[1] = operands[1];
   7858      1.1  mrg    ops[2] = operands[2];
   7859      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]",ops);
   7860      1.1  mrg    return "";
   7861      1.1  mrg }
   7862      1.1  mrg   [(set_attr "length" "4")])
   7863      1.1  mrg 
   7864      1.1  mrg ;;
   7865      1.1  mrg ;; [vldrwq_gather_base_z_f]
   7866      1.1  mrg ;;
   7867      1.1  mrg (define_insn "mve_vldrwq_gather_base_z_fv4sf"
   7868      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   7869      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "s_register_operand" "w")
   7870      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "i")
   7871  1.1.1.2  mrg 		      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   7872      1.1  mrg 	 VLDRWQGB_F))
   7873      1.1  mrg   ]
   7874      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7875      1.1  mrg {
   7876      1.1  mrg    rtx ops[3];
   7877      1.1  mrg    ops[0] = operands[0];
   7878      1.1  mrg    ops[1] = operands[1];
   7879      1.1  mrg    ops[2] = operands[2];
   7880      1.1  mrg    output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%q1, %2]",ops);
   7881      1.1  mrg    return "";
   7882      1.1  mrg }
   7883      1.1  mrg   [(set_attr "length" "8")])
   7884      1.1  mrg 
   7885      1.1  mrg ;;
   7886      1.1  mrg ;; [vldrwq_gather_offset_f]
   7887      1.1  mrg ;;
   7888      1.1  mrg (define_insn "mve_vldrwq_gather_offset_fv4sf"
   7889      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   7890      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us")
   7891      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")]
   7892      1.1  mrg 	 VLDRWQGO_F))
   7893      1.1  mrg   ]
   7894      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7895      1.1  mrg {
   7896      1.1  mrg    rtx ops[3];
   7897      1.1  mrg    ops[0] = operands[0];
   7898      1.1  mrg    ops[1] = operands[1];
   7899      1.1  mrg    ops[2] = operands[2];
   7900      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2]",ops);
   7901      1.1  mrg    return "";
   7902      1.1  mrg }
   7903      1.1  mrg   [(set_attr "length" "4")])
   7904      1.1  mrg 
   7905      1.1  mrg ;;
   7906      1.1  mrg ;; [vldrwq_gather_offset_s vldrwq_gather_offset_u]
   7907      1.1  mrg ;;
   7908      1.1  mrg (define_insn "mve_vldrwq_gather_offset_<supf>v4si"
   7909      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   7910      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us")
   7911      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")]
   7912      1.1  mrg 	 VLDRWGOQ))
   7913      1.1  mrg   ]
   7914      1.1  mrg   "TARGET_HAVE_MVE"
   7915      1.1  mrg {
   7916      1.1  mrg    rtx ops[3];
   7917      1.1  mrg    ops[0] = operands[0];
   7918      1.1  mrg    ops[1] = operands[1];
   7919      1.1  mrg    ops[2] = operands[2];
   7920      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2]",ops);
   7921      1.1  mrg    return "";
   7922      1.1  mrg }
   7923      1.1  mrg   [(set_attr "length" "4")])
   7924      1.1  mrg 
   7925      1.1  mrg ;;
   7926      1.1  mrg ;; [vldrwq_gather_offset_z_f]
   7927      1.1  mrg ;;
   7928      1.1  mrg (define_insn "mve_vldrwq_gather_offset_z_fv4sf"
   7929      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   7930      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us")
   7931      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   7932  1.1.1.2  mrg 		      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   7933      1.1  mrg 	 VLDRWQGO_F))
   7934      1.1  mrg   ]
   7935      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7936      1.1  mrg {
   7937      1.1  mrg    rtx ops[4];
   7938      1.1  mrg    ops[0] = operands[0];
   7939      1.1  mrg    ops[1] = operands[1];
   7940      1.1  mrg    ops[2] = operands[2];
   7941      1.1  mrg    ops[3] = operands[3];
   7942      1.1  mrg    output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2]",ops);
   7943      1.1  mrg    return "";
   7944      1.1  mrg }
   7945      1.1  mrg   [(set_attr "length" "8")])
   7946      1.1  mrg 
   7947      1.1  mrg ;;
   7948      1.1  mrg ;; [vldrwq_gather_offset_z_s vldrwq_gather_offset_z_u]
   7949      1.1  mrg ;;
   7950      1.1  mrg (define_insn "mve_vldrwq_gather_offset_z_<supf>v4si"
   7951      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   7952      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us")
   7953      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   7954  1.1.1.2  mrg 		      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   7955      1.1  mrg 	 VLDRWGOQ))
   7956      1.1  mrg   ]
   7957      1.1  mrg   "TARGET_HAVE_MVE"
   7958      1.1  mrg {
   7959      1.1  mrg    rtx ops[4];
   7960      1.1  mrg    ops[0] = operands[0];
   7961      1.1  mrg    ops[1] = operands[1];
   7962      1.1  mrg    ops[2] = operands[2];
   7963      1.1  mrg    ops[3] = operands[3];
   7964      1.1  mrg    output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2]",ops);
   7965      1.1  mrg    return "";
   7966      1.1  mrg }
   7967      1.1  mrg   [(set_attr "length" "8")])
   7968      1.1  mrg 
   7969      1.1  mrg ;;
   7970      1.1  mrg ;; [vldrwq_gather_shifted_offset_f]
   7971      1.1  mrg ;;
   7972      1.1  mrg (define_insn "mve_vldrwq_gather_shifted_offset_fv4sf"
   7973      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   7974      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us")
   7975      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")]
   7976      1.1  mrg 	 VLDRWQGSO_F))
   7977      1.1  mrg   ]
   7978      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   7979      1.1  mrg {
   7980      1.1  mrg    rtx ops[3];
   7981      1.1  mrg    ops[0] = operands[0];
   7982      1.1  mrg    ops[1] = operands[1];
   7983      1.1  mrg    ops[2] = operands[2];
   7984      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2, uxtw #2]",ops);
   7985      1.1  mrg    return "";
   7986      1.1  mrg }
   7987      1.1  mrg   [(set_attr "length" "4")])
   7988      1.1  mrg 
   7989      1.1  mrg ;;
   7990      1.1  mrg ;; [vldrwq_gather_shifted_offset_s vldrwq_gather_shifted_offset_u]
   7991      1.1  mrg ;;
   7992      1.1  mrg (define_insn "mve_vldrwq_gather_shifted_offset_<supf>v4si"
   7993      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   7994      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us")
   7995      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")]
   7996      1.1  mrg 	 VLDRWGSOQ))
   7997      1.1  mrg   ]
   7998      1.1  mrg   "TARGET_HAVE_MVE"
   7999      1.1  mrg {
   8000      1.1  mrg    rtx ops[3];
   8001      1.1  mrg    ops[0] = operands[0];
   8002      1.1  mrg    ops[1] = operands[1];
   8003      1.1  mrg    ops[2] = operands[2];
   8004      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2, uxtw #2]",ops);
   8005      1.1  mrg    return "";
   8006      1.1  mrg }
   8007      1.1  mrg   [(set_attr "length" "4")])
   8008      1.1  mrg 
   8009      1.1  mrg ;;
   8010      1.1  mrg ;; [vldrwq_gather_shifted_offset_z_f]
   8011      1.1  mrg ;;
   8012      1.1  mrg (define_insn "mve_vldrwq_gather_shifted_offset_z_fv4sf"
   8013      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   8014      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us")
   8015      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   8016  1.1.1.2  mrg 		      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8017      1.1  mrg 	 VLDRWQGSO_F))
   8018      1.1  mrg   ]
   8019      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8020      1.1  mrg {
   8021      1.1  mrg    rtx ops[4];
   8022      1.1  mrg    ops[0] = operands[0];
   8023      1.1  mrg    ops[1] = operands[1];
   8024      1.1  mrg    ops[2] = operands[2];
   8025      1.1  mrg    ops[3] = operands[3];
   8026      1.1  mrg    output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2, uxtw #2]",ops);
   8027      1.1  mrg    return "";
   8028      1.1  mrg }
   8029      1.1  mrg   [(set_attr "length" "8")])
   8030      1.1  mrg 
   8031      1.1  mrg ;;
   8032      1.1  mrg ;; [vldrwq_gather_shifted_offset_z_s vldrwq_gather_shifted_offset_z_u]
   8033      1.1  mrg ;;
   8034      1.1  mrg (define_insn "mve_vldrwq_gather_shifted_offset_z_<supf>v4si"
   8035      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   8036      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us")
   8037      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   8038  1.1.1.2  mrg 		      (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8039      1.1  mrg 	 VLDRWGSOQ))
   8040      1.1  mrg   ]
   8041      1.1  mrg   "TARGET_HAVE_MVE"
   8042      1.1  mrg {
   8043      1.1  mrg    rtx ops[4];
   8044      1.1  mrg    ops[0] = operands[0];
   8045      1.1  mrg    ops[1] = operands[1];
   8046      1.1  mrg    ops[2] = operands[2];
   8047      1.1  mrg    ops[3] = operands[3];
   8048      1.1  mrg    output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2, uxtw #2]",ops);
   8049      1.1  mrg    return "";
   8050      1.1  mrg }
   8051      1.1  mrg   [(set_attr "length" "8")])
   8052      1.1  mrg 
   8053      1.1  mrg ;;
   8054      1.1  mrg ;; [vstrhq_f]
   8055      1.1  mrg ;;
   8056      1.1  mrg (define_insn "mve_vstrhq_fv8hf"
   8057      1.1  mrg   [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux")
   8058      1.1  mrg 	(unspec:V8HI [(match_operand:V8HF 1 "s_register_operand" "w")]
   8059      1.1  mrg 	 VSTRHQ_F))
   8060      1.1  mrg   ]
   8061      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8062      1.1  mrg {
   8063      1.1  mrg    rtx ops[2];
   8064      1.1  mrg    int regno = REGNO (operands[1]);
   8065      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8066      1.1  mrg    ops[0]  = operands[0];
   8067      1.1  mrg    output_asm_insn ("vstrh.16\t%q1, %E0",ops);
   8068      1.1  mrg    return "";
   8069      1.1  mrg }
   8070      1.1  mrg   [(set_attr "length" "4")])
   8071      1.1  mrg 
   8072      1.1  mrg ;;
   8073      1.1  mrg ;; [vstrhq_p_f]
   8074      1.1  mrg ;;
   8075      1.1  mrg (define_insn "mve_vstrhq_p_fv8hf"
   8076      1.1  mrg   [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux")
   8077  1.1.1.2  mrg 	(unspec:V8HI
   8078  1.1.1.2  mrg 	 [(match_operand:V8HF 1 "s_register_operand" "w")
   8079  1.1.1.2  mrg 	  (match_operand:V8BI 2 "vpr_register_operand" "Up")
   8080  1.1.1.2  mrg 	  (match_dup 0)]
   8081  1.1.1.2  mrg 	 VSTRHQ_F))]
   8082      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8083      1.1  mrg {
   8084      1.1  mrg    rtx ops[2];
   8085      1.1  mrg    int regno = REGNO (operands[1]);
   8086      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8087      1.1  mrg    ops[0]  = operands[0];
   8088      1.1  mrg    output_asm_insn ("vpst\;vstrht.16\t%q1, %E0",ops);
   8089      1.1  mrg    return "";
   8090      1.1  mrg }
   8091      1.1  mrg   [(set_attr "length" "8")])
   8092      1.1  mrg 
   8093      1.1  mrg ;;
   8094      1.1  mrg ;; [vstrhq_p_s vstrhq_p_u]
   8095      1.1  mrg ;;
   8096      1.1  mrg (define_insn "mve_vstrhq_p_<supf><mode>"
   8097      1.1  mrg   [(set (match_operand:<MVE_H_ELEM> 0 "mve_memory_operand" "=Ux")
   8098  1.1.1.2  mrg 	(unspec:<MVE_H_ELEM>
   8099  1.1.1.2  mrg 	 [(match_operand:MVE_6 1 "s_register_operand" "w")
   8100  1.1.1.2  mrg 	  (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")
   8101  1.1.1.2  mrg 	  (match_dup 0)]
   8102      1.1  mrg 	 VSTRHQ))
   8103      1.1  mrg   ]
   8104      1.1  mrg   "TARGET_HAVE_MVE"
   8105      1.1  mrg {
   8106      1.1  mrg    rtx ops[2];
   8107      1.1  mrg    int regno = REGNO (operands[1]);
   8108      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8109      1.1  mrg    ops[0]  = operands[0];
   8110      1.1  mrg    output_asm_insn ("vpst\;vstrht.<V_sz_elem>\t%q1, %E0",ops);
   8111      1.1  mrg    return "";
   8112      1.1  mrg }
   8113      1.1  mrg   [(set_attr "length" "8")])
   8114      1.1  mrg 
   8115      1.1  mrg ;;
   8116      1.1  mrg ;; [vstrhq_scatter_offset_p_s vstrhq_scatter_offset_p_u]
   8117      1.1  mrg ;;
   8118      1.1  mrg (define_expand "mve_vstrhq_scatter_offset_p_<supf><mode>"
   8119      1.1  mrg   [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory")
   8120      1.1  mrg    (match_operand:MVE_6 1 "s_register_operand")
   8121      1.1  mrg    (match_operand:MVE_6 2 "s_register_operand")
   8122  1.1.1.2  mrg    (match_operand:<MVE_VPRED> 3 "vpr_register_operand")
   8123      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHSOQ)]
   8124      1.1  mrg   "TARGET_HAVE_MVE"
   8125      1.1  mrg {
   8126      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8127      1.1  mrg   gcc_assert (REG_P (ind));
   8128      1.1  mrg   emit_insn (
   8129      1.1  mrg     gen_mve_vstrhq_scatter_offset_p_<supf><mode>_insn (ind, operands[1],
   8130      1.1  mrg 						       operands[2],
   8131      1.1  mrg 						       operands[3]));
   8132      1.1  mrg   DONE;
   8133      1.1  mrg })
   8134      1.1  mrg 
   8135      1.1  mrg (define_insn "mve_vstrhq_scatter_offset_p_<supf><mode>_insn"
   8136      1.1  mrg   [(set (mem:BLK (scratch))
   8137      1.1  mrg 	(unspec:BLK
   8138      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8139      1.1  mrg 	   (match_operand:MVE_6 1 "s_register_operand" "w")
   8140      1.1  mrg 	   (match_operand:MVE_6 2 "s_register_operand" "w")
   8141  1.1.1.2  mrg 	   (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   8142      1.1  mrg 	  VSTRHSOQ))]
   8143      1.1  mrg   "TARGET_HAVE_MVE"
   8144      1.1  mrg   "vpst\;vstrht.<V_sz_elem>\t%q2, [%0, %q1]"
   8145      1.1  mrg   [(set_attr "length" "8")])
   8146      1.1  mrg 
   8147      1.1  mrg ;;
   8148      1.1  mrg ;; [vstrhq_scatter_offset_s vstrhq_scatter_offset_u]
   8149      1.1  mrg ;;
   8150      1.1  mrg (define_expand "mve_vstrhq_scatter_offset_<supf><mode>"
   8151      1.1  mrg   [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory")
   8152      1.1  mrg    (match_operand:MVE_6 1 "s_register_operand")
   8153      1.1  mrg    (match_operand:MVE_6 2 "s_register_operand")
   8154      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHSOQ)]
   8155      1.1  mrg   "TARGET_HAVE_MVE"
   8156      1.1  mrg {
   8157      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8158      1.1  mrg   gcc_assert (REG_P (ind));
   8159      1.1  mrg   emit_insn (gen_mve_vstrhq_scatter_offset_<supf><mode>_insn (ind, operands[1],
   8160      1.1  mrg 							      operands[2]));
   8161      1.1  mrg   DONE;
   8162      1.1  mrg })
   8163      1.1  mrg 
   8164      1.1  mrg (define_insn "mve_vstrhq_scatter_offset_<supf><mode>_insn"
   8165      1.1  mrg   [(set (mem:BLK (scratch))
   8166      1.1  mrg 	(unspec:BLK
   8167      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8168      1.1  mrg 	   (match_operand:MVE_6 1 "s_register_operand" "w")
   8169      1.1  mrg 	   (match_operand:MVE_6 2 "s_register_operand" "w")]
   8170      1.1  mrg 	  VSTRHSOQ))]
   8171      1.1  mrg   "TARGET_HAVE_MVE"
   8172      1.1  mrg   "vstrh.<V_sz_elem>\t%q2, [%0, %q1]"
   8173      1.1  mrg   [(set_attr "length" "4")])
   8174      1.1  mrg 
   8175      1.1  mrg ;;
   8176      1.1  mrg ;; [vstrhq_scatter_shifted_offset_p_s vstrhq_scatter_shifted_offset_p_u]
   8177      1.1  mrg ;;
   8178      1.1  mrg (define_expand "mve_vstrhq_scatter_shifted_offset_p_<supf><mode>"
   8179      1.1  mrg   [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory")
   8180      1.1  mrg    (match_operand:MVE_6 1 "s_register_operand")
   8181      1.1  mrg    (match_operand:MVE_6 2 "s_register_operand")
   8182  1.1.1.2  mrg    (match_operand:<MVE_VPRED> 3 "vpr_register_operand")
   8183      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHSSOQ)]
   8184      1.1  mrg   "TARGET_HAVE_MVE"
   8185      1.1  mrg {
   8186      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8187      1.1  mrg   gcc_assert (REG_P (ind));
   8188      1.1  mrg   emit_insn (
   8189      1.1  mrg     gen_mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn (ind, operands[1],
   8190      1.1  mrg 							       operands[2],
   8191      1.1  mrg 							       operands[3]));
   8192      1.1  mrg   DONE;
   8193      1.1  mrg })
   8194      1.1  mrg 
   8195      1.1  mrg (define_insn "mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn"
   8196      1.1  mrg   [(set (mem:BLK (scratch))
   8197      1.1  mrg 	(unspec:BLK
   8198      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8199      1.1  mrg 	   (match_operand:MVE_6 1 "s_register_operand" "w")
   8200      1.1  mrg 	   (match_operand:MVE_6 2 "s_register_operand" "w")
   8201  1.1.1.2  mrg 	   (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
   8202      1.1  mrg 	  VSTRHSSOQ))]
   8203      1.1  mrg   "TARGET_HAVE_MVE"
   8204      1.1  mrg   "vpst\;vstrht.<V_sz_elem>\t%q2, [%0, %q1, uxtw #1]"
   8205      1.1  mrg   [(set_attr "length" "8")])
   8206      1.1  mrg 
   8207      1.1  mrg ;;
   8208      1.1  mrg ;; [vstrhq_scatter_shifted_offset_s vstrhq_scatter_shifted_offset_u]
   8209      1.1  mrg ;;
   8210      1.1  mrg (define_expand "mve_vstrhq_scatter_shifted_offset_<supf><mode>"
   8211      1.1  mrg   [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory")
   8212      1.1  mrg    (match_operand:MVE_6 1 "s_register_operand")
   8213      1.1  mrg    (match_operand:MVE_6 2 "s_register_operand")
   8214      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHSSOQ)]
   8215      1.1  mrg   "TARGET_HAVE_MVE"
   8216      1.1  mrg {
   8217      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8218      1.1  mrg   gcc_assert (REG_P (ind));
   8219      1.1  mrg   emit_insn (
   8220      1.1  mrg     gen_mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn (ind, operands[1],
   8221      1.1  mrg 							     operands[2]));
   8222      1.1  mrg   DONE;
   8223      1.1  mrg })
   8224      1.1  mrg 
   8225      1.1  mrg (define_insn "mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn"
   8226      1.1  mrg   [(set (mem:BLK (scratch))
   8227      1.1  mrg 	(unspec:BLK
   8228      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8229      1.1  mrg 	   (match_operand:MVE_6 1 "s_register_operand" "w")
   8230      1.1  mrg 	   (match_operand:MVE_6 2 "s_register_operand" "w")]
   8231      1.1  mrg 	  VSTRHSSOQ))]
   8232      1.1  mrg   "TARGET_HAVE_MVE"
   8233      1.1  mrg   "vstrh.<V_sz_elem>\t%q2, [%0, %q1, uxtw #1]"
   8234      1.1  mrg   [(set_attr "length" "4")])
   8235      1.1  mrg 
   8236      1.1  mrg ;;
   8237      1.1  mrg ;; [vstrhq_s, vstrhq_u]
   8238      1.1  mrg ;;
   8239      1.1  mrg (define_insn "mve_vstrhq_<supf><mode>"
   8240      1.1  mrg   [(set (match_operand:<MVE_H_ELEM> 0 "mve_memory_operand" "=Ux")
   8241      1.1  mrg 	(unspec:<MVE_H_ELEM> [(match_operand:MVE_6 1 "s_register_operand" "w")]
   8242      1.1  mrg 	 VSTRHQ))
   8243      1.1  mrg   ]
   8244      1.1  mrg   "TARGET_HAVE_MVE"
   8245      1.1  mrg {
   8246      1.1  mrg    rtx ops[2];
   8247      1.1  mrg    int regno = REGNO (operands[1]);
   8248      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8249      1.1  mrg    ops[0]  = operands[0];
   8250      1.1  mrg    output_asm_insn ("vstrh.<V_sz_elem>\t%q1, %E0",ops);
   8251      1.1  mrg    return "";
   8252      1.1  mrg }
   8253      1.1  mrg   [(set_attr "length" "4")])
   8254      1.1  mrg 
   8255      1.1  mrg ;;
   8256      1.1  mrg ;; [vstrwq_f]
   8257      1.1  mrg ;;
   8258      1.1  mrg (define_insn "mve_vstrwq_fv4sf"
   8259  1.1.1.2  mrg   [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
   8260      1.1  mrg 	(unspec:V4SI [(match_operand:V4SF 1 "s_register_operand" "w")]
   8261      1.1  mrg 	 VSTRWQ_F))
   8262      1.1  mrg   ]
   8263      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8264      1.1  mrg {
   8265      1.1  mrg    rtx ops[2];
   8266      1.1  mrg    int regno = REGNO (operands[1]);
   8267      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8268      1.1  mrg    ops[0]  = operands[0];
   8269      1.1  mrg    output_asm_insn ("vstrw.32\t%q1, %E0",ops);
   8270      1.1  mrg    return "";
   8271      1.1  mrg }
   8272      1.1  mrg   [(set_attr "length" "4")])
   8273      1.1  mrg 
   8274      1.1  mrg ;;
   8275      1.1  mrg ;; [vstrwq_p_f]
   8276      1.1  mrg ;;
   8277      1.1  mrg (define_insn "mve_vstrwq_p_fv4sf"
   8278  1.1.1.2  mrg   [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
   8279  1.1.1.2  mrg 	(unspec:V4SI
   8280  1.1.1.2  mrg 	 [(match_operand:V4SF 1 "s_register_operand" "w")
   8281  1.1.1.2  mrg 	  (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")
   8282  1.1.1.2  mrg 	  (match_dup 0)]
   8283  1.1.1.2  mrg 	 VSTRWQ_F))]
   8284      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8285      1.1  mrg {
   8286      1.1  mrg    rtx ops[2];
   8287      1.1  mrg    int regno = REGNO (operands[1]);
   8288      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8289      1.1  mrg    ops[0]  = operands[0];
   8290      1.1  mrg    output_asm_insn ("vpst\;vstrwt.32\t%q1, %E0",ops);
   8291      1.1  mrg    return "";
   8292      1.1  mrg }
   8293      1.1  mrg   [(set_attr "length" "8")])
   8294      1.1  mrg 
   8295      1.1  mrg ;;
   8296      1.1  mrg ;; [vstrwq_p_s vstrwq_p_u]
   8297      1.1  mrg ;;
   8298      1.1  mrg (define_insn "mve_vstrwq_p_<supf>v4si"
   8299  1.1.1.2  mrg   [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
   8300  1.1.1.2  mrg 	(unspec:V4SI
   8301  1.1.1.2  mrg 	 [(match_operand:V4SI 1 "s_register_operand" "w")
   8302  1.1.1.2  mrg 	  (match_operand:V4BI 2 "vpr_register_operand" "Up")
   8303  1.1.1.2  mrg 	  (match_dup 0)]
   8304  1.1.1.2  mrg 	 VSTRWQ))]
   8305      1.1  mrg   "TARGET_HAVE_MVE"
   8306      1.1  mrg {
   8307      1.1  mrg    rtx ops[2];
   8308      1.1  mrg    int regno = REGNO (operands[1]);
   8309      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8310      1.1  mrg    ops[0]  = operands[0];
   8311      1.1  mrg    output_asm_insn ("vpst\;vstrwt.32\t%q1, %E0",ops);
   8312      1.1  mrg    return "";
   8313      1.1  mrg }
   8314      1.1  mrg   [(set_attr "length" "8")])
   8315      1.1  mrg 
   8316      1.1  mrg ;;
   8317      1.1  mrg ;; [vstrwq_s vstrwq_u]
   8318      1.1  mrg ;;
   8319      1.1  mrg (define_insn "mve_vstrwq_<supf>v4si"
   8320  1.1.1.2  mrg   [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
   8321      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")]
   8322      1.1  mrg 	 VSTRWQ))
   8323      1.1  mrg   ]
   8324      1.1  mrg   "TARGET_HAVE_MVE"
   8325      1.1  mrg {
   8326      1.1  mrg    rtx ops[2];
   8327      1.1  mrg    int regno = REGNO (operands[1]);
   8328      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno);
   8329      1.1  mrg    ops[0]  = operands[0];
   8330      1.1  mrg    output_asm_insn ("vstrw.32\t%q1, %E0",ops);
   8331      1.1  mrg    return "";
   8332      1.1  mrg }
   8333      1.1  mrg   [(set_attr "length" "4")])
   8334      1.1  mrg 
   8335      1.1  mrg (define_expand "mve_vst1q_f<mode>"
   8336      1.1  mrg   [(match_operand:<MVE_CNVT> 0 "mve_memory_operand")
   8337      1.1  mrg    (unspec:<MVE_CNVT> [(match_operand:MVE_0 1 "s_register_operand")] VST1Q_F)
   8338      1.1  mrg   ]
   8339      1.1  mrg   "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
   8340      1.1  mrg {
   8341      1.1  mrg   emit_insn (gen_mve_vstr<V_sz_elem1>q_f<mode>(operands[0],operands[1]));
   8342      1.1  mrg   DONE;
   8343      1.1  mrg })
   8344      1.1  mrg 
   8345      1.1  mrg (define_expand "mve_vst1q_<supf><mode>"
   8346      1.1  mrg   [(match_operand:MVE_2 0 "mve_memory_operand")
   8347      1.1  mrg    (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand")] VST1Q)
   8348      1.1  mrg   ]
   8349      1.1  mrg   "TARGET_HAVE_MVE"
   8350      1.1  mrg {
   8351      1.1  mrg   emit_insn (gen_mve_vstr<V_sz_elem1>q_<supf><mode>(operands[0],operands[1]));
   8352      1.1  mrg   DONE;
   8353      1.1  mrg })
   8354      1.1  mrg 
   8355      1.1  mrg ;;
   8356      1.1  mrg ;; [vstrdq_scatter_base_p_s vstrdq_scatter_base_p_u]
   8357      1.1  mrg ;;
   8358      1.1  mrg (define_insn "mve_vstrdq_scatter_base_p_<supf>v2di"
   8359      1.1  mrg   [(set (mem:BLK (scratch))
   8360      1.1  mrg 	(unspec:BLK
   8361      1.1  mrg 		[(match_operand:V2DI 0 "s_register_operand" "w")
   8362      1.1  mrg 		 (match_operand:SI 1 "mve_vldrd_immediate" "Ri")
   8363      1.1  mrg 		 (match_operand:V2DI 2 "s_register_operand" "w")
   8364      1.1  mrg 		 (match_operand:HI 3 "vpr_register_operand" "Up")]
   8365      1.1  mrg 	 VSTRDSBQ))
   8366      1.1  mrg   ]
   8367      1.1  mrg   "TARGET_HAVE_MVE"
   8368      1.1  mrg {
   8369      1.1  mrg    rtx ops[3];
   8370      1.1  mrg    ops[0] = operands[0];
   8371      1.1  mrg    ops[1] = operands[1];
   8372      1.1  mrg    ops[2] = operands[2];
   8373      1.1  mrg    output_asm_insn ("vpst\;\tvstrdt.u64\t%q2, [%q0, %1]",ops);
   8374      1.1  mrg    return "";
   8375      1.1  mrg }
   8376      1.1  mrg   [(set_attr "length" "8")])
   8377      1.1  mrg 
   8378      1.1  mrg ;;
   8379      1.1  mrg ;; [vstrdq_scatter_base_s vstrdq_scatter_base_u]
   8380      1.1  mrg ;;
   8381      1.1  mrg (define_insn "mve_vstrdq_scatter_base_<supf>v2di"
   8382      1.1  mrg   [(set (mem:BLK (scratch))
   8383      1.1  mrg 	(unspec:BLK
   8384      1.1  mrg 		[(match_operand:V2DI 0 "s_register_operand" "=w")
   8385      1.1  mrg 		 (match_operand:SI 1 "mve_vldrd_immediate" "Ri")
   8386      1.1  mrg 		 (match_operand:V2DI 2 "s_register_operand" "w")]
   8387      1.1  mrg 	 VSTRDSBQ))
   8388      1.1  mrg   ]
   8389      1.1  mrg   "TARGET_HAVE_MVE"
   8390      1.1  mrg {
   8391      1.1  mrg    rtx ops[3];
   8392      1.1  mrg    ops[0] = operands[0];
   8393      1.1  mrg    ops[1] = operands[1];
   8394      1.1  mrg    ops[2] = operands[2];
   8395      1.1  mrg    output_asm_insn ("vstrd.u64\t%q2, [%q0, %1]",ops);
   8396      1.1  mrg    return "";
   8397      1.1  mrg }
   8398      1.1  mrg   [(set_attr "length" "4")])
   8399      1.1  mrg 
   8400      1.1  mrg ;;
   8401      1.1  mrg ;; [vstrdq_scatter_offset_p_s vstrdq_scatter_offset_p_u]
   8402      1.1  mrg ;;
   8403      1.1  mrg (define_expand "mve_vstrdq_scatter_offset_p_<supf>v2di"
   8404      1.1  mrg   [(match_operand:V2DI 0 "mve_scatter_memory")
   8405      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   8406      1.1  mrg    (match_operand:V2DI 2 "s_register_operand")
   8407      1.1  mrg    (match_operand:HI 3 "vpr_register_operand")
   8408      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRDSOQ)]
   8409      1.1  mrg   "TARGET_HAVE_MVE"
   8410      1.1  mrg {
   8411      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8412      1.1  mrg   gcc_assert (REG_P (ind));
   8413      1.1  mrg   emit_insn (gen_mve_vstrdq_scatter_offset_p_<supf>v2di_insn (ind, operands[1],
   8414      1.1  mrg 							      operands[2],
   8415      1.1  mrg 							      operands[3]));
   8416      1.1  mrg   DONE;
   8417      1.1  mrg })
   8418      1.1  mrg 
   8419      1.1  mrg (define_insn "mve_vstrdq_scatter_offset_p_<supf>v2di_insn"
   8420      1.1  mrg   [(set (mem:BLK (scratch))
   8421      1.1  mrg 	(unspec:BLK
   8422      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8423      1.1  mrg 	   (match_operand:V2DI 1 "s_register_operand" "w")
   8424      1.1  mrg 	   (match_operand:V2DI 2 "s_register_operand" "w")
   8425      1.1  mrg 	   (match_operand:HI 3 "vpr_register_operand" "Up")]
   8426      1.1  mrg 	  VSTRDSOQ))]
   8427      1.1  mrg   "TARGET_HAVE_MVE"
   8428      1.1  mrg   "vpst\;vstrdt.64\t%q2, [%0, %q1]"
   8429      1.1  mrg   [(set_attr "length" "8")])
   8430      1.1  mrg 
   8431      1.1  mrg ;;
   8432      1.1  mrg ;; [vstrdq_scatter_offset_s vstrdq_scatter_offset_u]
   8433      1.1  mrg ;;
   8434      1.1  mrg (define_expand "mve_vstrdq_scatter_offset_<supf>v2di"
   8435      1.1  mrg   [(match_operand:V2DI 0 "mve_scatter_memory")
   8436      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   8437      1.1  mrg    (match_operand:V2DI 2 "s_register_operand")
   8438      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRDSOQ)]
   8439      1.1  mrg   "TARGET_HAVE_MVE"
   8440      1.1  mrg {
   8441      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8442      1.1  mrg   gcc_assert (REG_P (ind));
   8443      1.1  mrg   emit_insn (gen_mve_vstrdq_scatter_offset_<supf>v2di_insn (ind, operands[1],
   8444      1.1  mrg 							    operands[2]));
   8445      1.1  mrg   DONE;
   8446      1.1  mrg })
   8447      1.1  mrg 
   8448      1.1  mrg (define_insn "mve_vstrdq_scatter_offset_<supf>v2di_insn"
   8449      1.1  mrg   [(set (mem:BLK (scratch))
   8450      1.1  mrg 	(unspec:BLK
   8451      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8452      1.1  mrg 	   (match_operand:V2DI 1 "s_register_operand" "w")
   8453      1.1  mrg 	   (match_operand:V2DI 2 "s_register_operand" "w")]
   8454      1.1  mrg 	  VSTRDSOQ))]
   8455      1.1  mrg   "TARGET_HAVE_MVE"
   8456      1.1  mrg   "vstrd.64\t%q2, [%0, %q1]"
   8457      1.1  mrg   [(set_attr "length" "4")])
   8458      1.1  mrg 
   8459      1.1  mrg ;;
   8460      1.1  mrg ;; [vstrdq_scatter_shifted_offset_p_s vstrdq_scatter_shifted_offset_p_u]
   8461      1.1  mrg ;;
   8462      1.1  mrg (define_expand "mve_vstrdq_scatter_shifted_offset_p_<supf>v2di"
   8463      1.1  mrg   [(match_operand:V2DI 0 "mve_scatter_memory")
   8464      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   8465      1.1  mrg    (match_operand:V2DI 2 "s_register_operand")
   8466      1.1  mrg    (match_operand:HI 3 "vpr_register_operand")
   8467      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRDSSOQ)]
   8468      1.1  mrg   "TARGET_HAVE_MVE"
   8469      1.1  mrg {
   8470      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8471      1.1  mrg   gcc_assert (REG_P (ind));
   8472      1.1  mrg   emit_insn (
   8473      1.1  mrg     gen_mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn (ind, operands[1],
   8474      1.1  mrg 							     operands[2],
   8475      1.1  mrg 							     operands[3]));
   8476      1.1  mrg   DONE;
   8477      1.1  mrg })
   8478      1.1  mrg 
   8479      1.1  mrg (define_insn "mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn"
   8480      1.1  mrg   [(set (mem:BLK (scratch))
   8481      1.1  mrg 	(unspec:BLK
   8482      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8483      1.1  mrg 	   (match_operand:V2DI 1 "s_register_operand" "w")
   8484      1.1  mrg 	   (match_operand:V2DI 2 "s_register_operand" "w")
   8485      1.1  mrg 	   (match_operand:HI 3 "vpr_register_operand" "Up")]
   8486      1.1  mrg 	  VSTRDSSOQ))]
   8487      1.1  mrg   "TARGET_HAVE_MVE"
   8488  1.1.1.2  mrg   "vpst\;vstrdt.64\t%q2, [%0, %q1, uxtw #3]"
   8489      1.1  mrg   [(set_attr "length" "8")])
   8490      1.1  mrg 
   8491      1.1  mrg ;;
   8492      1.1  mrg ;; [vstrdq_scatter_shifted_offset_s vstrdq_scatter_shifted_offset_u]
   8493      1.1  mrg ;;
   8494      1.1  mrg (define_expand "mve_vstrdq_scatter_shifted_offset_<supf>v2di"
   8495      1.1  mrg   [(match_operand:V2DI 0 "mve_scatter_memory")
   8496      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   8497      1.1  mrg    (match_operand:V2DI 2 "s_register_operand")
   8498      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRDSSOQ)]
   8499      1.1  mrg   "TARGET_HAVE_MVE"
   8500      1.1  mrg {
   8501      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8502      1.1  mrg   gcc_assert (REG_P (ind));
   8503      1.1  mrg   emit_insn (
   8504      1.1  mrg     gen_mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn (ind, operands[1],
   8505      1.1  mrg 							   operands[2]));
   8506      1.1  mrg   DONE;
   8507      1.1  mrg })
   8508      1.1  mrg 
   8509      1.1  mrg (define_insn "mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn"
   8510      1.1  mrg   [(set (mem:BLK (scratch))
   8511      1.1  mrg 	(unspec:BLK
   8512      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8513      1.1  mrg 	   (match_operand:V2DI 1 "s_register_operand" "w")
   8514      1.1  mrg 	   (match_operand:V2DI 2 "s_register_operand" "w")]
   8515      1.1  mrg 	  VSTRDSSOQ))]
   8516      1.1  mrg   "TARGET_HAVE_MVE"
   8517  1.1.1.2  mrg   "vstrd.64\t%q2, [%0, %q1, uxtw #3]"
   8518      1.1  mrg   [(set_attr "length" "4")])
   8519      1.1  mrg 
   8520      1.1  mrg ;;
   8521      1.1  mrg ;; [vstrhq_scatter_offset_f]
   8522      1.1  mrg ;;
   8523      1.1  mrg (define_expand "mve_vstrhq_scatter_offset_fv8hf"
   8524      1.1  mrg   [(match_operand:V8HI 0 "mve_scatter_memory")
   8525      1.1  mrg    (match_operand:V8HI 1 "s_register_operand")
   8526      1.1  mrg    (match_operand:V8HF 2 "s_register_operand")
   8527      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHQSO_F)]
   8528      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8529      1.1  mrg {
   8530      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8531      1.1  mrg   gcc_assert (REG_P (ind));
   8532      1.1  mrg   emit_insn (gen_mve_vstrhq_scatter_offset_fv8hf_insn (ind, operands[1],
   8533      1.1  mrg 						       operands[2]));
   8534      1.1  mrg   DONE;
   8535      1.1  mrg })
   8536      1.1  mrg 
   8537      1.1  mrg (define_insn "mve_vstrhq_scatter_offset_fv8hf_insn"
   8538      1.1  mrg   [(set (mem:BLK (scratch))
   8539      1.1  mrg 	(unspec:BLK
   8540      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8541      1.1  mrg 	   (match_operand:V8HI 1 "s_register_operand" "w")
   8542      1.1  mrg 	   (match_operand:V8HF 2 "s_register_operand" "w")]
   8543      1.1  mrg 	  VSTRHQSO_F))]
   8544      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8545      1.1  mrg   "vstrh.16\t%q2, [%0, %q1]"
   8546      1.1  mrg   [(set_attr "length" "4")])
   8547      1.1  mrg 
   8548      1.1  mrg ;;
   8549      1.1  mrg ;; [vstrhq_scatter_offset_p_f]
   8550      1.1  mrg ;;
   8551      1.1  mrg (define_expand "mve_vstrhq_scatter_offset_p_fv8hf"
   8552      1.1  mrg   [(match_operand:V8HI 0 "mve_scatter_memory")
   8553      1.1  mrg    (match_operand:V8HI 1 "s_register_operand")
   8554      1.1  mrg    (match_operand:V8HF 2 "s_register_operand")
   8555  1.1.1.2  mrg    (match_operand:V8BI 3 "vpr_register_operand")
   8556      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHQSO_F)]
   8557      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8558      1.1  mrg {
   8559      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8560      1.1  mrg   gcc_assert (REG_P (ind));
   8561      1.1  mrg   emit_insn (gen_mve_vstrhq_scatter_offset_p_fv8hf_insn (ind, operands[1],
   8562      1.1  mrg 							 operands[2],
   8563      1.1  mrg 							 operands[3]));
   8564      1.1  mrg   DONE;
   8565      1.1  mrg })
   8566      1.1  mrg 
   8567      1.1  mrg (define_insn "mve_vstrhq_scatter_offset_p_fv8hf_insn"
   8568      1.1  mrg   [(set (mem:BLK (scratch))
   8569      1.1  mrg 	(unspec:BLK
   8570      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8571      1.1  mrg 	   (match_operand:V8HI 1 "s_register_operand" "w")
   8572      1.1  mrg 	   (match_operand:V8HF 2 "s_register_operand" "w")
   8573  1.1.1.2  mrg 	   (match_operand:V8BI 3 "vpr_register_operand" "Up")]
   8574      1.1  mrg 	  VSTRHQSO_F))]
   8575      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8576      1.1  mrg   "vpst\;vstrht.16\t%q2, [%0, %q1]"
   8577      1.1  mrg   [(set_attr "length" "8")])
   8578      1.1  mrg 
   8579      1.1  mrg ;;
   8580      1.1  mrg ;; [vstrhq_scatter_shifted_offset_f]
   8581      1.1  mrg ;;
   8582      1.1  mrg (define_expand "mve_vstrhq_scatter_shifted_offset_fv8hf"
   8583      1.1  mrg   [(match_operand:V8HI 0 "memory_operand" "=Us")
   8584      1.1  mrg    (match_operand:V8HI 1 "s_register_operand" "w")
   8585      1.1  mrg    (match_operand:V8HF 2 "s_register_operand" "w")
   8586      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHQSSO_F)]
   8587      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8588      1.1  mrg {
   8589      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8590      1.1  mrg   gcc_assert (REG_P (ind));
   8591      1.1  mrg   emit_insn (gen_mve_vstrhq_scatter_shifted_offset_fv8hf_insn (ind, operands[1],
   8592      1.1  mrg 							       operands[2]));
   8593      1.1  mrg   DONE;
   8594      1.1  mrg })
   8595      1.1  mrg 
   8596      1.1  mrg (define_insn "mve_vstrhq_scatter_shifted_offset_fv8hf_insn"
   8597      1.1  mrg   [(set (mem:BLK (scratch))
   8598      1.1  mrg 	(unspec:BLK
   8599      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8600      1.1  mrg 	   (match_operand:V8HI 1 "s_register_operand" "w")
   8601      1.1  mrg 	   (match_operand:V8HF 2 "s_register_operand" "w")]
   8602      1.1  mrg 	  VSTRHQSSO_F))]
   8603      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8604      1.1  mrg   "vstrh.16\t%q2, [%0, %q1, uxtw #1]"
   8605      1.1  mrg   [(set_attr "length" "4")])
   8606      1.1  mrg 
   8607      1.1  mrg ;;
   8608      1.1  mrg ;; [vstrhq_scatter_shifted_offset_p_f]
   8609      1.1  mrg ;;
   8610      1.1  mrg (define_expand "mve_vstrhq_scatter_shifted_offset_p_fv8hf"
   8611      1.1  mrg   [(match_operand:V8HI 0 "memory_operand" "=Us")
   8612      1.1  mrg    (match_operand:V8HI 1 "s_register_operand" "w")
   8613      1.1  mrg    (match_operand:V8HF 2 "s_register_operand" "w")
   8614  1.1.1.2  mrg    (match_operand:V8BI 3 "vpr_register_operand" "Up")
   8615      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRHQSSO_F)]
   8616      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8617      1.1  mrg {
   8618      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8619      1.1  mrg   gcc_assert (REG_P (ind));
   8620      1.1  mrg   emit_insn (
   8621      1.1  mrg     gen_mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn (ind, operands[1],
   8622      1.1  mrg 							operands[2],
   8623      1.1  mrg 							operands[3]));
   8624      1.1  mrg   DONE;
   8625      1.1  mrg })
   8626      1.1  mrg 
   8627      1.1  mrg (define_insn "mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn"
   8628      1.1  mrg   [(set (mem:BLK (scratch))
   8629      1.1  mrg 	(unspec:BLK
   8630      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8631      1.1  mrg 	   (match_operand:V8HI 1 "s_register_operand" "w")
   8632      1.1  mrg 	   (match_operand:V8HF 2 "s_register_operand" "w")
   8633  1.1.1.2  mrg 	   (match_operand:V8BI 3 "vpr_register_operand" "Up")]
   8634      1.1  mrg 	  VSTRHQSSO_F))]
   8635      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8636      1.1  mrg   "vpst\;vstrht.16\t%q2, [%0, %q1, uxtw #1]"
   8637      1.1  mrg   [(set_attr "length" "8")])
   8638      1.1  mrg 
   8639      1.1  mrg ;;
   8640      1.1  mrg ;; [vstrwq_scatter_base_f]
   8641      1.1  mrg ;;
   8642      1.1  mrg (define_insn "mve_vstrwq_scatter_base_fv4sf"
   8643      1.1  mrg   [(set (mem:BLK (scratch))
   8644      1.1  mrg 	(unspec:BLK
   8645      1.1  mrg 		[(match_operand:V4SI 0 "s_register_operand" "w")
   8646      1.1  mrg 		 (match_operand:SI 1 "immediate_operand" "i")
   8647      1.1  mrg 		 (match_operand:V4SF 2 "s_register_operand" "w")]
   8648      1.1  mrg 	 VSTRWQSB_F))
   8649      1.1  mrg   ]
   8650      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8651      1.1  mrg {
   8652      1.1  mrg    rtx ops[3];
   8653      1.1  mrg    ops[0] = operands[0];
   8654      1.1  mrg    ops[1] = operands[1];
   8655      1.1  mrg    ops[2] = operands[2];
   8656      1.1  mrg    output_asm_insn ("vstrw.u32\t%q2, [%q0, %1]",ops);
   8657      1.1  mrg    return "";
   8658      1.1  mrg }
   8659      1.1  mrg   [(set_attr "length" "4")])
   8660      1.1  mrg 
   8661      1.1  mrg ;;
   8662      1.1  mrg ;; [vstrwq_scatter_base_p_f]
   8663      1.1  mrg ;;
   8664      1.1  mrg (define_insn "mve_vstrwq_scatter_base_p_fv4sf"
   8665      1.1  mrg   [(set (mem:BLK (scratch))
   8666      1.1  mrg 	(unspec:BLK
   8667      1.1  mrg 		[(match_operand:V4SI 0 "s_register_operand" "w")
   8668      1.1  mrg 		 (match_operand:SI 1 "immediate_operand" "i")
   8669      1.1  mrg 		 (match_operand:V4SF 2 "s_register_operand" "w")
   8670  1.1.1.2  mrg 		 (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8671      1.1  mrg 	 VSTRWQSB_F))
   8672      1.1  mrg   ]
   8673      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8674      1.1  mrg {
   8675      1.1  mrg    rtx ops[3];
   8676      1.1  mrg    ops[0] = operands[0];
   8677      1.1  mrg    ops[1] = operands[1];
   8678      1.1  mrg    ops[2] = operands[2];
   8679      1.1  mrg    output_asm_insn ("vpst\n\tvstrwt.u32\t%q2, [%q0, %1]",ops);
   8680      1.1  mrg    return "";
   8681      1.1  mrg }
   8682      1.1  mrg   [(set_attr "length" "8")])
   8683      1.1  mrg 
   8684      1.1  mrg ;;
   8685      1.1  mrg ;; [vstrwq_scatter_offset_f]
   8686      1.1  mrg ;;
   8687      1.1  mrg (define_expand "mve_vstrwq_scatter_offset_fv4sf"
   8688      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8689      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8690      1.1  mrg    (match_operand:V4SF 2 "s_register_operand")
   8691      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWQSO_F)]
   8692      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8693      1.1  mrg {
   8694      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8695      1.1  mrg   gcc_assert (REG_P (ind));
   8696      1.1  mrg   emit_insn (gen_mve_vstrwq_scatter_offset_fv4sf_insn (ind, operands[1],
   8697      1.1  mrg 						       operands[2]));
   8698      1.1  mrg   DONE;
   8699      1.1  mrg })
   8700      1.1  mrg 
   8701      1.1  mrg (define_insn "mve_vstrwq_scatter_offset_fv4sf_insn"
   8702      1.1  mrg   [(set (mem:BLK (scratch))
   8703      1.1  mrg 	(unspec:BLK
   8704      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8705      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8706      1.1  mrg 	   (match_operand:V4SF 2 "s_register_operand" "w")]
   8707      1.1  mrg 	  VSTRWQSO_F))]
   8708      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8709      1.1  mrg   "vstrw.32\t%q2, [%0, %q1]"
   8710      1.1  mrg   [(set_attr "length" "4")])
   8711      1.1  mrg 
   8712      1.1  mrg ;;
   8713      1.1  mrg ;; [vstrwq_scatter_offset_p_f]
   8714      1.1  mrg ;;
   8715      1.1  mrg (define_expand "mve_vstrwq_scatter_offset_p_fv4sf"
   8716      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8717      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8718      1.1  mrg    (match_operand:V4SF 2 "s_register_operand")
   8719  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   8720      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWQSO_F)]
   8721      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8722      1.1  mrg {
   8723      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8724      1.1  mrg   gcc_assert (REG_P (ind));
   8725      1.1  mrg   emit_insn (gen_mve_vstrwq_scatter_offset_p_fv4sf_insn (ind, operands[1],
   8726      1.1  mrg 							 operands[2],
   8727      1.1  mrg 							 operands[3]));
   8728      1.1  mrg   DONE;
   8729      1.1  mrg })
   8730      1.1  mrg 
   8731      1.1  mrg (define_insn "mve_vstrwq_scatter_offset_p_fv4sf_insn"
   8732      1.1  mrg   [(set (mem:BLK (scratch))
   8733      1.1  mrg 	(unspec:BLK
   8734      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8735      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8736      1.1  mrg 	   (match_operand:V4SF 2 "s_register_operand" "w")
   8737  1.1.1.2  mrg 	   (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8738      1.1  mrg 	  VSTRWQSO_F))]
   8739      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8740      1.1  mrg   "vpst\;vstrwt.32\t%q2, [%0, %q1]"
   8741      1.1  mrg   [(set_attr "length" "8")])
   8742      1.1  mrg 
   8743      1.1  mrg ;;
   8744      1.1  mrg ;; [vstrwq_scatter_offset_s vstrwq_scatter_offset_u]
   8745      1.1  mrg ;;
   8746      1.1  mrg (define_expand "mve_vstrwq_scatter_offset_p_<supf>v4si"
   8747      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8748      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8749      1.1  mrg    (match_operand:V4SI 2 "s_register_operand")
   8750  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   8751      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWSOQ)]
   8752      1.1  mrg   "TARGET_HAVE_MVE"
   8753      1.1  mrg {
   8754      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8755      1.1  mrg   gcc_assert (REG_P (ind));
   8756      1.1  mrg   emit_insn (gen_mve_vstrwq_scatter_offset_p_<supf>v4si_insn (ind, operands[1],
   8757      1.1  mrg 							      operands[2],
   8758      1.1  mrg 							      operands[3]));
   8759      1.1  mrg   DONE;
   8760      1.1  mrg })
   8761      1.1  mrg 
   8762      1.1  mrg (define_insn "mve_vstrwq_scatter_offset_p_<supf>v4si_insn"
   8763      1.1  mrg   [(set (mem:BLK (scratch))
   8764      1.1  mrg 	(unspec:BLK
   8765      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8766      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8767      1.1  mrg 	   (match_operand:V4SI 2 "s_register_operand" "w")
   8768  1.1.1.2  mrg 	   (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8769      1.1  mrg 	  VSTRWSOQ))]
   8770      1.1  mrg   "TARGET_HAVE_MVE"
   8771      1.1  mrg   "vpst\;vstrwt.32\t%q2, [%0, %q1]"
   8772      1.1  mrg   [(set_attr "length" "8")])
   8773      1.1  mrg 
   8774      1.1  mrg ;;
   8775      1.1  mrg ;; [vstrwq_scatter_offset_s vstrwq_scatter_offset_u]
   8776      1.1  mrg ;;
   8777      1.1  mrg (define_expand "mve_vstrwq_scatter_offset_<supf>v4si"
   8778      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8779      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8780      1.1  mrg    (match_operand:V4SI 2 "s_register_operand")
   8781      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWSOQ)]
   8782      1.1  mrg   "TARGET_HAVE_MVE"
   8783      1.1  mrg {
   8784      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8785      1.1  mrg   gcc_assert (REG_P (ind));
   8786      1.1  mrg   emit_insn (gen_mve_vstrwq_scatter_offset_<supf>v4si_insn (ind, operands[1],
   8787      1.1  mrg 							    operands[2]));
   8788      1.1  mrg   DONE;
   8789      1.1  mrg })
   8790      1.1  mrg 
   8791      1.1  mrg (define_insn "mve_vstrwq_scatter_offset_<supf>v4si_insn"
   8792      1.1  mrg   [(set (mem:BLK (scratch))
   8793      1.1  mrg 	(unspec:BLK
   8794      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8795      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8796      1.1  mrg 	   (match_operand:V4SI 2 "s_register_operand" "w")]
   8797      1.1  mrg 	  VSTRWSOQ))]
   8798      1.1  mrg   "TARGET_HAVE_MVE"
   8799      1.1  mrg   "vstrw.32\t%q2, [%0, %q1]"
   8800      1.1  mrg   [(set_attr "length" "4")])
   8801      1.1  mrg 
   8802      1.1  mrg ;;
   8803      1.1  mrg ;; [vstrwq_scatter_shifted_offset_f]
   8804      1.1  mrg ;;
   8805      1.1  mrg (define_expand "mve_vstrwq_scatter_shifted_offset_fv4sf"
   8806      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8807      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8808      1.1  mrg    (match_operand:V4SF 2 "s_register_operand")
   8809      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWQSSO_F)]
   8810      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8811      1.1  mrg {
   8812      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8813      1.1  mrg   gcc_assert (REG_P (ind));
   8814      1.1  mrg   emit_insn (gen_mve_vstrwq_scatter_shifted_offset_fv4sf_insn (ind, operands[1],
   8815      1.1  mrg 							       operands[2]));
   8816      1.1  mrg   DONE;
   8817      1.1  mrg })
   8818      1.1  mrg 
   8819      1.1  mrg (define_insn "mve_vstrwq_scatter_shifted_offset_fv4sf_insn"
   8820      1.1  mrg   [(set (mem:BLK (scratch))
   8821      1.1  mrg 	(unspec:BLK
   8822      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8823      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8824      1.1  mrg 	   (match_operand:V4SF 2 "s_register_operand" "w")]
   8825      1.1  mrg 	 VSTRWQSSO_F))]
   8826      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8827      1.1  mrg   "vstrw.32\t%q2, [%0, %q1, uxtw #2]"
   8828      1.1  mrg   [(set_attr "length" "8")])
   8829      1.1  mrg 
   8830      1.1  mrg ;;
   8831      1.1  mrg ;; [vstrwq_scatter_shifted_offset_p_f]
   8832      1.1  mrg ;;
   8833      1.1  mrg (define_expand "mve_vstrwq_scatter_shifted_offset_p_fv4sf"
   8834      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8835      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8836      1.1  mrg    (match_operand:V4SF 2 "s_register_operand")
   8837  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   8838      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWQSSO_F)]
   8839      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8840      1.1  mrg {
   8841      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8842      1.1  mrg   gcc_assert (REG_P (ind));
   8843      1.1  mrg   emit_insn (
   8844      1.1  mrg     gen_mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn (ind, operands[1],
   8845      1.1  mrg 							operands[2],
   8846      1.1  mrg 							operands[3]));
   8847      1.1  mrg   DONE;
   8848      1.1  mrg })
   8849      1.1  mrg 
   8850      1.1  mrg (define_insn "mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn"
   8851      1.1  mrg   [(set (mem:BLK (scratch))
   8852      1.1  mrg 	(unspec:BLK
   8853      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8854      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8855      1.1  mrg 	   (match_operand:V4SF 2 "s_register_operand" "w")
   8856  1.1.1.2  mrg 	   (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8857      1.1  mrg 	  VSTRWQSSO_F))]
   8858      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8859      1.1  mrg   "vpst\;vstrwt.32\t%q2, [%0, %q1, uxtw #2]"
   8860      1.1  mrg   [(set_attr "length" "8")])
   8861      1.1  mrg 
   8862      1.1  mrg ;;
   8863      1.1  mrg ;; [vstrwq_scatter_shifted_offset_p_s vstrwq_scatter_shifted_offset_p_u]
   8864      1.1  mrg ;;
   8865      1.1  mrg (define_expand "mve_vstrwq_scatter_shifted_offset_p_<supf>v4si"
   8866      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8867      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8868      1.1  mrg    (match_operand:V4SI 2 "s_register_operand")
   8869  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   8870      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWSSOQ)]
   8871      1.1  mrg   "TARGET_HAVE_MVE"
   8872      1.1  mrg {
   8873      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8874      1.1  mrg   gcc_assert (REG_P (ind));
   8875      1.1  mrg   emit_insn (
   8876      1.1  mrg     gen_mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn (ind, operands[1],
   8877      1.1  mrg 							     operands[2],
   8878      1.1  mrg 							     operands[3]));
   8879      1.1  mrg   DONE;
   8880      1.1  mrg })
   8881      1.1  mrg 
   8882      1.1  mrg (define_insn "mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn"
   8883      1.1  mrg   [(set (mem:BLK (scratch))
   8884      1.1  mrg 	(unspec:BLK
   8885      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8886      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8887      1.1  mrg 	   (match_operand:V4SI 2 "s_register_operand" "w")
   8888  1.1.1.2  mrg 	   (match_operand:V4BI 3 "vpr_register_operand" "Up")]
   8889      1.1  mrg 	  VSTRWSSOQ))]
   8890      1.1  mrg   "TARGET_HAVE_MVE"
   8891      1.1  mrg   "vpst\;vstrwt.32\t%q2, [%0, %q1, uxtw #2]"
   8892      1.1  mrg   [(set_attr "length" "8")])
   8893      1.1  mrg 
   8894      1.1  mrg ;;
   8895      1.1  mrg ;; [vstrwq_scatter_shifted_offset_s vstrwq_scatter_shifted_offset_u]
   8896      1.1  mrg ;;
   8897      1.1  mrg (define_expand "mve_vstrwq_scatter_shifted_offset_<supf>v4si"
   8898      1.1  mrg   [(match_operand:V4SI 0 "mve_scatter_memory")
   8899      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   8900      1.1  mrg    (match_operand:V4SI 2 "s_register_operand")
   8901      1.1  mrg    (unspec:V4SI [(const_int 0)] VSTRWSSOQ)]
   8902      1.1  mrg   "TARGET_HAVE_MVE"
   8903      1.1  mrg {
   8904      1.1  mrg   rtx ind = XEXP (operands[0], 0);
   8905      1.1  mrg   gcc_assert (REG_P (ind));
   8906      1.1  mrg   emit_insn (
   8907      1.1  mrg     gen_mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn (ind, operands[1],
   8908      1.1  mrg 							   operands[2]));
   8909      1.1  mrg   DONE;
   8910      1.1  mrg })
   8911      1.1  mrg 
   8912      1.1  mrg (define_insn "mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn"
   8913      1.1  mrg   [(set (mem:BLK (scratch))
   8914      1.1  mrg 	(unspec:BLK
   8915      1.1  mrg 	  [(match_operand:SI 0 "register_operand" "r")
   8916      1.1  mrg 	   (match_operand:V4SI 1 "s_register_operand" "w")
   8917      1.1  mrg 	   (match_operand:V4SI 2 "s_register_operand" "w")]
   8918      1.1  mrg 	  VSTRWSSOQ))]
   8919      1.1  mrg   "TARGET_HAVE_MVE"
   8920      1.1  mrg   "vstrw.32\t%q2, [%0, %q1, uxtw #2]"
   8921      1.1  mrg   [(set_attr "length" "4")])
   8922      1.1  mrg 
   8923      1.1  mrg ;;
   8924      1.1  mrg ;; [vaddq_s, vaddq_u])
   8925      1.1  mrg ;;
   8926      1.1  mrg (define_insn "mve_vaddq<mode>"
   8927      1.1  mrg   [
   8928      1.1  mrg    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
   8929      1.1  mrg 	(plus:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")
   8930      1.1  mrg 		    (match_operand:MVE_2 2 "s_register_operand" "w")))
   8931      1.1  mrg   ]
   8932      1.1  mrg   "TARGET_HAVE_MVE"
   8933  1.1.1.2  mrg   "vadd.i%#<V_sz_elem>\t%q0, %q1, %q2"
   8934      1.1  mrg   [(set_attr "type" "mve_move")
   8935      1.1  mrg ])
   8936      1.1  mrg 
   8937      1.1  mrg ;;
   8938      1.1  mrg ;; [vaddq_f])
   8939      1.1  mrg ;;
   8940      1.1  mrg (define_insn "mve_vaddq_f<mode>"
   8941      1.1  mrg   [
   8942      1.1  mrg    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
   8943      1.1  mrg 	(plus:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")
   8944      1.1  mrg 		    (match_operand:MVE_0 2 "s_register_operand" "w")))
   8945      1.1  mrg   ]
   8946      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   8947  1.1.1.2  mrg   "vadd.f%#<V_sz_elem>\t%q0, %q1, %q2"
   8948      1.1  mrg   [(set_attr "type" "mve_move")
   8949      1.1  mrg ])
   8950      1.1  mrg 
   8951      1.1  mrg ;;
   8952      1.1  mrg ;; [vidupq_n_u])
   8953      1.1  mrg ;;
   8954      1.1  mrg (define_expand "mve_vidupq_n_u<mode>"
   8955      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   8956      1.1  mrg   (match_operand:SI 1 "s_register_operand")
   8957      1.1  mrg   (match_operand:SI 2 "mve_imm_selective_upto_8")]
   8958      1.1  mrg  "TARGET_HAVE_MVE"
   8959      1.1  mrg {
   8960      1.1  mrg   rtx temp = gen_reg_rtx (SImode);
   8961      1.1  mrg   emit_move_insn (temp, operands[1]);
   8962      1.1  mrg   rtx inc = gen_int_mode (INTVAL(operands[2]) * <MVE_LANES>, SImode);
   8963      1.1  mrg   emit_insn (gen_mve_vidupq_u<mode>_insn (operands[0], temp, operands[1],
   8964      1.1  mrg 					  operands[2], inc));
   8965      1.1  mrg   DONE;
   8966      1.1  mrg })
   8967      1.1  mrg 
   8968      1.1  mrg ;;
   8969      1.1  mrg ;; [vidupq_u_insn])
   8970      1.1  mrg ;;
   8971      1.1  mrg (define_insn "mve_vidupq_u<mode>_insn"
   8972      1.1  mrg  [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   8973      1.1  mrg        (unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1")
   8974      1.1  mrg 		      (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg")]
   8975      1.1  mrg 	 VIDUPQ))
   8976      1.1  mrg   (set (match_operand:SI 1 "s_register_operand" "=Te")
   8977      1.1  mrg        (plus:SI (match_dup 2)
   8978      1.1  mrg 		(match_operand:SI 4 "immediate_operand" "i")))]
   8979      1.1  mrg  "TARGET_HAVE_MVE"
   8980      1.1  mrg  "vidup.u%#<V_sz_elem>\t%q0, %1, %3")
   8981      1.1  mrg 
   8982      1.1  mrg ;;
   8983      1.1  mrg ;; [vidupq_m_n_u])
   8984      1.1  mrg ;;
   8985      1.1  mrg (define_expand "mve_vidupq_m_n_u<mode>"
   8986      1.1  mrg   [(match_operand:MVE_2 0 "s_register_operand")
   8987      1.1  mrg    (match_operand:MVE_2 1 "s_register_operand")
   8988      1.1  mrg    (match_operand:SI 2 "s_register_operand")
   8989      1.1  mrg    (match_operand:SI 3 "mve_imm_selective_upto_8")
   8990  1.1.1.2  mrg    (match_operand:<MVE_VPRED> 4 "vpr_register_operand")]
   8991      1.1  mrg   "TARGET_HAVE_MVE"
   8992      1.1  mrg {
   8993      1.1  mrg   rtx temp = gen_reg_rtx (SImode);
   8994      1.1  mrg   emit_move_insn (temp, operands[2]);
   8995      1.1  mrg   rtx inc = gen_int_mode (INTVAL(operands[3]) * <MVE_LANES>, SImode);
   8996      1.1  mrg   emit_insn (gen_mve_vidupq_m_wb_u<mode>_insn(operands[0], operands[1], temp,
   8997      1.1  mrg 					     operands[2], operands[3],
   8998      1.1  mrg 					     operands[4], inc));
   8999      1.1  mrg   DONE;
   9000      1.1  mrg })
   9001      1.1  mrg 
   9002      1.1  mrg ;;
   9003      1.1  mrg ;; [vidupq_m_wb_u_insn])
   9004      1.1  mrg ;;
   9005      1.1  mrg (define_insn "mve_vidupq_m_wb_u<mode>_insn"
   9006      1.1  mrg  [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9007      1.1  mrg        (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   9008      1.1  mrg 		      (match_operand:SI 3 "s_register_operand" "2")
   9009      1.1  mrg 		      (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg")
   9010  1.1.1.2  mrg 		      (match_operand:<MVE_VPRED> 5 "vpr_register_operand" "Up")]
   9011      1.1  mrg 	VIDUPQ_M))
   9012      1.1  mrg   (set (match_operand:SI 2 "s_register_operand" "=Te")
   9013      1.1  mrg        (plus:SI (match_dup 3)
   9014      1.1  mrg 		(match_operand:SI 6 "immediate_operand" "i")))]
   9015      1.1  mrg  "TARGET_HAVE_MVE"
   9016      1.1  mrg  "vpst\;\tvidupt.u%#<V_sz_elem>\t%q0, %2, %4"
   9017      1.1  mrg  [(set_attr "length""8")])
   9018      1.1  mrg 
   9019      1.1  mrg ;;
   9020      1.1  mrg ;; [vddupq_n_u])
   9021      1.1  mrg ;;
   9022      1.1  mrg (define_expand "mve_vddupq_n_u<mode>"
   9023      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   9024      1.1  mrg   (match_operand:SI 1 "s_register_operand")
   9025      1.1  mrg   (match_operand:SI 2 "mve_imm_selective_upto_8")]
   9026      1.1  mrg  "TARGET_HAVE_MVE"
   9027      1.1  mrg {
   9028      1.1  mrg   rtx temp = gen_reg_rtx (SImode);
   9029      1.1  mrg   emit_move_insn (temp, operands[1]);
   9030      1.1  mrg   rtx inc = gen_int_mode (INTVAL(operands[2]) * <MVE_LANES>, SImode);
   9031      1.1  mrg   emit_insn (gen_mve_vddupq_u<mode>_insn (operands[0], temp, operands[1],
   9032      1.1  mrg 					  operands[2], inc));
   9033      1.1  mrg   DONE;
   9034      1.1  mrg })
   9035      1.1  mrg 
   9036      1.1  mrg ;;
   9037      1.1  mrg ;; [vddupq_u_insn])
   9038      1.1  mrg ;;
   9039      1.1  mrg (define_insn "mve_vddupq_u<mode>_insn"
   9040      1.1  mrg  [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9041      1.1  mrg        (unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1")
   9042      1.1  mrg 		      (match_operand:SI 3 "immediate_operand" "i")]
   9043      1.1  mrg 	VDDUPQ))
   9044      1.1  mrg   (set (match_operand:SI 1 "s_register_operand" "=Te")
   9045      1.1  mrg        (minus:SI (match_dup 2)
   9046      1.1  mrg 		 (match_operand:SI 4 "immediate_operand" "i")))]
   9047      1.1  mrg  "TARGET_HAVE_MVE"
   9048  1.1.1.2  mrg  "vddup.u%#<V_sz_elem>\t%q0, %1, %3")
   9049      1.1  mrg 
   9050      1.1  mrg ;;
   9051      1.1  mrg ;; [vddupq_m_n_u])
   9052      1.1  mrg ;;
   9053      1.1  mrg (define_expand "mve_vddupq_m_n_u<mode>"
   9054      1.1  mrg   [(match_operand:MVE_2 0 "s_register_operand")
   9055      1.1  mrg    (match_operand:MVE_2 1 "s_register_operand")
   9056      1.1  mrg    (match_operand:SI 2 "s_register_operand")
   9057      1.1  mrg    (match_operand:SI 3 "mve_imm_selective_upto_8")
   9058  1.1.1.2  mrg    (match_operand:<MVE_VPRED> 4 "vpr_register_operand")]
   9059      1.1  mrg   "TARGET_HAVE_MVE"
   9060      1.1  mrg {
   9061      1.1  mrg   rtx temp = gen_reg_rtx (SImode);
   9062      1.1  mrg   emit_move_insn (temp, operands[2]);
   9063      1.1  mrg   rtx inc = gen_int_mode (INTVAL(operands[3]) * <MVE_LANES>, SImode);
   9064      1.1  mrg   emit_insn (gen_mve_vddupq_m_wb_u<mode>_insn(operands[0], operands[1], temp,
   9065      1.1  mrg 					     operands[2], operands[3],
   9066      1.1  mrg 					     operands[4], inc));
   9067      1.1  mrg   DONE;
   9068      1.1  mrg })
   9069      1.1  mrg 
   9070      1.1  mrg ;;
   9071      1.1  mrg ;; [vddupq_m_wb_u_insn])
   9072      1.1  mrg ;;
   9073      1.1  mrg (define_insn "mve_vddupq_m_wb_u<mode>_insn"
   9074      1.1  mrg  [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9075      1.1  mrg        (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
   9076      1.1  mrg 		      (match_operand:SI 3 "s_register_operand" "2")
   9077      1.1  mrg 		      (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg")
   9078  1.1.1.2  mrg 		      (match_operand:<MVE_VPRED> 5 "vpr_register_operand" "Up")]
   9079      1.1  mrg 	VDDUPQ_M))
   9080      1.1  mrg   (set (match_operand:SI 2 "s_register_operand" "=Te")
   9081      1.1  mrg        (minus:SI (match_dup 3)
   9082      1.1  mrg 		 (match_operand:SI 6 "immediate_operand" "i")))]
   9083      1.1  mrg  "TARGET_HAVE_MVE"
   9084  1.1.1.2  mrg  "vpst\;vddupt.u%#<V_sz_elem>\t%q0, %2, %4"
   9085      1.1  mrg  [(set_attr "length""8")])
   9086      1.1  mrg 
   9087      1.1  mrg ;;
   9088      1.1  mrg ;; [vdwdupq_n_u])
   9089      1.1  mrg ;;
   9090      1.1  mrg (define_expand "mve_vdwdupq_n_u<mode>"
   9091      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   9092      1.1  mrg   (match_operand:SI 1 "s_register_operand")
   9093      1.1  mrg   (match_operand:DI 2 "s_register_operand")
   9094      1.1  mrg   (match_operand:SI 3 "mve_imm_selective_upto_8")]
   9095      1.1  mrg  "TARGET_HAVE_MVE"
   9096      1.1  mrg {
   9097      1.1  mrg   rtx ignore_wb = gen_reg_rtx (SImode);
   9098      1.1  mrg   emit_insn (gen_mve_vdwdupq_wb_u<mode>_insn (operands[0], ignore_wb,
   9099      1.1  mrg 					      operands[1], operands[2],
   9100      1.1  mrg 					      operands[3]));
   9101      1.1  mrg   DONE;
   9102      1.1  mrg })
   9103      1.1  mrg 
   9104      1.1  mrg ;;
   9105      1.1  mrg ;; [vdwdupq_wb_u])
   9106      1.1  mrg ;;
   9107      1.1  mrg (define_expand "mve_vdwdupq_wb_u<mode>"
   9108      1.1  mrg  [(match_operand:SI 0 "s_register_operand")
   9109      1.1  mrg   (match_operand:SI 1 "s_register_operand")
   9110      1.1  mrg   (match_operand:DI 2 "s_register_operand")
   9111      1.1  mrg   (match_operand:SI 3 "mve_imm_selective_upto_8")
   9112      1.1  mrg   (unspec:MVE_2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
   9113      1.1  mrg  "TARGET_HAVE_MVE"
   9114      1.1  mrg {
   9115      1.1  mrg   rtx ignore_vec = gen_reg_rtx (<MODE>mode);
   9116      1.1  mrg   emit_insn (gen_mve_vdwdupq_wb_u<mode>_insn (ignore_vec, operands[0],
   9117      1.1  mrg 					      operands[1], operands[2],
   9118      1.1  mrg 					      operands[3]));
   9119      1.1  mrg   DONE;
   9120      1.1  mrg })
   9121      1.1  mrg 
   9122      1.1  mrg ;;
   9123      1.1  mrg ;; [vdwdupq_wb_u_insn])
   9124      1.1  mrg ;;
   9125      1.1  mrg (define_insn "mve_vdwdupq_wb_u<mode>_insn"
   9126      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9127      1.1  mrg 	(unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1")
   9128      1.1  mrg 		       (subreg:SI (match_operand:DI 3 "s_register_operand" "r") 4)
   9129      1.1  mrg 		       (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg")]
   9130      1.1  mrg 	 VDWDUPQ))
   9131      1.1  mrg    (set (match_operand:SI 1 "s_register_operand" "=Te")
   9132      1.1  mrg 	(unspec:SI [(match_dup 2)
   9133      1.1  mrg 		    (subreg:SI (match_dup 3) 4)
   9134      1.1  mrg 		    (match_dup 4)]
   9135      1.1  mrg 	 VDWDUPQ))]
   9136      1.1  mrg   "TARGET_HAVE_MVE"
   9137      1.1  mrg   "vdwdup.u%#<V_sz_elem>\t%q0, %2, %R3, %4"
   9138      1.1  mrg )
   9139      1.1  mrg 
   9140      1.1  mrg ;;
   9141      1.1  mrg ;; [vdwdupq_m_n_u])
   9142      1.1  mrg ;;
   9143      1.1  mrg (define_expand "mve_vdwdupq_m_n_u<mode>"
   9144      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   9145      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   9146      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   9147      1.1  mrg   (match_operand:DI 3 "s_register_operand")
   9148      1.1  mrg   (match_operand:SI 4 "mve_imm_selective_upto_8")
   9149  1.1.1.2  mrg   (match_operand:<MVE_VPRED> 5 "vpr_register_operand")]
   9150      1.1  mrg  "TARGET_HAVE_MVE"
   9151      1.1  mrg {
   9152      1.1  mrg   rtx ignore_wb = gen_reg_rtx (SImode);
   9153      1.1  mrg   emit_insn (gen_mve_vdwdupq_m_wb_u<mode>_insn (operands[0], ignore_wb,
   9154      1.1  mrg 						operands[1], operands[2],
   9155      1.1  mrg 						operands[3], operands[4],
   9156      1.1  mrg 						operands[5]));
   9157      1.1  mrg   DONE;
   9158      1.1  mrg })
   9159      1.1  mrg 
   9160      1.1  mrg ;;
   9161      1.1  mrg ;; [vdwdupq_m_wb_u])
   9162      1.1  mrg ;;
   9163      1.1  mrg (define_expand "mve_vdwdupq_m_wb_u<mode>"
   9164      1.1  mrg  [(match_operand:SI 0 "s_register_operand")
   9165      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   9166      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   9167      1.1  mrg   (match_operand:DI 3 "s_register_operand")
   9168      1.1  mrg   (match_operand:SI 4 "mve_imm_selective_upto_8")
   9169  1.1.1.2  mrg   (match_operand:<MVE_VPRED> 5 "vpr_register_operand")]
   9170      1.1  mrg  "TARGET_HAVE_MVE"
   9171      1.1  mrg {
   9172      1.1  mrg   rtx ignore_vec = gen_reg_rtx (<MODE>mode);
   9173      1.1  mrg   emit_insn (gen_mve_vdwdupq_m_wb_u<mode>_insn (ignore_vec, operands[0],
   9174      1.1  mrg 						operands[1], operands[2],
   9175      1.1  mrg 						operands[3], operands[4],
   9176      1.1  mrg 						operands[5]));
   9177      1.1  mrg   DONE;
   9178      1.1  mrg })
   9179      1.1  mrg 
   9180      1.1  mrg ;;
   9181      1.1  mrg ;; [vdwdupq_m_wb_u_insn])
   9182      1.1  mrg ;;
   9183      1.1  mrg (define_insn "mve_vdwdupq_m_wb_u<mode>_insn"
   9184      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9185      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0")
   9186      1.1  mrg 		       (match_operand:SI 3 "s_register_operand" "1")
   9187      1.1  mrg 		       (subreg:SI (match_operand:DI 4 "s_register_operand" "r") 4)
   9188      1.1  mrg 		       (match_operand:SI 5 "mve_imm_selective_upto_8" "Rg")
   9189  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 6 "vpr_register_operand" "Up")]
   9190      1.1  mrg 	 VDWDUPQ_M))
   9191      1.1  mrg    (set (match_operand:SI 1 "s_register_operand" "=Te")
   9192      1.1  mrg 	(unspec:SI [(match_dup 2)
   9193      1.1  mrg 		    (match_dup 3)
   9194      1.1  mrg 		    (subreg:SI (match_dup 4) 4)
   9195      1.1  mrg 		    (match_dup 5)
   9196      1.1  mrg 		    (match_dup 6)]
   9197      1.1  mrg 	 VDWDUPQ_M))
   9198      1.1  mrg   ]
   9199      1.1  mrg   "TARGET_HAVE_MVE"
   9200  1.1.1.2  mrg   "vpst\;vdwdupt.u%#<V_sz_elem>\t%q2, %3, %R4, %5"
   9201      1.1  mrg   [(set_attr "type" "mve_move")
   9202      1.1  mrg    (set_attr "length""8")])
   9203      1.1  mrg 
   9204      1.1  mrg ;;
   9205      1.1  mrg ;; [viwdupq_n_u])
   9206      1.1  mrg ;;
   9207      1.1  mrg (define_expand "mve_viwdupq_n_u<mode>"
   9208      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   9209      1.1  mrg   (match_operand:SI 1 "s_register_operand")
   9210      1.1  mrg   (match_operand:DI 2 "s_register_operand")
   9211      1.1  mrg   (match_operand:SI 3 "mve_imm_selective_upto_8")]
   9212      1.1  mrg  "TARGET_HAVE_MVE"
   9213      1.1  mrg {
   9214      1.1  mrg   rtx ignore_wb = gen_reg_rtx (SImode);
   9215      1.1  mrg   emit_insn (gen_mve_viwdupq_wb_u<mode>_insn (operands[0], ignore_wb,
   9216      1.1  mrg 					      operands[1], operands[2],
   9217      1.1  mrg 					      operands[3]));
   9218      1.1  mrg   DONE;
   9219      1.1  mrg })
   9220      1.1  mrg 
   9221      1.1  mrg ;;
   9222      1.1  mrg ;; [viwdupq_wb_u])
   9223      1.1  mrg ;;
   9224      1.1  mrg (define_expand "mve_viwdupq_wb_u<mode>"
   9225      1.1  mrg  [(match_operand:SI 0 "s_register_operand")
   9226      1.1  mrg   (match_operand:SI 1 "s_register_operand")
   9227      1.1  mrg   (match_operand:DI 2 "s_register_operand")
   9228      1.1  mrg   (match_operand:SI 3 "mve_imm_selective_upto_8")
   9229      1.1  mrg   (unspec:MVE_2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
   9230      1.1  mrg  "TARGET_HAVE_MVE"
   9231      1.1  mrg {
   9232      1.1  mrg   rtx ignore_vec = gen_reg_rtx (<MODE>mode);
   9233      1.1  mrg   emit_insn (gen_mve_viwdupq_wb_u<mode>_insn (ignore_vec, operands[0],
   9234      1.1  mrg 					      operands[1], operands[2],
   9235      1.1  mrg 					      operands[3]));
   9236      1.1  mrg   DONE;
   9237      1.1  mrg })
   9238      1.1  mrg 
   9239      1.1  mrg ;;
   9240      1.1  mrg ;; [viwdupq_wb_u_insn])
   9241      1.1  mrg ;;
   9242      1.1  mrg (define_insn "mve_viwdupq_wb_u<mode>_insn"
   9243      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9244      1.1  mrg 	(unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1")
   9245      1.1  mrg 		       (subreg:SI (match_operand:DI 3 "s_register_operand" "r") 4)
   9246      1.1  mrg 		       (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg")]
   9247      1.1  mrg 	 VIWDUPQ))
   9248      1.1  mrg    (set (match_operand:SI 1 "s_register_operand" "=Te")
   9249      1.1  mrg 	(unspec:SI [(match_dup 2)
   9250      1.1  mrg 		    (subreg:SI (match_dup 3) 4)
   9251      1.1  mrg 		    (match_dup 4)]
   9252      1.1  mrg 	 VIWDUPQ))]
   9253      1.1  mrg   "TARGET_HAVE_MVE"
   9254      1.1  mrg   "viwdup.u%#<V_sz_elem>\t%q0, %2, %R3, %4"
   9255      1.1  mrg )
   9256      1.1  mrg 
   9257      1.1  mrg ;;
   9258      1.1  mrg ;; [viwdupq_m_n_u])
   9259      1.1  mrg ;;
   9260      1.1  mrg (define_expand "mve_viwdupq_m_n_u<mode>"
   9261      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   9262      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   9263      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   9264      1.1  mrg   (match_operand:DI 3 "s_register_operand")
   9265      1.1  mrg   (match_operand:SI 4 "mve_imm_selective_upto_8")
   9266  1.1.1.2  mrg   (match_operand:<MVE_VPRED> 5 "vpr_register_operand")]
   9267      1.1  mrg  "TARGET_HAVE_MVE"
   9268      1.1  mrg {
   9269      1.1  mrg   rtx ignore_wb = gen_reg_rtx (SImode);
   9270      1.1  mrg   emit_insn (gen_mve_viwdupq_m_wb_u<mode>_insn (operands[0], ignore_wb,
   9271      1.1  mrg 						operands[1], operands[2],
   9272      1.1  mrg 						operands[3], operands[4],
   9273      1.1  mrg 						operands[5]));
   9274      1.1  mrg   DONE;
   9275      1.1  mrg })
   9276      1.1  mrg 
   9277      1.1  mrg ;;
   9278      1.1  mrg ;; [viwdupq_m_wb_u])
   9279      1.1  mrg ;;
   9280      1.1  mrg (define_expand "mve_viwdupq_m_wb_u<mode>"
   9281      1.1  mrg  [(match_operand:SI 0 "s_register_operand")
   9282      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   9283      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   9284      1.1  mrg   (match_operand:DI 3 "s_register_operand")
   9285      1.1  mrg   (match_operand:SI 4 "mve_imm_selective_upto_8")
   9286  1.1.1.2  mrg   (match_operand:<MVE_VPRED> 5 "vpr_register_operand")]
   9287      1.1  mrg  "TARGET_HAVE_MVE"
   9288      1.1  mrg {
   9289      1.1  mrg   rtx ignore_vec = gen_reg_rtx (<MODE>mode);
   9290      1.1  mrg   emit_insn (gen_mve_viwdupq_m_wb_u<mode>_insn (ignore_vec, operands[0],
   9291      1.1  mrg 						operands[1], operands[2],
   9292      1.1  mrg 						operands[3], operands[4],
   9293      1.1  mrg 						operands[5]));
   9294      1.1  mrg   DONE;
   9295      1.1  mrg })
   9296      1.1  mrg 
   9297      1.1  mrg ;;
   9298      1.1  mrg ;; [viwdupq_m_wb_u_insn])
   9299      1.1  mrg ;;
   9300      1.1  mrg (define_insn "mve_viwdupq_m_wb_u<mode>_insn"
   9301      1.1  mrg   [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   9302      1.1  mrg 	(unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0")
   9303      1.1  mrg 		       (match_operand:SI 3 "s_register_operand" "1")
   9304      1.1  mrg 		       (subreg:SI (match_operand:DI 4 "s_register_operand" "r") 4)
   9305      1.1  mrg 		       (match_operand:SI 5 "mve_imm_selective_upto_8" "Rg")
   9306  1.1.1.2  mrg 		       (match_operand:<MVE_VPRED> 6 "vpr_register_operand" "Up")]
   9307      1.1  mrg 	 VIWDUPQ_M))
   9308      1.1  mrg    (set (match_operand:SI 1 "s_register_operand" "=Te")
   9309      1.1  mrg 	(unspec:SI [(match_dup 2)
   9310      1.1  mrg 		    (match_dup 3)
   9311      1.1  mrg 		    (subreg:SI (match_dup 4) 4)
   9312      1.1  mrg 		    (match_dup 5)
   9313      1.1  mrg 		    (match_dup 6)]
   9314      1.1  mrg 	 VIWDUPQ_M))
   9315      1.1  mrg   ]
   9316      1.1  mrg   "TARGET_HAVE_MVE"
   9317      1.1  mrg   "vpst\;\tviwdupt.u%#<V_sz_elem>\t%q2, %3, %R4, %5"
   9318      1.1  mrg   [(set_attr "type" "mve_move")
   9319      1.1  mrg    (set_attr "length""8")])
   9320      1.1  mrg 
   9321      1.1  mrg ;;
   9322      1.1  mrg ;; [vstrwq_scatter_base_wb_s vstrwq_scatter_base_wb_u]
   9323      1.1  mrg ;;
   9324      1.1  mrg (define_insn "mve_vstrwq_scatter_base_wb_<supf>v4si"
   9325      1.1  mrg   [(set (mem:BLK (scratch))
   9326      1.1  mrg 	(unspec:BLK
   9327      1.1  mrg 		[(match_operand:V4SI 1 "s_register_operand" "0")
   9328      1.1  mrg 		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
   9329      1.1  mrg 		 (match_operand:V4SI 3 "s_register_operand" "w")]
   9330      1.1  mrg 	 VSTRWSBWBQ))
   9331      1.1  mrg    (set (match_operand:V4SI 0 "s_register_operand" "=w")
   9332      1.1  mrg 	(unspec:V4SI [(match_dup 1) (match_dup 2)]
   9333      1.1  mrg 	 VSTRWSBWBQ))
   9334      1.1  mrg   ]
   9335      1.1  mrg   "TARGET_HAVE_MVE"
   9336      1.1  mrg {
   9337      1.1  mrg    rtx ops[3];
   9338      1.1  mrg    ops[0] = operands[1];
   9339      1.1  mrg    ops[1] = operands[2];
   9340      1.1  mrg    ops[2] = operands[3];
   9341      1.1  mrg    output_asm_insn ("vstrw.u32\t%q2, [%q0, %1]!",ops);
   9342      1.1  mrg    return "";
   9343      1.1  mrg }
   9344      1.1  mrg   [(set_attr "length" "4")])
   9345      1.1  mrg 
   9346      1.1  mrg ;;
   9347      1.1  mrg ;; [vstrwq_scatter_base_wb_p_s vstrwq_scatter_base_wb_p_u]
   9348      1.1  mrg ;;
   9349      1.1  mrg (define_insn "mve_vstrwq_scatter_base_wb_p_<supf>v4si"
   9350      1.1  mrg  [(set (mem:BLK (scratch))
   9351      1.1  mrg        (unspec:BLK
   9352      1.1  mrg 		[(match_operand:V4SI 1 "s_register_operand" "0")
   9353      1.1  mrg 		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
   9354      1.1  mrg 		 (match_operand:V4SI 3 "s_register_operand" "w")
   9355  1.1.1.2  mrg 		 (match_operand:V4BI 4 "vpr_register_operand" "Up")]
   9356      1.1  mrg 	VSTRWSBWBQ))
   9357      1.1  mrg    (set (match_operand:V4SI 0 "s_register_operand" "=w")
   9358      1.1  mrg 	(unspec:V4SI [(match_dup 1) (match_dup 2)]
   9359      1.1  mrg 	 VSTRWSBWBQ))
   9360      1.1  mrg   ]
   9361      1.1  mrg   "TARGET_HAVE_MVE"
   9362      1.1  mrg {
   9363      1.1  mrg    rtx ops[3];
   9364      1.1  mrg    ops[0] = operands[1];
   9365      1.1  mrg    ops[1] = operands[2];
   9366      1.1  mrg    ops[2] = operands[3];
   9367      1.1  mrg    output_asm_insn ("vpst\;\tvstrwt.u32\t%q2, [%q0, %1]!",ops);
   9368      1.1  mrg    return "";
   9369      1.1  mrg }
   9370      1.1  mrg   [(set_attr "length" "8")])
   9371      1.1  mrg 
   9372      1.1  mrg ;;
   9373      1.1  mrg ;; [vstrwq_scatter_base_wb_f]
   9374      1.1  mrg ;;
   9375      1.1  mrg (define_insn "mve_vstrwq_scatter_base_wb_fv4sf"
   9376      1.1  mrg  [(set (mem:BLK (scratch))
   9377      1.1  mrg        (unspec:BLK
   9378      1.1  mrg 		[(match_operand:V4SI 1 "s_register_operand" "0")
   9379      1.1  mrg 		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
   9380      1.1  mrg 		 (match_operand:V4SF 3 "s_register_operand" "w")]
   9381      1.1  mrg 	 VSTRWQSBWB_F))
   9382      1.1  mrg    (set (match_operand:V4SI 0 "s_register_operand" "=w")
   9383      1.1  mrg 	(unspec:V4SI [(match_dup 1) (match_dup 2)]
   9384      1.1  mrg 	 VSTRWQSBWB_F))
   9385      1.1  mrg   ]
   9386      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9387      1.1  mrg {
   9388      1.1  mrg    rtx ops[3];
   9389      1.1  mrg    ops[0] = operands[1];
   9390      1.1  mrg    ops[1] = operands[2];
   9391      1.1  mrg    ops[2] = operands[3];
   9392      1.1  mrg    output_asm_insn ("vstrw.u32\t%q2, [%q0, %1]!",ops);
   9393      1.1  mrg    return "";
   9394      1.1  mrg }
   9395      1.1  mrg   [(set_attr "length" "4")])
   9396      1.1  mrg 
   9397      1.1  mrg ;;
   9398      1.1  mrg ;; [vstrwq_scatter_base_wb_p_f]
   9399      1.1  mrg ;;
   9400      1.1  mrg (define_insn "mve_vstrwq_scatter_base_wb_p_fv4sf"
   9401      1.1  mrg  [(set (mem:BLK (scratch))
   9402      1.1  mrg        (unspec:BLK
   9403      1.1  mrg 		[(match_operand:V4SI 1 "s_register_operand" "0")
   9404  1.1.1.2  mrg 		 (match_operand:SI 2 "mve_vstrw_immediate" "Rl")
   9405      1.1  mrg 		 (match_operand:V4SF 3 "s_register_operand" "w")
   9406  1.1.1.2  mrg 		 (match_operand:V4BI 4 "vpr_register_operand" "Up")]
   9407      1.1  mrg 	VSTRWQSBWB_F))
   9408      1.1  mrg    (set (match_operand:V4SI 0 "s_register_operand" "=w")
   9409      1.1  mrg 	(unspec:V4SI [(match_dup 1) (match_dup 2)]
   9410      1.1  mrg 	 VSTRWQSBWB_F))
   9411      1.1  mrg   ]
   9412      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9413      1.1  mrg {
   9414      1.1  mrg    rtx ops[3];
   9415      1.1  mrg    ops[0] = operands[1];
   9416      1.1  mrg    ops[1] = operands[2];
   9417      1.1  mrg    ops[2] = operands[3];
   9418  1.1.1.2  mrg    output_asm_insn ("vpst\;vstrwt.u32\t%q2, [%q0, %1]!",ops);
   9419      1.1  mrg    return "";
   9420      1.1  mrg }
   9421      1.1  mrg   [(set_attr "length" "8")])
   9422      1.1  mrg 
   9423      1.1  mrg ;;
   9424      1.1  mrg ;; [vstrdq_scatter_base_wb_s vstrdq_scatter_base_wb_u]
   9425      1.1  mrg ;;
   9426      1.1  mrg (define_insn "mve_vstrdq_scatter_base_wb_<supf>v2di"
   9427      1.1  mrg   [(set (mem:BLK (scratch))
   9428      1.1  mrg 	(unspec:BLK
   9429      1.1  mrg 		[(match_operand:V2DI 1 "s_register_operand" "0")
   9430      1.1  mrg 		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
   9431      1.1  mrg 		 (match_operand:V2DI 3 "s_register_operand" "w")]
   9432      1.1  mrg 	 VSTRDSBWBQ))
   9433      1.1  mrg    (set (match_operand:V2DI 0 "s_register_operand" "=&w")
   9434      1.1  mrg 	(unspec:V2DI [(match_dup 1) (match_dup 2)]
   9435      1.1  mrg 	 VSTRDSBWBQ))
   9436      1.1  mrg   ]
   9437      1.1  mrg   "TARGET_HAVE_MVE"
   9438      1.1  mrg {
   9439      1.1  mrg    rtx ops[3];
   9440      1.1  mrg    ops[0] = operands[1];
   9441      1.1  mrg    ops[1] = operands[2];
   9442      1.1  mrg    ops[2] = operands[3];
   9443      1.1  mrg    output_asm_insn ("vstrd.u64\t%q2, [%q0, %1]!",ops);
   9444      1.1  mrg    return "";
   9445      1.1  mrg }
   9446      1.1  mrg   [(set_attr "length" "4")])
   9447      1.1  mrg 
   9448      1.1  mrg ;;
   9449      1.1  mrg ;; [vstrdq_scatter_base_wb_p_s vstrdq_scatter_base_wb_p_u]
   9450      1.1  mrg ;;
   9451      1.1  mrg (define_insn "mve_vstrdq_scatter_base_wb_p_<supf>v2di"
   9452      1.1  mrg   [(set (mem:BLK (scratch))
   9453      1.1  mrg 	(unspec:BLK
   9454      1.1  mrg 		[(match_operand:V2DI 1 "s_register_operand" "0")
   9455      1.1  mrg 		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
   9456      1.1  mrg 		 (match_operand:V2DI 3 "s_register_operand" "w")
   9457  1.1.1.2  mrg 		 (match_operand:HI 4 "vpr_register_operand" "Up")]
   9458      1.1  mrg 	 VSTRDSBWBQ))
   9459      1.1  mrg    (set (match_operand:V2DI 0 "s_register_operand" "=w")
   9460      1.1  mrg 	(unspec:V2DI [(match_dup 1) (match_dup 2)]
   9461      1.1  mrg 	 VSTRDSBWBQ))
   9462      1.1  mrg   ]
   9463      1.1  mrg   "TARGET_HAVE_MVE"
   9464      1.1  mrg {
   9465      1.1  mrg    rtx ops[3];
   9466      1.1  mrg    ops[0] = operands[1];
   9467      1.1  mrg    ops[1] = operands[2];
   9468      1.1  mrg    ops[2] = operands[3];
   9469  1.1.1.2  mrg    output_asm_insn ("vpst\;vstrdt.u64\t%q2, [%q0, %1]!",ops);
   9470      1.1  mrg    return "";
   9471      1.1  mrg }
   9472      1.1  mrg   [(set_attr "length" "8")])
   9473      1.1  mrg 
   9474      1.1  mrg (define_expand "mve_vldrwq_gather_base_wb_<supf>v4si"
   9475      1.1  mrg   [(match_operand:V4SI 0 "s_register_operand")
   9476      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9477      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9478      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)]
   9479      1.1  mrg   "TARGET_HAVE_MVE"
   9480      1.1  mrg {
   9481      1.1  mrg   rtx ignore_result = gen_reg_rtx (V4SImode);
   9482      1.1  mrg   emit_insn (
   9483      1.1  mrg   gen_mve_vldrwq_gather_base_wb_<supf>v4si_insn (ignore_result, operands[0],
   9484      1.1  mrg 						 operands[1], operands[2]));
   9485      1.1  mrg   DONE;
   9486      1.1  mrg })
   9487      1.1  mrg 
   9488      1.1  mrg (define_expand "mve_vldrwq_gather_base_nowb_<supf>v4si"
   9489      1.1  mrg   [(match_operand:V4SI 0 "s_register_operand")
   9490      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9491      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9492      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)]
   9493      1.1  mrg   "TARGET_HAVE_MVE"
   9494      1.1  mrg {
   9495      1.1  mrg   rtx ignore_wb = gen_reg_rtx (V4SImode);
   9496      1.1  mrg   emit_insn (
   9497      1.1  mrg   gen_mve_vldrwq_gather_base_wb_<supf>v4si_insn (operands[0], ignore_wb,
   9498      1.1  mrg 						 operands[1], operands[2]));
   9499      1.1  mrg   DONE;
   9500      1.1  mrg })
   9501      1.1  mrg 
   9502      1.1  mrg ;;
   9503      1.1  mrg ;; [vldrwq_gather_base_wb_s vldrwq_gather_base_wb_u]
   9504      1.1  mrg ;;
   9505      1.1  mrg (define_insn "mve_vldrwq_gather_base_wb_<supf>v4si_insn"
   9506      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   9507      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 2 "s_register_operand" "1")
   9508      1.1  mrg 		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
   9509      1.1  mrg 		      (mem:BLK (scratch))]
   9510      1.1  mrg 	 VLDRWGBWBQ))
   9511      1.1  mrg    (set (match_operand:V4SI 1 "s_register_operand" "=&w")
   9512      1.1  mrg 	(unspec:V4SI [(match_dup 2) (match_dup 3)]
   9513      1.1  mrg 	 VLDRWGBWBQ))
   9514      1.1  mrg   ]
   9515      1.1  mrg   "TARGET_HAVE_MVE"
   9516      1.1  mrg {
   9517      1.1  mrg    rtx ops[3];
   9518      1.1  mrg    ops[0] = operands[0];
   9519      1.1  mrg    ops[1] = operands[2];
   9520      1.1  mrg    ops[2] = operands[3];
   9521      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]!",ops);
   9522      1.1  mrg    return "";
   9523      1.1  mrg }
   9524      1.1  mrg   [(set_attr "length" "4")])
   9525      1.1  mrg 
   9526      1.1  mrg (define_expand "mve_vldrwq_gather_base_wb_z_<supf>v4si"
   9527      1.1  mrg   [(match_operand:V4SI 0 "s_register_operand")
   9528      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9529      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9530  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   9531      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)]
   9532      1.1  mrg   "TARGET_HAVE_MVE"
   9533      1.1  mrg {
   9534      1.1  mrg   rtx ignore_result = gen_reg_rtx (V4SImode);
   9535      1.1  mrg   emit_insn (
   9536      1.1  mrg   gen_mve_vldrwq_gather_base_wb_z_<supf>v4si_insn (ignore_result, operands[0],
   9537      1.1  mrg 						   operands[1], operands[2],
   9538      1.1  mrg 						   operands[3]));
   9539      1.1  mrg   DONE;
   9540      1.1  mrg })
   9541      1.1  mrg (define_expand "mve_vldrwq_gather_base_nowb_z_<supf>v4si"
   9542      1.1  mrg   [(match_operand:V4SI 0 "s_register_operand")
   9543      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9544      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9545  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   9546      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)]
   9547      1.1  mrg   "TARGET_HAVE_MVE"
   9548      1.1  mrg {
   9549      1.1  mrg   rtx ignore_wb = gen_reg_rtx (V4SImode);
   9550      1.1  mrg   emit_insn (
   9551      1.1  mrg   gen_mve_vldrwq_gather_base_wb_z_<supf>v4si_insn (operands[0], ignore_wb,
   9552      1.1  mrg 						   operands[1], operands[2],
   9553      1.1  mrg 						   operands[3]));
   9554      1.1  mrg   DONE;
   9555      1.1  mrg })
   9556      1.1  mrg 
   9557      1.1  mrg ;;
   9558      1.1  mrg ;; [vldrwq_gather_base_wb_z_s vldrwq_gather_base_wb_z_u]
   9559      1.1  mrg ;;
   9560      1.1  mrg (define_insn "mve_vldrwq_gather_base_wb_z_<supf>v4si_insn"
   9561      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=&w")
   9562      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 2 "s_register_operand" "1")
   9563      1.1  mrg 		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
   9564  1.1.1.2  mrg 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")
   9565      1.1  mrg 		      (mem:BLK (scratch))]
   9566      1.1  mrg 	 VLDRWGBWBQ))
   9567      1.1  mrg    (set (match_operand:V4SI 1 "s_register_operand" "=&w")
   9568      1.1  mrg 	(unspec:V4SI [(match_dup 2) (match_dup 3)]
   9569      1.1  mrg 	 VLDRWGBWBQ))
   9570      1.1  mrg   ]
   9571      1.1  mrg   "TARGET_HAVE_MVE"
   9572      1.1  mrg {
   9573      1.1  mrg    rtx ops[3];
   9574      1.1  mrg    ops[0] = operands[0];
   9575      1.1  mrg    ops[1] = operands[2];
   9576      1.1  mrg    ops[2] = operands[3];
   9577      1.1  mrg    output_asm_insn ("vpst\;vldrwt.u32\t%q0, [%q1, %2]!",ops);
   9578      1.1  mrg    return "";
   9579      1.1  mrg }
   9580      1.1  mrg   [(set_attr "length" "8")])
   9581      1.1  mrg 
   9582      1.1  mrg (define_expand "mve_vldrwq_gather_base_wb_fv4sf"
   9583      1.1  mrg   [(match_operand:V4SI 0 "s_register_operand")
   9584      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9585      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9586      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)]
   9587      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9588      1.1  mrg {
   9589      1.1  mrg   rtx ignore_result = gen_reg_rtx (V4SFmode);
   9590      1.1  mrg   emit_insn (
   9591      1.1  mrg   gen_mve_vldrwq_gather_base_wb_fv4sf_insn (ignore_result, operands[0],
   9592      1.1  mrg 					    operands[1], operands[2]));
   9593      1.1  mrg   DONE;
   9594      1.1  mrg })
   9595      1.1  mrg 
   9596      1.1  mrg (define_expand "mve_vldrwq_gather_base_nowb_fv4sf"
   9597      1.1  mrg   [(match_operand:V4SF 0 "s_register_operand")
   9598      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9599      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9600      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)]
   9601      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9602      1.1  mrg {
   9603      1.1  mrg   rtx ignore_wb = gen_reg_rtx (V4SImode);
   9604      1.1  mrg   emit_insn (
   9605      1.1  mrg   gen_mve_vldrwq_gather_base_wb_fv4sf_insn (operands[0], ignore_wb,
   9606      1.1  mrg 					    operands[1], operands[2]));
   9607      1.1  mrg   DONE;
   9608      1.1  mrg })
   9609      1.1  mrg 
   9610      1.1  mrg ;;
   9611      1.1  mrg ;; [vldrwq_gather_base_wb_f]
   9612      1.1  mrg ;;
   9613      1.1  mrg (define_insn "mve_vldrwq_gather_base_wb_fv4sf_insn"
   9614      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   9615      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 2 "s_register_operand" "1")
   9616      1.1  mrg 		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
   9617      1.1  mrg 		      (mem:BLK (scratch))]
   9618      1.1  mrg 	 VLDRWQGBWB_F))
   9619      1.1  mrg    (set (match_operand:V4SI 1 "s_register_operand" "=&w")
   9620      1.1  mrg 	(unspec:V4SI [(match_dup 2) (match_dup 3)]
   9621      1.1  mrg 	 VLDRWQGBWB_F))
   9622      1.1  mrg   ]
   9623      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9624      1.1  mrg {
   9625      1.1  mrg    rtx ops[3];
   9626      1.1  mrg    ops[0] = operands[0];
   9627      1.1  mrg    ops[1] = operands[2];
   9628      1.1  mrg    ops[2] = operands[3];
   9629      1.1  mrg    output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]!",ops);
   9630      1.1  mrg    return "";
   9631      1.1  mrg }
   9632      1.1  mrg   [(set_attr "length" "4")])
   9633      1.1  mrg 
   9634      1.1  mrg (define_expand "mve_vldrwq_gather_base_wb_z_fv4sf"
   9635      1.1  mrg   [(match_operand:V4SI 0 "s_register_operand")
   9636      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9637      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9638  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   9639      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)]
   9640      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9641      1.1  mrg {
   9642      1.1  mrg   rtx ignore_result = gen_reg_rtx (V4SFmode);
   9643      1.1  mrg   emit_insn (
   9644      1.1  mrg   gen_mve_vldrwq_gather_base_wb_z_fv4sf_insn (ignore_result, operands[0],
   9645      1.1  mrg 					      operands[1], operands[2],
   9646      1.1  mrg 					      operands[3]));
   9647      1.1  mrg   DONE;
   9648      1.1  mrg })
   9649      1.1  mrg 
   9650      1.1  mrg (define_expand "mve_vldrwq_gather_base_nowb_z_fv4sf"
   9651      1.1  mrg   [(match_operand:V4SF 0 "s_register_operand")
   9652      1.1  mrg    (match_operand:V4SI 1 "s_register_operand")
   9653      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9654  1.1.1.2  mrg    (match_operand:V4BI 3 "vpr_register_operand")
   9655      1.1  mrg    (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)]
   9656      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9657      1.1  mrg {
   9658      1.1  mrg   rtx ignore_wb = gen_reg_rtx (V4SImode);
   9659      1.1  mrg   emit_insn (
   9660      1.1  mrg   gen_mve_vldrwq_gather_base_wb_z_fv4sf_insn (operands[0], ignore_wb,
   9661      1.1  mrg 					      operands[1], operands[2],
   9662      1.1  mrg 					      operands[3]));
   9663      1.1  mrg   DONE;
   9664      1.1  mrg })
   9665      1.1  mrg 
   9666      1.1  mrg ;;
   9667      1.1  mrg ;; [vldrwq_gather_base_wb_z_f]
   9668      1.1  mrg ;;
   9669      1.1  mrg (define_insn "mve_vldrwq_gather_base_wb_z_fv4sf_insn"
   9670      1.1  mrg   [(set (match_operand:V4SF 0 "s_register_operand" "=&w")
   9671      1.1  mrg 	(unspec:V4SF [(match_operand:V4SI 2 "s_register_operand" "1")
   9672      1.1  mrg 		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
   9673  1.1.1.2  mrg 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")
   9674      1.1  mrg 		      (mem:BLK (scratch))]
   9675      1.1  mrg 	 VLDRWQGBWB_F))
   9676      1.1  mrg    (set (match_operand:V4SI 1 "s_register_operand" "=&w")
   9677      1.1  mrg 	(unspec:V4SI [(match_dup 2) (match_dup 3)]
   9678      1.1  mrg 	 VLDRWQGBWB_F))
   9679      1.1  mrg   ]
   9680      1.1  mrg   "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
   9681      1.1  mrg {
   9682      1.1  mrg    rtx ops[3];
   9683      1.1  mrg    ops[0] = operands[0];
   9684      1.1  mrg    ops[1] = operands[2];
   9685      1.1  mrg    ops[2] = operands[3];
   9686      1.1  mrg    output_asm_insn ("vpst\;vldrwt.u32\t%q0, [%q1, %2]!",ops);
   9687      1.1  mrg    return "";
   9688      1.1  mrg }
   9689      1.1  mrg   [(set_attr "length" "8")])
   9690      1.1  mrg 
   9691      1.1  mrg (define_expand "mve_vldrdq_gather_base_wb_<supf>v2di"
   9692      1.1  mrg   [(match_operand:V2DI 0 "s_register_operand")
   9693      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   9694      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9695      1.1  mrg    (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
   9696      1.1  mrg   "TARGET_HAVE_MVE"
   9697      1.1  mrg {
   9698      1.1  mrg   rtx ignore_result = gen_reg_rtx (V2DImode);
   9699      1.1  mrg   emit_insn (
   9700      1.1  mrg   gen_mve_vldrdq_gather_base_wb_<supf>v2di_insn (ignore_result, operands[0],
   9701      1.1  mrg 						 operands[1], operands[2]));
   9702      1.1  mrg   DONE;
   9703      1.1  mrg })
   9704      1.1  mrg 
   9705      1.1  mrg (define_expand "mve_vldrdq_gather_base_nowb_<supf>v2di"
   9706      1.1  mrg   [(match_operand:V2DI 0 "s_register_operand")
   9707      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   9708      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9709      1.1  mrg    (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
   9710      1.1  mrg   "TARGET_HAVE_MVE"
   9711      1.1  mrg {
   9712      1.1  mrg   rtx ignore_wb = gen_reg_rtx (V2DImode);
   9713      1.1  mrg   emit_insn (
   9714      1.1  mrg   gen_mve_vldrdq_gather_base_wb_<supf>v2di_insn (operands[0], ignore_wb,
   9715      1.1  mrg 						 operands[1], operands[2]));
   9716      1.1  mrg   DONE;
   9717      1.1  mrg })
   9718      1.1  mrg 
   9719      1.1  mrg 
   9720      1.1  mrg ;;
   9721      1.1  mrg ;; [vldrdq_gather_base_wb_s vldrdq_gather_base_wb_u]
   9722      1.1  mrg ;;
   9723      1.1  mrg (define_insn "mve_vldrdq_gather_base_wb_<supf>v2di_insn"
   9724      1.1  mrg   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   9725      1.1  mrg 	(unspec:V2DI [(match_operand:V2DI 2 "s_register_operand" "1")
   9726      1.1  mrg 		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
   9727      1.1  mrg 		      (mem:BLK (scratch))]
   9728      1.1  mrg 	 VLDRDGBWBQ))
   9729      1.1  mrg    (set (match_operand:V2DI 1 "s_register_operand" "=&w")
   9730      1.1  mrg 	(unspec:V2DI [(match_dup 2) (match_dup 3)]
   9731      1.1  mrg 	 VLDRDGBWBQ))
   9732      1.1  mrg   ]
   9733      1.1  mrg   "TARGET_HAVE_MVE"
   9734      1.1  mrg {
   9735      1.1  mrg    rtx ops[3];
   9736      1.1  mrg    ops[0] = operands[0];
   9737      1.1  mrg    ops[1] = operands[2];
   9738      1.1  mrg    ops[2] = operands[3];
   9739      1.1  mrg    output_asm_insn ("vldrd.64\t%q0, [%q1, %2]!",ops);
   9740      1.1  mrg    return "";
   9741      1.1  mrg }
   9742      1.1  mrg   [(set_attr "length" "4")])
   9743      1.1  mrg 
   9744      1.1  mrg (define_expand "mve_vldrdq_gather_base_wb_z_<supf>v2di"
   9745      1.1  mrg   [(match_operand:V2DI 0 "s_register_operand")
   9746      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   9747      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9748      1.1  mrg    (match_operand:HI 3 "vpr_register_operand")
   9749      1.1  mrg    (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
   9750      1.1  mrg   "TARGET_HAVE_MVE"
   9751      1.1  mrg {
   9752      1.1  mrg   rtx ignore_result = gen_reg_rtx (V2DImode);
   9753      1.1  mrg   emit_insn (
   9754      1.1  mrg   gen_mve_vldrdq_gather_base_wb_z_<supf>v2di_insn (ignore_result, operands[0],
   9755      1.1  mrg 						   operands[1], operands[2],
   9756      1.1  mrg 						   operands[3]));
   9757      1.1  mrg   DONE;
   9758      1.1  mrg })
   9759      1.1  mrg 
   9760      1.1  mrg (define_expand "mve_vldrdq_gather_base_nowb_z_<supf>v2di"
   9761      1.1  mrg   [(match_operand:V2DI 0 "s_register_operand")
   9762      1.1  mrg    (match_operand:V2DI 1 "s_register_operand")
   9763      1.1  mrg    (match_operand:SI 2 "mve_vldrd_immediate")
   9764      1.1  mrg    (match_operand:HI 3 "vpr_register_operand")
   9765      1.1  mrg    (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
   9766      1.1  mrg   "TARGET_HAVE_MVE"
   9767      1.1  mrg {
   9768      1.1  mrg   rtx ignore_wb = gen_reg_rtx (V2DImode);
   9769      1.1  mrg   emit_insn (
   9770      1.1  mrg   gen_mve_vldrdq_gather_base_wb_z_<supf>v2di_insn (operands[0], ignore_wb,
   9771      1.1  mrg 						   operands[1], operands[2],
   9772      1.1  mrg 						   operands[3]));
   9773      1.1  mrg   DONE;
   9774      1.1  mrg })
   9775      1.1  mrg 
   9776      1.1  mrg (define_insn "get_fpscr_nzcvqc"
   9777      1.1  mrg  [(set (match_operand:SI 0 "register_operand" "=r")
   9778  1.1.1.2  mrg    (unspec_volatile:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))]
   9779      1.1  mrg  "TARGET_HAVE_MVE"
   9780      1.1  mrg  "vmrs\\t%0, FPSCR_nzcvqc"
   9781      1.1  mrg   [(set_attr "type" "mve_move")])
   9782      1.1  mrg 
   9783      1.1  mrg (define_insn "set_fpscr_nzcvqc"
   9784      1.1  mrg  [(set (reg:SI VFPCC_REGNUM)
   9785      1.1  mrg    (unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
   9786      1.1  mrg     VUNSPEC_SET_FPSCR_NZCVQC))]
   9787      1.1  mrg  "TARGET_HAVE_MVE"
   9788      1.1  mrg  "vmsr\\tFPSCR_nzcvqc, %0"
   9789      1.1  mrg   [(set_attr "type" "mve_move")])
   9790      1.1  mrg 
   9791      1.1  mrg ;;
   9792      1.1  mrg ;; [vldrdq_gather_base_wb_z_s vldrdq_gather_base_wb_z_u]
   9793      1.1  mrg ;;
   9794      1.1  mrg (define_insn "mve_vldrdq_gather_base_wb_z_<supf>v2di_insn"
   9795      1.1  mrg   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
   9796      1.1  mrg 	(unspec:V2DI [(match_operand:V2DI 2 "s_register_operand" "1")
   9797      1.1  mrg 		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
   9798      1.1  mrg 		      (match_operand:HI 4 "vpr_register_operand" "Up")
   9799      1.1  mrg 		      (mem:BLK (scratch))]
   9800      1.1  mrg 	 VLDRDGBWBQ))
   9801      1.1  mrg    (set (match_operand:V2DI 1 "s_register_operand" "=&w")
   9802      1.1  mrg 	(unspec:V2DI [(match_dup 2) (match_dup 3)]
   9803      1.1  mrg 	 VLDRDGBWBQ))
   9804      1.1  mrg   ]
   9805      1.1  mrg   "TARGET_HAVE_MVE"
   9806      1.1  mrg {
   9807      1.1  mrg    rtx ops[3];
   9808      1.1  mrg    ops[0] = operands[0];
   9809      1.1  mrg    ops[1] = operands[2];
   9810      1.1  mrg    ops[2] = operands[3];
   9811      1.1  mrg    output_asm_insn ("vpst\;vldrdt.u64\t%q0, [%q1, %2]!",ops);
   9812      1.1  mrg    return "";
   9813      1.1  mrg }
   9814      1.1  mrg   [(set_attr "length" "8")])
   9815      1.1  mrg ;;
   9816      1.1  mrg ;; [vadciq_m_s, vadciq_m_u])
   9817      1.1  mrg ;;
   9818      1.1  mrg (define_insn "mve_vadciq_m_<supf>v4si"
   9819      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9820      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
   9821      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   9822      1.1  mrg 		      (match_operand:V4SI 3 "s_register_operand" "w")
   9823  1.1.1.2  mrg 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
   9824      1.1  mrg 	 VADCIQ_M))
   9825      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9826      1.1  mrg 	(unspec:SI [(const_int 0)]
   9827      1.1  mrg 	 VADCIQ_M))
   9828      1.1  mrg   ]
   9829      1.1  mrg   "TARGET_HAVE_MVE"
   9830      1.1  mrg   "vpst\;vadcit.i32\t%q0, %q2, %q3"
   9831      1.1  mrg   [(set_attr "type" "mve_move")
   9832      1.1  mrg    (set_attr "length" "8")])
   9833      1.1  mrg 
   9834      1.1  mrg ;;
   9835      1.1  mrg ;; [vadciq_u, vadciq_s])
   9836      1.1  mrg ;;
   9837      1.1  mrg (define_insn "mve_vadciq_<supf>v4si"
   9838      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9839      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   9840      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")]
   9841      1.1  mrg 	 VADCIQ))
   9842      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9843      1.1  mrg 	(unspec:SI [(const_int 0)]
   9844      1.1  mrg 	 VADCIQ))
   9845      1.1  mrg   ]
   9846      1.1  mrg   "TARGET_HAVE_MVE"
   9847      1.1  mrg   "vadci.i32\t%q0, %q1, %q2"
   9848      1.1  mrg   [(set_attr "type" "mve_move")
   9849      1.1  mrg    (set_attr "length" "4")])
   9850      1.1  mrg 
   9851      1.1  mrg ;;
   9852      1.1  mrg ;; [vadcq_m_s, vadcq_m_u])
   9853      1.1  mrg ;;
   9854      1.1  mrg (define_insn "mve_vadcq_m_<supf>v4si"
   9855      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9856      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
   9857      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   9858      1.1  mrg 		      (match_operand:V4SI 3 "s_register_operand" "w")
   9859  1.1.1.2  mrg 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
   9860      1.1  mrg 	 VADCQ_M))
   9861      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9862      1.1  mrg 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
   9863      1.1  mrg 	 VADCQ_M))
   9864      1.1  mrg   ]
   9865      1.1  mrg   "TARGET_HAVE_MVE"
   9866      1.1  mrg   "vpst\;vadct.i32\t%q0, %q2, %q3"
   9867      1.1  mrg   [(set_attr "type" "mve_move")
   9868      1.1  mrg    (set_attr "length" "8")])
   9869      1.1  mrg 
   9870      1.1  mrg ;;
   9871      1.1  mrg ;; [vadcq_u, vadcq_s])
   9872      1.1  mrg ;;
   9873      1.1  mrg (define_insn "mve_vadcq_<supf>v4si"
   9874      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9875      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   9876      1.1  mrg 		       (match_operand:V4SI 2 "s_register_operand" "w")]
   9877      1.1  mrg 	 VADCQ))
   9878      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9879      1.1  mrg 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
   9880      1.1  mrg 	 VADCQ))
   9881      1.1  mrg   ]
   9882      1.1  mrg   "TARGET_HAVE_MVE"
   9883      1.1  mrg   "vadc.i32\t%q0, %q1, %q2"
   9884      1.1  mrg   [(set_attr "type" "mve_move")
   9885      1.1  mrg    (set_attr "length" "4")
   9886      1.1  mrg    (set_attr "conds" "set")])
   9887      1.1  mrg 
   9888      1.1  mrg ;;
   9889      1.1  mrg ;; [vsbciq_m_u, vsbciq_m_s])
   9890      1.1  mrg ;;
   9891      1.1  mrg (define_insn "mve_vsbciq_m_<supf>v4si"
   9892      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9893      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   9894      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   9895      1.1  mrg 		      (match_operand:V4SI 3 "s_register_operand" "w")
   9896  1.1.1.2  mrg 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
   9897      1.1  mrg 	 VSBCIQ_M))
   9898      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9899      1.1  mrg 	(unspec:SI [(const_int 0)]
   9900      1.1  mrg 	 VSBCIQ_M))
   9901      1.1  mrg   ]
   9902      1.1  mrg   "TARGET_HAVE_MVE"
   9903      1.1  mrg   "vpst\;vsbcit.i32\t%q0, %q2, %q3"
   9904      1.1  mrg   [(set_attr "type" "mve_move")
   9905      1.1  mrg    (set_attr "length" "8")])
   9906      1.1  mrg 
   9907      1.1  mrg ;;
   9908      1.1  mrg ;; [vsbciq_s, vsbciq_u])
   9909      1.1  mrg ;;
   9910      1.1  mrg (define_insn "mve_vsbciq_<supf>v4si"
   9911      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9912      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   9913      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")]
   9914      1.1  mrg 	 VSBCIQ))
   9915      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9916      1.1  mrg 	(unspec:SI [(const_int 0)]
   9917      1.1  mrg 	 VSBCIQ))
   9918      1.1  mrg   ]
   9919      1.1  mrg   "TARGET_HAVE_MVE"
   9920      1.1  mrg   "vsbci.i32\t%q0, %q1, %q2"
   9921      1.1  mrg   [(set_attr "type" "mve_move")
   9922      1.1  mrg    (set_attr "length" "4")])
   9923      1.1  mrg 
   9924      1.1  mrg ;;
   9925      1.1  mrg ;; [vsbcq_m_u, vsbcq_m_s])
   9926      1.1  mrg ;;
   9927      1.1  mrg (define_insn "mve_vsbcq_m_<supf>v4si"
   9928      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9929      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   9930      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")
   9931      1.1  mrg 		      (match_operand:V4SI 3 "s_register_operand" "w")
   9932  1.1.1.2  mrg 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
   9933      1.1  mrg 	 VSBCQ_M))
   9934      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9935      1.1  mrg 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
   9936      1.1  mrg 	 VSBCQ_M))
   9937      1.1  mrg   ]
   9938      1.1  mrg   "TARGET_HAVE_MVE"
   9939      1.1  mrg   "vpst\;vsbct.i32\t%q0, %q2, %q3"
   9940      1.1  mrg   [(set_attr "type" "mve_move")
   9941      1.1  mrg    (set_attr "length" "8")])
   9942      1.1  mrg 
   9943      1.1  mrg ;;
   9944      1.1  mrg ;; [vsbcq_s, vsbcq_u])
   9945      1.1  mrg ;;
   9946      1.1  mrg (define_insn "mve_vsbcq_<supf>v4si"
   9947      1.1  mrg   [(set (match_operand:V4SI 0 "s_register_operand" "=w")
   9948      1.1  mrg 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
   9949      1.1  mrg 		      (match_operand:V4SI 2 "s_register_operand" "w")]
   9950      1.1  mrg 	 VSBCQ))
   9951      1.1  mrg    (set (reg:SI VFPCC_REGNUM)
   9952      1.1  mrg 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
   9953      1.1  mrg 	 VSBCQ))
   9954      1.1  mrg   ]
   9955      1.1  mrg   "TARGET_HAVE_MVE"
   9956      1.1  mrg   "vsbc.i32\t%q0, %q1, %q2"
   9957      1.1  mrg   [(set_attr "type" "mve_move")
   9958      1.1  mrg    (set_attr "length" "4")])
   9959      1.1  mrg 
   9960      1.1  mrg ;;
   9961      1.1  mrg ;; [vst2q])
   9962      1.1  mrg ;;
   9963      1.1  mrg (define_insn "mve_vst2q<mode>"
   9964  1.1.1.2  mrg   [(set (match_operand:OI 0 "mve_struct_operand" "=Ug")
   9965      1.1  mrg 	(unspec:OI [(match_operand:OI 1 "s_register_operand" "w")
   9966      1.1  mrg 		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
   9967      1.1  mrg 	 VST2Q))
   9968      1.1  mrg   ]
   9969      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   9970      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   9971      1.1  mrg {
   9972      1.1  mrg    rtx ops[4];
   9973      1.1  mrg    int regno = REGNO (operands[1]);
   9974      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   9975      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno + 4);
   9976      1.1  mrg    rtx reg  = operands[0];
   9977      1.1  mrg    while (reg && !REG_P (reg))
   9978      1.1  mrg     reg = XEXP (reg, 0);
   9979      1.1  mrg    gcc_assert (REG_P (reg));
   9980      1.1  mrg    ops[2] = reg;
   9981      1.1  mrg    ops[3] = operands[0];
   9982      1.1  mrg    output_asm_insn ("vst20.<V_sz_elem>\t{%q0, %q1}, [%2]\n\t"
   9983      1.1  mrg 		    "vst21.<V_sz_elem>\t{%q0, %q1}, %3", ops);
   9984      1.1  mrg    return "";
   9985      1.1  mrg }
   9986      1.1  mrg   [(set_attr "length" "8")])
   9987      1.1  mrg 
   9988      1.1  mrg ;;
   9989      1.1  mrg ;; [vld2q])
   9990      1.1  mrg ;;
   9991      1.1  mrg (define_insn "mve_vld2q<mode>"
   9992      1.1  mrg   [(set (match_operand:OI 0 "s_register_operand" "=w")
   9993  1.1.1.2  mrg 	(unspec:OI [(match_operand:OI 1 "mve_struct_operand" "Ug")
   9994      1.1  mrg 		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
   9995      1.1  mrg 	 VLD2Q))
   9996      1.1  mrg   ]
   9997      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   9998      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   9999      1.1  mrg {
   10000      1.1  mrg    rtx ops[4];
   10001      1.1  mrg    int regno = REGNO (operands[0]);
   10002      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   10003      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno + 4);
   10004      1.1  mrg    rtx reg  = operands[1];
   10005      1.1  mrg    while (reg && !REG_P (reg))
   10006      1.1  mrg     reg = XEXP (reg, 0);
   10007      1.1  mrg    gcc_assert (REG_P (reg));
   10008      1.1  mrg    ops[2] = reg;
   10009      1.1  mrg    ops[3] = operands[1];
   10010      1.1  mrg    output_asm_insn ("vld20.<V_sz_elem>\t{%q0, %q1}, [%2]\n\t"
   10011      1.1  mrg 		    "vld21.<V_sz_elem>\t{%q0, %q1}, %3", ops);
   10012      1.1  mrg    return "";
   10013      1.1  mrg }
   10014      1.1  mrg   [(set_attr "length" "8")])
   10015      1.1  mrg 
   10016      1.1  mrg ;;
   10017      1.1  mrg ;; [vld4q])
   10018      1.1  mrg ;;
   10019      1.1  mrg (define_insn "mve_vld4q<mode>"
   10020      1.1  mrg   [(set (match_operand:XI 0 "s_register_operand" "=w")
   10021  1.1.1.2  mrg 	(unspec:XI [(match_operand:XI 1 "mve_struct_operand" "Ug")
   10022      1.1  mrg 		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
   10023      1.1  mrg 	 VLD4Q))
   10024      1.1  mrg   ]
   10025      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10026      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   10027      1.1  mrg {
   10028      1.1  mrg    rtx ops[6];
   10029      1.1  mrg    int regno = REGNO (operands[0]);
   10030      1.1  mrg    ops[0] = gen_rtx_REG (TImode, regno);
   10031      1.1  mrg    ops[1] = gen_rtx_REG (TImode, regno+4);
   10032      1.1  mrg    ops[2] = gen_rtx_REG (TImode, regno+8);
   10033      1.1  mrg    ops[3] = gen_rtx_REG (TImode, regno + 12);
   10034      1.1  mrg    rtx reg  = operands[1];
   10035      1.1  mrg    while (reg && !REG_P (reg))
   10036      1.1  mrg     reg = XEXP (reg, 0);
   10037      1.1  mrg    gcc_assert (REG_P (reg));
   10038      1.1  mrg    ops[4] = reg;
   10039      1.1  mrg    ops[5] = operands[1];
   10040      1.1  mrg    output_asm_insn ("vld40.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
   10041      1.1  mrg 		    "vld41.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
   10042      1.1  mrg 		    "vld42.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
   10043      1.1  mrg 		    "vld43.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, %5", ops);
   10044      1.1  mrg    return "";
   10045      1.1  mrg }
   10046      1.1  mrg   [(set_attr "length" "16")])
   10047      1.1  mrg ;;
   10048      1.1  mrg ;; [vgetq_lane_u, vgetq_lane_s, vgetq_lane_f])
   10049      1.1  mrg ;;
   10050      1.1  mrg (define_insn "mve_vec_extract<mode><V_elem_l>"
   10051      1.1  mrg  [(set (match_operand:<V_elem> 0 "nonimmediate_operand" "=r")
   10052      1.1  mrg    (vec_select:<V_elem>
   10053      1.1  mrg     (match_operand:MVE_VLD_ST 1 "s_register_operand" "w")
   10054      1.1  mrg     (parallel [(match_operand:SI 2 "immediate_operand" "i")])))]
   10055      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10056      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   10057      1.1  mrg {
   10058      1.1  mrg   if (BYTES_BIG_ENDIAN)
   10059      1.1  mrg     {
   10060      1.1  mrg       int elt = INTVAL (operands[2]);
   10061      1.1  mrg       elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
   10062      1.1  mrg       operands[2] = GEN_INT (elt);
   10063      1.1  mrg     }
   10064      1.1  mrg   return "vmov.<V_extr_elem>\t%0, %q1[%c2]";
   10065      1.1  mrg }
   10066      1.1  mrg  [(set_attr "type" "mve_move")])
   10067      1.1  mrg 
   10068      1.1  mrg (define_insn "mve_vec_extractv2didi"
   10069      1.1  mrg  [(set (match_operand:DI 0 "nonimmediate_operand" "=r")
   10070      1.1  mrg    (vec_select:DI
   10071      1.1  mrg     (match_operand:V2DI 1 "s_register_operand" "w")
   10072      1.1  mrg     (parallel [(match_operand:SI 2 "immediate_operand" "i")])))]
   10073      1.1  mrg   "TARGET_HAVE_MVE"
   10074      1.1  mrg {
   10075      1.1  mrg   int elt = INTVAL (operands[2]);
   10076      1.1  mrg   if (BYTES_BIG_ENDIAN)
   10077      1.1  mrg     elt = 1 - elt;
   10078      1.1  mrg 
   10079      1.1  mrg   if (elt == 0)
   10080      1.1  mrg    return "vmov\t%Q0, %R0, %e1";
   10081      1.1  mrg   else
   10082      1.1  mrg    return "vmov\t%Q0, %R0, %f1";
   10083      1.1  mrg }
   10084      1.1  mrg  [(set_attr "type" "mve_move")])
   10085      1.1  mrg 
   10086      1.1  mrg (define_insn "*mve_vec_extract_sext_internal<mode>"
   10087      1.1  mrg  [(set (match_operand:SI 0 "s_register_operand" "=r")
   10088      1.1  mrg    (sign_extend:SI
   10089      1.1  mrg     (vec_select:<V_elem>
   10090      1.1  mrg      (match_operand:MVE_2 1 "s_register_operand" "w")
   10091      1.1  mrg      (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))]
   10092      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10093      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   10094      1.1  mrg {
   10095      1.1  mrg   if (BYTES_BIG_ENDIAN)
   10096      1.1  mrg     {
   10097      1.1  mrg       int elt = INTVAL (operands[2]);
   10098      1.1  mrg       elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
   10099      1.1  mrg       operands[2] = GEN_INT (elt);
   10100      1.1  mrg     }
   10101      1.1  mrg   return "vmov.s<V_sz_elem>\t%0, %q1[%c2]";
   10102      1.1  mrg }
   10103      1.1  mrg  [(set_attr "type" "mve_move")])
   10104      1.1  mrg 
   10105      1.1  mrg (define_insn "*mve_vec_extract_zext_internal<mode>"
   10106      1.1  mrg  [(set (match_operand:SI 0 "s_register_operand" "=r")
   10107      1.1  mrg    (zero_extend:SI
   10108      1.1  mrg     (vec_select:<V_elem>
   10109      1.1  mrg      (match_operand:MVE_2 1 "s_register_operand" "w")
   10110      1.1  mrg      (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))]
   10111      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10112      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   10113      1.1  mrg {
   10114      1.1  mrg   if (BYTES_BIG_ENDIAN)
   10115      1.1  mrg     {
   10116      1.1  mrg       int elt = INTVAL (operands[2]);
   10117      1.1  mrg       elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
   10118      1.1  mrg       operands[2] = GEN_INT (elt);
   10119      1.1  mrg     }
   10120      1.1  mrg   return "vmov.u<V_sz_elem>\t%0, %q1[%c2]";
   10121      1.1  mrg }
   10122      1.1  mrg  [(set_attr "type" "mve_move")])
   10123      1.1  mrg 
   10124      1.1  mrg ;;
   10125      1.1  mrg ;; [vsetq_lane_u, vsetq_lane_s, vsetq_lane_f])
   10126      1.1  mrg ;;
   10127      1.1  mrg (define_insn "mve_vec_set<mode>_internal"
   10128      1.1  mrg  [(set (match_operand:VQ2 0 "s_register_operand" "=w")
   10129      1.1  mrg        (vec_merge:VQ2
   10130      1.1  mrg 	(vec_duplicate:VQ2
   10131      1.1  mrg 	  (match_operand:<V_elem> 1 "nonimmediate_operand" "r"))
   10132      1.1  mrg 	(match_operand:VQ2 3 "s_register_operand" "0")
   10133      1.1  mrg 	(match_operand:SI 2 "immediate_operand" "i")))]
   10134      1.1  mrg   "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10135      1.1  mrg    || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))"
   10136      1.1  mrg {
   10137      1.1  mrg   int elt = ffs ((int) INTVAL (operands[2])) - 1;
   10138      1.1  mrg   if (BYTES_BIG_ENDIAN)
   10139      1.1  mrg     elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
   10140      1.1  mrg   operands[2] = GEN_INT (elt);
   10141      1.1  mrg 
   10142      1.1  mrg   return "vmov.<V_sz_elem>\t%q0[%c2], %1";
   10143      1.1  mrg }
   10144      1.1  mrg  [(set_attr "type" "mve_move")])
   10145      1.1  mrg 
   10146      1.1  mrg (define_insn "mve_vec_setv2di_internal"
   10147      1.1  mrg  [(set (match_operand:V2DI 0 "s_register_operand" "=w")
   10148      1.1  mrg        (vec_merge:V2DI
   10149      1.1  mrg 	(vec_duplicate:V2DI
   10150      1.1  mrg 	  (match_operand:DI 1 "nonimmediate_operand" "r"))
   10151      1.1  mrg 	(match_operand:V2DI 3 "s_register_operand" "0")
   10152      1.1  mrg 	(match_operand:SI 2 "immediate_operand" "i")))]
   10153      1.1  mrg  "TARGET_HAVE_MVE"
   10154      1.1  mrg {
   10155      1.1  mrg   int elt = ffs ((int) INTVAL (operands[2])) - 1;
   10156      1.1  mrg   if (BYTES_BIG_ENDIAN)
   10157      1.1  mrg     elt = 1 - elt;
   10158      1.1  mrg 
   10159      1.1  mrg   if (elt == 0)
   10160      1.1  mrg    return "vmov\t%e0, %Q1, %R1";
   10161      1.1  mrg   else
   10162  1.1.1.2  mrg    return "vmov\t%f0, %Q1, %R1";
   10163      1.1  mrg }
   10164      1.1  mrg  [(set_attr "type" "mve_move")])
   10165      1.1  mrg 
   10166      1.1  mrg ;;
   10167      1.1  mrg ;; [uqrshll_di]
   10168      1.1  mrg ;;
   10169      1.1  mrg (define_insn "mve_uqrshll_sat<supf>_di"
   10170      1.1  mrg   [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
   10171      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
   10172      1.1  mrg 		    (match_operand:SI 2 "register_operand" "r")]
   10173      1.1  mrg 	 UQRSHLLQ))]
   10174      1.1  mrg   "TARGET_HAVE_MVE"
   10175      1.1  mrg   "uqrshll%?\\t%Q1, %R1, #<supf>, %2"
   10176      1.1  mrg   [(set_attr "predicable" "yes")])
   10177      1.1  mrg 
   10178      1.1  mrg ;;
   10179      1.1  mrg ;; [sqrshrl_di]
   10180      1.1  mrg ;;
   10181      1.1  mrg (define_insn "mve_sqrshrl_sat<supf>_di"
   10182      1.1  mrg   [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
   10183      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
   10184      1.1  mrg 		    (match_operand:SI 2 "register_operand" "r")]
   10185      1.1  mrg 	 SQRSHRLQ))]
   10186      1.1  mrg   "TARGET_HAVE_MVE"
   10187      1.1  mrg   "sqrshrl%?\\t%Q1, %R1, #<supf>, %2"
   10188      1.1  mrg   [(set_attr "predicable" "yes")])
   10189      1.1  mrg 
   10190      1.1  mrg ;;
   10191      1.1  mrg ;; [uqrshl_si]
   10192      1.1  mrg ;;
   10193      1.1  mrg (define_insn "mve_uqrshl_si"
   10194      1.1  mrg   [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
   10195      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0")
   10196      1.1  mrg 		    (match_operand:SI 2 "register_operand" "r")]
   10197      1.1  mrg 	 UQRSHL))]
   10198      1.1  mrg   "TARGET_HAVE_MVE"
   10199      1.1  mrg   "uqrshl%?\\t%1, %2"
   10200      1.1  mrg   [(set_attr "predicable" "yes")])
   10201      1.1  mrg 
   10202      1.1  mrg ;;
   10203      1.1  mrg ;; [sqrshr_si]
   10204      1.1  mrg ;;
   10205      1.1  mrg (define_insn "mve_sqrshr_si"
   10206      1.1  mrg   [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
   10207      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0")
   10208      1.1  mrg 		    (match_operand:SI 2 "register_operand" "r")]
   10209      1.1  mrg 	 SQRSHR))]
   10210      1.1  mrg   "TARGET_HAVE_MVE"
   10211      1.1  mrg   "sqrshr%?\\t%1, %2"
   10212      1.1  mrg   [(set_attr "predicable" "yes")])
   10213      1.1  mrg 
   10214      1.1  mrg ;;
   10215      1.1  mrg ;; [uqshll_di]
   10216      1.1  mrg ;;
   10217      1.1  mrg (define_insn "mve_uqshll_di"
   10218      1.1  mrg   [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
   10219      1.1  mrg 	(us_ashift:DI (match_operand:DI 1 "arm_low_register_operand" "0")
   10220      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "Pg")))]
   10221      1.1  mrg   "TARGET_HAVE_MVE"
   10222      1.1  mrg   "uqshll%?\\t%Q1, %R1, %2"
   10223      1.1  mrg   [(set_attr "predicable" "yes")])
   10224      1.1  mrg 
   10225      1.1  mrg ;;
   10226      1.1  mrg ;; [urshrl_di]
   10227      1.1  mrg ;;
   10228      1.1  mrg (define_insn "mve_urshrl_di"
   10229      1.1  mrg   [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
   10230      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
   10231      1.1  mrg 		    (match_operand:SI 2 "immediate_operand" "Pg")]
   10232      1.1  mrg 	 URSHRL))]
   10233      1.1  mrg   "TARGET_HAVE_MVE"
   10234      1.1  mrg   "urshrl%?\\t%Q1, %R1, %2"
   10235      1.1  mrg   [(set_attr "predicable" "yes")])
   10236      1.1  mrg 
   10237      1.1  mrg ;;
   10238      1.1  mrg ;; [uqshl_si]
   10239      1.1  mrg ;;
   10240      1.1  mrg (define_insn "mve_uqshl_si"
   10241      1.1  mrg   [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
   10242      1.1  mrg 	(us_ashift:SI (match_operand:SI 1 "arm_general_register_operand" "0")
   10243      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "Pg")))]
   10244      1.1  mrg   "TARGET_HAVE_MVE"
   10245      1.1  mrg   "uqshl%?\\t%1, %2"
   10246      1.1  mrg   [(set_attr "predicable" "yes")])
   10247      1.1  mrg 
   10248      1.1  mrg ;;
   10249      1.1  mrg ;; [urshr_si]
   10250      1.1  mrg ;;
   10251      1.1  mrg (define_insn "mve_urshr_si"
   10252      1.1  mrg   [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
   10253      1.1  mrg 	(unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0")
   10254      1.1  mrg 		    (match_operand:SI 2 "immediate_operand" "Pg")]
   10255      1.1  mrg 	 URSHR))]
   10256      1.1  mrg   "TARGET_HAVE_MVE"
   10257      1.1  mrg   "urshr%?\\t%1, %2"
   10258      1.1  mrg   [(set_attr "predicable" "yes")])
   10259      1.1  mrg 
   10260      1.1  mrg ;;
   10261      1.1  mrg ;; [sqshl_si]
   10262      1.1  mrg ;;
   10263      1.1  mrg (define_insn "mve_sqshl_si"
   10264      1.1  mrg   [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
   10265      1.1  mrg 	(ss_ashift:SI (match_operand:DI 1 "arm_general_register_operand" "0")
   10266      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "Pg")))]
   10267      1.1  mrg   "TARGET_HAVE_MVE"
   10268      1.1  mrg   "sqshl%?\\t%1, %2"
   10269      1.1  mrg   [(set_attr "predicable" "yes")])
   10270      1.1  mrg 
   10271      1.1  mrg ;;
   10272      1.1  mrg ;; [srshr_si]
   10273      1.1  mrg ;;
   10274      1.1  mrg (define_insn "mve_srshr_si"
   10275      1.1  mrg   [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
   10276      1.1  mrg 	(unspec:SI [(match_operand:DI 1 "arm_general_register_operand" "0")
   10277      1.1  mrg 		    (match_operand:SI 2 "immediate_operand" "Pg")]
   10278      1.1  mrg 	 SRSHR))]
   10279      1.1  mrg   "TARGET_HAVE_MVE"
   10280      1.1  mrg   "srshr%?\\t%1, %2"
   10281      1.1  mrg   [(set_attr "predicable" "yes")])
   10282      1.1  mrg 
   10283      1.1  mrg ;;
   10284      1.1  mrg ;; [srshrl_di]
   10285      1.1  mrg ;;
   10286      1.1  mrg (define_insn "mve_srshrl_di"
   10287      1.1  mrg   [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
   10288      1.1  mrg 	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
   10289      1.1  mrg 		    (match_operand:SI 2 "immediate_operand" "Pg")]
   10290      1.1  mrg 	 SRSHRL))]
   10291      1.1  mrg   "TARGET_HAVE_MVE"
   10292      1.1  mrg   "srshrl%?\\t%Q1, %R1, %2"
   10293      1.1  mrg   [(set_attr "predicable" "yes")])
   10294      1.1  mrg 
   10295      1.1  mrg ;;
   10296      1.1  mrg ;; [sqshll_di]
   10297      1.1  mrg ;;
   10298      1.1  mrg (define_insn "mve_sqshll_di"
   10299      1.1  mrg   [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
   10300      1.1  mrg 	(ss_ashift:DI (match_operand:DI 1 "arm_low_register_operand" "0")
   10301      1.1  mrg 		      (match_operand:SI 2 "immediate_operand" "Pg")))]
   10302      1.1  mrg   "TARGET_HAVE_MVE"
   10303      1.1  mrg   "sqshll%?\\t%Q1, %R1, %2"
   10304      1.1  mrg   [(set_attr "predicable" "yes")])
   10305      1.1  mrg 
   10306      1.1  mrg ;;
   10307      1.1  mrg ;; [vshlcq_m_u vshlcq_m_s]
   10308      1.1  mrg ;;
   10309      1.1  mrg (define_expand "mve_vshlcq_m_vec_<supf><mode>"
   10310      1.1  mrg  [(match_operand:MVE_2 0 "s_register_operand")
   10311      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   10312      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   10313      1.1  mrg   (match_operand:SI 3 "mve_imm_32")
   10314  1.1.1.2  mrg   (match_operand:<MVE_VPRED> 4 "vpr_register_operand")
   10315      1.1  mrg   (unspec:MVE_2 [(const_int 0)] VSHLCQ_M)]
   10316      1.1  mrg  "TARGET_HAVE_MVE"
   10317      1.1  mrg {
   10318      1.1  mrg   rtx ignore_wb = gen_reg_rtx (SImode);
   10319      1.1  mrg   emit_insn (gen_mve_vshlcq_m_<supf><mode> (operands[0], ignore_wb, operands[1],
   10320      1.1  mrg 					    operands[2], operands[3],
   10321      1.1  mrg 					    operands[4]));
   10322      1.1  mrg   DONE;
   10323      1.1  mrg })
   10324      1.1  mrg 
   10325      1.1  mrg (define_expand "mve_vshlcq_m_carry_<supf><mode>"
   10326      1.1  mrg  [(match_operand:SI 0 "s_register_operand")
   10327      1.1  mrg   (match_operand:MVE_2 1 "s_register_operand")
   10328      1.1  mrg   (match_operand:SI 2 "s_register_operand")
   10329      1.1  mrg   (match_operand:SI 3 "mve_imm_32")
   10330  1.1.1.2  mrg   (match_operand:<MVE_VPRED> 4 "vpr_register_operand")
   10331      1.1  mrg   (unspec:MVE_2 [(const_int 0)] VSHLCQ_M)]
   10332      1.1  mrg  "TARGET_HAVE_MVE"
   10333      1.1  mrg {
   10334      1.1  mrg   rtx ignore_vec = gen_reg_rtx (<MODE>mode);
   10335      1.1  mrg   emit_insn (gen_mve_vshlcq_m_<supf><mode> (ignore_vec, operands[0],
   10336      1.1  mrg 					    operands[1], operands[2],
   10337      1.1  mrg 					    operands[3], operands[4]));
   10338      1.1  mrg   DONE;
   10339      1.1  mrg })
   10340      1.1  mrg 
   10341      1.1  mrg (define_insn "mve_vshlcq_m_<supf><mode>"
   10342      1.1  mrg  [(set (match_operand:MVE_2 0 "s_register_operand" "=w")
   10343      1.1  mrg        (unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0")
   10344      1.1  mrg 		      (match_operand:SI 3 "s_register_operand" "1")
   10345      1.1  mrg 		      (match_operand:SI 4 "mve_imm_32" "Rf")
   10346  1.1.1.2  mrg 		      (match_operand:<MVE_VPRED> 5 "vpr_register_operand" "Up")]
   10347      1.1  mrg 	VSHLCQ_M))
   10348      1.1  mrg   (set (match_operand:SI  1 "s_register_operand" "=r")
   10349      1.1  mrg        (unspec:SI [(match_dup 2)
   10350      1.1  mrg 		   (match_dup 3)
   10351      1.1  mrg 		   (match_dup 4)
   10352      1.1  mrg 		   (match_dup 5)]
   10353      1.1  mrg 	VSHLCQ_M))
   10354      1.1  mrg  ]
   10355      1.1  mrg  "TARGET_HAVE_MVE"
   10356      1.1  mrg  "vpst\;vshlct\t%q0, %1, %4"
   10357      1.1  mrg  [(set_attr "type" "mve_move")
   10358      1.1  mrg   (set_attr "length" "8")])
   10359      1.1  mrg 
   10360      1.1  mrg ;; CDE instructions on MVE registers.
   10361      1.1  mrg 
   10362      1.1  mrg (define_insn "arm_vcx1qv16qi"
   10363      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10364      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10365      1.1  mrg 			   (match_operand:SI 2 "const_int_mve_cde1_operand" "i")]
   10366      1.1  mrg 	 UNSPEC_VCDE))]
   10367      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10368      1.1  mrg   "vcx1\\tp%c1, %q0, #%c2"
   10369      1.1  mrg   [(set_attr "type" "coproc")]
   10370      1.1  mrg )
   10371      1.1  mrg 
   10372      1.1  mrg (define_insn "arm_vcx1qav16qi"
   10373      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10374      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10375      1.1  mrg 			    (match_operand:V16QI 2 "register_operand" "0")
   10376      1.1  mrg 			    (match_operand:SI 3 "const_int_mve_cde1_operand" "i")]
   10377      1.1  mrg 	 UNSPEC_VCDEA))]
   10378      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10379      1.1  mrg   "vcx1a\\tp%c1, %q0, #%c3"
   10380      1.1  mrg   [(set_attr "type" "coproc")]
   10381      1.1  mrg )
   10382      1.1  mrg 
   10383      1.1  mrg (define_insn "arm_vcx2qv16qi"
   10384      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10385      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10386      1.1  mrg 			  (match_operand:V16QI 2 "register_operand" "t")
   10387      1.1  mrg 			  (match_operand:SI 3 "const_int_mve_cde2_operand" "i")]
   10388      1.1  mrg 	 UNSPEC_VCDE))]
   10389      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10390      1.1  mrg   "vcx2\\tp%c1, %q0, %q2, #%c3"
   10391      1.1  mrg   [(set_attr "type" "coproc")]
   10392      1.1  mrg )
   10393      1.1  mrg 
   10394      1.1  mrg (define_insn "arm_vcx2qav16qi"
   10395      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10396      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10397      1.1  mrg 			  (match_operand:V16QI 2 "register_operand" "0")
   10398      1.1  mrg 			  (match_operand:V16QI 3 "register_operand" "t")
   10399      1.1  mrg 			  (match_operand:SI 4 "const_int_mve_cde2_operand" "i")]
   10400      1.1  mrg 	 UNSPEC_VCDEA))]
   10401      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10402      1.1  mrg   "vcx2a\\tp%c1, %q0, %q3, #%c4"
   10403      1.1  mrg   [(set_attr "type" "coproc")]
   10404      1.1  mrg )
   10405      1.1  mrg 
   10406      1.1  mrg (define_insn "arm_vcx3qv16qi"
   10407      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10408      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10409      1.1  mrg 			  (match_operand:V16QI 2 "register_operand" "t")
   10410      1.1  mrg 			  (match_operand:V16QI 3 "register_operand" "t")
   10411      1.1  mrg 			  (match_operand:SI 4 "const_int_mve_cde3_operand" "i")]
   10412      1.1  mrg 	 UNSPEC_VCDE))]
   10413      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10414      1.1  mrg   "vcx3\\tp%c1, %q0, %q2, %q3, #%c4"
   10415      1.1  mrg   [(set_attr "type" "coproc")]
   10416      1.1  mrg )
   10417      1.1  mrg 
   10418      1.1  mrg (define_insn "arm_vcx3qav16qi"
   10419      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10420      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10421      1.1  mrg 			  (match_operand:V16QI 2 "register_operand" "0")
   10422      1.1  mrg 			  (match_operand:V16QI 3 "register_operand" "t")
   10423      1.1  mrg 			  (match_operand:V16QI 4 "register_operand" "t")
   10424      1.1  mrg 			  (match_operand:SI 5 "const_int_mve_cde3_operand" "i")]
   10425      1.1  mrg 	 UNSPEC_VCDEA))]
   10426      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10427      1.1  mrg   "vcx3a\\tp%c1, %q0, %q3, %q4, #%c5"
   10428      1.1  mrg   [(set_attr "type" "coproc")]
   10429      1.1  mrg )
   10430      1.1  mrg 
   10431      1.1  mrg (define_insn "arm_vcx1q<a>_p_v16qi"
   10432      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10433      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10434      1.1  mrg 			   (match_operand:V16QI 2 "register_operand" "0")
   10435      1.1  mrg 			   (match_operand:SI 3 "const_int_mve_cde1_operand" "i")
   10436  1.1.1.2  mrg 			   (match_operand:V16BI 4 "vpr_register_operand" "Up")]
   10437      1.1  mrg 	 CDE_VCX))]
   10438      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10439      1.1  mrg   "vpst\;vcx1<a>t\\tp%c1, %q0, #%c3"
   10440      1.1  mrg   [(set_attr "type" "coproc")
   10441      1.1  mrg    (set_attr "length" "8")]
   10442      1.1  mrg )
   10443      1.1  mrg 
   10444      1.1  mrg (define_insn "arm_vcx2q<a>_p_v16qi"
   10445      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10446      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10447      1.1  mrg 			  (match_operand:V16QI 2 "register_operand" "0")
   10448      1.1  mrg 			  (match_operand:V16QI 3 "register_operand" "t")
   10449      1.1  mrg 			  (match_operand:SI 4 "const_int_mve_cde2_operand" "i")
   10450  1.1.1.2  mrg 			  (match_operand:V16BI 5 "vpr_register_operand" "Up")]
   10451      1.1  mrg 	 CDE_VCX))]
   10452      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10453      1.1  mrg   "vpst\;vcx2<a>t\\tp%c1, %q0, %q3, #%c4"
   10454      1.1  mrg   [(set_attr "type" "coproc")
   10455      1.1  mrg    (set_attr "length" "8")]
   10456      1.1  mrg )
   10457      1.1  mrg 
   10458      1.1  mrg (define_insn "arm_vcx3q<a>_p_v16qi"
   10459      1.1  mrg   [(set (match_operand:V16QI 0 "register_operand" "=t")
   10460      1.1  mrg 	(unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i")
   10461      1.1  mrg 			  (match_operand:V16QI 2 "register_operand" "0")
   10462      1.1  mrg 			  (match_operand:V16QI 3 "register_operand" "t")
   10463      1.1  mrg 			  (match_operand:V16QI 4 "register_operand" "t")
   10464      1.1  mrg 			  (match_operand:SI 5 "const_int_mve_cde3_operand" "i")
   10465  1.1.1.2  mrg 			  (match_operand:V16BI 6 "vpr_register_operand" "Up")]
   10466      1.1  mrg 	 CDE_VCX))]
   10467      1.1  mrg   "TARGET_CDE && TARGET_HAVE_MVE"
   10468      1.1  mrg   "vpst\;vcx3<a>t\\tp%c1, %q0, %q3, %q4, #%c5"
   10469      1.1  mrg   [(set_attr "type" "coproc")
   10470      1.1  mrg    (set_attr "length" "8")]
   10471      1.1  mrg )
   10472  1.1.1.2  mrg 
   10473  1.1.1.2  mrg (define_insn "*movmisalign<mode>_mve_store"
   10474  1.1.1.2  mrg   [(set (match_operand:MVE_VLD_ST 0 "mve_memory_operand"	     "=Ux")
   10475  1.1.1.2  mrg 	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "s_register_operand" " w")]
   10476  1.1.1.2  mrg 	 UNSPEC_MISALIGNED_ACCESS))]
   10477  1.1.1.2  mrg   "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10478  1.1.1.2  mrg     || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode)))
   10479  1.1.1.2  mrg    && !BYTES_BIG_ENDIAN && unaligned_access"
   10480  1.1.1.2  mrg   "vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0"
   10481  1.1.1.2  mrg   [(set_attr "type" "mve_store")]
   10482  1.1.1.2  mrg )
   10483  1.1.1.2  mrg 
   10484  1.1.1.2  mrg 
   10485  1.1.1.2  mrg (define_insn "*movmisalign<mode>_mve_load"
   10486  1.1.1.2  mrg   [(set (match_operand:MVE_VLD_ST 0 "s_register_operand"				 "=w")
   10487  1.1.1.2  mrg 	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "mve_memory_operand" " Ux")]
   10488  1.1.1.2  mrg 	 UNSPEC_MISALIGNED_ACCESS))]
   10489  1.1.1.2  mrg   "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
   10490  1.1.1.2  mrg     || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode)))
   10491  1.1.1.2  mrg    && !BYTES_BIG_ENDIAN && unaligned_access"
   10492  1.1.1.2  mrg   "vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1"
   10493  1.1.1.2  mrg   [(set_attr "type" "mve_load")]
   10494  1.1.1.2  mrg )
   10495  1.1.1.2  mrg 
   10496  1.1.1.2  mrg ;; Expander for VxBI moves
   10497  1.1.1.2  mrg (define_expand "mov<mode>"
   10498  1.1.1.2  mrg   [(set (match_operand:MVE_7 0 "nonimmediate_operand")
   10499  1.1.1.2  mrg         (match_operand:MVE_7 1 "general_operand"))]
   10500  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   10501  1.1.1.2  mrg   {
   10502  1.1.1.2  mrg     if (!register_operand (operands[0], <MODE>mode))
   10503  1.1.1.2  mrg       operands[1] = force_reg (<MODE>mode, operands[1]);
   10504  1.1.1.2  mrg   }
   10505  1.1.1.2  mrg )
   10506  1.1.1.2  mrg 
   10507  1.1.1.2  mrg ;; Expanders for vec_cmp and vcond
   10508  1.1.1.2  mrg 
   10509  1.1.1.2  mrg (define_expand "vec_cmp<mode><MVE_vpred>"
   10510  1.1.1.2  mrg   [(set (match_operand:<MVE_VPRED> 0 "s_register_operand")
   10511  1.1.1.2  mrg 	(match_operator:<MVE_VPRED> 1 "comparison_operator"
   10512  1.1.1.2  mrg 	  [(match_operand:MVE_VLD_ST 2 "s_register_operand")
   10513  1.1.1.2  mrg 	   (match_operand:MVE_VLD_ST 3 "reg_or_zero_operand")]))]
   10514  1.1.1.2  mrg   "TARGET_HAVE_MVE
   10515  1.1.1.2  mrg    && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
   10516  1.1.1.2  mrg {
   10517  1.1.1.2  mrg   arm_expand_vector_compare (operands[0], GET_CODE (operands[1]),
   10518  1.1.1.2  mrg 			     operands[2], operands[3], false);
   10519  1.1.1.2  mrg   DONE;
   10520  1.1.1.2  mrg })
   10521  1.1.1.2  mrg 
   10522  1.1.1.2  mrg (define_expand "vec_cmpu<mode><MVE_vpred>"
   10523  1.1.1.2  mrg   [(set (match_operand:<MVE_VPRED> 0 "s_register_operand")
   10524  1.1.1.2  mrg 	(match_operator:<MVE_VPRED> 1 "comparison_operator"
   10525  1.1.1.2  mrg 	  [(match_operand:MVE_2 2 "s_register_operand")
   10526  1.1.1.2  mrg 	   (match_operand:MVE_2 3 "reg_or_zero_operand")]))]
   10527  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   10528  1.1.1.2  mrg {
   10529  1.1.1.2  mrg   arm_expand_vector_compare (operands[0], GET_CODE (operands[1]),
   10530  1.1.1.2  mrg 			     operands[2], operands[3], false);
   10531  1.1.1.2  mrg   DONE;
   10532  1.1.1.2  mrg })
   10533  1.1.1.2  mrg 
   10534  1.1.1.2  mrg (define_expand "vcond_mask_<mode><MVE_vpred>"
   10535  1.1.1.2  mrg   [(set (match_operand:MVE_VLD_ST 0 "s_register_operand")
   10536  1.1.1.2  mrg 	(if_then_else:MVE_VLD_ST
   10537  1.1.1.2  mrg 	  (match_operand:<MVE_VPRED> 3 "s_register_operand")
   10538  1.1.1.2  mrg 	  (match_operand:MVE_VLD_ST 1 "s_register_operand")
   10539  1.1.1.2  mrg 	  (match_operand:MVE_VLD_ST 2 "s_register_operand")))]
   10540  1.1.1.2  mrg   "TARGET_HAVE_MVE"
   10541  1.1.1.2  mrg {
   10542  1.1.1.2  mrg   switch (GET_MODE_CLASS (<MODE>mode))
   10543  1.1.1.2  mrg     {
   10544  1.1.1.2  mrg       case MODE_VECTOR_INT:
   10545  1.1.1.2  mrg 	emit_insn (gen_mve_vpselq (VPSELQ_S, <MODE>mode, operands[0],
   10546  1.1.1.2  mrg 				   operands[1], operands[2], operands[3]));
   10547  1.1.1.2  mrg 	break;
   10548  1.1.1.2  mrg       case MODE_VECTOR_FLOAT:
   10549  1.1.1.2  mrg 	emit_insn (gen_mve_vpselq_f (<MODE>mode, operands[0],
   10550  1.1.1.2  mrg 				     operands[1], operands[2], operands[3]));
   10551  1.1.1.2  mrg 	break;
   10552  1.1.1.2  mrg       default:
   10553  1.1.1.2  mrg 	gcc_unreachable ();
   10554  1.1.1.2  mrg     }
   10555  1.1.1.2  mrg   DONE;
   10556  1.1.1.2  mrg })
   10557