1*0bfacb9bSmrg;; Arm M-profile Vector Extension Machine Description 2*0bfacb9bSmrg;; Copyright (C) 2019-2020 Free Software Foundation, Inc. 3*0bfacb9bSmrg;; 4*0bfacb9bSmrg;; This file is part of GCC. 5*0bfacb9bSmrg;; 6*0bfacb9bSmrg;; GCC is free software; you can redistribute it and/or modify it 7*0bfacb9bSmrg;; under the terms of the GNU General Public License as published by 8*0bfacb9bSmrg;; the Free Software Foundation; either version 3, or (at your option) 9*0bfacb9bSmrg;; any later version. 10*0bfacb9bSmrg;; 11*0bfacb9bSmrg;; GCC is distributed in the hope that it will be useful, but 12*0bfacb9bSmrg;; WITHOUT ANY WARRANTY; without even the implied warranty of 13*0bfacb9bSmrg;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*0bfacb9bSmrg;; General Public License for more details. 15*0bfacb9bSmrg;; 16*0bfacb9bSmrg;; You should have received a copy of the GNU General Public License 17*0bfacb9bSmrg;; along with GCC; see the file COPYING3. If not see 18*0bfacb9bSmrg;; <http://www.gnu.org/licenses/>. 19*0bfacb9bSmrg 20*0bfacb9bSmrg(define_insn "*mve_mov<mode>" 21*0bfacb9bSmrg [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w,w,r,w,Ux,w") 22*0bfacb9bSmrg (match_operand:MVE_types 1 "general_operand" "w,r,w,Dn,UxUi,r,Dm,w,Ul"))] 23*0bfacb9bSmrg "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT" 24*0bfacb9bSmrg{ 25*0bfacb9bSmrg if (which_alternative == 3 || which_alternative == 6) 26*0bfacb9bSmrg { 27*0bfacb9bSmrg int width, is_valid; 28*0bfacb9bSmrg static char templ[40]; 29*0bfacb9bSmrg 30*0bfacb9bSmrg is_valid = simd_immediate_valid_for_move (operands[1], <MODE>mode, 31*0bfacb9bSmrg &operands[1], &width); 32*0bfacb9bSmrg 33*0bfacb9bSmrg gcc_assert (is_valid != 0); 34*0bfacb9bSmrg 35*0bfacb9bSmrg if (width == 0) 36*0bfacb9bSmrg return "vmov.f32\t%q0, %1 @ <mode>"; 37*0bfacb9bSmrg else 38*0bfacb9bSmrg sprintf (templ, "vmov.i%d\t%%q0, %%x1 @ <mode>", width); 39*0bfacb9bSmrg return templ; 40*0bfacb9bSmrg } 41*0bfacb9bSmrg 42*0bfacb9bSmrg if (which_alternative == 4 || which_alternative == 7) 43*0bfacb9bSmrg { 44*0bfacb9bSmrg if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode || <MODE>mode == TImode) 45*0bfacb9bSmrg { 46*0bfacb9bSmrg if (which_alternative == 7) 47*0bfacb9bSmrg output_asm_insn ("vstrw.32\t%q1, %E0", operands); 48*0bfacb9bSmrg else 49*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, %E1",operands); 50*0bfacb9bSmrg } 51*0bfacb9bSmrg else 52*0bfacb9bSmrg { 53*0bfacb9bSmrg if (which_alternative == 7) 54*0bfacb9bSmrg output_asm_insn ("vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0", operands); 55*0bfacb9bSmrg else 56*0bfacb9bSmrg output_asm_insn ("vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1", operands); 57*0bfacb9bSmrg } 58*0bfacb9bSmrg return ""; 59*0bfacb9bSmrg } 60*0bfacb9bSmrg switch (which_alternative) 61*0bfacb9bSmrg { 62*0bfacb9bSmrg case 0: 63*0bfacb9bSmrg return "vmov\t%q0, %q1"; 64*0bfacb9bSmrg case 1: 65*0bfacb9bSmrg return "vmov\t%e0, %Q1, %R1 @ <mode>\;vmov\t%f0, %J1, %K1"; 66*0bfacb9bSmrg case 2: 67*0bfacb9bSmrg return "vmov\t%Q0, %R0, %e1 @ <mode>\;vmov\t%J0, %K0, %f1"; 68*0bfacb9bSmrg case 5: 69*0bfacb9bSmrg return output_move_quad (operands); 70*0bfacb9bSmrg case 8: 71*0bfacb9bSmrg return output_move_neon (operands); 72*0bfacb9bSmrg default: 73*0bfacb9bSmrg gcc_unreachable (); 74*0bfacb9bSmrg return ""; 75*0bfacb9bSmrg } 76*0bfacb9bSmrg} 77*0bfacb9bSmrg [(set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_move,mve_store,mve_load") 78*0bfacb9bSmrg (set_attr "length" "4,8,8,4,8,8,4,4,4") 79*0bfacb9bSmrg (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,*") 80*0bfacb9bSmrg (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,*")]) 81*0bfacb9bSmrg 82*0bfacb9bSmrg(define_insn "*mve_vdup<mode>" 83*0bfacb9bSmrg [(set (match_operand:MVE_vecs 0 "s_register_operand" "=w") 84*0bfacb9bSmrg (vec_duplicate:MVE_vecs 85*0bfacb9bSmrg (match_operand:<V_elem> 1 "s_register_operand" "r")))] 86*0bfacb9bSmrg "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT" 87*0bfacb9bSmrg "vdup.<V_sz_elem>\t%q0, %1" 88*0bfacb9bSmrg [(set_attr "length" "4") 89*0bfacb9bSmrg (set_attr "type" "mve_move")]) 90*0bfacb9bSmrg 91*0bfacb9bSmrg;; 92*0bfacb9bSmrg;; [vst4q]) 93*0bfacb9bSmrg;; 94*0bfacb9bSmrg(define_insn "mve_vst4q<mode>" 95*0bfacb9bSmrg [(set (match_operand:XI 0 "neon_struct_operand" "=Um") 96*0bfacb9bSmrg (unspec:XI [(match_operand:XI 1 "s_register_operand" "w") 97*0bfacb9bSmrg (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] 98*0bfacb9bSmrg VST4Q)) 99*0bfacb9bSmrg ] 100*0bfacb9bSmrg "TARGET_HAVE_MVE" 101*0bfacb9bSmrg{ 102*0bfacb9bSmrg rtx ops[6]; 103*0bfacb9bSmrg int regno = REGNO (operands[1]); 104*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 105*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno+4); 106*0bfacb9bSmrg ops[2] = gen_rtx_REG (TImode, regno+8); 107*0bfacb9bSmrg ops[3] = gen_rtx_REG (TImode, regno+12); 108*0bfacb9bSmrg rtx reg = operands[0]; 109*0bfacb9bSmrg while (reg && !REG_P (reg)) 110*0bfacb9bSmrg reg = XEXP (reg, 0); 111*0bfacb9bSmrg gcc_assert (REG_P (reg)); 112*0bfacb9bSmrg ops[4] = reg; 113*0bfacb9bSmrg ops[5] = operands[0]; 114*0bfacb9bSmrg /* Here in first three instructions data is stored to ops[4]'s location but 115*0bfacb9bSmrg in the fourth instruction data is stored to operands[0], this is to 116*0bfacb9bSmrg support the writeback. */ 117*0bfacb9bSmrg output_asm_insn ("vst40.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t" 118*0bfacb9bSmrg "vst41.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t" 119*0bfacb9bSmrg "vst42.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t" 120*0bfacb9bSmrg "vst43.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, %5", ops); 121*0bfacb9bSmrg return ""; 122*0bfacb9bSmrg} 123*0bfacb9bSmrg [(set_attr "length" "16")]) 124*0bfacb9bSmrg 125*0bfacb9bSmrg;; 126*0bfacb9bSmrg;; [vrndq_m_f]) 127*0bfacb9bSmrg;; 128*0bfacb9bSmrg(define_insn "mve_vrndq_m_f<mode>" 129*0bfacb9bSmrg [ 130*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 131*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 132*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 133*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 134*0bfacb9bSmrg VRNDQ_M_F)) 135*0bfacb9bSmrg ] 136*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 137*0bfacb9bSmrg "vpst\;vrintzt.f%#<V_sz_elem> %q0, %q2" 138*0bfacb9bSmrg [(set_attr "type" "mve_move") 139*0bfacb9bSmrg (set_attr "length""8")]) 140*0bfacb9bSmrg 141*0bfacb9bSmrg;; 142*0bfacb9bSmrg;; [vrndxq_f]) 143*0bfacb9bSmrg;; 144*0bfacb9bSmrg(define_insn "mve_vrndxq_f<mode>" 145*0bfacb9bSmrg [ 146*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 147*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 148*0bfacb9bSmrg VRNDXQ_F)) 149*0bfacb9bSmrg ] 150*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 151*0bfacb9bSmrg "vrintx.f%#<V_sz_elem> %q0, %q1" 152*0bfacb9bSmrg [(set_attr "type" "mve_move") 153*0bfacb9bSmrg]) 154*0bfacb9bSmrg 155*0bfacb9bSmrg;; 156*0bfacb9bSmrg;; [vrndq_f]) 157*0bfacb9bSmrg;; 158*0bfacb9bSmrg(define_insn "mve_vrndq_f<mode>" 159*0bfacb9bSmrg [ 160*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 161*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 162*0bfacb9bSmrg VRNDQ_F)) 163*0bfacb9bSmrg ] 164*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 165*0bfacb9bSmrg "vrintz.f%#<V_sz_elem> %q0, %q1" 166*0bfacb9bSmrg [(set_attr "type" "mve_move") 167*0bfacb9bSmrg]) 168*0bfacb9bSmrg 169*0bfacb9bSmrg;; 170*0bfacb9bSmrg;; [vrndpq_f]) 171*0bfacb9bSmrg;; 172*0bfacb9bSmrg(define_insn "mve_vrndpq_f<mode>" 173*0bfacb9bSmrg [ 174*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 175*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 176*0bfacb9bSmrg VRNDPQ_F)) 177*0bfacb9bSmrg ] 178*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 179*0bfacb9bSmrg "vrintp.f%#<V_sz_elem> %q0, %q1" 180*0bfacb9bSmrg [(set_attr "type" "mve_move") 181*0bfacb9bSmrg]) 182*0bfacb9bSmrg 183*0bfacb9bSmrg;; 184*0bfacb9bSmrg;; [vrndnq_f]) 185*0bfacb9bSmrg;; 186*0bfacb9bSmrg(define_insn "mve_vrndnq_f<mode>" 187*0bfacb9bSmrg [ 188*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 189*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 190*0bfacb9bSmrg VRNDNQ_F)) 191*0bfacb9bSmrg ] 192*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 193*0bfacb9bSmrg "vrintn.f%#<V_sz_elem> %q0, %q1" 194*0bfacb9bSmrg [(set_attr "type" "mve_move") 195*0bfacb9bSmrg]) 196*0bfacb9bSmrg 197*0bfacb9bSmrg;; 198*0bfacb9bSmrg;; [vrndmq_f]) 199*0bfacb9bSmrg;; 200*0bfacb9bSmrg(define_insn "mve_vrndmq_f<mode>" 201*0bfacb9bSmrg [ 202*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 203*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 204*0bfacb9bSmrg VRNDMQ_F)) 205*0bfacb9bSmrg ] 206*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 207*0bfacb9bSmrg "vrintm.f%#<V_sz_elem> %q0, %q1" 208*0bfacb9bSmrg [(set_attr "type" "mve_move") 209*0bfacb9bSmrg]) 210*0bfacb9bSmrg 211*0bfacb9bSmrg;; 212*0bfacb9bSmrg;; [vrndaq_f]) 213*0bfacb9bSmrg;; 214*0bfacb9bSmrg(define_insn "mve_vrndaq_f<mode>" 215*0bfacb9bSmrg [ 216*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 217*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 218*0bfacb9bSmrg VRNDAQ_F)) 219*0bfacb9bSmrg ] 220*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 221*0bfacb9bSmrg "vrinta.f%#<V_sz_elem> %q0, %q1" 222*0bfacb9bSmrg [(set_attr "type" "mve_move") 223*0bfacb9bSmrg]) 224*0bfacb9bSmrg 225*0bfacb9bSmrg;; 226*0bfacb9bSmrg;; [vrev64q_f]) 227*0bfacb9bSmrg;; 228*0bfacb9bSmrg(define_insn "mve_vrev64q_f<mode>" 229*0bfacb9bSmrg [ 230*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=&w") 231*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 232*0bfacb9bSmrg VREV64Q_F)) 233*0bfacb9bSmrg ] 234*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 235*0bfacb9bSmrg "vrev64.%#<V_sz_elem> %q0, %q1" 236*0bfacb9bSmrg [(set_attr "type" "mve_move") 237*0bfacb9bSmrg]) 238*0bfacb9bSmrg 239*0bfacb9bSmrg;; 240*0bfacb9bSmrg;; [vnegq_f]) 241*0bfacb9bSmrg;; 242*0bfacb9bSmrg(define_insn "mve_vnegq_f<mode>" 243*0bfacb9bSmrg [ 244*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 245*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 246*0bfacb9bSmrg VNEGQ_F)) 247*0bfacb9bSmrg ] 248*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 249*0bfacb9bSmrg "vneg.f%#<V_sz_elem> %q0, %q1" 250*0bfacb9bSmrg [(set_attr "type" "mve_move") 251*0bfacb9bSmrg]) 252*0bfacb9bSmrg 253*0bfacb9bSmrg;; 254*0bfacb9bSmrg;; [vdupq_n_f]) 255*0bfacb9bSmrg;; 256*0bfacb9bSmrg(define_insn "mve_vdupq_n_f<mode>" 257*0bfacb9bSmrg [ 258*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 259*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:<V_elem> 1 "s_register_operand" "r")] 260*0bfacb9bSmrg VDUPQ_N_F)) 261*0bfacb9bSmrg ] 262*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 263*0bfacb9bSmrg "vdup.%#<V_sz_elem> %q0, %1" 264*0bfacb9bSmrg [(set_attr "type" "mve_move") 265*0bfacb9bSmrg]) 266*0bfacb9bSmrg 267*0bfacb9bSmrg;; 268*0bfacb9bSmrg;; [vabsq_f]) 269*0bfacb9bSmrg;; 270*0bfacb9bSmrg(define_insn "mve_vabsq_f<mode>" 271*0bfacb9bSmrg [ 272*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 273*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")] 274*0bfacb9bSmrg VABSQ_F)) 275*0bfacb9bSmrg ] 276*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 277*0bfacb9bSmrg "vabs.f%#<V_sz_elem> %q0, %q1" 278*0bfacb9bSmrg [(set_attr "type" "mve_move") 279*0bfacb9bSmrg]) 280*0bfacb9bSmrg 281*0bfacb9bSmrg;; 282*0bfacb9bSmrg;; [vrev32q_f]) 283*0bfacb9bSmrg;; 284*0bfacb9bSmrg(define_insn "mve_vrev32q_fv8hf" 285*0bfacb9bSmrg [ 286*0bfacb9bSmrg (set (match_operand:V8HF 0 "s_register_operand" "=w") 287*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "w")] 288*0bfacb9bSmrg VREV32Q_F)) 289*0bfacb9bSmrg ] 290*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 291*0bfacb9bSmrg "vrev32.16 %q0, %q1" 292*0bfacb9bSmrg [(set_attr "type" "mve_move") 293*0bfacb9bSmrg]) 294*0bfacb9bSmrg;; 295*0bfacb9bSmrg;; [vcvttq_f32_f16]) 296*0bfacb9bSmrg;; 297*0bfacb9bSmrg(define_insn "mve_vcvttq_f32_f16v4sf" 298*0bfacb9bSmrg [ 299*0bfacb9bSmrg (set (match_operand:V4SF 0 "s_register_operand" "=w") 300*0bfacb9bSmrg (unspec:V4SF [(match_operand:V8HF 1 "s_register_operand" "w")] 301*0bfacb9bSmrg VCVTTQ_F32_F16)) 302*0bfacb9bSmrg ] 303*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 304*0bfacb9bSmrg "vcvtt.f32.f16 %q0, %q1" 305*0bfacb9bSmrg [(set_attr "type" "mve_move") 306*0bfacb9bSmrg]) 307*0bfacb9bSmrg 308*0bfacb9bSmrg;; 309*0bfacb9bSmrg;; [vcvtbq_f32_f16]) 310*0bfacb9bSmrg;; 311*0bfacb9bSmrg(define_insn "mve_vcvtbq_f32_f16v4sf" 312*0bfacb9bSmrg [ 313*0bfacb9bSmrg (set (match_operand:V4SF 0 "s_register_operand" "=w") 314*0bfacb9bSmrg (unspec:V4SF [(match_operand:V8HF 1 "s_register_operand" "w")] 315*0bfacb9bSmrg VCVTBQ_F32_F16)) 316*0bfacb9bSmrg ] 317*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 318*0bfacb9bSmrg "vcvtb.f32.f16 %q0, %q1" 319*0bfacb9bSmrg [(set_attr "type" "mve_move") 320*0bfacb9bSmrg]) 321*0bfacb9bSmrg 322*0bfacb9bSmrg;; 323*0bfacb9bSmrg;; [vcvtq_to_f_s, vcvtq_to_f_u]) 324*0bfacb9bSmrg;; 325*0bfacb9bSmrg(define_insn "mve_vcvtq_to_f_<supf><mode>" 326*0bfacb9bSmrg [ 327*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 328*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")] 329*0bfacb9bSmrg VCVTQ_TO_F)) 330*0bfacb9bSmrg ] 331*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 332*0bfacb9bSmrg "vcvt.f%#<V_sz_elem>.<supf>%#<V_sz_elem> %q0, %q1" 333*0bfacb9bSmrg [(set_attr "type" "mve_move") 334*0bfacb9bSmrg]) 335*0bfacb9bSmrg 336*0bfacb9bSmrg;; 337*0bfacb9bSmrg;; [vrev64q_u, vrev64q_s]) 338*0bfacb9bSmrg;; 339*0bfacb9bSmrg(define_insn "mve_vrev64q_<supf><mode>" 340*0bfacb9bSmrg [ 341*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=&w") 342*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 343*0bfacb9bSmrg VREV64Q)) 344*0bfacb9bSmrg ] 345*0bfacb9bSmrg "TARGET_HAVE_MVE" 346*0bfacb9bSmrg "vrev64.%#<V_sz_elem> %q0, %q1" 347*0bfacb9bSmrg [(set_attr "type" "mve_move") 348*0bfacb9bSmrg]) 349*0bfacb9bSmrg 350*0bfacb9bSmrg;; 351*0bfacb9bSmrg;; [vcvtq_from_f_s, vcvtq_from_f_u]) 352*0bfacb9bSmrg;; 353*0bfacb9bSmrg(define_insn "mve_vcvtq_from_f_<supf><mode>" 354*0bfacb9bSmrg [ 355*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 356*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")] 357*0bfacb9bSmrg VCVTQ_FROM_F)) 358*0bfacb9bSmrg ] 359*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 360*0bfacb9bSmrg "vcvt.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1" 361*0bfacb9bSmrg [(set_attr "type" "mve_move") 362*0bfacb9bSmrg]) 363*0bfacb9bSmrg;; [vqnegq_s]) 364*0bfacb9bSmrg;; 365*0bfacb9bSmrg(define_insn "mve_vqnegq_s<mode>" 366*0bfacb9bSmrg [ 367*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 368*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 369*0bfacb9bSmrg VQNEGQ_S)) 370*0bfacb9bSmrg ] 371*0bfacb9bSmrg "TARGET_HAVE_MVE" 372*0bfacb9bSmrg "vqneg.s%#<V_sz_elem> %q0, %q1" 373*0bfacb9bSmrg [(set_attr "type" "mve_move") 374*0bfacb9bSmrg]) 375*0bfacb9bSmrg 376*0bfacb9bSmrg;; 377*0bfacb9bSmrg;; [vqabsq_s]) 378*0bfacb9bSmrg;; 379*0bfacb9bSmrg(define_insn "mve_vqabsq_s<mode>" 380*0bfacb9bSmrg [ 381*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 382*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 383*0bfacb9bSmrg VQABSQ_S)) 384*0bfacb9bSmrg ] 385*0bfacb9bSmrg "TARGET_HAVE_MVE" 386*0bfacb9bSmrg "vqabs.s%#<V_sz_elem> %q0, %q1" 387*0bfacb9bSmrg [(set_attr "type" "mve_move") 388*0bfacb9bSmrg]) 389*0bfacb9bSmrg 390*0bfacb9bSmrg;; 391*0bfacb9bSmrg;; [vnegq_s]) 392*0bfacb9bSmrg;; 393*0bfacb9bSmrg(define_insn "mve_vnegq_s<mode>" 394*0bfacb9bSmrg [ 395*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 396*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 397*0bfacb9bSmrg VNEGQ_S)) 398*0bfacb9bSmrg ] 399*0bfacb9bSmrg "TARGET_HAVE_MVE" 400*0bfacb9bSmrg "vneg.s%#<V_sz_elem> %q0, %q1" 401*0bfacb9bSmrg [(set_attr "type" "mve_move") 402*0bfacb9bSmrg]) 403*0bfacb9bSmrg 404*0bfacb9bSmrg;; 405*0bfacb9bSmrg;; [vmvnq_u, vmvnq_s]) 406*0bfacb9bSmrg;; 407*0bfacb9bSmrg(define_insn "mve_vmvnq_<supf><mode>" 408*0bfacb9bSmrg [ 409*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 410*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 411*0bfacb9bSmrg VMVNQ)) 412*0bfacb9bSmrg ] 413*0bfacb9bSmrg "TARGET_HAVE_MVE" 414*0bfacb9bSmrg "vmvn %q0, %q1" 415*0bfacb9bSmrg [(set_attr "type" "mve_move") 416*0bfacb9bSmrg]) 417*0bfacb9bSmrg 418*0bfacb9bSmrg;; 419*0bfacb9bSmrg;; [vdupq_n_u, vdupq_n_s]) 420*0bfacb9bSmrg;; 421*0bfacb9bSmrg(define_insn "mve_vdupq_n_<supf><mode>" 422*0bfacb9bSmrg [ 423*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 424*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:<V_elem> 1 "s_register_operand" "r")] 425*0bfacb9bSmrg VDUPQ_N)) 426*0bfacb9bSmrg ] 427*0bfacb9bSmrg "TARGET_HAVE_MVE" 428*0bfacb9bSmrg "vdup.%#<V_sz_elem> %q0, %1" 429*0bfacb9bSmrg [(set_attr "type" "mve_move") 430*0bfacb9bSmrg]) 431*0bfacb9bSmrg 432*0bfacb9bSmrg;; 433*0bfacb9bSmrg;; [vclzq_u, vclzq_s]) 434*0bfacb9bSmrg;; 435*0bfacb9bSmrg(define_insn "mve_vclzq_<supf><mode>" 436*0bfacb9bSmrg [ 437*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 438*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 439*0bfacb9bSmrg VCLZQ)) 440*0bfacb9bSmrg ] 441*0bfacb9bSmrg "TARGET_HAVE_MVE" 442*0bfacb9bSmrg "vclz.i%#<V_sz_elem> %q0, %q1" 443*0bfacb9bSmrg [(set_attr "type" "mve_move") 444*0bfacb9bSmrg]) 445*0bfacb9bSmrg 446*0bfacb9bSmrg;; 447*0bfacb9bSmrg;; [vclsq_s]) 448*0bfacb9bSmrg;; 449*0bfacb9bSmrg(define_insn "mve_vclsq_s<mode>" 450*0bfacb9bSmrg [ 451*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 452*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 453*0bfacb9bSmrg VCLSQ_S)) 454*0bfacb9bSmrg ] 455*0bfacb9bSmrg "TARGET_HAVE_MVE" 456*0bfacb9bSmrg "vcls.s%#<V_sz_elem> %q0, %q1" 457*0bfacb9bSmrg [(set_attr "type" "mve_move") 458*0bfacb9bSmrg]) 459*0bfacb9bSmrg 460*0bfacb9bSmrg;; 461*0bfacb9bSmrg;; [vaddvq_s, vaddvq_u]) 462*0bfacb9bSmrg;; 463*0bfacb9bSmrg(define_insn "mve_vaddvq_<supf><mode>" 464*0bfacb9bSmrg [ 465*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 466*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")] 467*0bfacb9bSmrg VADDVQ)) 468*0bfacb9bSmrg ] 469*0bfacb9bSmrg "TARGET_HAVE_MVE" 470*0bfacb9bSmrg "vaddv.<supf>%#<V_sz_elem>\t%0, %q1" 471*0bfacb9bSmrg [(set_attr "type" "mve_move") 472*0bfacb9bSmrg]) 473*0bfacb9bSmrg 474*0bfacb9bSmrg;; 475*0bfacb9bSmrg;; [vabsq_s]) 476*0bfacb9bSmrg;; 477*0bfacb9bSmrg(define_insn "mve_vabsq_s<mode>" 478*0bfacb9bSmrg [ 479*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 480*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")] 481*0bfacb9bSmrg VABSQ_S)) 482*0bfacb9bSmrg ] 483*0bfacb9bSmrg "TARGET_HAVE_MVE" 484*0bfacb9bSmrg "vabs.s%#<V_sz_elem>\t%q0, %q1" 485*0bfacb9bSmrg [(set_attr "type" "mve_move") 486*0bfacb9bSmrg]) 487*0bfacb9bSmrg 488*0bfacb9bSmrg;; 489*0bfacb9bSmrg;; [vrev32q_u, vrev32q_s]) 490*0bfacb9bSmrg;; 491*0bfacb9bSmrg(define_insn "mve_vrev32q_<supf><mode>" 492*0bfacb9bSmrg [ 493*0bfacb9bSmrg (set (match_operand:MVE_3 0 "s_register_operand" "=w") 494*0bfacb9bSmrg (unspec:MVE_3 [(match_operand:MVE_3 1 "s_register_operand" "w")] 495*0bfacb9bSmrg VREV32Q)) 496*0bfacb9bSmrg ] 497*0bfacb9bSmrg "TARGET_HAVE_MVE" 498*0bfacb9bSmrg "vrev32.%#<V_sz_elem>\t%q0, %q1" 499*0bfacb9bSmrg [(set_attr "type" "mve_move") 500*0bfacb9bSmrg]) 501*0bfacb9bSmrg 502*0bfacb9bSmrg;; 503*0bfacb9bSmrg;; [vmovltq_u, vmovltq_s]) 504*0bfacb9bSmrg;; 505*0bfacb9bSmrg(define_insn "mve_vmovltq_<supf><mode>" 506*0bfacb9bSmrg [ 507*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 508*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")] 509*0bfacb9bSmrg VMOVLTQ)) 510*0bfacb9bSmrg ] 511*0bfacb9bSmrg "TARGET_HAVE_MVE" 512*0bfacb9bSmrg "vmovlt.<supf>%#<V_sz_elem> %q0, %q1" 513*0bfacb9bSmrg [(set_attr "type" "mve_move") 514*0bfacb9bSmrg]) 515*0bfacb9bSmrg 516*0bfacb9bSmrg;; 517*0bfacb9bSmrg;; [vmovlbq_s, vmovlbq_u]) 518*0bfacb9bSmrg;; 519*0bfacb9bSmrg(define_insn "mve_vmovlbq_<supf><mode>" 520*0bfacb9bSmrg [ 521*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 522*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")] 523*0bfacb9bSmrg VMOVLBQ)) 524*0bfacb9bSmrg ] 525*0bfacb9bSmrg "TARGET_HAVE_MVE" 526*0bfacb9bSmrg "vmovlb.<supf>%#<V_sz_elem> %q0, %q1" 527*0bfacb9bSmrg [(set_attr "type" "mve_move") 528*0bfacb9bSmrg]) 529*0bfacb9bSmrg 530*0bfacb9bSmrg;; 531*0bfacb9bSmrg;; [vcvtpq_s, vcvtpq_u]) 532*0bfacb9bSmrg;; 533*0bfacb9bSmrg(define_insn "mve_vcvtpq_<supf><mode>" 534*0bfacb9bSmrg [ 535*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 536*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")] 537*0bfacb9bSmrg VCVTPQ)) 538*0bfacb9bSmrg ] 539*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 540*0bfacb9bSmrg "vcvtp.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1" 541*0bfacb9bSmrg [(set_attr "type" "mve_move") 542*0bfacb9bSmrg]) 543*0bfacb9bSmrg 544*0bfacb9bSmrg;; 545*0bfacb9bSmrg;; [vcvtnq_s, vcvtnq_u]) 546*0bfacb9bSmrg;; 547*0bfacb9bSmrg(define_insn "mve_vcvtnq_<supf><mode>" 548*0bfacb9bSmrg [ 549*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 550*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")] 551*0bfacb9bSmrg VCVTNQ)) 552*0bfacb9bSmrg ] 553*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 554*0bfacb9bSmrg "vcvtn.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1" 555*0bfacb9bSmrg [(set_attr "type" "mve_move") 556*0bfacb9bSmrg]) 557*0bfacb9bSmrg 558*0bfacb9bSmrg;; 559*0bfacb9bSmrg;; [vcvtmq_s, vcvtmq_u]) 560*0bfacb9bSmrg;; 561*0bfacb9bSmrg(define_insn "mve_vcvtmq_<supf><mode>" 562*0bfacb9bSmrg [ 563*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 564*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")] 565*0bfacb9bSmrg VCVTMQ)) 566*0bfacb9bSmrg ] 567*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 568*0bfacb9bSmrg "vcvtm.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1" 569*0bfacb9bSmrg [(set_attr "type" "mve_move") 570*0bfacb9bSmrg]) 571*0bfacb9bSmrg 572*0bfacb9bSmrg;; 573*0bfacb9bSmrg;; [vcvtaq_u, vcvtaq_s]) 574*0bfacb9bSmrg;; 575*0bfacb9bSmrg(define_insn "mve_vcvtaq_<supf><mode>" 576*0bfacb9bSmrg [ 577*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 578*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")] 579*0bfacb9bSmrg VCVTAQ)) 580*0bfacb9bSmrg ] 581*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 582*0bfacb9bSmrg "vcvta.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1" 583*0bfacb9bSmrg [(set_attr "type" "mve_move") 584*0bfacb9bSmrg]) 585*0bfacb9bSmrg 586*0bfacb9bSmrg;; 587*0bfacb9bSmrg;; [vmvnq_n_u, vmvnq_n_s]) 588*0bfacb9bSmrg;; 589*0bfacb9bSmrg(define_insn "mve_vmvnq_n_<supf><mode>" 590*0bfacb9bSmrg [ 591*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 592*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:HI 1 "immediate_operand" "i")] 593*0bfacb9bSmrg VMVNQ_N)) 594*0bfacb9bSmrg ] 595*0bfacb9bSmrg "TARGET_HAVE_MVE" 596*0bfacb9bSmrg "vmvn.i%#<V_sz_elem> %q0, %1" 597*0bfacb9bSmrg [(set_attr "type" "mve_move") 598*0bfacb9bSmrg]) 599*0bfacb9bSmrg 600*0bfacb9bSmrg;; 601*0bfacb9bSmrg;; [vrev16q_u, vrev16q_s]) 602*0bfacb9bSmrg;; 603*0bfacb9bSmrg(define_insn "mve_vrev16q_<supf>v16qi" 604*0bfacb9bSmrg [ 605*0bfacb9bSmrg (set (match_operand:V16QI 0 "s_register_operand" "=w") 606*0bfacb9bSmrg (unspec:V16QI [(match_operand:V16QI 1 "s_register_operand" "w")] 607*0bfacb9bSmrg VREV16Q)) 608*0bfacb9bSmrg ] 609*0bfacb9bSmrg "TARGET_HAVE_MVE" 610*0bfacb9bSmrg "vrev16.8 %q0, %q1" 611*0bfacb9bSmrg [(set_attr "type" "mve_move") 612*0bfacb9bSmrg]) 613*0bfacb9bSmrg 614*0bfacb9bSmrg;; 615*0bfacb9bSmrg;; [vaddlvq_s vaddlvq_u]) 616*0bfacb9bSmrg;; 617*0bfacb9bSmrg(define_insn "mve_vaddlvq_<supf>v4si" 618*0bfacb9bSmrg [ 619*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 620*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")] 621*0bfacb9bSmrg VADDLVQ)) 622*0bfacb9bSmrg ] 623*0bfacb9bSmrg "TARGET_HAVE_MVE" 624*0bfacb9bSmrg "vaddlv.<supf>32 %Q0, %R0, %q1" 625*0bfacb9bSmrg [(set_attr "type" "mve_move") 626*0bfacb9bSmrg]) 627*0bfacb9bSmrg 628*0bfacb9bSmrg;; 629*0bfacb9bSmrg;; [vctp8q vctp16q vctp32q vctp64q]) 630*0bfacb9bSmrg;; 631*0bfacb9bSmrg(define_insn "mve_vctp<mode1>qhi" 632*0bfacb9bSmrg [ 633*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 634*0bfacb9bSmrg (unspec:HI [(match_operand:SI 1 "s_register_operand" "r")] 635*0bfacb9bSmrg VCTPQ)) 636*0bfacb9bSmrg ] 637*0bfacb9bSmrg "TARGET_HAVE_MVE" 638*0bfacb9bSmrg "vctp.<mode1> %1" 639*0bfacb9bSmrg [(set_attr "type" "mve_move") 640*0bfacb9bSmrg]) 641*0bfacb9bSmrg 642*0bfacb9bSmrg;; 643*0bfacb9bSmrg;; [vpnot]) 644*0bfacb9bSmrg;; 645*0bfacb9bSmrg(define_insn "mve_vpnothi" 646*0bfacb9bSmrg [ 647*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 648*0bfacb9bSmrg (unspec:HI [(match_operand:HI 1 "vpr_register_operand" "0")] 649*0bfacb9bSmrg VPNOT)) 650*0bfacb9bSmrg ] 651*0bfacb9bSmrg "TARGET_HAVE_MVE" 652*0bfacb9bSmrg "vpnot" 653*0bfacb9bSmrg [(set_attr "type" "mve_move") 654*0bfacb9bSmrg]) 655*0bfacb9bSmrg 656*0bfacb9bSmrg;; 657*0bfacb9bSmrg;; [vsubq_n_f]) 658*0bfacb9bSmrg;; 659*0bfacb9bSmrg(define_insn "mve_vsubq_n_f<mode>" 660*0bfacb9bSmrg [ 661*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 662*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 663*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 664*0bfacb9bSmrg VSUBQ_N_F)) 665*0bfacb9bSmrg ] 666*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 667*0bfacb9bSmrg "vsub.f<V_sz_elem> %q0, %q1, %2" 668*0bfacb9bSmrg [(set_attr "type" "mve_move") 669*0bfacb9bSmrg]) 670*0bfacb9bSmrg 671*0bfacb9bSmrg;; 672*0bfacb9bSmrg;; [vbrsrq_n_f]) 673*0bfacb9bSmrg;; 674*0bfacb9bSmrg(define_insn "mve_vbrsrq_n_f<mode>" 675*0bfacb9bSmrg [ 676*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 677*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 678*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r")] 679*0bfacb9bSmrg VBRSRQ_N_F)) 680*0bfacb9bSmrg ] 681*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 682*0bfacb9bSmrg "vbrsr.<V_sz_elem> %q0, %q1, %2" 683*0bfacb9bSmrg [(set_attr "type" "mve_move") 684*0bfacb9bSmrg]) 685*0bfacb9bSmrg 686*0bfacb9bSmrg;; 687*0bfacb9bSmrg;; [vcvtq_n_to_f_s, vcvtq_n_to_f_u]) 688*0bfacb9bSmrg;; 689*0bfacb9bSmrg(define_insn "mve_vcvtq_n_to_f_<supf><mode>" 690*0bfacb9bSmrg [ 691*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 692*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w") 693*0bfacb9bSmrg (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")] 694*0bfacb9bSmrg VCVTQ_N_TO_F)) 695*0bfacb9bSmrg ] 696*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 697*0bfacb9bSmrg "vcvt.f<V_sz_elem>.<supf><V_sz_elem>\t%q0, %q1, %2" 698*0bfacb9bSmrg [(set_attr "type" "mve_move") 699*0bfacb9bSmrg]) 700*0bfacb9bSmrg 701*0bfacb9bSmrg;; [vcreateq_f]) 702*0bfacb9bSmrg;; 703*0bfacb9bSmrg(define_insn "mve_vcreateq_f<mode>" 704*0bfacb9bSmrg [ 705*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 706*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:DI 1 "s_register_operand" "r") 707*0bfacb9bSmrg (match_operand:DI 2 "s_register_operand" "r")] 708*0bfacb9bSmrg VCREATEQ_F)) 709*0bfacb9bSmrg ] 710*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 711*0bfacb9bSmrg "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1" 712*0bfacb9bSmrg [(set_attr "type" "mve_move") 713*0bfacb9bSmrg (set_attr "length""8")]) 714*0bfacb9bSmrg 715*0bfacb9bSmrg;; 716*0bfacb9bSmrg;; [vcreateq_u, vcreateq_s]) 717*0bfacb9bSmrg;; 718*0bfacb9bSmrg(define_insn "mve_vcreateq_<supf><mode>" 719*0bfacb9bSmrg [ 720*0bfacb9bSmrg (set (match_operand:MVE_1 0 "s_register_operand" "=w") 721*0bfacb9bSmrg (unspec:MVE_1 [(match_operand:DI 1 "s_register_operand" "r") 722*0bfacb9bSmrg (match_operand:DI 2 "s_register_operand" "r")] 723*0bfacb9bSmrg VCREATEQ)) 724*0bfacb9bSmrg ] 725*0bfacb9bSmrg "TARGET_HAVE_MVE" 726*0bfacb9bSmrg "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1" 727*0bfacb9bSmrg [(set_attr "type" "mve_move") 728*0bfacb9bSmrg (set_attr "length""8")]) 729*0bfacb9bSmrg 730*0bfacb9bSmrg;; 731*0bfacb9bSmrg;; [vshrq_n_s, vshrq_n_u]) 732*0bfacb9bSmrg;; 733*0bfacb9bSmrg(define_insn "mve_vshrq_n_<supf><mode>" 734*0bfacb9bSmrg [ 735*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 736*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 737*0bfacb9bSmrg (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")] 738*0bfacb9bSmrg VSHRQ_N)) 739*0bfacb9bSmrg ] 740*0bfacb9bSmrg "TARGET_HAVE_MVE" 741*0bfacb9bSmrg "vshr.<supf><V_sz_elem>\t%q0, %q1, %2" 742*0bfacb9bSmrg [(set_attr "type" "mve_move") 743*0bfacb9bSmrg]) 744*0bfacb9bSmrg 745*0bfacb9bSmrg;; 746*0bfacb9bSmrg;; [vcvtq_n_from_f_s, vcvtq_n_from_f_u]) 747*0bfacb9bSmrg;; 748*0bfacb9bSmrg(define_insn "mve_vcvtq_n_from_f_<supf><mode>" 749*0bfacb9bSmrg [ 750*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 751*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w") 752*0bfacb9bSmrg (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")] 753*0bfacb9bSmrg VCVTQ_N_FROM_F)) 754*0bfacb9bSmrg ] 755*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 756*0bfacb9bSmrg "vcvt.<supf><V_sz_elem>.f<V_sz_elem>\t%q0, %q1, %2" 757*0bfacb9bSmrg [(set_attr "type" "mve_move") 758*0bfacb9bSmrg]) 759*0bfacb9bSmrg 760*0bfacb9bSmrg;; 761*0bfacb9bSmrg;; [vaddlvq_p_s]) 762*0bfacb9bSmrg;; 763*0bfacb9bSmrg(define_insn "mve_vaddlvq_p_<supf>v4si" 764*0bfacb9bSmrg [ 765*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 766*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 767*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 768*0bfacb9bSmrg VADDLVQ_P)) 769*0bfacb9bSmrg ] 770*0bfacb9bSmrg "TARGET_HAVE_MVE" 771*0bfacb9bSmrg "vpst\;vaddlvt.<supf>32 %Q0, %R0, %q1" 772*0bfacb9bSmrg [(set_attr "type" "mve_move") 773*0bfacb9bSmrg (set_attr "length""8")]) 774*0bfacb9bSmrg 775*0bfacb9bSmrg;; 776*0bfacb9bSmrg;; [vcmpneq_u, vcmpneq_s]) 777*0bfacb9bSmrg;; 778*0bfacb9bSmrg(define_insn "mve_vcmpneq_<supf><mode>" 779*0bfacb9bSmrg [ 780*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 781*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 782*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 783*0bfacb9bSmrg VCMPNEQ)) 784*0bfacb9bSmrg ] 785*0bfacb9bSmrg "TARGET_HAVE_MVE" 786*0bfacb9bSmrg "vcmp.i%#<V_sz_elem> ne, %q1, %q2" 787*0bfacb9bSmrg [(set_attr "type" "mve_move") 788*0bfacb9bSmrg]) 789*0bfacb9bSmrg 790*0bfacb9bSmrg;; 791*0bfacb9bSmrg;; [vshlq_s, vshlq_u]) 792*0bfacb9bSmrg;; 793*0bfacb9bSmrg(define_insn "mve_vshlq_<supf><mode>" 794*0bfacb9bSmrg [ 795*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 796*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 797*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 798*0bfacb9bSmrg VSHLQ)) 799*0bfacb9bSmrg ] 800*0bfacb9bSmrg "TARGET_HAVE_MVE" 801*0bfacb9bSmrg "vshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 802*0bfacb9bSmrg [(set_attr "type" "mve_move") 803*0bfacb9bSmrg]) 804*0bfacb9bSmrg 805*0bfacb9bSmrg;; 806*0bfacb9bSmrg;; [vabdq_s, vabdq_u]) 807*0bfacb9bSmrg;; 808*0bfacb9bSmrg(define_insn "mve_vabdq_<supf><mode>" 809*0bfacb9bSmrg [ 810*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 811*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 812*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 813*0bfacb9bSmrg VABDQ)) 814*0bfacb9bSmrg ] 815*0bfacb9bSmrg "TARGET_HAVE_MVE" 816*0bfacb9bSmrg "vabd.<supf>%#<V_sz_elem> %q0, %q1, %q2" 817*0bfacb9bSmrg [(set_attr "type" "mve_move") 818*0bfacb9bSmrg]) 819*0bfacb9bSmrg 820*0bfacb9bSmrg;; 821*0bfacb9bSmrg;; [vaddq_n_s, vaddq_n_u]) 822*0bfacb9bSmrg;; 823*0bfacb9bSmrg(define_insn "mve_vaddq_n_<supf><mode>" 824*0bfacb9bSmrg [ 825*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 826*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 827*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 828*0bfacb9bSmrg VADDQ_N)) 829*0bfacb9bSmrg ] 830*0bfacb9bSmrg "TARGET_HAVE_MVE" 831*0bfacb9bSmrg "vadd.i%#<V_sz_elem> %q0, %q1, %2" 832*0bfacb9bSmrg [(set_attr "type" "mve_move") 833*0bfacb9bSmrg]) 834*0bfacb9bSmrg 835*0bfacb9bSmrg;; 836*0bfacb9bSmrg;; [vaddvaq_s, vaddvaq_u]) 837*0bfacb9bSmrg;; 838*0bfacb9bSmrg(define_insn "mve_vaddvaq_<supf><mode>" 839*0bfacb9bSmrg [ 840*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 841*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 842*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 843*0bfacb9bSmrg VADDVAQ)) 844*0bfacb9bSmrg ] 845*0bfacb9bSmrg "TARGET_HAVE_MVE" 846*0bfacb9bSmrg "vaddva.<supf>%#<V_sz_elem> %0, %q2" 847*0bfacb9bSmrg [(set_attr "type" "mve_move") 848*0bfacb9bSmrg]) 849*0bfacb9bSmrg 850*0bfacb9bSmrg;; 851*0bfacb9bSmrg;; [vaddvq_p_u, vaddvq_p_s]) 852*0bfacb9bSmrg;; 853*0bfacb9bSmrg(define_insn "mve_vaddvq_p_<supf><mode>" 854*0bfacb9bSmrg [ 855*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 856*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 857*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 858*0bfacb9bSmrg VADDVQ_P)) 859*0bfacb9bSmrg ] 860*0bfacb9bSmrg "TARGET_HAVE_MVE" 861*0bfacb9bSmrg "vpst\;vaddvt.<supf>%#<V_sz_elem> %0, %q1" 862*0bfacb9bSmrg [(set_attr "type" "mve_move") 863*0bfacb9bSmrg (set_attr "length""8")]) 864*0bfacb9bSmrg 865*0bfacb9bSmrg;; 866*0bfacb9bSmrg;; [vandq_u, vandq_s]) 867*0bfacb9bSmrg;; 868*0bfacb9bSmrg(define_insn "mve_vandq_<supf><mode>" 869*0bfacb9bSmrg [ 870*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 871*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 872*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 873*0bfacb9bSmrg VANDQ)) 874*0bfacb9bSmrg ] 875*0bfacb9bSmrg "TARGET_HAVE_MVE" 876*0bfacb9bSmrg "vand %q0, %q1, %q2" 877*0bfacb9bSmrg [(set_attr "type" "mve_move") 878*0bfacb9bSmrg]) 879*0bfacb9bSmrg 880*0bfacb9bSmrg;; 881*0bfacb9bSmrg;; [vbicq_s, vbicq_u]) 882*0bfacb9bSmrg;; 883*0bfacb9bSmrg(define_insn "mve_vbicq_<supf><mode>" 884*0bfacb9bSmrg [ 885*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 886*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 887*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 888*0bfacb9bSmrg VBICQ)) 889*0bfacb9bSmrg ] 890*0bfacb9bSmrg "TARGET_HAVE_MVE" 891*0bfacb9bSmrg "vbic %q0, %q1, %q2" 892*0bfacb9bSmrg [(set_attr "type" "mve_move") 893*0bfacb9bSmrg]) 894*0bfacb9bSmrg 895*0bfacb9bSmrg;; 896*0bfacb9bSmrg;; [vbrsrq_n_u, vbrsrq_n_s]) 897*0bfacb9bSmrg;; 898*0bfacb9bSmrg(define_insn "mve_vbrsrq_n_<supf><mode>" 899*0bfacb9bSmrg [ 900*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 901*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 902*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r")] 903*0bfacb9bSmrg VBRSRQ_N)) 904*0bfacb9bSmrg ] 905*0bfacb9bSmrg "TARGET_HAVE_MVE" 906*0bfacb9bSmrg "vbrsr.%#<V_sz_elem> %q0, %q1, %2" 907*0bfacb9bSmrg [(set_attr "type" "mve_move") 908*0bfacb9bSmrg]) 909*0bfacb9bSmrg 910*0bfacb9bSmrg;; 911*0bfacb9bSmrg;; [vcaddq_rot270_s, vcaddq_rot270_u]) 912*0bfacb9bSmrg;; 913*0bfacb9bSmrg(define_insn "mve_vcaddq_rot270_<supf><mode>" 914*0bfacb9bSmrg [ 915*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 916*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 917*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 918*0bfacb9bSmrg VCADDQ_ROT270)) 919*0bfacb9bSmrg ] 920*0bfacb9bSmrg "TARGET_HAVE_MVE" 921*0bfacb9bSmrg "vcadd.i%#<V_sz_elem> %q0, %q1, %q2, #270" 922*0bfacb9bSmrg [(set_attr "type" "mve_move") 923*0bfacb9bSmrg]) 924*0bfacb9bSmrg 925*0bfacb9bSmrg;; 926*0bfacb9bSmrg;; [vcaddq_rot90_u, vcaddq_rot90_s]) 927*0bfacb9bSmrg;; 928*0bfacb9bSmrg(define_insn "mve_vcaddq_rot90_<supf><mode>" 929*0bfacb9bSmrg [ 930*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 931*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 932*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 933*0bfacb9bSmrg VCADDQ_ROT90)) 934*0bfacb9bSmrg ] 935*0bfacb9bSmrg "TARGET_HAVE_MVE" 936*0bfacb9bSmrg "vcadd.i%#<V_sz_elem> %q0, %q1, %q2, #90" 937*0bfacb9bSmrg [(set_attr "type" "mve_move") 938*0bfacb9bSmrg]) 939*0bfacb9bSmrg 940*0bfacb9bSmrg;; 941*0bfacb9bSmrg;; [vcmpcsq_n_u]) 942*0bfacb9bSmrg;; 943*0bfacb9bSmrg(define_insn "mve_vcmpcsq_n_u<mode>" 944*0bfacb9bSmrg [ 945*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 946*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 947*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 948*0bfacb9bSmrg VCMPCSQ_N_U)) 949*0bfacb9bSmrg ] 950*0bfacb9bSmrg "TARGET_HAVE_MVE" 951*0bfacb9bSmrg "vcmp.u%#<V_sz_elem> cs, %q1, %2" 952*0bfacb9bSmrg [(set_attr "type" "mve_move") 953*0bfacb9bSmrg]) 954*0bfacb9bSmrg 955*0bfacb9bSmrg;; 956*0bfacb9bSmrg;; [vcmpcsq_u]) 957*0bfacb9bSmrg;; 958*0bfacb9bSmrg(define_insn "mve_vcmpcsq_u<mode>" 959*0bfacb9bSmrg [ 960*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 961*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 962*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 963*0bfacb9bSmrg VCMPCSQ_U)) 964*0bfacb9bSmrg ] 965*0bfacb9bSmrg "TARGET_HAVE_MVE" 966*0bfacb9bSmrg "vcmp.u%#<V_sz_elem> cs, %q1, %q2" 967*0bfacb9bSmrg [(set_attr "type" "mve_move") 968*0bfacb9bSmrg]) 969*0bfacb9bSmrg 970*0bfacb9bSmrg;; 971*0bfacb9bSmrg;; [vcmpeqq_n_s, vcmpeqq_n_u]) 972*0bfacb9bSmrg;; 973*0bfacb9bSmrg(define_insn "mve_vcmpeqq_n_<supf><mode>" 974*0bfacb9bSmrg [ 975*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 976*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 977*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 978*0bfacb9bSmrg VCMPEQQ_N)) 979*0bfacb9bSmrg ] 980*0bfacb9bSmrg "TARGET_HAVE_MVE" 981*0bfacb9bSmrg "vcmp.i%#<V_sz_elem> eq, %q1, %2" 982*0bfacb9bSmrg [(set_attr "type" "mve_move") 983*0bfacb9bSmrg]) 984*0bfacb9bSmrg 985*0bfacb9bSmrg;; 986*0bfacb9bSmrg;; [vcmpeqq_u, vcmpeqq_s]) 987*0bfacb9bSmrg;; 988*0bfacb9bSmrg(define_insn "mve_vcmpeqq_<supf><mode>" 989*0bfacb9bSmrg [ 990*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 991*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 992*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 993*0bfacb9bSmrg VCMPEQQ)) 994*0bfacb9bSmrg ] 995*0bfacb9bSmrg "TARGET_HAVE_MVE" 996*0bfacb9bSmrg "vcmp.i%#<V_sz_elem> eq, %q1, %q2" 997*0bfacb9bSmrg [(set_attr "type" "mve_move") 998*0bfacb9bSmrg]) 999*0bfacb9bSmrg 1000*0bfacb9bSmrg;; 1001*0bfacb9bSmrg;; [vcmpgeq_n_s]) 1002*0bfacb9bSmrg;; 1003*0bfacb9bSmrg(define_insn "mve_vcmpgeq_n_s<mode>" 1004*0bfacb9bSmrg [ 1005*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1006*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1007*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1008*0bfacb9bSmrg VCMPGEQ_N_S)) 1009*0bfacb9bSmrg ] 1010*0bfacb9bSmrg "TARGET_HAVE_MVE" 1011*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> ge, %q1, %2" 1012*0bfacb9bSmrg [(set_attr "type" "mve_move") 1013*0bfacb9bSmrg]) 1014*0bfacb9bSmrg 1015*0bfacb9bSmrg;; 1016*0bfacb9bSmrg;; [vcmpgeq_s]) 1017*0bfacb9bSmrg;; 1018*0bfacb9bSmrg(define_insn "mve_vcmpgeq_s<mode>" 1019*0bfacb9bSmrg [ 1020*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1021*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1022*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1023*0bfacb9bSmrg VCMPGEQ_S)) 1024*0bfacb9bSmrg ] 1025*0bfacb9bSmrg "TARGET_HAVE_MVE" 1026*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> ge, %q1, %q2" 1027*0bfacb9bSmrg [(set_attr "type" "mve_move") 1028*0bfacb9bSmrg]) 1029*0bfacb9bSmrg 1030*0bfacb9bSmrg;; 1031*0bfacb9bSmrg;; [vcmpgtq_n_s]) 1032*0bfacb9bSmrg;; 1033*0bfacb9bSmrg(define_insn "mve_vcmpgtq_n_s<mode>" 1034*0bfacb9bSmrg [ 1035*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1036*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1037*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1038*0bfacb9bSmrg VCMPGTQ_N_S)) 1039*0bfacb9bSmrg ] 1040*0bfacb9bSmrg "TARGET_HAVE_MVE" 1041*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> gt, %q1, %2" 1042*0bfacb9bSmrg [(set_attr "type" "mve_move") 1043*0bfacb9bSmrg]) 1044*0bfacb9bSmrg 1045*0bfacb9bSmrg;; 1046*0bfacb9bSmrg;; [vcmpgtq_s]) 1047*0bfacb9bSmrg;; 1048*0bfacb9bSmrg(define_insn "mve_vcmpgtq_s<mode>" 1049*0bfacb9bSmrg [ 1050*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1051*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1052*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1053*0bfacb9bSmrg VCMPGTQ_S)) 1054*0bfacb9bSmrg ] 1055*0bfacb9bSmrg "TARGET_HAVE_MVE" 1056*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> gt, %q1, %q2" 1057*0bfacb9bSmrg [(set_attr "type" "mve_move") 1058*0bfacb9bSmrg]) 1059*0bfacb9bSmrg 1060*0bfacb9bSmrg;; 1061*0bfacb9bSmrg;; [vcmphiq_n_u]) 1062*0bfacb9bSmrg;; 1063*0bfacb9bSmrg(define_insn "mve_vcmphiq_n_u<mode>" 1064*0bfacb9bSmrg [ 1065*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1066*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1067*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1068*0bfacb9bSmrg VCMPHIQ_N_U)) 1069*0bfacb9bSmrg ] 1070*0bfacb9bSmrg "TARGET_HAVE_MVE" 1071*0bfacb9bSmrg "vcmp.u%#<V_sz_elem> hi, %q1, %2" 1072*0bfacb9bSmrg [(set_attr "type" "mve_move") 1073*0bfacb9bSmrg]) 1074*0bfacb9bSmrg 1075*0bfacb9bSmrg;; 1076*0bfacb9bSmrg;; [vcmphiq_u]) 1077*0bfacb9bSmrg;; 1078*0bfacb9bSmrg(define_insn "mve_vcmphiq_u<mode>" 1079*0bfacb9bSmrg [ 1080*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1081*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1082*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1083*0bfacb9bSmrg VCMPHIQ_U)) 1084*0bfacb9bSmrg ] 1085*0bfacb9bSmrg "TARGET_HAVE_MVE" 1086*0bfacb9bSmrg "vcmp.u%#<V_sz_elem> hi, %q1, %q2" 1087*0bfacb9bSmrg [(set_attr "type" "mve_move") 1088*0bfacb9bSmrg]) 1089*0bfacb9bSmrg 1090*0bfacb9bSmrg;; 1091*0bfacb9bSmrg;; [vcmpleq_n_s]) 1092*0bfacb9bSmrg;; 1093*0bfacb9bSmrg(define_insn "mve_vcmpleq_n_s<mode>" 1094*0bfacb9bSmrg [ 1095*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1096*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1097*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1098*0bfacb9bSmrg VCMPLEQ_N_S)) 1099*0bfacb9bSmrg ] 1100*0bfacb9bSmrg "TARGET_HAVE_MVE" 1101*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> le, %q1, %2" 1102*0bfacb9bSmrg [(set_attr "type" "mve_move") 1103*0bfacb9bSmrg]) 1104*0bfacb9bSmrg 1105*0bfacb9bSmrg;; 1106*0bfacb9bSmrg;; [vcmpleq_s]) 1107*0bfacb9bSmrg;; 1108*0bfacb9bSmrg(define_insn "mve_vcmpleq_s<mode>" 1109*0bfacb9bSmrg [ 1110*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1111*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1112*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1113*0bfacb9bSmrg VCMPLEQ_S)) 1114*0bfacb9bSmrg ] 1115*0bfacb9bSmrg "TARGET_HAVE_MVE" 1116*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> le, %q1, %q2" 1117*0bfacb9bSmrg [(set_attr "type" "mve_move") 1118*0bfacb9bSmrg]) 1119*0bfacb9bSmrg 1120*0bfacb9bSmrg;; 1121*0bfacb9bSmrg;; [vcmpltq_n_s]) 1122*0bfacb9bSmrg;; 1123*0bfacb9bSmrg(define_insn "mve_vcmpltq_n_s<mode>" 1124*0bfacb9bSmrg [ 1125*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1126*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1127*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1128*0bfacb9bSmrg VCMPLTQ_N_S)) 1129*0bfacb9bSmrg ] 1130*0bfacb9bSmrg "TARGET_HAVE_MVE" 1131*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> lt, %q1, %2" 1132*0bfacb9bSmrg [(set_attr "type" "mve_move") 1133*0bfacb9bSmrg]) 1134*0bfacb9bSmrg 1135*0bfacb9bSmrg;; 1136*0bfacb9bSmrg;; [vcmpltq_s]) 1137*0bfacb9bSmrg;; 1138*0bfacb9bSmrg(define_insn "mve_vcmpltq_s<mode>" 1139*0bfacb9bSmrg [ 1140*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1141*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1142*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1143*0bfacb9bSmrg VCMPLTQ_S)) 1144*0bfacb9bSmrg ] 1145*0bfacb9bSmrg "TARGET_HAVE_MVE" 1146*0bfacb9bSmrg "vcmp.s%#<V_sz_elem> lt, %q1, %q2" 1147*0bfacb9bSmrg [(set_attr "type" "mve_move") 1148*0bfacb9bSmrg]) 1149*0bfacb9bSmrg 1150*0bfacb9bSmrg;; 1151*0bfacb9bSmrg;; [vcmpneq_n_u, vcmpneq_n_s]) 1152*0bfacb9bSmrg;; 1153*0bfacb9bSmrg(define_insn "mve_vcmpneq_n_<supf><mode>" 1154*0bfacb9bSmrg [ 1155*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 1156*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 1157*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1158*0bfacb9bSmrg VCMPNEQ_N)) 1159*0bfacb9bSmrg ] 1160*0bfacb9bSmrg "TARGET_HAVE_MVE" 1161*0bfacb9bSmrg "vcmp.i%#<V_sz_elem> ne, %q1, %2" 1162*0bfacb9bSmrg [(set_attr "type" "mve_move") 1163*0bfacb9bSmrg]) 1164*0bfacb9bSmrg 1165*0bfacb9bSmrg;; 1166*0bfacb9bSmrg;; [veorq_u, veorq_s]) 1167*0bfacb9bSmrg;; 1168*0bfacb9bSmrg(define_insn "mve_veorq_<supf><mode>" 1169*0bfacb9bSmrg [ 1170*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1171*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1172*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1173*0bfacb9bSmrg VEORQ)) 1174*0bfacb9bSmrg ] 1175*0bfacb9bSmrg "TARGET_HAVE_MVE" 1176*0bfacb9bSmrg "veor %q0, %q1, %q2" 1177*0bfacb9bSmrg [(set_attr "type" "mve_move") 1178*0bfacb9bSmrg]) 1179*0bfacb9bSmrg 1180*0bfacb9bSmrg;; 1181*0bfacb9bSmrg;; [vhaddq_n_u, vhaddq_n_s]) 1182*0bfacb9bSmrg;; 1183*0bfacb9bSmrg(define_insn "mve_vhaddq_n_<supf><mode>" 1184*0bfacb9bSmrg [ 1185*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1186*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1187*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1188*0bfacb9bSmrg VHADDQ_N)) 1189*0bfacb9bSmrg ] 1190*0bfacb9bSmrg "TARGET_HAVE_MVE" 1191*0bfacb9bSmrg "vhadd.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1192*0bfacb9bSmrg [(set_attr "type" "mve_move") 1193*0bfacb9bSmrg]) 1194*0bfacb9bSmrg 1195*0bfacb9bSmrg;; 1196*0bfacb9bSmrg;; [vhaddq_s, vhaddq_u]) 1197*0bfacb9bSmrg;; 1198*0bfacb9bSmrg(define_insn "mve_vhaddq_<supf><mode>" 1199*0bfacb9bSmrg [ 1200*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1201*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1202*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1203*0bfacb9bSmrg VHADDQ)) 1204*0bfacb9bSmrg ] 1205*0bfacb9bSmrg "TARGET_HAVE_MVE" 1206*0bfacb9bSmrg "vhadd.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1207*0bfacb9bSmrg [(set_attr "type" "mve_move") 1208*0bfacb9bSmrg]) 1209*0bfacb9bSmrg 1210*0bfacb9bSmrg;; 1211*0bfacb9bSmrg;; [vhcaddq_rot270_s]) 1212*0bfacb9bSmrg;; 1213*0bfacb9bSmrg(define_insn "mve_vhcaddq_rot270_s<mode>" 1214*0bfacb9bSmrg [ 1215*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 1216*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1217*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1218*0bfacb9bSmrg VHCADDQ_ROT270_S)) 1219*0bfacb9bSmrg ] 1220*0bfacb9bSmrg "TARGET_HAVE_MVE" 1221*0bfacb9bSmrg "vhcadd.s%#<V_sz_elem>\t%q0, %q1, %q2, #270" 1222*0bfacb9bSmrg [(set_attr "type" "mve_move") 1223*0bfacb9bSmrg]) 1224*0bfacb9bSmrg 1225*0bfacb9bSmrg;; 1226*0bfacb9bSmrg;; [vhcaddq_rot90_s]) 1227*0bfacb9bSmrg;; 1228*0bfacb9bSmrg(define_insn "mve_vhcaddq_rot90_s<mode>" 1229*0bfacb9bSmrg [ 1230*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 1231*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1232*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1233*0bfacb9bSmrg VHCADDQ_ROT90_S)) 1234*0bfacb9bSmrg ] 1235*0bfacb9bSmrg "TARGET_HAVE_MVE" 1236*0bfacb9bSmrg "vhcadd.s%#<V_sz_elem>\t%q0, %q1, %q2, #90" 1237*0bfacb9bSmrg [(set_attr "type" "mve_move") 1238*0bfacb9bSmrg]) 1239*0bfacb9bSmrg 1240*0bfacb9bSmrg;; 1241*0bfacb9bSmrg;; [vhsubq_n_u, vhsubq_n_s]) 1242*0bfacb9bSmrg;; 1243*0bfacb9bSmrg(define_insn "mve_vhsubq_n_<supf><mode>" 1244*0bfacb9bSmrg [ 1245*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1246*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1247*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1248*0bfacb9bSmrg VHSUBQ_N)) 1249*0bfacb9bSmrg ] 1250*0bfacb9bSmrg "TARGET_HAVE_MVE" 1251*0bfacb9bSmrg "vhsub.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1252*0bfacb9bSmrg [(set_attr "type" "mve_move") 1253*0bfacb9bSmrg]) 1254*0bfacb9bSmrg 1255*0bfacb9bSmrg;; 1256*0bfacb9bSmrg;; [vhsubq_s, vhsubq_u]) 1257*0bfacb9bSmrg;; 1258*0bfacb9bSmrg(define_insn "mve_vhsubq_<supf><mode>" 1259*0bfacb9bSmrg [ 1260*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1261*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1262*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1263*0bfacb9bSmrg VHSUBQ)) 1264*0bfacb9bSmrg ] 1265*0bfacb9bSmrg "TARGET_HAVE_MVE" 1266*0bfacb9bSmrg "vhsub.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1267*0bfacb9bSmrg [(set_attr "type" "mve_move") 1268*0bfacb9bSmrg]) 1269*0bfacb9bSmrg 1270*0bfacb9bSmrg;; 1271*0bfacb9bSmrg;; [vmaxaq_s]) 1272*0bfacb9bSmrg;; 1273*0bfacb9bSmrg(define_insn "mve_vmaxaq_s<mode>" 1274*0bfacb9bSmrg [ 1275*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1276*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 1277*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1278*0bfacb9bSmrg VMAXAQ_S)) 1279*0bfacb9bSmrg ] 1280*0bfacb9bSmrg "TARGET_HAVE_MVE" 1281*0bfacb9bSmrg "vmaxa.s%#<V_sz_elem> %q0, %q2" 1282*0bfacb9bSmrg [(set_attr "type" "mve_move") 1283*0bfacb9bSmrg]) 1284*0bfacb9bSmrg 1285*0bfacb9bSmrg;; 1286*0bfacb9bSmrg;; [vmaxavq_s]) 1287*0bfacb9bSmrg;; 1288*0bfacb9bSmrg(define_insn "mve_vmaxavq_s<mode>" 1289*0bfacb9bSmrg [ 1290*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 1291*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 1292*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1293*0bfacb9bSmrg VMAXAVQ_S)) 1294*0bfacb9bSmrg ] 1295*0bfacb9bSmrg "TARGET_HAVE_MVE" 1296*0bfacb9bSmrg "vmaxav.s%#<V_sz_elem>\t%0, %q2" 1297*0bfacb9bSmrg [(set_attr "type" "mve_move") 1298*0bfacb9bSmrg]) 1299*0bfacb9bSmrg 1300*0bfacb9bSmrg;; 1301*0bfacb9bSmrg;; [vmaxq_u, vmaxq_s]) 1302*0bfacb9bSmrg;; 1303*0bfacb9bSmrg(define_insn "mve_vmaxq_<supf><mode>" 1304*0bfacb9bSmrg [ 1305*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1306*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1307*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1308*0bfacb9bSmrg VMAXQ)) 1309*0bfacb9bSmrg ] 1310*0bfacb9bSmrg "TARGET_HAVE_MVE" 1311*0bfacb9bSmrg "vmax.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1312*0bfacb9bSmrg [(set_attr "type" "mve_move") 1313*0bfacb9bSmrg]) 1314*0bfacb9bSmrg 1315*0bfacb9bSmrg;; 1316*0bfacb9bSmrg;; [vmaxvq_u, vmaxvq_s]) 1317*0bfacb9bSmrg;; 1318*0bfacb9bSmrg(define_insn "mve_vmaxvq_<supf><mode>" 1319*0bfacb9bSmrg [ 1320*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 1321*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 1322*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1323*0bfacb9bSmrg VMAXVQ)) 1324*0bfacb9bSmrg ] 1325*0bfacb9bSmrg "TARGET_HAVE_MVE" 1326*0bfacb9bSmrg "vmaxv.<supf>%#<V_sz_elem>\t%0, %q2" 1327*0bfacb9bSmrg [(set_attr "type" "mve_move") 1328*0bfacb9bSmrg]) 1329*0bfacb9bSmrg 1330*0bfacb9bSmrg;; 1331*0bfacb9bSmrg;; [vminaq_s]) 1332*0bfacb9bSmrg;; 1333*0bfacb9bSmrg(define_insn "mve_vminaq_s<mode>" 1334*0bfacb9bSmrg [ 1335*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1336*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 1337*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1338*0bfacb9bSmrg VMINAQ_S)) 1339*0bfacb9bSmrg ] 1340*0bfacb9bSmrg "TARGET_HAVE_MVE" 1341*0bfacb9bSmrg "vmina.s%#<V_sz_elem>\t%q0, %q2" 1342*0bfacb9bSmrg [(set_attr "type" "mve_move") 1343*0bfacb9bSmrg]) 1344*0bfacb9bSmrg 1345*0bfacb9bSmrg;; 1346*0bfacb9bSmrg;; [vminavq_s]) 1347*0bfacb9bSmrg;; 1348*0bfacb9bSmrg(define_insn "mve_vminavq_s<mode>" 1349*0bfacb9bSmrg [ 1350*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 1351*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 1352*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1353*0bfacb9bSmrg VMINAVQ_S)) 1354*0bfacb9bSmrg ] 1355*0bfacb9bSmrg "TARGET_HAVE_MVE" 1356*0bfacb9bSmrg "vminav.s%#<V_sz_elem>\t%0, %q2" 1357*0bfacb9bSmrg [(set_attr "type" "mve_move") 1358*0bfacb9bSmrg]) 1359*0bfacb9bSmrg 1360*0bfacb9bSmrg;; 1361*0bfacb9bSmrg;; [vminq_s, vminq_u]) 1362*0bfacb9bSmrg;; 1363*0bfacb9bSmrg(define_insn "mve_vminq_<supf><mode>" 1364*0bfacb9bSmrg [ 1365*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1366*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1367*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1368*0bfacb9bSmrg VMINQ)) 1369*0bfacb9bSmrg ] 1370*0bfacb9bSmrg "TARGET_HAVE_MVE" 1371*0bfacb9bSmrg "vmin.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1372*0bfacb9bSmrg [(set_attr "type" "mve_move") 1373*0bfacb9bSmrg]) 1374*0bfacb9bSmrg 1375*0bfacb9bSmrg;; 1376*0bfacb9bSmrg;; [vminvq_u, vminvq_s]) 1377*0bfacb9bSmrg;; 1378*0bfacb9bSmrg(define_insn "mve_vminvq_<supf><mode>" 1379*0bfacb9bSmrg [ 1380*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 1381*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 1382*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1383*0bfacb9bSmrg VMINVQ)) 1384*0bfacb9bSmrg ] 1385*0bfacb9bSmrg "TARGET_HAVE_MVE" 1386*0bfacb9bSmrg "vminv.<supf>%#<V_sz_elem>\t%0, %q2" 1387*0bfacb9bSmrg [(set_attr "type" "mve_move") 1388*0bfacb9bSmrg]) 1389*0bfacb9bSmrg 1390*0bfacb9bSmrg;; 1391*0bfacb9bSmrg;; [vmladavq_u, vmladavq_s]) 1392*0bfacb9bSmrg;; 1393*0bfacb9bSmrg(define_insn "mve_vmladavq_<supf><mode>" 1394*0bfacb9bSmrg [ 1395*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 1396*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 1397*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1398*0bfacb9bSmrg VMLADAVQ)) 1399*0bfacb9bSmrg ] 1400*0bfacb9bSmrg "TARGET_HAVE_MVE" 1401*0bfacb9bSmrg "vmladav.<supf>%#<V_sz_elem>\t%0, %q1, %q2" 1402*0bfacb9bSmrg [(set_attr "type" "mve_move") 1403*0bfacb9bSmrg]) 1404*0bfacb9bSmrg 1405*0bfacb9bSmrg;; 1406*0bfacb9bSmrg;; [vmladavxq_s]) 1407*0bfacb9bSmrg;; 1408*0bfacb9bSmrg(define_insn "mve_vmladavxq_s<mode>" 1409*0bfacb9bSmrg [ 1410*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 1411*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 1412*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1413*0bfacb9bSmrg VMLADAVXQ_S)) 1414*0bfacb9bSmrg ] 1415*0bfacb9bSmrg "TARGET_HAVE_MVE" 1416*0bfacb9bSmrg "vmladavx.s%#<V_sz_elem>\t%0, %q1, %q2" 1417*0bfacb9bSmrg [(set_attr "type" "mve_move") 1418*0bfacb9bSmrg]) 1419*0bfacb9bSmrg 1420*0bfacb9bSmrg;; 1421*0bfacb9bSmrg;; [vmlsdavq_s]) 1422*0bfacb9bSmrg;; 1423*0bfacb9bSmrg(define_insn "mve_vmlsdavq_s<mode>" 1424*0bfacb9bSmrg [ 1425*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 1426*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 1427*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1428*0bfacb9bSmrg VMLSDAVQ_S)) 1429*0bfacb9bSmrg ] 1430*0bfacb9bSmrg "TARGET_HAVE_MVE" 1431*0bfacb9bSmrg "vmlsdav.s%#<V_sz_elem>\t%0, %q1, %q2" 1432*0bfacb9bSmrg [(set_attr "type" "mve_move") 1433*0bfacb9bSmrg]) 1434*0bfacb9bSmrg 1435*0bfacb9bSmrg;; 1436*0bfacb9bSmrg;; [vmlsdavxq_s]) 1437*0bfacb9bSmrg;; 1438*0bfacb9bSmrg(define_insn "mve_vmlsdavxq_s<mode>" 1439*0bfacb9bSmrg [ 1440*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 1441*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 1442*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1443*0bfacb9bSmrg VMLSDAVXQ_S)) 1444*0bfacb9bSmrg ] 1445*0bfacb9bSmrg "TARGET_HAVE_MVE" 1446*0bfacb9bSmrg "vmlsdavx.s%#<V_sz_elem>\t%0, %q1, %q2" 1447*0bfacb9bSmrg [(set_attr "type" "mve_move") 1448*0bfacb9bSmrg]) 1449*0bfacb9bSmrg 1450*0bfacb9bSmrg;; 1451*0bfacb9bSmrg;; [vmulhq_s, vmulhq_u]) 1452*0bfacb9bSmrg;; 1453*0bfacb9bSmrg(define_insn "mve_vmulhq_<supf><mode>" 1454*0bfacb9bSmrg [ 1455*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1456*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1457*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1458*0bfacb9bSmrg VMULHQ)) 1459*0bfacb9bSmrg ] 1460*0bfacb9bSmrg "TARGET_HAVE_MVE" 1461*0bfacb9bSmrg "vmulh.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1462*0bfacb9bSmrg [(set_attr "type" "mve_move") 1463*0bfacb9bSmrg]) 1464*0bfacb9bSmrg 1465*0bfacb9bSmrg;; 1466*0bfacb9bSmrg;; [vmullbq_int_u, vmullbq_int_s]) 1467*0bfacb9bSmrg;; 1468*0bfacb9bSmrg(define_insn "mve_vmullbq_int_<supf><mode>" 1469*0bfacb9bSmrg [ 1470*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 1471*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_2 1 "s_register_operand" "w") 1472*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1473*0bfacb9bSmrg VMULLBQ_INT)) 1474*0bfacb9bSmrg ] 1475*0bfacb9bSmrg "TARGET_HAVE_MVE" 1476*0bfacb9bSmrg "vmullb.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1477*0bfacb9bSmrg [(set_attr "type" "mve_move") 1478*0bfacb9bSmrg]) 1479*0bfacb9bSmrg 1480*0bfacb9bSmrg;; 1481*0bfacb9bSmrg;; [vmulltq_int_u, vmulltq_int_s]) 1482*0bfacb9bSmrg;; 1483*0bfacb9bSmrg(define_insn "mve_vmulltq_int_<supf><mode>" 1484*0bfacb9bSmrg [ 1485*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 1486*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_2 1 "s_register_operand" "w") 1487*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1488*0bfacb9bSmrg VMULLTQ_INT)) 1489*0bfacb9bSmrg ] 1490*0bfacb9bSmrg "TARGET_HAVE_MVE" 1491*0bfacb9bSmrg "vmullt.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1492*0bfacb9bSmrg [(set_attr "type" "mve_move") 1493*0bfacb9bSmrg]) 1494*0bfacb9bSmrg 1495*0bfacb9bSmrg;; 1496*0bfacb9bSmrg;; [vmulq_n_u, vmulq_n_s]) 1497*0bfacb9bSmrg;; 1498*0bfacb9bSmrg(define_insn "mve_vmulq_n_<supf><mode>" 1499*0bfacb9bSmrg [ 1500*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1501*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1502*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1503*0bfacb9bSmrg VMULQ_N)) 1504*0bfacb9bSmrg ] 1505*0bfacb9bSmrg "TARGET_HAVE_MVE" 1506*0bfacb9bSmrg "vmul.i%#<V_sz_elem>\t%q0, %q1, %2" 1507*0bfacb9bSmrg [(set_attr "type" "mve_move") 1508*0bfacb9bSmrg]) 1509*0bfacb9bSmrg 1510*0bfacb9bSmrg;; 1511*0bfacb9bSmrg;; [vmulq_u, vmulq_s]) 1512*0bfacb9bSmrg;; 1513*0bfacb9bSmrg(define_insn "mve_vmulq_<supf><mode>" 1514*0bfacb9bSmrg [ 1515*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1516*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1517*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1518*0bfacb9bSmrg VMULQ)) 1519*0bfacb9bSmrg ] 1520*0bfacb9bSmrg "TARGET_HAVE_MVE" 1521*0bfacb9bSmrg "vmul.i%#<V_sz_elem>\t%q0, %q1, %q2" 1522*0bfacb9bSmrg [(set_attr "type" "mve_move") 1523*0bfacb9bSmrg]) 1524*0bfacb9bSmrg 1525*0bfacb9bSmrg;; 1526*0bfacb9bSmrg;; [vornq_u, vornq_s]) 1527*0bfacb9bSmrg;; 1528*0bfacb9bSmrg(define_insn "mve_vornq_<supf><mode>" 1529*0bfacb9bSmrg [ 1530*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1531*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1532*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1533*0bfacb9bSmrg VORNQ)) 1534*0bfacb9bSmrg ] 1535*0bfacb9bSmrg "TARGET_HAVE_MVE" 1536*0bfacb9bSmrg "vorn %q0, %q1, %q2" 1537*0bfacb9bSmrg [(set_attr "type" "mve_move") 1538*0bfacb9bSmrg]) 1539*0bfacb9bSmrg 1540*0bfacb9bSmrg;; 1541*0bfacb9bSmrg;; [vorrq_s, vorrq_u]) 1542*0bfacb9bSmrg;; 1543*0bfacb9bSmrg(define_insn "mve_vorrq_<supf><mode>" 1544*0bfacb9bSmrg [ 1545*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1546*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1547*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1548*0bfacb9bSmrg VORRQ)) 1549*0bfacb9bSmrg ] 1550*0bfacb9bSmrg "TARGET_HAVE_MVE" 1551*0bfacb9bSmrg "vorr %q0, %q1, %q2" 1552*0bfacb9bSmrg [(set_attr "type" "mve_move") 1553*0bfacb9bSmrg]) 1554*0bfacb9bSmrg 1555*0bfacb9bSmrg;; 1556*0bfacb9bSmrg;; [vqaddq_n_s, vqaddq_n_u]) 1557*0bfacb9bSmrg;; 1558*0bfacb9bSmrg(define_insn "mve_vqaddq_n_<supf><mode>" 1559*0bfacb9bSmrg [ 1560*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1561*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1562*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1563*0bfacb9bSmrg VQADDQ_N)) 1564*0bfacb9bSmrg ] 1565*0bfacb9bSmrg "TARGET_HAVE_MVE" 1566*0bfacb9bSmrg "vqadd.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1567*0bfacb9bSmrg [(set_attr "type" "mve_move") 1568*0bfacb9bSmrg]) 1569*0bfacb9bSmrg 1570*0bfacb9bSmrg;; 1571*0bfacb9bSmrg;; [vqaddq_u, vqaddq_s]) 1572*0bfacb9bSmrg;; 1573*0bfacb9bSmrg(define_insn "mve_vqaddq_<supf><mode>" 1574*0bfacb9bSmrg [ 1575*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1576*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1577*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1578*0bfacb9bSmrg VQADDQ)) 1579*0bfacb9bSmrg ] 1580*0bfacb9bSmrg "TARGET_HAVE_MVE" 1581*0bfacb9bSmrg "vqadd.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1582*0bfacb9bSmrg [(set_attr "type" "mve_move") 1583*0bfacb9bSmrg]) 1584*0bfacb9bSmrg 1585*0bfacb9bSmrg;; 1586*0bfacb9bSmrg;; [vqdmulhq_n_s]) 1587*0bfacb9bSmrg;; 1588*0bfacb9bSmrg(define_insn "mve_vqdmulhq_n_s<mode>" 1589*0bfacb9bSmrg [ 1590*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1591*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1592*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1593*0bfacb9bSmrg VQDMULHQ_N_S)) 1594*0bfacb9bSmrg ] 1595*0bfacb9bSmrg "TARGET_HAVE_MVE" 1596*0bfacb9bSmrg "vqdmulh.s%#<V_sz_elem>\t%q0, %q1, %2" 1597*0bfacb9bSmrg [(set_attr "type" "mve_move") 1598*0bfacb9bSmrg]) 1599*0bfacb9bSmrg 1600*0bfacb9bSmrg;; 1601*0bfacb9bSmrg;; [vqdmulhq_s]) 1602*0bfacb9bSmrg;; 1603*0bfacb9bSmrg(define_insn "mve_vqdmulhq_s<mode>" 1604*0bfacb9bSmrg [ 1605*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1606*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1607*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1608*0bfacb9bSmrg VQDMULHQ_S)) 1609*0bfacb9bSmrg ] 1610*0bfacb9bSmrg "TARGET_HAVE_MVE" 1611*0bfacb9bSmrg "vqdmulh.s%#<V_sz_elem>\t%q0, %q1, %q2" 1612*0bfacb9bSmrg [(set_attr "type" "mve_move") 1613*0bfacb9bSmrg]) 1614*0bfacb9bSmrg 1615*0bfacb9bSmrg;; 1616*0bfacb9bSmrg;; [vqrdmulhq_n_s]) 1617*0bfacb9bSmrg;; 1618*0bfacb9bSmrg(define_insn "mve_vqrdmulhq_n_s<mode>" 1619*0bfacb9bSmrg [ 1620*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1621*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1622*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1623*0bfacb9bSmrg VQRDMULHQ_N_S)) 1624*0bfacb9bSmrg ] 1625*0bfacb9bSmrg "TARGET_HAVE_MVE" 1626*0bfacb9bSmrg "vqrdmulh.s%#<V_sz_elem>\t%q0, %q1, %2" 1627*0bfacb9bSmrg [(set_attr "type" "mve_move") 1628*0bfacb9bSmrg]) 1629*0bfacb9bSmrg 1630*0bfacb9bSmrg;; 1631*0bfacb9bSmrg;; [vqrdmulhq_s]) 1632*0bfacb9bSmrg;; 1633*0bfacb9bSmrg(define_insn "mve_vqrdmulhq_s<mode>" 1634*0bfacb9bSmrg [ 1635*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1636*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1637*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1638*0bfacb9bSmrg VQRDMULHQ_S)) 1639*0bfacb9bSmrg ] 1640*0bfacb9bSmrg "TARGET_HAVE_MVE" 1641*0bfacb9bSmrg "vqrdmulh.s%#<V_sz_elem>\t%q0, %q1, %q2" 1642*0bfacb9bSmrg [(set_attr "type" "mve_move") 1643*0bfacb9bSmrg]) 1644*0bfacb9bSmrg 1645*0bfacb9bSmrg;; 1646*0bfacb9bSmrg;; [vqrshlq_n_s, vqrshlq_n_u]) 1647*0bfacb9bSmrg;; 1648*0bfacb9bSmrg(define_insn "mve_vqrshlq_n_<supf><mode>" 1649*0bfacb9bSmrg [ 1650*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1651*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 1652*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r")] 1653*0bfacb9bSmrg VQRSHLQ_N)) 1654*0bfacb9bSmrg ] 1655*0bfacb9bSmrg "TARGET_HAVE_MVE" 1656*0bfacb9bSmrg "vqrshl.<supf>%#<V_sz_elem>\t%q0, %2" 1657*0bfacb9bSmrg [(set_attr "type" "mve_move") 1658*0bfacb9bSmrg]) 1659*0bfacb9bSmrg 1660*0bfacb9bSmrg;; 1661*0bfacb9bSmrg;; [vqrshlq_s, vqrshlq_u]) 1662*0bfacb9bSmrg;; 1663*0bfacb9bSmrg(define_insn "mve_vqrshlq_<supf><mode>" 1664*0bfacb9bSmrg [ 1665*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1666*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1667*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1668*0bfacb9bSmrg VQRSHLQ)) 1669*0bfacb9bSmrg ] 1670*0bfacb9bSmrg "TARGET_HAVE_MVE" 1671*0bfacb9bSmrg "vqrshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1672*0bfacb9bSmrg [(set_attr "type" "mve_move") 1673*0bfacb9bSmrg]) 1674*0bfacb9bSmrg 1675*0bfacb9bSmrg;; 1676*0bfacb9bSmrg;; [vqshlq_n_s, vqshlq_n_u]) 1677*0bfacb9bSmrg;; 1678*0bfacb9bSmrg(define_insn "mve_vqshlq_n_<supf><mode>" 1679*0bfacb9bSmrg [ 1680*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1681*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1682*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 1683*0bfacb9bSmrg VQSHLQ_N)) 1684*0bfacb9bSmrg ] 1685*0bfacb9bSmrg "TARGET_HAVE_MVE" 1686*0bfacb9bSmrg "vqshl.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1687*0bfacb9bSmrg [(set_attr "type" "mve_move") 1688*0bfacb9bSmrg]) 1689*0bfacb9bSmrg 1690*0bfacb9bSmrg;; 1691*0bfacb9bSmrg;; [vqshlq_r_u, vqshlq_r_s]) 1692*0bfacb9bSmrg;; 1693*0bfacb9bSmrg(define_insn "mve_vqshlq_r_<supf><mode>" 1694*0bfacb9bSmrg [ 1695*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1696*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 1697*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r")] 1698*0bfacb9bSmrg VQSHLQ_R)) 1699*0bfacb9bSmrg ] 1700*0bfacb9bSmrg "TARGET_HAVE_MVE" 1701*0bfacb9bSmrg "vqshl.<supf>%#<V_sz_elem>\t%q0, %2" 1702*0bfacb9bSmrg [(set_attr "type" "mve_move") 1703*0bfacb9bSmrg]) 1704*0bfacb9bSmrg 1705*0bfacb9bSmrg;; 1706*0bfacb9bSmrg;; [vqshlq_s, vqshlq_u]) 1707*0bfacb9bSmrg;; 1708*0bfacb9bSmrg(define_insn "mve_vqshlq_<supf><mode>" 1709*0bfacb9bSmrg [ 1710*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1711*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1712*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1713*0bfacb9bSmrg VQSHLQ)) 1714*0bfacb9bSmrg ] 1715*0bfacb9bSmrg "TARGET_HAVE_MVE" 1716*0bfacb9bSmrg "vqshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1717*0bfacb9bSmrg [(set_attr "type" "mve_move") 1718*0bfacb9bSmrg]) 1719*0bfacb9bSmrg 1720*0bfacb9bSmrg;; 1721*0bfacb9bSmrg;; [vqshluq_n_s]) 1722*0bfacb9bSmrg;; 1723*0bfacb9bSmrg(define_insn "mve_vqshluq_n_s<mode>" 1724*0bfacb9bSmrg [ 1725*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1726*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1727*0bfacb9bSmrg (match_operand:SI 2 "mve_imm_7" "Ra")] 1728*0bfacb9bSmrg VQSHLUQ_N_S)) 1729*0bfacb9bSmrg ] 1730*0bfacb9bSmrg "TARGET_HAVE_MVE" 1731*0bfacb9bSmrg "vqshlu.s%#<V_sz_elem>\t%q0, %q1, %2" 1732*0bfacb9bSmrg [(set_attr "type" "mve_move") 1733*0bfacb9bSmrg]) 1734*0bfacb9bSmrg 1735*0bfacb9bSmrg;; 1736*0bfacb9bSmrg;; [vqsubq_n_s, vqsubq_n_u]) 1737*0bfacb9bSmrg;; 1738*0bfacb9bSmrg(define_insn "mve_vqsubq_n_<supf><mode>" 1739*0bfacb9bSmrg [ 1740*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1741*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1742*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1743*0bfacb9bSmrg VQSUBQ_N)) 1744*0bfacb9bSmrg ] 1745*0bfacb9bSmrg "TARGET_HAVE_MVE" 1746*0bfacb9bSmrg "vqsub.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1747*0bfacb9bSmrg [(set_attr "type" "mve_move") 1748*0bfacb9bSmrg]) 1749*0bfacb9bSmrg 1750*0bfacb9bSmrg;; 1751*0bfacb9bSmrg;; [vqsubq_u, vqsubq_s]) 1752*0bfacb9bSmrg;; 1753*0bfacb9bSmrg(define_insn "mve_vqsubq_<supf><mode>" 1754*0bfacb9bSmrg [ 1755*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1756*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1757*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1758*0bfacb9bSmrg VQSUBQ)) 1759*0bfacb9bSmrg ] 1760*0bfacb9bSmrg "TARGET_HAVE_MVE" 1761*0bfacb9bSmrg "vqsub.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1762*0bfacb9bSmrg [(set_attr "type" "mve_move") 1763*0bfacb9bSmrg]) 1764*0bfacb9bSmrg 1765*0bfacb9bSmrg;; 1766*0bfacb9bSmrg;; [vrhaddq_s, vrhaddq_u]) 1767*0bfacb9bSmrg;; 1768*0bfacb9bSmrg(define_insn "mve_vrhaddq_<supf><mode>" 1769*0bfacb9bSmrg [ 1770*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1771*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1772*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1773*0bfacb9bSmrg VRHADDQ)) 1774*0bfacb9bSmrg ] 1775*0bfacb9bSmrg "TARGET_HAVE_MVE" 1776*0bfacb9bSmrg "vrhadd.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1777*0bfacb9bSmrg [(set_attr "type" "mve_move") 1778*0bfacb9bSmrg]) 1779*0bfacb9bSmrg 1780*0bfacb9bSmrg;; 1781*0bfacb9bSmrg;; [vrmulhq_s, vrmulhq_u]) 1782*0bfacb9bSmrg;; 1783*0bfacb9bSmrg(define_insn "mve_vrmulhq_<supf><mode>" 1784*0bfacb9bSmrg [ 1785*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1786*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1787*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1788*0bfacb9bSmrg VRMULHQ)) 1789*0bfacb9bSmrg ] 1790*0bfacb9bSmrg "TARGET_HAVE_MVE" 1791*0bfacb9bSmrg "vrmulh.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1792*0bfacb9bSmrg [(set_attr "type" "mve_move") 1793*0bfacb9bSmrg]) 1794*0bfacb9bSmrg 1795*0bfacb9bSmrg;; 1796*0bfacb9bSmrg;; [vrshlq_n_u, vrshlq_n_s]) 1797*0bfacb9bSmrg;; 1798*0bfacb9bSmrg(define_insn "mve_vrshlq_n_<supf><mode>" 1799*0bfacb9bSmrg [ 1800*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1801*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 1802*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r")] 1803*0bfacb9bSmrg VRSHLQ_N)) 1804*0bfacb9bSmrg ] 1805*0bfacb9bSmrg "TARGET_HAVE_MVE" 1806*0bfacb9bSmrg "vrshl.<supf>%#<V_sz_elem>\t%q0, %2" 1807*0bfacb9bSmrg [(set_attr "type" "mve_move") 1808*0bfacb9bSmrg]) 1809*0bfacb9bSmrg 1810*0bfacb9bSmrg;; 1811*0bfacb9bSmrg;; [vrshlq_s, vrshlq_u]) 1812*0bfacb9bSmrg;; 1813*0bfacb9bSmrg(define_insn "mve_vrshlq_<supf><mode>" 1814*0bfacb9bSmrg [ 1815*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1816*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1817*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1818*0bfacb9bSmrg VRSHLQ)) 1819*0bfacb9bSmrg ] 1820*0bfacb9bSmrg "TARGET_HAVE_MVE" 1821*0bfacb9bSmrg "vrshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2" 1822*0bfacb9bSmrg [(set_attr "type" "mve_move") 1823*0bfacb9bSmrg]) 1824*0bfacb9bSmrg 1825*0bfacb9bSmrg;; 1826*0bfacb9bSmrg;; [vrshrq_n_s, vrshrq_n_u]) 1827*0bfacb9bSmrg;; 1828*0bfacb9bSmrg(define_insn "mve_vrshrq_n_<supf><mode>" 1829*0bfacb9bSmrg [ 1830*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1831*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1832*0bfacb9bSmrg (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")] 1833*0bfacb9bSmrg VRSHRQ_N)) 1834*0bfacb9bSmrg ] 1835*0bfacb9bSmrg "TARGET_HAVE_MVE" 1836*0bfacb9bSmrg "vrshr.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1837*0bfacb9bSmrg [(set_attr "type" "mve_move") 1838*0bfacb9bSmrg]) 1839*0bfacb9bSmrg 1840*0bfacb9bSmrg;; 1841*0bfacb9bSmrg;; [vshlq_n_u, vshlq_n_s]) 1842*0bfacb9bSmrg;; 1843*0bfacb9bSmrg(define_insn "mve_vshlq_n_<supf><mode>" 1844*0bfacb9bSmrg [ 1845*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1846*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1847*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 1848*0bfacb9bSmrg VSHLQ_N)) 1849*0bfacb9bSmrg ] 1850*0bfacb9bSmrg "TARGET_HAVE_MVE" 1851*0bfacb9bSmrg "vshl.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 1852*0bfacb9bSmrg [(set_attr "type" "mve_move") 1853*0bfacb9bSmrg]) 1854*0bfacb9bSmrg 1855*0bfacb9bSmrg;; 1856*0bfacb9bSmrg;; [vshlq_r_s, vshlq_r_u]) 1857*0bfacb9bSmrg;; 1858*0bfacb9bSmrg(define_insn "mve_vshlq_r_<supf><mode>" 1859*0bfacb9bSmrg [ 1860*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1861*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 1862*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r")] 1863*0bfacb9bSmrg VSHLQ_R)) 1864*0bfacb9bSmrg ] 1865*0bfacb9bSmrg "TARGET_HAVE_MVE" 1866*0bfacb9bSmrg "vshl.<supf>%#<V_sz_elem>\t%q0, %2" 1867*0bfacb9bSmrg [(set_attr "type" "mve_move") 1868*0bfacb9bSmrg]) 1869*0bfacb9bSmrg 1870*0bfacb9bSmrg;; 1871*0bfacb9bSmrg;; [vsubq_n_s, vsubq_n_u]) 1872*0bfacb9bSmrg;; 1873*0bfacb9bSmrg(define_insn "mve_vsubq_n_<supf><mode>" 1874*0bfacb9bSmrg [ 1875*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1876*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1877*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1878*0bfacb9bSmrg VSUBQ_N)) 1879*0bfacb9bSmrg ] 1880*0bfacb9bSmrg "TARGET_HAVE_MVE" 1881*0bfacb9bSmrg "vsub.i%#<V_sz_elem>\t%q0, %q1, %2" 1882*0bfacb9bSmrg [(set_attr "type" "mve_move") 1883*0bfacb9bSmrg]) 1884*0bfacb9bSmrg 1885*0bfacb9bSmrg;; 1886*0bfacb9bSmrg;; [vsubq_s, vsubq_u]) 1887*0bfacb9bSmrg;; 1888*0bfacb9bSmrg(define_insn "mve_vsubq_<supf><mode>" 1889*0bfacb9bSmrg [ 1890*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 1891*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") 1892*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 1893*0bfacb9bSmrg VSUBQ)) 1894*0bfacb9bSmrg ] 1895*0bfacb9bSmrg "TARGET_HAVE_MVE" 1896*0bfacb9bSmrg "vsub.i%#<V_sz_elem>\t%q0, %q1, %q2" 1897*0bfacb9bSmrg [(set_attr "type" "mve_move") 1898*0bfacb9bSmrg]) 1899*0bfacb9bSmrg 1900*0bfacb9bSmrg;; 1901*0bfacb9bSmrg;; [vabdq_f]) 1902*0bfacb9bSmrg;; 1903*0bfacb9bSmrg(define_insn "mve_vabdq_f<mode>" 1904*0bfacb9bSmrg [ 1905*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 1906*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 1907*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 1908*0bfacb9bSmrg VABDQ_F)) 1909*0bfacb9bSmrg ] 1910*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 1911*0bfacb9bSmrg "vabd.f%#<V_sz_elem> %q0, %q1, %q2" 1912*0bfacb9bSmrg [(set_attr "type" "mve_move") 1913*0bfacb9bSmrg]) 1914*0bfacb9bSmrg 1915*0bfacb9bSmrg;; 1916*0bfacb9bSmrg;; [vaddlvaq_s vaddlvaq_u]) 1917*0bfacb9bSmrg;; 1918*0bfacb9bSmrg(define_insn "mve_vaddlvaq_<supf>v4si" 1919*0bfacb9bSmrg [ 1920*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 1921*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 1922*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 1923*0bfacb9bSmrg VADDLVAQ)) 1924*0bfacb9bSmrg ] 1925*0bfacb9bSmrg "TARGET_HAVE_MVE" 1926*0bfacb9bSmrg "vaddlva.<supf>32 %Q0, %R0, %q2" 1927*0bfacb9bSmrg [(set_attr "type" "mve_move") 1928*0bfacb9bSmrg]) 1929*0bfacb9bSmrg 1930*0bfacb9bSmrg;; 1931*0bfacb9bSmrg;; [vaddq_n_f]) 1932*0bfacb9bSmrg;; 1933*0bfacb9bSmrg(define_insn "mve_vaddq_n_f<mode>" 1934*0bfacb9bSmrg [ 1935*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 1936*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 1937*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 1938*0bfacb9bSmrg VADDQ_N_F)) 1939*0bfacb9bSmrg ] 1940*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 1941*0bfacb9bSmrg "vadd.f%#<V_sz_elem> %q0, %q1, %2" 1942*0bfacb9bSmrg [(set_attr "type" "mve_move") 1943*0bfacb9bSmrg]) 1944*0bfacb9bSmrg 1945*0bfacb9bSmrg;; 1946*0bfacb9bSmrg;; [vandq_f]) 1947*0bfacb9bSmrg;; 1948*0bfacb9bSmrg(define_insn "mve_vandq_f<mode>" 1949*0bfacb9bSmrg [ 1950*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 1951*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 1952*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 1953*0bfacb9bSmrg VANDQ_F)) 1954*0bfacb9bSmrg ] 1955*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 1956*0bfacb9bSmrg "vand %q0, %q1, %q2" 1957*0bfacb9bSmrg [(set_attr "type" "mve_move") 1958*0bfacb9bSmrg]) 1959*0bfacb9bSmrg 1960*0bfacb9bSmrg;; 1961*0bfacb9bSmrg;; [vbicq_f]) 1962*0bfacb9bSmrg;; 1963*0bfacb9bSmrg(define_insn "mve_vbicq_f<mode>" 1964*0bfacb9bSmrg [ 1965*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 1966*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 1967*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 1968*0bfacb9bSmrg VBICQ_F)) 1969*0bfacb9bSmrg ] 1970*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 1971*0bfacb9bSmrg "vbic %q0, %q1, %q2" 1972*0bfacb9bSmrg [(set_attr "type" "mve_move") 1973*0bfacb9bSmrg]) 1974*0bfacb9bSmrg 1975*0bfacb9bSmrg;; 1976*0bfacb9bSmrg;; [vbicq_n_s, vbicq_n_u]) 1977*0bfacb9bSmrg;; 1978*0bfacb9bSmrg(define_insn "mve_vbicq_n_<supf><mode>" 1979*0bfacb9bSmrg [ 1980*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 1981*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 1982*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 1983*0bfacb9bSmrg VBICQ_N)) 1984*0bfacb9bSmrg ] 1985*0bfacb9bSmrg "TARGET_HAVE_MVE" 1986*0bfacb9bSmrg "vbic.i%#<V_sz_elem> %q0, %2" 1987*0bfacb9bSmrg [(set_attr "type" "mve_move") 1988*0bfacb9bSmrg]) 1989*0bfacb9bSmrg 1990*0bfacb9bSmrg;; 1991*0bfacb9bSmrg;; [vcaddq_rot270_f]) 1992*0bfacb9bSmrg;; 1993*0bfacb9bSmrg(define_insn "mve_vcaddq_rot270_f<mode>" 1994*0bfacb9bSmrg [ 1995*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 1996*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 1997*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 1998*0bfacb9bSmrg VCADDQ_ROT270_F)) 1999*0bfacb9bSmrg ] 2000*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2001*0bfacb9bSmrg "vcadd.f%#<V_sz_elem> %q0, %q1, %q2, #270" 2002*0bfacb9bSmrg [(set_attr "type" "mve_move") 2003*0bfacb9bSmrg]) 2004*0bfacb9bSmrg 2005*0bfacb9bSmrg;; 2006*0bfacb9bSmrg;; [vcaddq_rot90_f]) 2007*0bfacb9bSmrg;; 2008*0bfacb9bSmrg(define_insn "mve_vcaddq_rot90_f<mode>" 2009*0bfacb9bSmrg [ 2010*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 2011*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2012*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2013*0bfacb9bSmrg VCADDQ_ROT90_F)) 2014*0bfacb9bSmrg ] 2015*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2016*0bfacb9bSmrg "vcadd.f%#<V_sz_elem> %q0, %q1, %q2, #90" 2017*0bfacb9bSmrg [(set_attr "type" "mve_move") 2018*0bfacb9bSmrg]) 2019*0bfacb9bSmrg 2020*0bfacb9bSmrg;; 2021*0bfacb9bSmrg;; [vcmpeqq_f]) 2022*0bfacb9bSmrg;; 2023*0bfacb9bSmrg(define_insn "mve_vcmpeqq_f<mode>" 2024*0bfacb9bSmrg [ 2025*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2026*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2027*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2028*0bfacb9bSmrg VCMPEQQ_F)) 2029*0bfacb9bSmrg ] 2030*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2031*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> eq, %q1, %q2" 2032*0bfacb9bSmrg [(set_attr "type" "mve_move") 2033*0bfacb9bSmrg]) 2034*0bfacb9bSmrg 2035*0bfacb9bSmrg;; 2036*0bfacb9bSmrg;; [vcmpeqq_n_f]) 2037*0bfacb9bSmrg;; 2038*0bfacb9bSmrg(define_insn "mve_vcmpeqq_n_f<mode>" 2039*0bfacb9bSmrg [ 2040*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2041*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2042*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2043*0bfacb9bSmrg VCMPEQQ_N_F)) 2044*0bfacb9bSmrg ] 2045*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2046*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> eq, %q1, %2" 2047*0bfacb9bSmrg [(set_attr "type" "mve_move") 2048*0bfacb9bSmrg]) 2049*0bfacb9bSmrg 2050*0bfacb9bSmrg;; 2051*0bfacb9bSmrg;; [vcmpgeq_f]) 2052*0bfacb9bSmrg;; 2053*0bfacb9bSmrg(define_insn "mve_vcmpgeq_f<mode>" 2054*0bfacb9bSmrg [ 2055*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2056*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2057*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2058*0bfacb9bSmrg VCMPGEQ_F)) 2059*0bfacb9bSmrg ] 2060*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2061*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> ge, %q1, %q2" 2062*0bfacb9bSmrg [(set_attr "type" "mve_move") 2063*0bfacb9bSmrg]) 2064*0bfacb9bSmrg 2065*0bfacb9bSmrg;; 2066*0bfacb9bSmrg;; [vcmpgeq_n_f]) 2067*0bfacb9bSmrg;; 2068*0bfacb9bSmrg(define_insn "mve_vcmpgeq_n_f<mode>" 2069*0bfacb9bSmrg [ 2070*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2071*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2072*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2073*0bfacb9bSmrg VCMPGEQ_N_F)) 2074*0bfacb9bSmrg ] 2075*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2076*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> ge, %q1, %2" 2077*0bfacb9bSmrg [(set_attr "type" "mve_move") 2078*0bfacb9bSmrg]) 2079*0bfacb9bSmrg 2080*0bfacb9bSmrg;; 2081*0bfacb9bSmrg;; [vcmpgtq_f]) 2082*0bfacb9bSmrg;; 2083*0bfacb9bSmrg(define_insn "mve_vcmpgtq_f<mode>" 2084*0bfacb9bSmrg [ 2085*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2086*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2087*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2088*0bfacb9bSmrg VCMPGTQ_F)) 2089*0bfacb9bSmrg ] 2090*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2091*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> gt, %q1, %q2" 2092*0bfacb9bSmrg [(set_attr "type" "mve_move") 2093*0bfacb9bSmrg]) 2094*0bfacb9bSmrg 2095*0bfacb9bSmrg;; 2096*0bfacb9bSmrg;; [vcmpgtq_n_f]) 2097*0bfacb9bSmrg;; 2098*0bfacb9bSmrg(define_insn "mve_vcmpgtq_n_f<mode>" 2099*0bfacb9bSmrg [ 2100*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2101*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2102*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2103*0bfacb9bSmrg VCMPGTQ_N_F)) 2104*0bfacb9bSmrg ] 2105*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2106*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> gt, %q1, %2" 2107*0bfacb9bSmrg [(set_attr "type" "mve_move") 2108*0bfacb9bSmrg]) 2109*0bfacb9bSmrg 2110*0bfacb9bSmrg;; 2111*0bfacb9bSmrg;; [vcmpleq_f]) 2112*0bfacb9bSmrg;; 2113*0bfacb9bSmrg(define_insn "mve_vcmpleq_f<mode>" 2114*0bfacb9bSmrg [ 2115*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2116*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2117*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2118*0bfacb9bSmrg VCMPLEQ_F)) 2119*0bfacb9bSmrg ] 2120*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2121*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> le, %q1, %q2" 2122*0bfacb9bSmrg [(set_attr "type" "mve_move") 2123*0bfacb9bSmrg]) 2124*0bfacb9bSmrg 2125*0bfacb9bSmrg;; 2126*0bfacb9bSmrg;; [vcmpleq_n_f]) 2127*0bfacb9bSmrg;; 2128*0bfacb9bSmrg(define_insn "mve_vcmpleq_n_f<mode>" 2129*0bfacb9bSmrg [ 2130*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2131*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2132*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2133*0bfacb9bSmrg VCMPLEQ_N_F)) 2134*0bfacb9bSmrg ] 2135*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2136*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> le, %q1, %2" 2137*0bfacb9bSmrg [(set_attr "type" "mve_move") 2138*0bfacb9bSmrg]) 2139*0bfacb9bSmrg 2140*0bfacb9bSmrg;; 2141*0bfacb9bSmrg;; [vcmpltq_f]) 2142*0bfacb9bSmrg;; 2143*0bfacb9bSmrg(define_insn "mve_vcmpltq_f<mode>" 2144*0bfacb9bSmrg [ 2145*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2146*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2147*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2148*0bfacb9bSmrg VCMPLTQ_F)) 2149*0bfacb9bSmrg ] 2150*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2151*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> lt, %q1, %q2" 2152*0bfacb9bSmrg [(set_attr "type" "mve_move") 2153*0bfacb9bSmrg]) 2154*0bfacb9bSmrg 2155*0bfacb9bSmrg;; 2156*0bfacb9bSmrg;; [vcmpltq_n_f]) 2157*0bfacb9bSmrg;; 2158*0bfacb9bSmrg(define_insn "mve_vcmpltq_n_f<mode>" 2159*0bfacb9bSmrg [ 2160*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2161*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2162*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2163*0bfacb9bSmrg VCMPLTQ_N_F)) 2164*0bfacb9bSmrg ] 2165*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2166*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> lt, %q1, %2" 2167*0bfacb9bSmrg [(set_attr "type" "mve_move") 2168*0bfacb9bSmrg]) 2169*0bfacb9bSmrg 2170*0bfacb9bSmrg;; 2171*0bfacb9bSmrg;; [vcmpneq_f]) 2172*0bfacb9bSmrg;; 2173*0bfacb9bSmrg(define_insn "mve_vcmpneq_f<mode>" 2174*0bfacb9bSmrg [ 2175*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2176*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2177*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2178*0bfacb9bSmrg VCMPNEQ_F)) 2179*0bfacb9bSmrg ] 2180*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2181*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> ne, %q1, %q2" 2182*0bfacb9bSmrg [(set_attr "type" "mve_move") 2183*0bfacb9bSmrg]) 2184*0bfacb9bSmrg 2185*0bfacb9bSmrg;; 2186*0bfacb9bSmrg;; [vcmpneq_n_f]) 2187*0bfacb9bSmrg;; 2188*0bfacb9bSmrg(define_insn "mve_vcmpneq_n_f<mode>" 2189*0bfacb9bSmrg [ 2190*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2191*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2192*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2193*0bfacb9bSmrg VCMPNEQ_N_F)) 2194*0bfacb9bSmrg ] 2195*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2196*0bfacb9bSmrg "vcmp.f%#<V_sz_elem> ne, %q1, %2" 2197*0bfacb9bSmrg [(set_attr "type" "mve_move") 2198*0bfacb9bSmrg]) 2199*0bfacb9bSmrg 2200*0bfacb9bSmrg;; 2201*0bfacb9bSmrg;; [vcmulq_f]) 2202*0bfacb9bSmrg;; 2203*0bfacb9bSmrg(define_insn "mve_vcmulq_f<mode>" 2204*0bfacb9bSmrg [ 2205*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 2206*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2207*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2208*0bfacb9bSmrg VCMULQ_F)) 2209*0bfacb9bSmrg ] 2210*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2211*0bfacb9bSmrg "vcmul.f%#<V_sz_elem> %q0, %q1, %q2, #0" 2212*0bfacb9bSmrg [(set_attr "type" "mve_move") 2213*0bfacb9bSmrg]) 2214*0bfacb9bSmrg 2215*0bfacb9bSmrg;; 2216*0bfacb9bSmrg;; [vcmulq_rot180_f]) 2217*0bfacb9bSmrg;; 2218*0bfacb9bSmrg(define_insn "mve_vcmulq_rot180_f<mode>" 2219*0bfacb9bSmrg [ 2220*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 2221*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2222*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2223*0bfacb9bSmrg VCMULQ_ROT180_F)) 2224*0bfacb9bSmrg ] 2225*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2226*0bfacb9bSmrg "vcmul.f%#<V_sz_elem> %q0, %q1, %q2, #180" 2227*0bfacb9bSmrg [(set_attr "type" "mve_move") 2228*0bfacb9bSmrg]) 2229*0bfacb9bSmrg 2230*0bfacb9bSmrg;; 2231*0bfacb9bSmrg;; [vcmulq_rot270_f]) 2232*0bfacb9bSmrg;; 2233*0bfacb9bSmrg(define_insn "mve_vcmulq_rot270_f<mode>" 2234*0bfacb9bSmrg [ 2235*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 2236*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2237*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2238*0bfacb9bSmrg VCMULQ_ROT270_F)) 2239*0bfacb9bSmrg ] 2240*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2241*0bfacb9bSmrg "vcmul.f%#<V_sz_elem> %q0, %q1, %q2, #270" 2242*0bfacb9bSmrg [(set_attr "type" "mve_move") 2243*0bfacb9bSmrg]) 2244*0bfacb9bSmrg 2245*0bfacb9bSmrg;; 2246*0bfacb9bSmrg;; [vcmulq_rot90_f]) 2247*0bfacb9bSmrg;; 2248*0bfacb9bSmrg(define_insn "mve_vcmulq_rot90_f<mode>" 2249*0bfacb9bSmrg [ 2250*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 2251*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2252*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2253*0bfacb9bSmrg VCMULQ_ROT90_F)) 2254*0bfacb9bSmrg ] 2255*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2256*0bfacb9bSmrg "vcmul.f%#<V_sz_elem> %q0, %q1, %q2, #90" 2257*0bfacb9bSmrg [(set_attr "type" "mve_move") 2258*0bfacb9bSmrg]) 2259*0bfacb9bSmrg 2260*0bfacb9bSmrg;; 2261*0bfacb9bSmrg;; [vctp8q_m vctp16q_m vctp32q_m vctp64q_m]) 2262*0bfacb9bSmrg;; 2263*0bfacb9bSmrg(define_insn "mve_vctp<mode1>q_mhi" 2264*0bfacb9bSmrg [ 2265*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2266*0bfacb9bSmrg (unspec:HI [(match_operand:SI 1 "s_register_operand" "r") 2267*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 2268*0bfacb9bSmrg VCTPQ_M)) 2269*0bfacb9bSmrg ] 2270*0bfacb9bSmrg "TARGET_HAVE_MVE" 2271*0bfacb9bSmrg "vpst\;vctpt.<mode1> %1" 2272*0bfacb9bSmrg [(set_attr "type" "mve_move") 2273*0bfacb9bSmrg (set_attr "length""8")]) 2274*0bfacb9bSmrg 2275*0bfacb9bSmrg;; 2276*0bfacb9bSmrg;; [vcvtbq_f16_f32]) 2277*0bfacb9bSmrg;; 2278*0bfacb9bSmrg(define_insn "mve_vcvtbq_f16_f32v8hf" 2279*0bfacb9bSmrg [ 2280*0bfacb9bSmrg (set (match_operand:V8HF 0 "s_register_operand" "=w") 2281*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0") 2282*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w")] 2283*0bfacb9bSmrg VCVTBQ_F16_F32)) 2284*0bfacb9bSmrg ] 2285*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2286*0bfacb9bSmrg "vcvtb.f16.f32 %q0, %q2" 2287*0bfacb9bSmrg [(set_attr "type" "mve_move") 2288*0bfacb9bSmrg]) 2289*0bfacb9bSmrg 2290*0bfacb9bSmrg;; 2291*0bfacb9bSmrg;; [vcvttq_f16_f32]) 2292*0bfacb9bSmrg;; 2293*0bfacb9bSmrg(define_insn "mve_vcvttq_f16_f32v8hf" 2294*0bfacb9bSmrg [ 2295*0bfacb9bSmrg (set (match_operand:V8HF 0 "s_register_operand" "=w") 2296*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0") 2297*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w")] 2298*0bfacb9bSmrg VCVTTQ_F16_F32)) 2299*0bfacb9bSmrg ] 2300*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2301*0bfacb9bSmrg "vcvtt.f16.f32 %q0, %q2" 2302*0bfacb9bSmrg [(set_attr "type" "mve_move") 2303*0bfacb9bSmrg]) 2304*0bfacb9bSmrg 2305*0bfacb9bSmrg;; 2306*0bfacb9bSmrg;; [veorq_f]) 2307*0bfacb9bSmrg;; 2308*0bfacb9bSmrg(define_insn "mve_veorq_f<mode>" 2309*0bfacb9bSmrg [ 2310*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2311*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2312*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2313*0bfacb9bSmrg VEORQ_F)) 2314*0bfacb9bSmrg ] 2315*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2316*0bfacb9bSmrg "veor %q0, %q1, %q2" 2317*0bfacb9bSmrg [(set_attr "type" "mve_move") 2318*0bfacb9bSmrg]) 2319*0bfacb9bSmrg 2320*0bfacb9bSmrg;; 2321*0bfacb9bSmrg;; [vmaxnmaq_f]) 2322*0bfacb9bSmrg;; 2323*0bfacb9bSmrg(define_insn "mve_vmaxnmaq_f<mode>" 2324*0bfacb9bSmrg [ 2325*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2326*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 2327*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2328*0bfacb9bSmrg VMAXNMAQ_F)) 2329*0bfacb9bSmrg ] 2330*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2331*0bfacb9bSmrg "vmaxnma.f%#<V_sz_elem> %q0, %q2" 2332*0bfacb9bSmrg [(set_attr "type" "mve_move") 2333*0bfacb9bSmrg]) 2334*0bfacb9bSmrg 2335*0bfacb9bSmrg;; 2336*0bfacb9bSmrg;; [vmaxnmavq_f]) 2337*0bfacb9bSmrg;; 2338*0bfacb9bSmrg(define_insn "mve_vmaxnmavq_f<mode>" 2339*0bfacb9bSmrg [ 2340*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 2341*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 2342*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2343*0bfacb9bSmrg VMAXNMAVQ_F)) 2344*0bfacb9bSmrg ] 2345*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2346*0bfacb9bSmrg "vmaxnmav.f%#<V_sz_elem> %0, %q2" 2347*0bfacb9bSmrg [(set_attr "type" "mve_move") 2348*0bfacb9bSmrg]) 2349*0bfacb9bSmrg 2350*0bfacb9bSmrg;; 2351*0bfacb9bSmrg;; [vmaxnmq_f]) 2352*0bfacb9bSmrg;; 2353*0bfacb9bSmrg(define_insn "mve_vmaxnmq_f<mode>" 2354*0bfacb9bSmrg [ 2355*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2356*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2357*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2358*0bfacb9bSmrg VMAXNMQ_F)) 2359*0bfacb9bSmrg ] 2360*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2361*0bfacb9bSmrg "vmaxnm.f%#<V_sz_elem> %q0, %q1, %q2" 2362*0bfacb9bSmrg [(set_attr "type" "mve_move") 2363*0bfacb9bSmrg]) 2364*0bfacb9bSmrg 2365*0bfacb9bSmrg;; 2366*0bfacb9bSmrg;; [vmaxnmvq_f]) 2367*0bfacb9bSmrg;; 2368*0bfacb9bSmrg(define_insn "mve_vmaxnmvq_f<mode>" 2369*0bfacb9bSmrg [ 2370*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 2371*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 2372*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2373*0bfacb9bSmrg VMAXNMVQ_F)) 2374*0bfacb9bSmrg ] 2375*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2376*0bfacb9bSmrg "vmaxnmv.f%#<V_sz_elem> %0, %q2" 2377*0bfacb9bSmrg [(set_attr "type" "mve_move") 2378*0bfacb9bSmrg]) 2379*0bfacb9bSmrg 2380*0bfacb9bSmrg;; 2381*0bfacb9bSmrg;; [vminnmaq_f]) 2382*0bfacb9bSmrg;; 2383*0bfacb9bSmrg(define_insn "mve_vminnmaq_f<mode>" 2384*0bfacb9bSmrg [ 2385*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2386*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 2387*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2388*0bfacb9bSmrg VMINNMAQ_F)) 2389*0bfacb9bSmrg ] 2390*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2391*0bfacb9bSmrg "vminnma.f%#<V_sz_elem> %q0, %q2" 2392*0bfacb9bSmrg [(set_attr "type" "mve_move") 2393*0bfacb9bSmrg]) 2394*0bfacb9bSmrg 2395*0bfacb9bSmrg;; 2396*0bfacb9bSmrg;; [vminnmavq_f]) 2397*0bfacb9bSmrg;; 2398*0bfacb9bSmrg(define_insn "mve_vminnmavq_f<mode>" 2399*0bfacb9bSmrg [ 2400*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 2401*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 2402*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2403*0bfacb9bSmrg VMINNMAVQ_F)) 2404*0bfacb9bSmrg ] 2405*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2406*0bfacb9bSmrg "vminnmav.f%#<V_sz_elem> %0, %q2" 2407*0bfacb9bSmrg [(set_attr "type" "mve_move") 2408*0bfacb9bSmrg]) 2409*0bfacb9bSmrg 2410*0bfacb9bSmrg;; 2411*0bfacb9bSmrg;; [vminnmq_f]) 2412*0bfacb9bSmrg;; 2413*0bfacb9bSmrg(define_insn "mve_vminnmq_f<mode>" 2414*0bfacb9bSmrg [ 2415*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2416*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2417*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2418*0bfacb9bSmrg VMINNMQ_F)) 2419*0bfacb9bSmrg ] 2420*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2421*0bfacb9bSmrg "vminnm.f%#<V_sz_elem> %q0, %q1, %q2" 2422*0bfacb9bSmrg [(set_attr "type" "mve_move") 2423*0bfacb9bSmrg]) 2424*0bfacb9bSmrg 2425*0bfacb9bSmrg;; 2426*0bfacb9bSmrg;; [vminnmvq_f]) 2427*0bfacb9bSmrg;; 2428*0bfacb9bSmrg(define_insn "mve_vminnmvq_f<mode>" 2429*0bfacb9bSmrg [ 2430*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 2431*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 2432*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2433*0bfacb9bSmrg VMINNMVQ_F)) 2434*0bfacb9bSmrg ] 2435*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2436*0bfacb9bSmrg "vminnmv.f%#<V_sz_elem> %0, %q2" 2437*0bfacb9bSmrg [(set_attr "type" "mve_move") 2438*0bfacb9bSmrg]) 2439*0bfacb9bSmrg 2440*0bfacb9bSmrg;; 2441*0bfacb9bSmrg;; [vmlaldavq_u, vmlaldavq_s]) 2442*0bfacb9bSmrg;; 2443*0bfacb9bSmrg(define_insn "mve_vmlaldavq_<supf><mode>" 2444*0bfacb9bSmrg [ 2445*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2446*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 2447*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2448*0bfacb9bSmrg VMLALDAVQ)) 2449*0bfacb9bSmrg ] 2450*0bfacb9bSmrg "TARGET_HAVE_MVE" 2451*0bfacb9bSmrg "vmlaldav.<supf>%#<V_sz_elem> %Q0, %R0, %q1, %q2" 2452*0bfacb9bSmrg [(set_attr "type" "mve_move") 2453*0bfacb9bSmrg]) 2454*0bfacb9bSmrg 2455*0bfacb9bSmrg;; 2456*0bfacb9bSmrg;; [vmlaldavxq_s]) 2457*0bfacb9bSmrg;; 2458*0bfacb9bSmrg(define_insn "mve_vmlaldavxq_s<mode>" 2459*0bfacb9bSmrg [ 2460*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2461*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 2462*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2463*0bfacb9bSmrg VMLALDAVXQ_S)) 2464*0bfacb9bSmrg ] 2465*0bfacb9bSmrg "TARGET_HAVE_MVE" 2466*0bfacb9bSmrg "vmlaldavx.s%#<V_sz_elem> %Q0, %R0, %q1, %q2" 2467*0bfacb9bSmrg [(set_attr "type" "mve_move") 2468*0bfacb9bSmrg]) 2469*0bfacb9bSmrg 2470*0bfacb9bSmrg;; 2471*0bfacb9bSmrg;; [vmlsldavq_s]) 2472*0bfacb9bSmrg;; 2473*0bfacb9bSmrg(define_insn "mve_vmlsldavq_s<mode>" 2474*0bfacb9bSmrg [ 2475*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2476*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 2477*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2478*0bfacb9bSmrg VMLSLDAVQ_S)) 2479*0bfacb9bSmrg ] 2480*0bfacb9bSmrg "TARGET_HAVE_MVE" 2481*0bfacb9bSmrg "vmlsldav.s%#<V_sz_elem> %Q0, %R0, %q1, %q2" 2482*0bfacb9bSmrg [(set_attr "type" "mve_move") 2483*0bfacb9bSmrg]) 2484*0bfacb9bSmrg 2485*0bfacb9bSmrg;; 2486*0bfacb9bSmrg;; [vmlsldavxq_s]) 2487*0bfacb9bSmrg;; 2488*0bfacb9bSmrg(define_insn "mve_vmlsldavxq_s<mode>" 2489*0bfacb9bSmrg [ 2490*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2491*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 2492*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2493*0bfacb9bSmrg VMLSLDAVXQ_S)) 2494*0bfacb9bSmrg ] 2495*0bfacb9bSmrg "TARGET_HAVE_MVE" 2496*0bfacb9bSmrg "vmlsldavx.s%#<V_sz_elem> %Q0, %R0, %q1, %q2" 2497*0bfacb9bSmrg [(set_attr "type" "mve_move") 2498*0bfacb9bSmrg]) 2499*0bfacb9bSmrg 2500*0bfacb9bSmrg;; 2501*0bfacb9bSmrg;; [vmovnbq_u, vmovnbq_s]) 2502*0bfacb9bSmrg;; 2503*0bfacb9bSmrg(define_insn "mve_vmovnbq_<supf><mode>" 2504*0bfacb9bSmrg [ 2505*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2506*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2507*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2508*0bfacb9bSmrg VMOVNBQ)) 2509*0bfacb9bSmrg ] 2510*0bfacb9bSmrg "TARGET_HAVE_MVE" 2511*0bfacb9bSmrg "vmovnb.i%#<V_sz_elem> %q0, %q2" 2512*0bfacb9bSmrg [(set_attr "type" "mve_move") 2513*0bfacb9bSmrg]) 2514*0bfacb9bSmrg 2515*0bfacb9bSmrg;; 2516*0bfacb9bSmrg;; [vmovntq_s, vmovntq_u]) 2517*0bfacb9bSmrg;; 2518*0bfacb9bSmrg(define_insn "mve_vmovntq_<supf><mode>" 2519*0bfacb9bSmrg [ 2520*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2521*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2522*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2523*0bfacb9bSmrg VMOVNTQ)) 2524*0bfacb9bSmrg ] 2525*0bfacb9bSmrg "TARGET_HAVE_MVE" 2526*0bfacb9bSmrg "vmovnt.i%#<V_sz_elem> %q0, %q2" 2527*0bfacb9bSmrg [(set_attr "type" "mve_move") 2528*0bfacb9bSmrg]) 2529*0bfacb9bSmrg 2530*0bfacb9bSmrg;; 2531*0bfacb9bSmrg;; [vmulq_f]) 2532*0bfacb9bSmrg;; 2533*0bfacb9bSmrg(define_insn "mve_vmulq_f<mode>" 2534*0bfacb9bSmrg [ 2535*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2536*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2537*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2538*0bfacb9bSmrg VMULQ_F)) 2539*0bfacb9bSmrg ] 2540*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2541*0bfacb9bSmrg "vmul.f%#<V_sz_elem> %q0, %q1, %q2" 2542*0bfacb9bSmrg [(set_attr "type" "mve_move") 2543*0bfacb9bSmrg]) 2544*0bfacb9bSmrg 2545*0bfacb9bSmrg;; 2546*0bfacb9bSmrg;; [vmulq_n_f]) 2547*0bfacb9bSmrg;; 2548*0bfacb9bSmrg(define_insn "mve_vmulq_n_f<mode>" 2549*0bfacb9bSmrg [ 2550*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2551*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2552*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2553*0bfacb9bSmrg VMULQ_N_F)) 2554*0bfacb9bSmrg ] 2555*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2556*0bfacb9bSmrg "vmul.f%#<V_sz_elem> %q0, %q1, %2" 2557*0bfacb9bSmrg [(set_attr "type" "mve_move") 2558*0bfacb9bSmrg]) 2559*0bfacb9bSmrg 2560*0bfacb9bSmrg;; 2561*0bfacb9bSmrg;; [vornq_f]) 2562*0bfacb9bSmrg;; 2563*0bfacb9bSmrg(define_insn "mve_vornq_f<mode>" 2564*0bfacb9bSmrg [ 2565*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2566*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2567*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2568*0bfacb9bSmrg VORNQ_F)) 2569*0bfacb9bSmrg ] 2570*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2571*0bfacb9bSmrg "vorn %q0, %q1, %q2" 2572*0bfacb9bSmrg [(set_attr "type" "mve_move") 2573*0bfacb9bSmrg]) 2574*0bfacb9bSmrg 2575*0bfacb9bSmrg;; 2576*0bfacb9bSmrg;; [vorrq_f]) 2577*0bfacb9bSmrg;; 2578*0bfacb9bSmrg(define_insn "mve_vorrq_f<mode>" 2579*0bfacb9bSmrg [ 2580*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2581*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2582*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2583*0bfacb9bSmrg VORRQ_F)) 2584*0bfacb9bSmrg ] 2585*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2586*0bfacb9bSmrg "vorr %q0, %q1, %q2" 2587*0bfacb9bSmrg [(set_attr "type" "mve_move") 2588*0bfacb9bSmrg]) 2589*0bfacb9bSmrg 2590*0bfacb9bSmrg;; 2591*0bfacb9bSmrg;; [vorrq_n_u, vorrq_n_s]) 2592*0bfacb9bSmrg;; 2593*0bfacb9bSmrg(define_insn "mve_vorrq_n_<supf><mode>" 2594*0bfacb9bSmrg [ 2595*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 2596*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 2597*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 2598*0bfacb9bSmrg VORRQ_N)) 2599*0bfacb9bSmrg ] 2600*0bfacb9bSmrg "TARGET_HAVE_MVE" 2601*0bfacb9bSmrg "vorr.i%#<V_sz_elem> %q0, %2" 2602*0bfacb9bSmrg [(set_attr "type" "mve_move") 2603*0bfacb9bSmrg]) 2604*0bfacb9bSmrg 2605*0bfacb9bSmrg;; 2606*0bfacb9bSmrg;; [vqdmullbq_n_s]) 2607*0bfacb9bSmrg;; 2608*0bfacb9bSmrg(define_insn "mve_vqdmullbq_n_s<mode>" 2609*0bfacb9bSmrg [ 2610*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 2611*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w") 2612*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2613*0bfacb9bSmrg VQDMULLBQ_N_S)) 2614*0bfacb9bSmrg ] 2615*0bfacb9bSmrg "TARGET_HAVE_MVE" 2616*0bfacb9bSmrg "vqdmullb.s%#<V_sz_elem> %q0, %q1, %2" 2617*0bfacb9bSmrg [(set_attr "type" "mve_move") 2618*0bfacb9bSmrg]) 2619*0bfacb9bSmrg 2620*0bfacb9bSmrg;; 2621*0bfacb9bSmrg;; [vqdmullbq_s]) 2622*0bfacb9bSmrg;; 2623*0bfacb9bSmrg(define_insn "mve_vqdmullbq_s<mode>" 2624*0bfacb9bSmrg [ 2625*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 2626*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w") 2627*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2628*0bfacb9bSmrg VQDMULLBQ_S)) 2629*0bfacb9bSmrg ] 2630*0bfacb9bSmrg "TARGET_HAVE_MVE" 2631*0bfacb9bSmrg "vqdmullb.s%#<V_sz_elem> %q0, %q1, %q2" 2632*0bfacb9bSmrg [(set_attr "type" "mve_move") 2633*0bfacb9bSmrg]) 2634*0bfacb9bSmrg 2635*0bfacb9bSmrg;; 2636*0bfacb9bSmrg;; [vqdmulltq_n_s]) 2637*0bfacb9bSmrg;; 2638*0bfacb9bSmrg(define_insn "mve_vqdmulltq_n_s<mode>" 2639*0bfacb9bSmrg [ 2640*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 2641*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w") 2642*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r")] 2643*0bfacb9bSmrg VQDMULLTQ_N_S)) 2644*0bfacb9bSmrg ] 2645*0bfacb9bSmrg "TARGET_HAVE_MVE" 2646*0bfacb9bSmrg "vqdmullt.s%#<V_sz_elem> %q0, %q1, %2" 2647*0bfacb9bSmrg [(set_attr "type" "mve_move") 2648*0bfacb9bSmrg]) 2649*0bfacb9bSmrg 2650*0bfacb9bSmrg;; 2651*0bfacb9bSmrg;; [vqdmulltq_s]) 2652*0bfacb9bSmrg;; 2653*0bfacb9bSmrg(define_insn "mve_vqdmulltq_s<mode>" 2654*0bfacb9bSmrg [ 2655*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 2656*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_5 1 "s_register_operand" "w") 2657*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2658*0bfacb9bSmrg VQDMULLTQ_S)) 2659*0bfacb9bSmrg ] 2660*0bfacb9bSmrg "TARGET_HAVE_MVE" 2661*0bfacb9bSmrg "vqdmullt.s%#<V_sz_elem> %q0, %q1, %q2" 2662*0bfacb9bSmrg [(set_attr "type" "mve_move") 2663*0bfacb9bSmrg]) 2664*0bfacb9bSmrg 2665*0bfacb9bSmrg;; 2666*0bfacb9bSmrg;; [vqmovnbq_u, vqmovnbq_s]) 2667*0bfacb9bSmrg;; 2668*0bfacb9bSmrg(define_insn "mve_vqmovnbq_<supf><mode>" 2669*0bfacb9bSmrg [ 2670*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2671*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2672*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2673*0bfacb9bSmrg VQMOVNBQ)) 2674*0bfacb9bSmrg ] 2675*0bfacb9bSmrg "TARGET_HAVE_MVE" 2676*0bfacb9bSmrg "vqmovnb.<supf>%#<V_sz_elem> %q0, %q2" 2677*0bfacb9bSmrg [(set_attr "type" "mve_move") 2678*0bfacb9bSmrg]) 2679*0bfacb9bSmrg 2680*0bfacb9bSmrg;; 2681*0bfacb9bSmrg;; [vqmovntq_u, vqmovntq_s]) 2682*0bfacb9bSmrg;; 2683*0bfacb9bSmrg(define_insn "mve_vqmovntq_<supf><mode>" 2684*0bfacb9bSmrg [ 2685*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2686*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2687*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2688*0bfacb9bSmrg VQMOVNTQ)) 2689*0bfacb9bSmrg ] 2690*0bfacb9bSmrg "TARGET_HAVE_MVE" 2691*0bfacb9bSmrg "vqmovnt.<supf>%#<V_sz_elem> %q0, %q2" 2692*0bfacb9bSmrg [(set_attr "type" "mve_move") 2693*0bfacb9bSmrg]) 2694*0bfacb9bSmrg 2695*0bfacb9bSmrg;; 2696*0bfacb9bSmrg;; [vqmovunbq_s]) 2697*0bfacb9bSmrg;; 2698*0bfacb9bSmrg(define_insn "mve_vqmovunbq_s<mode>" 2699*0bfacb9bSmrg [ 2700*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2701*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2702*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2703*0bfacb9bSmrg VQMOVUNBQ_S)) 2704*0bfacb9bSmrg ] 2705*0bfacb9bSmrg "TARGET_HAVE_MVE" 2706*0bfacb9bSmrg "vqmovunb.s%#<V_sz_elem> %q0, %q2" 2707*0bfacb9bSmrg [(set_attr "type" "mve_move") 2708*0bfacb9bSmrg]) 2709*0bfacb9bSmrg 2710*0bfacb9bSmrg;; 2711*0bfacb9bSmrg;; [vqmovuntq_s]) 2712*0bfacb9bSmrg;; 2713*0bfacb9bSmrg(define_insn "mve_vqmovuntq_s<mode>" 2714*0bfacb9bSmrg [ 2715*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2716*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2717*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w")] 2718*0bfacb9bSmrg VQMOVUNTQ_S)) 2719*0bfacb9bSmrg ] 2720*0bfacb9bSmrg "TARGET_HAVE_MVE" 2721*0bfacb9bSmrg "vqmovunt.s%#<V_sz_elem> %q0, %q2" 2722*0bfacb9bSmrg [(set_attr "type" "mve_move") 2723*0bfacb9bSmrg]) 2724*0bfacb9bSmrg 2725*0bfacb9bSmrg;; 2726*0bfacb9bSmrg;; [vrmlaldavhxq_s]) 2727*0bfacb9bSmrg;; 2728*0bfacb9bSmrg(define_insn "mve_vrmlaldavhxq_sv4si" 2729*0bfacb9bSmrg [ 2730*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2731*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 2732*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 2733*0bfacb9bSmrg VRMLALDAVHXQ_S)) 2734*0bfacb9bSmrg ] 2735*0bfacb9bSmrg "TARGET_HAVE_MVE" 2736*0bfacb9bSmrg "vrmlaldavhx.s32 %Q0, %R0, %q1, %q2" 2737*0bfacb9bSmrg [(set_attr "type" "mve_move") 2738*0bfacb9bSmrg]) 2739*0bfacb9bSmrg 2740*0bfacb9bSmrg;; 2741*0bfacb9bSmrg;; [vrmlsldavhq_s]) 2742*0bfacb9bSmrg;; 2743*0bfacb9bSmrg(define_insn "mve_vrmlsldavhq_sv4si" 2744*0bfacb9bSmrg [ 2745*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2746*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 2747*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 2748*0bfacb9bSmrg VRMLSLDAVHQ_S)) 2749*0bfacb9bSmrg ] 2750*0bfacb9bSmrg "TARGET_HAVE_MVE" 2751*0bfacb9bSmrg "vrmlsldavh.s32\t%Q0, %R0, %q1, %q2" 2752*0bfacb9bSmrg [(set_attr "type" "mve_move") 2753*0bfacb9bSmrg]) 2754*0bfacb9bSmrg 2755*0bfacb9bSmrg;; 2756*0bfacb9bSmrg;; [vrmlsldavhxq_s]) 2757*0bfacb9bSmrg;; 2758*0bfacb9bSmrg(define_insn "mve_vrmlsldavhxq_sv4si" 2759*0bfacb9bSmrg [ 2760*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2761*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 2762*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 2763*0bfacb9bSmrg VRMLSLDAVHXQ_S)) 2764*0bfacb9bSmrg ] 2765*0bfacb9bSmrg "TARGET_HAVE_MVE" 2766*0bfacb9bSmrg "vrmlsldavhx.s32\t%Q0, %R0, %q1, %q2" 2767*0bfacb9bSmrg [(set_attr "type" "mve_move") 2768*0bfacb9bSmrg]) 2769*0bfacb9bSmrg 2770*0bfacb9bSmrg;; 2771*0bfacb9bSmrg;; [vshllbq_n_s, vshllbq_n_u]) 2772*0bfacb9bSmrg;; 2773*0bfacb9bSmrg(define_insn "mve_vshllbq_n_<supf><mode>" 2774*0bfacb9bSmrg [ 2775*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 2776*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w") 2777*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 2778*0bfacb9bSmrg VSHLLBQ_N)) 2779*0bfacb9bSmrg ] 2780*0bfacb9bSmrg "TARGET_HAVE_MVE" 2781*0bfacb9bSmrg "vshllb.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 2782*0bfacb9bSmrg [(set_attr "type" "mve_move") 2783*0bfacb9bSmrg]) 2784*0bfacb9bSmrg 2785*0bfacb9bSmrg;; 2786*0bfacb9bSmrg;; [vshlltq_n_u, vshlltq_n_s]) 2787*0bfacb9bSmrg;; 2788*0bfacb9bSmrg(define_insn "mve_vshlltq_n_<supf><mode>" 2789*0bfacb9bSmrg [ 2790*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 2791*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w") 2792*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 2793*0bfacb9bSmrg VSHLLTQ_N)) 2794*0bfacb9bSmrg ] 2795*0bfacb9bSmrg "TARGET_HAVE_MVE" 2796*0bfacb9bSmrg "vshllt.<supf>%#<V_sz_elem>\t%q0, %q1, %2" 2797*0bfacb9bSmrg [(set_attr "type" "mve_move") 2798*0bfacb9bSmrg]) 2799*0bfacb9bSmrg 2800*0bfacb9bSmrg;; 2801*0bfacb9bSmrg;; [vsubq_f]) 2802*0bfacb9bSmrg;; 2803*0bfacb9bSmrg(define_insn "mve_vsubq_f<mode>" 2804*0bfacb9bSmrg [ 2805*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2806*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 2807*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w")] 2808*0bfacb9bSmrg VSUBQ_F)) 2809*0bfacb9bSmrg ] 2810*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2811*0bfacb9bSmrg "vsub.f%#<V_sz_elem>\t%q0, %q1, %q2" 2812*0bfacb9bSmrg [(set_attr "type" "mve_move") 2813*0bfacb9bSmrg]) 2814*0bfacb9bSmrg 2815*0bfacb9bSmrg;; 2816*0bfacb9bSmrg;; [vmulltq_poly_p]) 2817*0bfacb9bSmrg;; 2818*0bfacb9bSmrg(define_insn "mve_vmulltq_poly_p<mode>" 2819*0bfacb9bSmrg [ 2820*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 2821*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w") 2822*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w")] 2823*0bfacb9bSmrg VMULLTQ_POLY_P)) 2824*0bfacb9bSmrg ] 2825*0bfacb9bSmrg "TARGET_HAVE_MVE" 2826*0bfacb9bSmrg "vmullt.p%#<V_sz_elem>\t%q0, %q1, %q2" 2827*0bfacb9bSmrg [(set_attr "type" "mve_move") 2828*0bfacb9bSmrg]) 2829*0bfacb9bSmrg 2830*0bfacb9bSmrg;; 2831*0bfacb9bSmrg;; [vmullbq_poly_p]) 2832*0bfacb9bSmrg;; 2833*0bfacb9bSmrg(define_insn "mve_vmullbq_poly_p<mode>" 2834*0bfacb9bSmrg [ 2835*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 2836*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w") 2837*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w")] 2838*0bfacb9bSmrg VMULLBQ_POLY_P)) 2839*0bfacb9bSmrg ] 2840*0bfacb9bSmrg "TARGET_HAVE_MVE" 2841*0bfacb9bSmrg "vmullb.p%#<V_sz_elem>\t%q0, %q1, %q2" 2842*0bfacb9bSmrg [(set_attr "type" "mve_move") 2843*0bfacb9bSmrg]) 2844*0bfacb9bSmrg 2845*0bfacb9bSmrg;; 2846*0bfacb9bSmrg;; [vrmlaldavhq_u vrmlaldavhq_s]) 2847*0bfacb9bSmrg;; 2848*0bfacb9bSmrg(define_insn "mve_vrmlaldavhq_<supf>v4si" 2849*0bfacb9bSmrg [ 2850*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2851*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 2852*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 2853*0bfacb9bSmrg VRMLALDAVHQ)) 2854*0bfacb9bSmrg ] 2855*0bfacb9bSmrg "TARGET_HAVE_MVE" 2856*0bfacb9bSmrg "vrmlaldavh.<supf>32 %Q0, %R0, %q1, %q2" 2857*0bfacb9bSmrg [(set_attr "type" "mve_move") 2858*0bfacb9bSmrg]) 2859*0bfacb9bSmrg 2860*0bfacb9bSmrg;; 2861*0bfacb9bSmrg;; [vbicq_m_n_s, vbicq_m_n_u]) 2862*0bfacb9bSmrg;; 2863*0bfacb9bSmrg(define_insn "mve_vbicq_m_n_<supf><mode>" 2864*0bfacb9bSmrg [ 2865*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 2866*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 2867*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i") 2868*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 2869*0bfacb9bSmrg VBICQ_M_N)) 2870*0bfacb9bSmrg ] 2871*0bfacb9bSmrg "TARGET_HAVE_MVE" 2872*0bfacb9bSmrg "vpst\;vbict.i%#<V_sz_elem> %q0, %2" 2873*0bfacb9bSmrg [(set_attr "type" "mve_move") 2874*0bfacb9bSmrg (set_attr "length""8")]) 2875*0bfacb9bSmrg;; 2876*0bfacb9bSmrg;; [vcmpeqq_m_f]) 2877*0bfacb9bSmrg;; 2878*0bfacb9bSmrg(define_insn "mve_vcmpeqq_m_f<mode>" 2879*0bfacb9bSmrg [ 2880*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 2881*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 2882*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 2883*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 2884*0bfacb9bSmrg VCMPEQQ_M_F)) 2885*0bfacb9bSmrg ] 2886*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2887*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> eq, %q1, %q2" 2888*0bfacb9bSmrg [(set_attr "type" "mve_move") 2889*0bfacb9bSmrg (set_attr "length""8")]) 2890*0bfacb9bSmrg;; 2891*0bfacb9bSmrg;; [vcvtaq_m_u, vcvtaq_m_s]) 2892*0bfacb9bSmrg;; 2893*0bfacb9bSmrg(define_insn "mve_vcvtaq_m_<supf><mode>" 2894*0bfacb9bSmrg [ 2895*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 2896*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 2897*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 2898*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 2899*0bfacb9bSmrg VCVTAQ_M)) 2900*0bfacb9bSmrg ] 2901*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2902*0bfacb9bSmrg "vpst\;vcvtat.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2" 2903*0bfacb9bSmrg [(set_attr "type" "mve_move") 2904*0bfacb9bSmrg (set_attr "length""8")]) 2905*0bfacb9bSmrg;; 2906*0bfacb9bSmrg;; [vcvtq_m_to_f_s, vcvtq_m_to_f_u]) 2907*0bfacb9bSmrg;; 2908*0bfacb9bSmrg(define_insn "mve_vcvtq_m_to_f_<supf><mode>" 2909*0bfacb9bSmrg [ 2910*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 2911*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 2912*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 2913*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 2914*0bfacb9bSmrg VCVTQ_M_TO_F)) 2915*0bfacb9bSmrg ] 2916*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 2917*0bfacb9bSmrg "vpst\;vcvtt.f%#<V_sz_elem>.<supf>%#<V_sz_elem> %q0, %q2" 2918*0bfacb9bSmrg [(set_attr "type" "mve_move") 2919*0bfacb9bSmrg (set_attr "length""8")]) 2920*0bfacb9bSmrg;; 2921*0bfacb9bSmrg;; [vqrshrnbq_n_u, vqrshrnbq_n_s]) 2922*0bfacb9bSmrg;; 2923*0bfacb9bSmrg(define_insn "mve_vqrshrnbq_n_<supf><mode>" 2924*0bfacb9bSmrg [ 2925*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2926*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2927*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 2928*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb")] 2929*0bfacb9bSmrg VQRSHRNBQ_N)) 2930*0bfacb9bSmrg ] 2931*0bfacb9bSmrg "TARGET_HAVE_MVE" 2932*0bfacb9bSmrg "vqrshrnb.<supf>%#<V_sz_elem> %q0, %q2, %3" 2933*0bfacb9bSmrg [(set_attr "type" "mve_move") 2934*0bfacb9bSmrg]) 2935*0bfacb9bSmrg;; 2936*0bfacb9bSmrg;; [vqrshrunbq_n_s]) 2937*0bfacb9bSmrg;; 2938*0bfacb9bSmrg(define_insn "mve_vqrshrunbq_n_s<mode>" 2939*0bfacb9bSmrg [ 2940*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 2941*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 2942*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 2943*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb")] 2944*0bfacb9bSmrg VQRSHRUNBQ_N_S)) 2945*0bfacb9bSmrg ] 2946*0bfacb9bSmrg "TARGET_HAVE_MVE" 2947*0bfacb9bSmrg "vqrshrunb.s%#<V_sz_elem>\t%q0, %q2, %3" 2948*0bfacb9bSmrg [(set_attr "type" "mve_move") 2949*0bfacb9bSmrg]) 2950*0bfacb9bSmrg;; 2951*0bfacb9bSmrg;; [vrmlaldavhaq_s vrmlaldavhaq_u]) 2952*0bfacb9bSmrg;; 2953*0bfacb9bSmrg(define_insn "mve_vrmlaldavhaq_<supf>v4si" 2954*0bfacb9bSmrg [ 2955*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 2956*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 2957*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 2958*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w")] 2959*0bfacb9bSmrg VRMLALDAVHAQ)) 2960*0bfacb9bSmrg ] 2961*0bfacb9bSmrg "TARGET_HAVE_MVE" 2962*0bfacb9bSmrg "vrmlaldavha.<supf>32 %Q0, %R0, %q2, %q3" 2963*0bfacb9bSmrg [(set_attr "type" "mve_move") 2964*0bfacb9bSmrg]) 2965*0bfacb9bSmrg 2966*0bfacb9bSmrg;; 2967*0bfacb9bSmrg;; [vabavq_s, vabavq_u]) 2968*0bfacb9bSmrg;; 2969*0bfacb9bSmrg(define_insn "mve_vabavq_<supf><mode>" 2970*0bfacb9bSmrg [ 2971*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=r") 2972*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 2973*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 2974*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 2975*0bfacb9bSmrg VABAVQ)) 2976*0bfacb9bSmrg ] 2977*0bfacb9bSmrg "TARGET_HAVE_MVE" 2978*0bfacb9bSmrg "vabav.<supf>%#<V_sz_elem>\t%0, %q2, %q3" 2979*0bfacb9bSmrg [(set_attr "type" "mve_move") 2980*0bfacb9bSmrg]) 2981*0bfacb9bSmrg 2982*0bfacb9bSmrg;; 2983*0bfacb9bSmrg;; [vshlcq_u vshlcq_s] 2984*0bfacb9bSmrg;; 2985*0bfacb9bSmrg(define_expand "mve_vshlcq_vec_<supf><mode>" 2986*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 2987*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 2988*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 2989*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_32") 2990*0bfacb9bSmrg (unspec:MVE_2 [(const_int 0)] VSHLCQ)] 2991*0bfacb9bSmrg "TARGET_HAVE_MVE" 2992*0bfacb9bSmrg{ 2993*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (SImode); 2994*0bfacb9bSmrg emit_insn(gen_mve_vshlcq_<supf><mode>(operands[0], ignore_wb, operands[1], 2995*0bfacb9bSmrg operands[2], operands[3])); 2996*0bfacb9bSmrg DONE; 2997*0bfacb9bSmrg}) 2998*0bfacb9bSmrg 2999*0bfacb9bSmrg(define_expand "mve_vshlcq_carry_<supf><mode>" 3000*0bfacb9bSmrg [(match_operand:SI 0 "s_register_operand") 3001*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 3002*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 3003*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_32") 3004*0bfacb9bSmrg (unspec:MVE_2 [(const_int 0)] VSHLCQ)] 3005*0bfacb9bSmrg "TARGET_HAVE_MVE" 3006*0bfacb9bSmrg{ 3007*0bfacb9bSmrg rtx ignore_vec = gen_reg_rtx (<MODE>mode); 3008*0bfacb9bSmrg emit_insn(gen_mve_vshlcq_<supf><mode>(ignore_vec, operands[0], operands[1], 3009*0bfacb9bSmrg operands[2], operands[3])); 3010*0bfacb9bSmrg DONE; 3011*0bfacb9bSmrg}) 3012*0bfacb9bSmrg 3013*0bfacb9bSmrg(define_insn "mve_vshlcq_<supf><mode>" 3014*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 3015*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0") 3016*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "1") 3017*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_32" "Rf")] 3018*0bfacb9bSmrg VSHLCQ)) 3019*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=r") 3020*0bfacb9bSmrg (unspec:SI [(match_dup 2) 3021*0bfacb9bSmrg (match_dup 3) 3022*0bfacb9bSmrg (match_dup 4)] 3023*0bfacb9bSmrg VSHLCQ))] 3024*0bfacb9bSmrg "TARGET_HAVE_MVE" 3025*0bfacb9bSmrg "vshlc %q0, %1, %4") 3026*0bfacb9bSmrg 3027*0bfacb9bSmrg;; 3028*0bfacb9bSmrg;; [vabsq_m_s]) 3029*0bfacb9bSmrg;; 3030*0bfacb9bSmrg(define_insn "mve_vabsq_m_s<mode>" 3031*0bfacb9bSmrg [ 3032*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3033*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3034*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3035*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3036*0bfacb9bSmrg VABSQ_M_S)) 3037*0bfacb9bSmrg ] 3038*0bfacb9bSmrg "TARGET_HAVE_MVE" 3039*0bfacb9bSmrg "vpst\;vabst.s%#<V_sz_elem> %q0, %q2" 3040*0bfacb9bSmrg [(set_attr "type" "mve_move") 3041*0bfacb9bSmrg (set_attr "length""8")]) 3042*0bfacb9bSmrg 3043*0bfacb9bSmrg;; 3044*0bfacb9bSmrg;; [vaddvaq_p_u, vaddvaq_p_s]) 3045*0bfacb9bSmrg;; 3046*0bfacb9bSmrg(define_insn "mve_vaddvaq_p_<supf><mode>" 3047*0bfacb9bSmrg [ 3048*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3049*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 3050*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3051*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3052*0bfacb9bSmrg VADDVAQ_P)) 3053*0bfacb9bSmrg ] 3054*0bfacb9bSmrg "TARGET_HAVE_MVE" 3055*0bfacb9bSmrg "vpst\;vaddvat.<supf>%#<V_sz_elem> %0, %q2" 3056*0bfacb9bSmrg [(set_attr "type" "mve_move") 3057*0bfacb9bSmrg (set_attr "length""8")]) 3058*0bfacb9bSmrg 3059*0bfacb9bSmrg;; 3060*0bfacb9bSmrg;; [vclsq_m_s]) 3061*0bfacb9bSmrg;; 3062*0bfacb9bSmrg(define_insn "mve_vclsq_m_s<mode>" 3063*0bfacb9bSmrg [ 3064*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3065*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3066*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3067*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3068*0bfacb9bSmrg VCLSQ_M_S)) 3069*0bfacb9bSmrg ] 3070*0bfacb9bSmrg "TARGET_HAVE_MVE" 3071*0bfacb9bSmrg "vpst\;vclst.s%#<V_sz_elem> %q0, %q2" 3072*0bfacb9bSmrg [(set_attr "type" "mve_move") 3073*0bfacb9bSmrg (set_attr "length""8")]) 3074*0bfacb9bSmrg 3075*0bfacb9bSmrg;; 3076*0bfacb9bSmrg;; [vclzq_m_s, vclzq_m_u]) 3077*0bfacb9bSmrg;; 3078*0bfacb9bSmrg(define_insn "mve_vclzq_m_<supf><mode>" 3079*0bfacb9bSmrg [ 3080*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3081*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3082*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3083*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3084*0bfacb9bSmrg VCLZQ_M)) 3085*0bfacb9bSmrg ] 3086*0bfacb9bSmrg "TARGET_HAVE_MVE" 3087*0bfacb9bSmrg "vpst\;vclzt.i%#<V_sz_elem> %q0, %q2" 3088*0bfacb9bSmrg [(set_attr "type" "mve_move") 3089*0bfacb9bSmrg (set_attr "length""8")]) 3090*0bfacb9bSmrg 3091*0bfacb9bSmrg;; 3092*0bfacb9bSmrg;; [vcmpcsq_m_n_u]) 3093*0bfacb9bSmrg;; 3094*0bfacb9bSmrg(define_insn "mve_vcmpcsq_m_n_u<mode>" 3095*0bfacb9bSmrg [ 3096*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3097*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3098*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3099*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3100*0bfacb9bSmrg VCMPCSQ_M_N_U)) 3101*0bfacb9bSmrg ] 3102*0bfacb9bSmrg "TARGET_HAVE_MVE" 3103*0bfacb9bSmrg "vpst\;vcmpt.u%#<V_sz_elem> cs, %q1, %2" 3104*0bfacb9bSmrg [(set_attr "type" "mve_move") 3105*0bfacb9bSmrg (set_attr "length""8")]) 3106*0bfacb9bSmrg 3107*0bfacb9bSmrg;; 3108*0bfacb9bSmrg;; [vcmpcsq_m_u]) 3109*0bfacb9bSmrg;; 3110*0bfacb9bSmrg(define_insn "mve_vcmpcsq_m_u<mode>" 3111*0bfacb9bSmrg [ 3112*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3113*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3114*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3115*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3116*0bfacb9bSmrg VCMPCSQ_M_U)) 3117*0bfacb9bSmrg ] 3118*0bfacb9bSmrg "TARGET_HAVE_MVE" 3119*0bfacb9bSmrg "vpst\;vcmpt.u%#<V_sz_elem> cs, %q1, %q2" 3120*0bfacb9bSmrg [(set_attr "type" "mve_move") 3121*0bfacb9bSmrg (set_attr "length""8")]) 3122*0bfacb9bSmrg 3123*0bfacb9bSmrg;; 3124*0bfacb9bSmrg;; [vcmpeqq_m_n_u, vcmpeqq_m_n_s]) 3125*0bfacb9bSmrg;; 3126*0bfacb9bSmrg(define_insn "mve_vcmpeqq_m_n_<supf><mode>" 3127*0bfacb9bSmrg [ 3128*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3129*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3130*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3131*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3132*0bfacb9bSmrg VCMPEQQ_M_N)) 3133*0bfacb9bSmrg ] 3134*0bfacb9bSmrg "TARGET_HAVE_MVE" 3135*0bfacb9bSmrg "vpst\;vcmpt.i%#<V_sz_elem> eq, %q1, %2" 3136*0bfacb9bSmrg [(set_attr "type" "mve_move") 3137*0bfacb9bSmrg (set_attr "length""8")]) 3138*0bfacb9bSmrg 3139*0bfacb9bSmrg;; 3140*0bfacb9bSmrg;; [vcmpeqq_m_u, vcmpeqq_m_s]) 3141*0bfacb9bSmrg;; 3142*0bfacb9bSmrg(define_insn "mve_vcmpeqq_m_<supf><mode>" 3143*0bfacb9bSmrg [ 3144*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3145*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3146*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3147*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3148*0bfacb9bSmrg VCMPEQQ_M)) 3149*0bfacb9bSmrg ] 3150*0bfacb9bSmrg "TARGET_HAVE_MVE" 3151*0bfacb9bSmrg "vpst\;vcmpt.i%#<V_sz_elem> eq, %q1, %q2" 3152*0bfacb9bSmrg [(set_attr "type" "mve_move") 3153*0bfacb9bSmrg (set_attr "length""8")]) 3154*0bfacb9bSmrg 3155*0bfacb9bSmrg;; 3156*0bfacb9bSmrg;; [vcmpgeq_m_n_s]) 3157*0bfacb9bSmrg;; 3158*0bfacb9bSmrg(define_insn "mve_vcmpgeq_m_n_s<mode>" 3159*0bfacb9bSmrg [ 3160*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3161*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3162*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3163*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3164*0bfacb9bSmrg VCMPGEQ_M_N_S)) 3165*0bfacb9bSmrg ] 3166*0bfacb9bSmrg "TARGET_HAVE_MVE" 3167*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> ge, %q1, %2" 3168*0bfacb9bSmrg [(set_attr "type" "mve_move") 3169*0bfacb9bSmrg (set_attr "length""8")]) 3170*0bfacb9bSmrg 3171*0bfacb9bSmrg;; 3172*0bfacb9bSmrg;; [vcmpgeq_m_s]) 3173*0bfacb9bSmrg;; 3174*0bfacb9bSmrg(define_insn "mve_vcmpgeq_m_s<mode>" 3175*0bfacb9bSmrg [ 3176*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3177*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3178*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3179*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3180*0bfacb9bSmrg VCMPGEQ_M_S)) 3181*0bfacb9bSmrg ] 3182*0bfacb9bSmrg "TARGET_HAVE_MVE" 3183*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> ge, %q1, %q2" 3184*0bfacb9bSmrg [(set_attr "type" "mve_move") 3185*0bfacb9bSmrg (set_attr "length""8")]) 3186*0bfacb9bSmrg 3187*0bfacb9bSmrg;; 3188*0bfacb9bSmrg;; [vcmpgtq_m_n_s]) 3189*0bfacb9bSmrg;; 3190*0bfacb9bSmrg(define_insn "mve_vcmpgtq_m_n_s<mode>" 3191*0bfacb9bSmrg [ 3192*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3193*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3194*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3195*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3196*0bfacb9bSmrg VCMPGTQ_M_N_S)) 3197*0bfacb9bSmrg ] 3198*0bfacb9bSmrg "TARGET_HAVE_MVE" 3199*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> gt, %q1, %2" 3200*0bfacb9bSmrg [(set_attr "type" "mve_move") 3201*0bfacb9bSmrg (set_attr "length""8")]) 3202*0bfacb9bSmrg 3203*0bfacb9bSmrg;; 3204*0bfacb9bSmrg;; [vcmpgtq_m_s]) 3205*0bfacb9bSmrg;; 3206*0bfacb9bSmrg(define_insn "mve_vcmpgtq_m_s<mode>" 3207*0bfacb9bSmrg [ 3208*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3209*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3210*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3211*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3212*0bfacb9bSmrg VCMPGTQ_M_S)) 3213*0bfacb9bSmrg ] 3214*0bfacb9bSmrg "TARGET_HAVE_MVE" 3215*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> gt, %q1, %q2" 3216*0bfacb9bSmrg [(set_attr "type" "mve_move") 3217*0bfacb9bSmrg (set_attr "length""8")]) 3218*0bfacb9bSmrg 3219*0bfacb9bSmrg;; 3220*0bfacb9bSmrg;; [vcmphiq_m_n_u]) 3221*0bfacb9bSmrg;; 3222*0bfacb9bSmrg(define_insn "mve_vcmphiq_m_n_u<mode>" 3223*0bfacb9bSmrg [ 3224*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3225*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3226*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3227*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3228*0bfacb9bSmrg VCMPHIQ_M_N_U)) 3229*0bfacb9bSmrg ] 3230*0bfacb9bSmrg "TARGET_HAVE_MVE" 3231*0bfacb9bSmrg "vpst\;vcmpt.u%#<V_sz_elem> hi, %q1, %2" 3232*0bfacb9bSmrg [(set_attr "type" "mve_move") 3233*0bfacb9bSmrg (set_attr "length""8")]) 3234*0bfacb9bSmrg 3235*0bfacb9bSmrg;; 3236*0bfacb9bSmrg;; [vcmphiq_m_u]) 3237*0bfacb9bSmrg;; 3238*0bfacb9bSmrg(define_insn "mve_vcmphiq_m_u<mode>" 3239*0bfacb9bSmrg [ 3240*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3241*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3242*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3243*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3244*0bfacb9bSmrg VCMPHIQ_M_U)) 3245*0bfacb9bSmrg ] 3246*0bfacb9bSmrg "TARGET_HAVE_MVE" 3247*0bfacb9bSmrg "vpst\;vcmpt.u%#<V_sz_elem> hi, %q1, %q2" 3248*0bfacb9bSmrg [(set_attr "type" "mve_move") 3249*0bfacb9bSmrg (set_attr "length""8")]) 3250*0bfacb9bSmrg 3251*0bfacb9bSmrg;; 3252*0bfacb9bSmrg;; [vcmpleq_m_n_s]) 3253*0bfacb9bSmrg;; 3254*0bfacb9bSmrg(define_insn "mve_vcmpleq_m_n_s<mode>" 3255*0bfacb9bSmrg [ 3256*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3257*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3258*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3259*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3260*0bfacb9bSmrg VCMPLEQ_M_N_S)) 3261*0bfacb9bSmrg ] 3262*0bfacb9bSmrg "TARGET_HAVE_MVE" 3263*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> le, %q1, %2" 3264*0bfacb9bSmrg [(set_attr "type" "mve_move") 3265*0bfacb9bSmrg (set_attr "length""8")]) 3266*0bfacb9bSmrg 3267*0bfacb9bSmrg;; 3268*0bfacb9bSmrg;; [vcmpleq_m_s]) 3269*0bfacb9bSmrg;; 3270*0bfacb9bSmrg(define_insn "mve_vcmpleq_m_s<mode>" 3271*0bfacb9bSmrg [ 3272*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3273*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3274*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3275*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3276*0bfacb9bSmrg VCMPLEQ_M_S)) 3277*0bfacb9bSmrg ] 3278*0bfacb9bSmrg "TARGET_HAVE_MVE" 3279*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> le, %q1, %q2" 3280*0bfacb9bSmrg [(set_attr "type" "mve_move") 3281*0bfacb9bSmrg (set_attr "length""8")]) 3282*0bfacb9bSmrg 3283*0bfacb9bSmrg;; 3284*0bfacb9bSmrg;; [vcmpltq_m_n_s]) 3285*0bfacb9bSmrg;; 3286*0bfacb9bSmrg(define_insn "mve_vcmpltq_m_n_s<mode>" 3287*0bfacb9bSmrg [ 3288*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3289*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3290*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3291*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3292*0bfacb9bSmrg VCMPLTQ_M_N_S)) 3293*0bfacb9bSmrg ] 3294*0bfacb9bSmrg "TARGET_HAVE_MVE" 3295*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> lt, %q1, %2" 3296*0bfacb9bSmrg [(set_attr "type" "mve_move") 3297*0bfacb9bSmrg (set_attr "length""8")]) 3298*0bfacb9bSmrg 3299*0bfacb9bSmrg;; 3300*0bfacb9bSmrg;; [vcmpltq_m_s]) 3301*0bfacb9bSmrg;; 3302*0bfacb9bSmrg(define_insn "mve_vcmpltq_m_s<mode>" 3303*0bfacb9bSmrg [ 3304*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3305*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3306*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3307*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3308*0bfacb9bSmrg VCMPLTQ_M_S)) 3309*0bfacb9bSmrg ] 3310*0bfacb9bSmrg "TARGET_HAVE_MVE" 3311*0bfacb9bSmrg "vpst\;vcmpt.s%#<V_sz_elem> lt, %q1, %q2" 3312*0bfacb9bSmrg [(set_attr "type" "mve_move") 3313*0bfacb9bSmrg (set_attr "length""8")]) 3314*0bfacb9bSmrg 3315*0bfacb9bSmrg;; 3316*0bfacb9bSmrg;; [vcmpneq_m_n_u, vcmpneq_m_n_s]) 3317*0bfacb9bSmrg;; 3318*0bfacb9bSmrg(define_insn "mve_vcmpneq_m_n_<supf><mode>" 3319*0bfacb9bSmrg [ 3320*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3321*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3322*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3323*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3324*0bfacb9bSmrg VCMPNEQ_M_N)) 3325*0bfacb9bSmrg ] 3326*0bfacb9bSmrg "TARGET_HAVE_MVE" 3327*0bfacb9bSmrg "vpst\;vcmpt.i%#<V_sz_elem> ne, %q1, %2" 3328*0bfacb9bSmrg [(set_attr "type" "mve_move") 3329*0bfacb9bSmrg (set_attr "length""8")]) 3330*0bfacb9bSmrg 3331*0bfacb9bSmrg;; 3332*0bfacb9bSmrg;; [vcmpneq_m_s, vcmpneq_m_u]) 3333*0bfacb9bSmrg;; 3334*0bfacb9bSmrg(define_insn "mve_vcmpneq_m_<supf><mode>" 3335*0bfacb9bSmrg [ 3336*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 3337*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w") 3338*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3339*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3340*0bfacb9bSmrg VCMPNEQ_M)) 3341*0bfacb9bSmrg ] 3342*0bfacb9bSmrg "TARGET_HAVE_MVE" 3343*0bfacb9bSmrg "vpst\;vcmpt.i%#<V_sz_elem> ne, %q1, %q2" 3344*0bfacb9bSmrg [(set_attr "type" "mve_move") 3345*0bfacb9bSmrg (set_attr "length""8")]) 3346*0bfacb9bSmrg 3347*0bfacb9bSmrg;; 3348*0bfacb9bSmrg;; [vdupq_m_n_s, vdupq_m_n_u]) 3349*0bfacb9bSmrg;; 3350*0bfacb9bSmrg(define_insn "mve_vdupq_m_n_<supf><mode>" 3351*0bfacb9bSmrg [ 3352*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3353*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3354*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 3355*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3356*0bfacb9bSmrg VDUPQ_M_N)) 3357*0bfacb9bSmrg ] 3358*0bfacb9bSmrg "TARGET_HAVE_MVE" 3359*0bfacb9bSmrg "vpst\;vdupt.%#<V_sz_elem> %q0, %2" 3360*0bfacb9bSmrg [(set_attr "type" "mve_move") 3361*0bfacb9bSmrg (set_attr "length""8")]) 3362*0bfacb9bSmrg 3363*0bfacb9bSmrg;; 3364*0bfacb9bSmrg;; [vmaxaq_m_s]) 3365*0bfacb9bSmrg;; 3366*0bfacb9bSmrg(define_insn "mve_vmaxaq_m_s<mode>" 3367*0bfacb9bSmrg [ 3368*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3369*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3370*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3371*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3372*0bfacb9bSmrg VMAXAQ_M_S)) 3373*0bfacb9bSmrg ] 3374*0bfacb9bSmrg "TARGET_HAVE_MVE" 3375*0bfacb9bSmrg "vpst\;vmaxat.s%#<V_sz_elem> %q0, %q2" 3376*0bfacb9bSmrg [(set_attr "type" "mve_move") 3377*0bfacb9bSmrg (set_attr "length""8")]) 3378*0bfacb9bSmrg 3379*0bfacb9bSmrg;; 3380*0bfacb9bSmrg;; [vmaxavq_p_s]) 3381*0bfacb9bSmrg;; 3382*0bfacb9bSmrg(define_insn "mve_vmaxavq_p_s<mode>" 3383*0bfacb9bSmrg [ 3384*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 3385*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 3386*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3387*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3388*0bfacb9bSmrg VMAXAVQ_P_S)) 3389*0bfacb9bSmrg ] 3390*0bfacb9bSmrg "TARGET_HAVE_MVE" 3391*0bfacb9bSmrg "vpst\;vmaxavt.s%#<V_sz_elem> %0, %q2" 3392*0bfacb9bSmrg [(set_attr "type" "mve_move") 3393*0bfacb9bSmrg (set_attr "length""8")]) 3394*0bfacb9bSmrg 3395*0bfacb9bSmrg;; 3396*0bfacb9bSmrg;; [vmaxvq_p_u, vmaxvq_p_s]) 3397*0bfacb9bSmrg;; 3398*0bfacb9bSmrg(define_insn "mve_vmaxvq_p_<supf><mode>" 3399*0bfacb9bSmrg [ 3400*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 3401*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 3402*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3403*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3404*0bfacb9bSmrg VMAXVQ_P)) 3405*0bfacb9bSmrg ] 3406*0bfacb9bSmrg "TARGET_HAVE_MVE" 3407*0bfacb9bSmrg "vpst\;vmaxvt.<supf>%#<V_sz_elem> %0, %q2" 3408*0bfacb9bSmrg [(set_attr "type" "mve_move") 3409*0bfacb9bSmrg (set_attr "length""8")]) 3410*0bfacb9bSmrg 3411*0bfacb9bSmrg;; 3412*0bfacb9bSmrg;; [vminaq_m_s]) 3413*0bfacb9bSmrg;; 3414*0bfacb9bSmrg(define_insn "mve_vminaq_m_s<mode>" 3415*0bfacb9bSmrg [ 3416*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3417*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3418*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3419*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3420*0bfacb9bSmrg VMINAQ_M_S)) 3421*0bfacb9bSmrg ] 3422*0bfacb9bSmrg "TARGET_HAVE_MVE" 3423*0bfacb9bSmrg "vpst\;vminat.s%#<V_sz_elem> %q0, %q2" 3424*0bfacb9bSmrg [(set_attr "type" "mve_move") 3425*0bfacb9bSmrg (set_attr "length""8")]) 3426*0bfacb9bSmrg 3427*0bfacb9bSmrg;; 3428*0bfacb9bSmrg;; [vminavq_p_s]) 3429*0bfacb9bSmrg;; 3430*0bfacb9bSmrg(define_insn "mve_vminavq_p_s<mode>" 3431*0bfacb9bSmrg [ 3432*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 3433*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 3434*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3435*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3436*0bfacb9bSmrg VMINAVQ_P_S)) 3437*0bfacb9bSmrg ] 3438*0bfacb9bSmrg "TARGET_HAVE_MVE" 3439*0bfacb9bSmrg "vpst\;vminavt.s%#<V_sz_elem> %0, %q2" 3440*0bfacb9bSmrg [(set_attr "type" "mve_move") 3441*0bfacb9bSmrg (set_attr "length""8")]) 3442*0bfacb9bSmrg 3443*0bfacb9bSmrg;; 3444*0bfacb9bSmrg;; [vminvq_p_s, vminvq_p_u]) 3445*0bfacb9bSmrg;; 3446*0bfacb9bSmrg(define_insn "mve_vminvq_p_<supf><mode>" 3447*0bfacb9bSmrg [ 3448*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 3449*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 3450*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3451*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3452*0bfacb9bSmrg VMINVQ_P)) 3453*0bfacb9bSmrg ] 3454*0bfacb9bSmrg "TARGET_HAVE_MVE" 3455*0bfacb9bSmrg "vpst\;vminvt.<supf>%#<V_sz_elem>\t%0, %q2" 3456*0bfacb9bSmrg [(set_attr "type" "mve_move") 3457*0bfacb9bSmrg (set_attr "length""8")]) 3458*0bfacb9bSmrg 3459*0bfacb9bSmrg;; 3460*0bfacb9bSmrg;; [vmladavaq_u, vmladavaq_s]) 3461*0bfacb9bSmrg;; 3462*0bfacb9bSmrg(define_insn "mve_vmladavaq_<supf><mode>" 3463*0bfacb9bSmrg [ 3464*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3465*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 3466*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3467*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3468*0bfacb9bSmrg VMLADAVAQ)) 3469*0bfacb9bSmrg ] 3470*0bfacb9bSmrg "TARGET_HAVE_MVE" 3471*0bfacb9bSmrg "vmladava.<supf>%#<V_sz_elem> %0, %q2, %q3" 3472*0bfacb9bSmrg [(set_attr "type" "mve_move") 3473*0bfacb9bSmrg]) 3474*0bfacb9bSmrg 3475*0bfacb9bSmrg;; 3476*0bfacb9bSmrg;; [vmladavq_p_u, vmladavq_p_s]) 3477*0bfacb9bSmrg;; 3478*0bfacb9bSmrg(define_insn "mve_vmladavq_p_<supf><mode>" 3479*0bfacb9bSmrg [ 3480*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3481*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 3482*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3483*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3484*0bfacb9bSmrg VMLADAVQ_P)) 3485*0bfacb9bSmrg ] 3486*0bfacb9bSmrg "TARGET_HAVE_MVE" 3487*0bfacb9bSmrg "vpst\;vmladavt.<supf>%#<V_sz_elem>\t%0, %q1, %q2" 3488*0bfacb9bSmrg [(set_attr "type" "mve_move") 3489*0bfacb9bSmrg (set_attr "length""8")]) 3490*0bfacb9bSmrg 3491*0bfacb9bSmrg;; 3492*0bfacb9bSmrg;; [vmladavxq_p_s]) 3493*0bfacb9bSmrg;; 3494*0bfacb9bSmrg(define_insn "mve_vmladavxq_p_s<mode>" 3495*0bfacb9bSmrg [ 3496*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3497*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 3498*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3499*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3500*0bfacb9bSmrg VMLADAVXQ_P_S)) 3501*0bfacb9bSmrg ] 3502*0bfacb9bSmrg "TARGET_HAVE_MVE" 3503*0bfacb9bSmrg "vpst\;vmladavxt.s%#<V_sz_elem>\t%0, %q1, %q2" 3504*0bfacb9bSmrg [(set_attr "type" "mve_move") 3505*0bfacb9bSmrg (set_attr "length""8")]) 3506*0bfacb9bSmrg 3507*0bfacb9bSmrg;; 3508*0bfacb9bSmrg;; [vmlaq_n_u, vmlaq_n_s]) 3509*0bfacb9bSmrg;; 3510*0bfacb9bSmrg(define_insn "mve_vmlaq_n_<supf><mode>" 3511*0bfacb9bSmrg [ 3512*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3513*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3514*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3515*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 3516*0bfacb9bSmrg VMLAQ_N)) 3517*0bfacb9bSmrg ] 3518*0bfacb9bSmrg "TARGET_HAVE_MVE" 3519*0bfacb9bSmrg "vmla.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 3520*0bfacb9bSmrg [(set_attr "type" "mve_move") 3521*0bfacb9bSmrg]) 3522*0bfacb9bSmrg 3523*0bfacb9bSmrg;; 3524*0bfacb9bSmrg;; [vmlasq_n_u, vmlasq_n_s]) 3525*0bfacb9bSmrg;; 3526*0bfacb9bSmrg(define_insn "mve_vmlasq_n_<supf><mode>" 3527*0bfacb9bSmrg [ 3528*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3529*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3530*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3531*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 3532*0bfacb9bSmrg VMLASQ_N)) 3533*0bfacb9bSmrg ] 3534*0bfacb9bSmrg "TARGET_HAVE_MVE" 3535*0bfacb9bSmrg "vmlas.<supf>%#<V_sz_elem> %q0, %q2, %3" 3536*0bfacb9bSmrg [(set_attr "type" "mve_move") 3537*0bfacb9bSmrg]) 3538*0bfacb9bSmrg 3539*0bfacb9bSmrg;; 3540*0bfacb9bSmrg;; [vmlsdavq_p_s]) 3541*0bfacb9bSmrg;; 3542*0bfacb9bSmrg(define_insn "mve_vmlsdavq_p_s<mode>" 3543*0bfacb9bSmrg [ 3544*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3545*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 3546*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3547*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3548*0bfacb9bSmrg VMLSDAVQ_P_S)) 3549*0bfacb9bSmrg ] 3550*0bfacb9bSmrg "TARGET_HAVE_MVE" 3551*0bfacb9bSmrg "vpst\;vmlsdavt.s%#<V_sz_elem> %0, %q1, %q2" 3552*0bfacb9bSmrg [(set_attr "type" "mve_move") 3553*0bfacb9bSmrg (set_attr "length""8")]) 3554*0bfacb9bSmrg 3555*0bfacb9bSmrg;; 3556*0bfacb9bSmrg;; [vmlsdavxq_p_s]) 3557*0bfacb9bSmrg;; 3558*0bfacb9bSmrg(define_insn "mve_vmlsdavxq_p_s<mode>" 3559*0bfacb9bSmrg [ 3560*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3561*0bfacb9bSmrg (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w") 3562*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3563*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3564*0bfacb9bSmrg VMLSDAVXQ_P_S)) 3565*0bfacb9bSmrg ] 3566*0bfacb9bSmrg "TARGET_HAVE_MVE" 3567*0bfacb9bSmrg "vpst\;vmlsdavxt.s%#<V_sz_elem> %0, %q1, %q2" 3568*0bfacb9bSmrg [(set_attr "type" "mve_move") 3569*0bfacb9bSmrg (set_attr "length""8")]) 3570*0bfacb9bSmrg 3571*0bfacb9bSmrg;; 3572*0bfacb9bSmrg;; [vmvnq_m_s, vmvnq_m_u]) 3573*0bfacb9bSmrg;; 3574*0bfacb9bSmrg(define_insn "mve_vmvnq_m_<supf><mode>" 3575*0bfacb9bSmrg [ 3576*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3577*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3578*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3579*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3580*0bfacb9bSmrg VMVNQ_M)) 3581*0bfacb9bSmrg ] 3582*0bfacb9bSmrg "TARGET_HAVE_MVE" 3583*0bfacb9bSmrg "vpst\;vmvnt %q0, %q2" 3584*0bfacb9bSmrg [(set_attr "type" "mve_move") 3585*0bfacb9bSmrg (set_attr "length""8")]) 3586*0bfacb9bSmrg 3587*0bfacb9bSmrg;; 3588*0bfacb9bSmrg;; [vnegq_m_s]) 3589*0bfacb9bSmrg;; 3590*0bfacb9bSmrg(define_insn "mve_vnegq_m_s<mode>" 3591*0bfacb9bSmrg [ 3592*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3593*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3594*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3595*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3596*0bfacb9bSmrg VNEGQ_M_S)) 3597*0bfacb9bSmrg ] 3598*0bfacb9bSmrg "TARGET_HAVE_MVE" 3599*0bfacb9bSmrg "vpst\;vnegt.s%#<V_sz_elem>\t%q0, %q2" 3600*0bfacb9bSmrg [(set_attr "type" "mve_move") 3601*0bfacb9bSmrg (set_attr "length""8")]) 3602*0bfacb9bSmrg 3603*0bfacb9bSmrg;; 3604*0bfacb9bSmrg;; [vpselq_u, vpselq_s]) 3605*0bfacb9bSmrg;; 3606*0bfacb9bSmrg(define_insn "mve_vpselq_<supf><mode>" 3607*0bfacb9bSmrg [ 3608*0bfacb9bSmrg (set (match_operand:MVE_1 0 "s_register_operand" "=w") 3609*0bfacb9bSmrg (unspec:MVE_1 [(match_operand:MVE_1 1 "s_register_operand" "w") 3610*0bfacb9bSmrg (match_operand:MVE_1 2 "s_register_operand" "w") 3611*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3612*0bfacb9bSmrg VPSELQ)) 3613*0bfacb9bSmrg ] 3614*0bfacb9bSmrg "TARGET_HAVE_MVE" 3615*0bfacb9bSmrg "vpsel %q0, %q1, %q2" 3616*0bfacb9bSmrg [(set_attr "type" "mve_move") 3617*0bfacb9bSmrg]) 3618*0bfacb9bSmrg 3619*0bfacb9bSmrg;; 3620*0bfacb9bSmrg;; [vqabsq_m_s]) 3621*0bfacb9bSmrg;; 3622*0bfacb9bSmrg(define_insn "mve_vqabsq_m_s<mode>" 3623*0bfacb9bSmrg [ 3624*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3625*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3626*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3627*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3628*0bfacb9bSmrg VQABSQ_M_S)) 3629*0bfacb9bSmrg ] 3630*0bfacb9bSmrg "TARGET_HAVE_MVE" 3631*0bfacb9bSmrg "vpst\;vqabst.s%#<V_sz_elem>\t%q0, %q2" 3632*0bfacb9bSmrg [(set_attr "type" "mve_move") 3633*0bfacb9bSmrg (set_attr "length""8")]) 3634*0bfacb9bSmrg 3635*0bfacb9bSmrg;; 3636*0bfacb9bSmrg;; [vqdmlahq_n_s]) 3637*0bfacb9bSmrg;; 3638*0bfacb9bSmrg(define_insn "mve_vqdmlahq_n_<supf><mode>" 3639*0bfacb9bSmrg [ 3640*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3641*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3642*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3643*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 3644*0bfacb9bSmrg VQDMLAHQ_N)) 3645*0bfacb9bSmrg ] 3646*0bfacb9bSmrg "TARGET_HAVE_MVE" 3647*0bfacb9bSmrg "vqdmlah.s%#<V_sz_elem>\t%q0, %q2, %3" 3648*0bfacb9bSmrg [(set_attr "type" "mve_move") 3649*0bfacb9bSmrg]) 3650*0bfacb9bSmrg 3651*0bfacb9bSmrg;; 3652*0bfacb9bSmrg;; [vqdmlashq_n_s]) 3653*0bfacb9bSmrg;; 3654*0bfacb9bSmrg(define_insn "mve_vqdmlashq_n_<supf><mode>" 3655*0bfacb9bSmrg [ 3656*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3657*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3658*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3659*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 3660*0bfacb9bSmrg VQDMLASHQ_N)) 3661*0bfacb9bSmrg ] 3662*0bfacb9bSmrg "TARGET_HAVE_MVE" 3663*0bfacb9bSmrg "vqdmlash.s%#<V_sz_elem>\t%q0, %q2, %3" 3664*0bfacb9bSmrg [(set_attr "type" "mve_move") 3665*0bfacb9bSmrg]) 3666*0bfacb9bSmrg 3667*0bfacb9bSmrg;; 3668*0bfacb9bSmrg;; [vqnegq_m_s]) 3669*0bfacb9bSmrg;; 3670*0bfacb9bSmrg(define_insn "mve_vqnegq_m_s<mode>" 3671*0bfacb9bSmrg [ 3672*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3673*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3674*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3675*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3676*0bfacb9bSmrg VQNEGQ_M_S)) 3677*0bfacb9bSmrg ] 3678*0bfacb9bSmrg "TARGET_HAVE_MVE" 3679*0bfacb9bSmrg "vpst\;vqnegt.s%#<V_sz_elem> %q0, %q2" 3680*0bfacb9bSmrg [(set_attr "type" "mve_move") 3681*0bfacb9bSmrg (set_attr "length""8")]) 3682*0bfacb9bSmrg 3683*0bfacb9bSmrg;; 3684*0bfacb9bSmrg;; [vqrdmladhq_s]) 3685*0bfacb9bSmrg;; 3686*0bfacb9bSmrg(define_insn "mve_vqrdmladhq_s<mode>" 3687*0bfacb9bSmrg [ 3688*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3689*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3690*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3691*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3692*0bfacb9bSmrg VQRDMLADHQ_S)) 3693*0bfacb9bSmrg ] 3694*0bfacb9bSmrg "TARGET_HAVE_MVE" 3695*0bfacb9bSmrg "vqrdmladh.s%#<V_sz_elem>\t%q0, %q2, %q3" 3696*0bfacb9bSmrg [(set_attr "type" "mve_move") 3697*0bfacb9bSmrg]) 3698*0bfacb9bSmrg 3699*0bfacb9bSmrg;; 3700*0bfacb9bSmrg;; [vqrdmladhxq_s]) 3701*0bfacb9bSmrg;; 3702*0bfacb9bSmrg(define_insn "mve_vqrdmladhxq_s<mode>" 3703*0bfacb9bSmrg [ 3704*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3705*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3706*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3707*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3708*0bfacb9bSmrg VQRDMLADHXQ_S)) 3709*0bfacb9bSmrg ] 3710*0bfacb9bSmrg "TARGET_HAVE_MVE" 3711*0bfacb9bSmrg "vqrdmladhx.s%#<V_sz_elem>\t%q0, %q2, %q3" 3712*0bfacb9bSmrg [(set_attr "type" "mve_move") 3713*0bfacb9bSmrg]) 3714*0bfacb9bSmrg 3715*0bfacb9bSmrg;; 3716*0bfacb9bSmrg;; [vqrdmlahq_n_s]) 3717*0bfacb9bSmrg;; 3718*0bfacb9bSmrg(define_insn "mve_vqrdmlahq_n_<supf><mode>" 3719*0bfacb9bSmrg [ 3720*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3721*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3722*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3723*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 3724*0bfacb9bSmrg VQRDMLAHQ_N)) 3725*0bfacb9bSmrg ] 3726*0bfacb9bSmrg "TARGET_HAVE_MVE" 3727*0bfacb9bSmrg "vqrdmlah.s%#<V_sz_elem>\t%q0, %q2, %3" 3728*0bfacb9bSmrg [(set_attr "type" "mve_move") 3729*0bfacb9bSmrg]) 3730*0bfacb9bSmrg 3731*0bfacb9bSmrg;; 3732*0bfacb9bSmrg;; [vqrdmlashq_n_s]) 3733*0bfacb9bSmrg;; 3734*0bfacb9bSmrg(define_insn "mve_vqrdmlashq_n_<supf><mode>" 3735*0bfacb9bSmrg [ 3736*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3737*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3738*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3739*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 3740*0bfacb9bSmrg VQRDMLASHQ_N)) 3741*0bfacb9bSmrg ] 3742*0bfacb9bSmrg "TARGET_HAVE_MVE" 3743*0bfacb9bSmrg "vqrdmlash.s%#<V_sz_elem>\t%q0, %q2, %3" 3744*0bfacb9bSmrg [(set_attr "type" "mve_move") 3745*0bfacb9bSmrg]) 3746*0bfacb9bSmrg 3747*0bfacb9bSmrg;; 3748*0bfacb9bSmrg;; [vqrdmlsdhq_s]) 3749*0bfacb9bSmrg;; 3750*0bfacb9bSmrg(define_insn "mve_vqrdmlsdhq_s<mode>" 3751*0bfacb9bSmrg [ 3752*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3753*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3754*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3755*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3756*0bfacb9bSmrg VQRDMLSDHQ_S)) 3757*0bfacb9bSmrg ] 3758*0bfacb9bSmrg "TARGET_HAVE_MVE" 3759*0bfacb9bSmrg "vqrdmlsdh.s%#<V_sz_elem>\t%q0, %q2, %q3" 3760*0bfacb9bSmrg [(set_attr "type" "mve_move") 3761*0bfacb9bSmrg]) 3762*0bfacb9bSmrg 3763*0bfacb9bSmrg;; 3764*0bfacb9bSmrg;; [vqrdmlsdhxq_s]) 3765*0bfacb9bSmrg;; 3766*0bfacb9bSmrg(define_insn "mve_vqrdmlsdhxq_s<mode>" 3767*0bfacb9bSmrg [ 3768*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3769*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3770*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3771*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3772*0bfacb9bSmrg VQRDMLSDHXQ_S)) 3773*0bfacb9bSmrg ] 3774*0bfacb9bSmrg "TARGET_HAVE_MVE" 3775*0bfacb9bSmrg "vqrdmlsdhx.s%#<V_sz_elem>\t%q0, %q2, %q3" 3776*0bfacb9bSmrg [(set_attr "type" "mve_move") 3777*0bfacb9bSmrg]) 3778*0bfacb9bSmrg 3779*0bfacb9bSmrg;; 3780*0bfacb9bSmrg;; [vqrshlq_m_n_s, vqrshlq_m_n_u]) 3781*0bfacb9bSmrg;; 3782*0bfacb9bSmrg(define_insn "mve_vqrshlq_m_n_<supf><mode>" 3783*0bfacb9bSmrg [ 3784*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3785*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3786*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r") 3787*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3788*0bfacb9bSmrg VQRSHLQ_M_N)) 3789*0bfacb9bSmrg ] 3790*0bfacb9bSmrg "TARGET_HAVE_MVE" 3791*0bfacb9bSmrg "vpst\;vqrshlt.<supf>%#<V_sz_elem> %q0, %2" 3792*0bfacb9bSmrg [(set_attr "type" "mve_move") 3793*0bfacb9bSmrg (set_attr "length""8")]) 3794*0bfacb9bSmrg 3795*0bfacb9bSmrg;; 3796*0bfacb9bSmrg;; [vqshlq_m_r_u, vqshlq_m_r_s]) 3797*0bfacb9bSmrg;; 3798*0bfacb9bSmrg(define_insn "mve_vqshlq_m_r_<supf><mode>" 3799*0bfacb9bSmrg [ 3800*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3801*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3802*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r") 3803*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3804*0bfacb9bSmrg VQSHLQ_M_R)) 3805*0bfacb9bSmrg ] 3806*0bfacb9bSmrg "TARGET_HAVE_MVE" 3807*0bfacb9bSmrg "vpst\;vqshlt.<supf>%#<V_sz_elem>\t%q0, %2" 3808*0bfacb9bSmrg [(set_attr "type" "mve_move") 3809*0bfacb9bSmrg (set_attr "length""8")]) 3810*0bfacb9bSmrg 3811*0bfacb9bSmrg;; 3812*0bfacb9bSmrg;; [vrev64q_m_u, vrev64q_m_s]) 3813*0bfacb9bSmrg;; 3814*0bfacb9bSmrg(define_insn "mve_vrev64q_m_<supf><mode>" 3815*0bfacb9bSmrg [ 3816*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3817*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3818*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3819*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3820*0bfacb9bSmrg VREV64Q_M)) 3821*0bfacb9bSmrg ] 3822*0bfacb9bSmrg "TARGET_HAVE_MVE" 3823*0bfacb9bSmrg "vpst\;vrev64t.%#<V_sz_elem>\t%q0, %q2" 3824*0bfacb9bSmrg [(set_attr "type" "mve_move") 3825*0bfacb9bSmrg (set_attr "length""8")]) 3826*0bfacb9bSmrg 3827*0bfacb9bSmrg;; 3828*0bfacb9bSmrg;; [vrshlq_m_n_s, vrshlq_m_n_u]) 3829*0bfacb9bSmrg;; 3830*0bfacb9bSmrg(define_insn "mve_vrshlq_m_n_<supf><mode>" 3831*0bfacb9bSmrg [ 3832*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3833*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3834*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r") 3835*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3836*0bfacb9bSmrg VRSHLQ_M_N)) 3837*0bfacb9bSmrg ] 3838*0bfacb9bSmrg "TARGET_HAVE_MVE" 3839*0bfacb9bSmrg "vpst\;vrshlt.<supf>%#<V_sz_elem>\t%q0, %2" 3840*0bfacb9bSmrg [(set_attr "type" "mve_move") 3841*0bfacb9bSmrg (set_attr "length""8")]) 3842*0bfacb9bSmrg 3843*0bfacb9bSmrg;; 3844*0bfacb9bSmrg;; [vshlq_m_r_u, vshlq_m_r_s]) 3845*0bfacb9bSmrg;; 3846*0bfacb9bSmrg(define_insn "mve_vshlq_m_r_<supf><mode>" 3847*0bfacb9bSmrg [ 3848*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3849*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3850*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand" "r") 3851*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 3852*0bfacb9bSmrg VSHLQ_M_R)) 3853*0bfacb9bSmrg ] 3854*0bfacb9bSmrg "TARGET_HAVE_MVE" 3855*0bfacb9bSmrg "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %2" 3856*0bfacb9bSmrg [(set_attr "type" "mve_move") 3857*0bfacb9bSmrg (set_attr "length""8")]) 3858*0bfacb9bSmrg 3859*0bfacb9bSmrg;; 3860*0bfacb9bSmrg;; [vsliq_n_u, vsliq_n_s]) 3861*0bfacb9bSmrg;; 3862*0bfacb9bSmrg(define_insn "mve_vsliq_n_<supf><mode>" 3863*0bfacb9bSmrg [ 3864*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3865*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3866*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3867*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>")] 3868*0bfacb9bSmrg VSLIQ_N)) 3869*0bfacb9bSmrg ] 3870*0bfacb9bSmrg "TARGET_HAVE_MVE" 3871*0bfacb9bSmrg "vsli.%#<V_sz_elem>\t%q0, %q2, %3" 3872*0bfacb9bSmrg [(set_attr "type" "mve_move") 3873*0bfacb9bSmrg]) 3874*0bfacb9bSmrg 3875*0bfacb9bSmrg;; 3876*0bfacb9bSmrg;; [vsriq_n_u, vsriq_n_s]) 3877*0bfacb9bSmrg;; 3878*0bfacb9bSmrg(define_insn "mve_vsriq_n_<supf><mode>" 3879*0bfacb9bSmrg [ 3880*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3881*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3882*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3883*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg")] 3884*0bfacb9bSmrg VSRIQ_N)) 3885*0bfacb9bSmrg ] 3886*0bfacb9bSmrg "TARGET_HAVE_MVE" 3887*0bfacb9bSmrg "vsri.%#<V_sz_elem>\t%q0, %q2, %3" 3888*0bfacb9bSmrg [(set_attr "type" "mve_move") 3889*0bfacb9bSmrg]) 3890*0bfacb9bSmrg 3891*0bfacb9bSmrg;; 3892*0bfacb9bSmrg;; [vqdmlsdhxq_s]) 3893*0bfacb9bSmrg;; 3894*0bfacb9bSmrg(define_insn "mve_vqdmlsdhxq_s<mode>" 3895*0bfacb9bSmrg [ 3896*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3897*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3898*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3899*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3900*0bfacb9bSmrg VQDMLSDHXQ_S)) 3901*0bfacb9bSmrg ] 3902*0bfacb9bSmrg "TARGET_HAVE_MVE" 3903*0bfacb9bSmrg "vqdmlsdhx.s%#<V_sz_elem>\t%q0, %q2, %q3" 3904*0bfacb9bSmrg [(set_attr "type" "mve_move") 3905*0bfacb9bSmrg]) 3906*0bfacb9bSmrg 3907*0bfacb9bSmrg;; 3908*0bfacb9bSmrg;; [vqdmlsdhq_s]) 3909*0bfacb9bSmrg;; 3910*0bfacb9bSmrg(define_insn "mve_vqdmlsdhq_s<mode>" 3911*0bfacb9bSmrg [ 3912*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3913*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3914*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3915*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3916*0bfacb9bSmrg VQDMLSDHQ_S)) 3917*0bfacb9bSmrg ] 3918*0bfacb9bSmrg "TARGET_HAVE_MVE" 3919*0bfacb9bSmrg "vqdmlsdh.s%#<V_sz_elem>\t%q0, %q2, %q3" 3920*0bfacb9bSmrg [(set_attr "type" "mve_move") 3921*0bfacb9bSmrg]) 3922*0bfacb9bSmrg 3923*0bfacb9bSmrg;; 3924*0bfacb9bSmrg;; [vqdmladhxq_s]) 3925*0bfacb9bSmrg;; 3926*0bfacb9bSmrg(define_insn "mve_vqdmladhxq_s<mode>" 3927*0bfacb9bSmrg [ 3928*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3929*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3930*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3931*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3932*0bfacb9bSmrg VQDMLADHXQ_S)) 3933*0bfacb9bSmrg ] 3934*0bfacb9bSmrg "TARGET_HAVE_MVE" 3935*0bfacb9bSmrg "vqdmladhx.s%#<V_sz_elem>\t%q0, %q2, %q3" 3936*0bfacb9bSmrg [(set_attr "type" "mve_move") 3937*0bfacb9bSmrg]) 3938*0bfacb9bSmrg 3939*0bfacb9bSmrg;; 3940*0bfacb9bSmrg;; [vqdmladhq_s]) 3941*0bfacb9bSmrg;; 3942*0bfacb9bSmrg(define_insn "mve_vqdmladhq_s<mode>" 3943*0bfacb9bSmrg [ 3944*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 3945*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 3946*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3947*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3948*0bfacb9bSmrg VQDMLADHQ_S)) 3949*0bfacb9bSmrg ] 3950*0bfacb9bSmrg "TARGET_HAVE_MVE" 3951*0bfacb9bSmrg "vqdmladh.s%#<V_sz_elem>\t%q0, %q2, %q3" 3952*0bfacb9bSmrg [(set_attr "type" "mve_move") 3953*0bfacb9bSmrg]) 3954*0bfacb9bSmrg 3955*0bfacb9bSmrg;; 3956*0bfacb9bSmrg;; [vmlsdavaxq_s]) 3957*0bfacb9bSmrg;; 3958*0bfacb9bSmrg(define_insn "mve_vmlsdavaxq_s<mode>" 3959*0bfacb9bSmrg [ 3960*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3961*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 3962*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3963*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3964*0bfacb9bSmrg VMLSDAVAXQ_S)) 3965*0bfacb9bSmrg ] 3966*0bfacb9bSmrg "TARGET_HAVE_MVE" 3967*0bfacb9bSmrg "vmlsdavax.s%#<V_sz_elem>\t%0, %q2, %q3" 3968*0bfacb9bSmrg [(set_attr "type" "mve_move") 3969*0bfacb9bSmrg]) 3970*0bfacb9bSmrg 3971*0bfacb9bSmrg;; 3972*0bfacb9bSmrg;; [vmlsdavaq_s]) 3973*0bfacb9bSmrg;; 3974*0bfacb9bSmrg(define_insn "mve_vmlsdavaq_s<mode>" 3975*0bfacb9bSmrg [ 3976*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3977*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 3978*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3979*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3980*0bfacb9bSmrg VMLSDAVAQ_S)) 3981*0bfacb9bSmrg ] 3982*0bfacb9bSmrg "TARGET_HAVE_MVE" 3983*0bfacb9bSmrg "vmlsdava.s%#<V_sz_elem>\t%0, %q2, %q3" 3984*0bfacb9bSmrg [(set_attr "type" "mve_move") 3985*0bfacb9bSmrg]) 3986*0bfacb9bSmrg 3987*0bfacb9bSmrg;; 3988*0bfacb9bSmrg;; [vmladavaxq_s]) 3989*0bfacb9bSmrg;; 3990*0bfacb9bSmrg(define_insn "mve_vmladavaxq_s<mode>" 3991*0bfacb9bSmrg [ 3992*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 3993*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 3994*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 3995*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w")] 3996*0bfacb9bSmrg VMLADAVAXQ_S)) 3997*0bfacb9bSmrg ] 3998*0bfacb9bSmrg "TARGET_HAVE_MVE" 3999*0bfacb9bSmrg "vmladavax.s%#<V_sz_elem>\t%0, %q2, %q3" 4000*0bfacb9bSmrg [(set_attr "type" "mve_move") 4001*0bfacb9bSmrg]) 4002*0bfacb9bSmrg;; 4003*0bfacb9bSmrg;; [vabsq_m_f]) 4004*0bfacb9bSmrg;; 4005*0bfacb9bSmrg(define_insn "mve_vabsq_m_f<mode>" 4006*0bfacb9bSmrg [ 4007*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4008*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4009*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4010*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4011*0bfacb9bSmrg VABSQ_M_F)) 4012*0bfacb9bSmrg ] 4013*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4014*0bfacb9bSmrg "vpst\;vabst.f%#<V_sz_elem> %q0, %q2" 4015*0bfacb9bSmrg [(set_attr "type" "mve_move") 4016*0bfacb9bSmrg (set_attr "length""8")]) 4017*0bfacb9bSmrg 4018*0bfacb9bSmrg;; 4019*0bfacb9bSmrg;; [vaddlvaq_p_s vaddlvaq_p_u]) 4020*0bfacb9bSmrg;; 4021*0bfacb9bSmrg(define_insn "mve_vaddlvaq_p_<supf>v4si" 4022*0bfacb9bSmrg [ 4023*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4024*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 4025*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 4026*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4027*0bfacb9bSmrg VADDLVAQ_P)) 4028*0bfacb9bSmrg ] 4029*0bfacb9bSmrg "TARGET_HAVE_MVE" 4030*0bfacb9bSmrg "vpst\;vaddlvat.<supf>32 %Q0, %R0, %q2" 4031*0bfacb9bSmrg [(set_attr "type" "mve_move") 4032*0bfacb9bSmrg (set_attr "length""8")]) 4033*0bfacb9bSmrg;; 4034*0bfacb9bSmrg;; [vcmlaq_f]) 4035*0bfacb9bSmrg;; 4036*0bfacb9bSmrg(define_insn "mve_vcmlaq_f<mode>" 4037*0bfacb9bSmrg [ 4038*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4039*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4040*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4041*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w")] 4042*0bfacb9bSmrg VCMLAQ_F)) 4043*0bfacb9bSmrg ] 4044*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4045*0bfacb9bSmrg "vcmla.f%#<V_sz_elem> %q0, %q2, %q3, #0" 4046*0bfacb9bSmrg [(set_attr "type" "mve_move") 4047*0bfacb9bSmrg]) 4048*0bfacb9bSmrg 4049*0bfacb9bSmrg;; 4050*0bfacb9bSmrg;; [vcmlaq_rot180_f]) 4051*0bfacb9bSmrg;; 4052*0bfacb9bSmrg(define_insn "mve_vcmlaq_rot180_f<mode>" 4053*0bfacb9bSmrg [ 4054*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4055*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4056*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4057*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w")] 4058*0bfacb9bSmrg VCMLAQ_ROT180_F)) 4059*0bfacb9bSmrg ] 4060*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4061*0bfacb9bSmrg "vcmla.f%#<V_sz_elem> %q0, %q2, %q3, #180" 4062*0bfacb9bSmrg [(set_attr "type" "mve_move") 4063*0bfacb9bSmrg]) 4064*0bfacb9bSmrg 4065*0bfacb9bSmrg;; 4066*0bfacb9bSmrg;; [vcmlaq_rot270_f]) 4067*0bfacb9bSmrg;; 4068*0bfacb9bSmrg(define_insn "mve_vcmlaq_rot270_f<mode>" 4069*0bfacb9bSmrg [ 4070*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4071*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4072*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4073*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w")] 4074*0bfacb9bSmrg VCMLAQ_ROT270_F)) 4075*0bfacb9bSmrg ] 4076*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4077*0bfacb9bSmrg "vcmla.f%#<V_sz_elem> %q0, %q2, %q3, #270" 4078*0bfacb9bSmrg [(set_attr "type" "mve_move") 4079*0bfacb9bSmrg]) 4080*0bfacb9bSmrg 4081*0bfacb9bSmrg;; 4082*0bfacb9bSmrg;; [vcmlaq_rot90_f]) 4083*0bfacb9bSmrg;; 4084*0bfacb9bSmrg(define_insn "mve_vcmlaq_rot90_f<mode>" 4085*0bfacb9bSmrg [ 4086*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4087*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4088*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4089*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w")] 4090*0bfacb9bSmrg VCMLAQ_ROT90_F)) 4091*0bfacb9bSmrg ] 4092*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4093*0bfacb9bSmrg "vcmla.f%#<V_sz_elem> %q0, %q2, %q3, #90" 4094*0bfacb9bSmrg [(set_attr "type" "mve_move") 4095*0bfacb9bSmrg]) 4096*0bfacb9bSmrg 4097*0bfacb9bSmrg;; 4098*0bfacb9bSmrg;; [vcmpeqq_m_n_f]) 4099*0bfacb9bSmrg;; 4100*0bfacb9bSmrg(define_insn "mve_vcmpeqq_m_n_f<mode>" 4101*0bfacb9bSmrg [ 4102*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4103*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4104*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4105*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4106*0bfacb9bSmrg VCMPEQQ_M_N_F)) 4107*0bfacb9bSmrg ] 4108*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4109*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> eq, %q1, %2" 4110*0bfacb9bSmrg [(set_attr "type" "mve_move") 4111*0bfacb9bSmrg (set_attr "length""8")]) 4112*0bfacb9bSmrg 4113*0bfacb9bSmrg;; 4114*0bfacb9bSmrg;; [vcmpgeq_m_f]) 4115*0bfacb9bSmrg;; 4116*0bfacb9bSmrg(define_insn "mve_vcmpgeq_m_f<mode>" 4117*0bfacb9bSmrg [ 4118*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4119*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4120*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4121*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4122*0bfacb9bSmrg VCMPGEQ_M_F)) 4123*0bfacb9bSmrg ] 4124*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4125*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> ge, %q1, %q2" 4126*0bfacb9bSmrg [(set_attr "type" "mve_move") 4127*0bfacb9bSmrg (set_attr "length""8")]) 4128*0bfacb9bSmrg 4129*0bfacb9bSmrg;; 4130*0bfacb9bSmrg;; [vcmpgeq_m_n_f]) 4131*0bfacb9bSmrg;; 4132*0bfacb9bSmrg(define_insn "mve_vcmpgeq_m_n_f<mode>" 4133*0bfacb9bSmrg [ 4134*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4135*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4136*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4137*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4138*0bfacb9bSmrg VCMPGEQ_M_N_F)) 4139*0bfacb9bSmrg ] 4140*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4141*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> ge, %q1, %2" 4142*0bfacb9bSmrg [(set_attr "type" "mve_move") 4143*0bfacb9bSmrg (set_attr "length""8")]) 4144*0bfacb9bSmrg 4145*0bfacb9bSmrg;; 4146*0bfacb9bSmrg;; [vcmpgtq_m_f]) 4147*0bfacb9bSmrg;; 4148*0bfacb9bSmrg(define_insn "mve_vcmpgtq_m_f<mode>" 4149*0bfacb9bSmrg [ 4150*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4151*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4152*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4153*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4154*0bfacb9bSmrg VCMPGTQ_M_F)) 4155*0bfacb9bSmrg ] 4156*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4157*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> gt, %q1, %q2" 4158*0bfacb9bSmrg [(set_attr "type" "mve_move") 4159*0bfacb9bSmrg (set_attr "length""8")]) 4160*0bfacb9bSmrg 4161*0bfacb9bSmrg;; 4162*0bfacb9bSmrg;; [vcmpgtq_m_n_f]) 4163*0bfacb9bSmrg;; 4164*0bfacb9bSmrg(define_insn "mve_vcmpgtq_m_n_f<mode>" 4165*0bfacb9bSmrg [ 4166*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4167*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4168*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4169*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4170*0bfacb9bSmrg VCMPGTQ_M_N_F)) 4171*0bfacb9bSmrg ] 4172*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4173*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> gt, %q1, %2" 4174*0bfacb9bSmrg [(set_attr "type" "mve_move") 4175*0bfacb9bSmrg (set_attr "length""8")]) 4176*0bfacb9bSmrg 4177*0bfacb9bSmrg;; 4178*0bfacb9bSmrg;; [vcmpleq_m_f]) 4179*0bfacb9bSmrg;; 4180*0bfacb9bSmrg(define_insn "mve_vcmpleq_m_f<mode>" 4181*0bfacb9bSmrg [ 4182*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4183*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4184*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4185*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4186*0bfacb9bSmrg VCMPLEQ_M_F)) 4187*0bfacb9bSmrg ] 4188*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4189*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> le, %q1, %q2" 4190*0bfacb9bSmrg [(set_attr "type" "mve_move") 4191*0bfacb9bSmrg (set_attr "length""8")]) 4192*0bfacb9bSmrg 4193*0bfacb9bSmrg;; 4194*0bfacb9bSmrg;; [vcmpleq_m_n_f]) 4195*0bfacb9bSmrg;; 4196*0bfacb9bSmrg(define_insn "mve_vcmpleq_m_n_f<mode>" 4197*0bfacb9bSmrg [ 4198*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4199*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4200*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4201*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4202*0bfacb9bSmrg VCMPLEQ_M_N_F)) 4203*0bfacb9bSmrg ] 4204*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4205*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> le, %q1, %2" 4206*0bfacb9bSmrg [(set_attr "type" "mve_move") 4207*0bfacb9bSmrg (set_attr "length""8")]) 4208*0bfacb9bSmrg 4209*0bfacb9bSmrg;; 4210*0bfacb9bSmrg;; [vcmpltq_m_f]) 4211*0bfacb9bSmrg;; 4212*0bfacb9bSmrg(define_insn "mve_vcmpltq_m_f<mode>" 4213*0bfacb9bSmrg [ 4214*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4215*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4216*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4217*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4218*0bfacb9bSmrg VCMPLTQ_M_F)) 4219*0bfacb9bSmrg ] 4220*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4221*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> lt, %q1, %q2" 4222*0bfacb9bSmrg [(set_attr "type" "mve_move") 4223*0bfacb9bSmrg (set_attr "length""8")]) 4224*0bfacb9bSmrg 4225*0bfacb9bSmrg;; 4226*0bfacb9bSmrg;; [vcmpltq_m_n_f]) 4227*0bfacb9bSmrg;; 4228*0bfacb9bSmrg(define_insn "mve_vcmpltq_m_n_f<mode>" 4229*0bfacb9bSmrg [ 4230*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4231*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4232*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4233*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4234*0bfacb9bSmrg VCMPLTQ_M_N_F)) 4235*0bfacb9bSmrg ] 4236*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4237*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> lt, %q1, %2" 4238*0bfacb9bSmrg [(set_attr "type" "mve_move") 4239*0bfacb9bSmrg (set_attr "length""8")]) 4240*0bfacb9bSmrg 4241*0bfacb9bSmrg;; 4242*0bfacb9bSmrg;; [vcmpneq_m_f]) 4243*0bfacb9bSmrg;; 4244*0bfacb9bSmrg(define_insn "mve_vcmpneq_m_f<mode>" 4245*0bfacb9bSmrg [ 4246*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4247*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4248*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4249*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4250*0bfacb9bSmrg VCMPNEQ_M_F)) 4251*0bfacb9bSmrg ] 4252*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4253*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> ne, %q1, %q2" 4254*0bfacb9bSmrg [(set_attr "type" "mve_move") 4255*0bfacb9bSmrg (set_attr "length""8")]) 4256*0bfacb9bSmrg 4257*0bfacb9bSmrg;; 4258*0bfacb9bSmrg;; [vcmpneq_m_n_f]) 4259*0bfacb9bSmrg;; 4260*0bfacb9bSmrg(define_insn "mve_vcmpneq_m_n_f<mode>" 4261*0bfacb9bSmrg [ 4262*0bfacb9bSmrg (set (match_operand:HI 0 "vpr_register_operand" "=Up") 4263*0bfacb9bSmrg (unspec:HI [(match_operand:MVE_0 1 "s_register_operand" "w") 4264*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4265*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4266*0bfacb9bSmrg VCMPNEQ_M_N_F)) 4267*0bfacb9bSmrg ] 4268*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4269*0bfacb9bSmrg "vpst\;vcmpt.f%#<V_sz_elem> ne, %q1, %2" 4270*0bfacb9bSmrg [(set_attr "type" "mve_move") 4271*0bfacb9bSmrg (set_attr "length""8")]) 4272*0bfacb9bSmrg 4273*0bfacb9bSmrg;; 4274*0bfacb9bSmrg;; [vcvtbq_m_f16_f32]) 4275*0bfacb9bSmrg;; 4276*0bfacb9bSmrg(define_insn "mve_vcvtbq_m_f16_f32v8hf" 4277*0bfacb9bSmrg [ 4278*0bfacb9bSmrg (set (match_operand:V8HF 0 "s_register_operand" "=w") 4279*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0") 4280*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w") 4281*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4282*0bfacb9bSmrg VCVTBQ_M_F16_F32)) 4283*0bfacb9bSmrg ] 4284*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4285*0bfacb9bSmrg "vpst\;vcvtbt.f16.f32 %q0, %q2" 4286*0bfacb9bSmrg [(set_attr "type" "mve_move") 4287*0bfacb9bSmrg (set_attr "length""8")]) 4288*0bfacb9bSmrg 4289*0bfacb9bSmrg;; 4290*0bfacb9bSmrg;; [vcvtbq_m_f32_f16]) 4291*0bfacb9bSmrg;; 4292*0bfacb9bSmrg(define_insn "mve_vcvtbq_m_f32_f16v4sf" 4293*0bfacb9bSmrg [ 4294*0bfacb9bSmrg (set (match_operand:V4SF 0 "s_register_operand" "=w") 4295*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SF 1 "s_register_operand" "0") 4296*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 4297*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4298*0bfacb9bSmrg VCVTBQ_M_F32_F16)) 4299*0bfacb9bSmrg ] 4300*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4301*0bfacb9bSmrg "vpst\;vcvtbt.f32.f16 %q0, %q2" 4302*0bfacb9bSmrg [(set_attr "type" "mve_move") 4303*0bfacb9bSmrg (set_attr "length""8")]) 4304*0bfacb9bSmrg 4305*0bfacb9bSmrg;; 4306*0bfacb9bSmrg;; [vcvttq_m_f16_f32]) 4307*0bfacb9bSmrg;; 4308*0bfacb9bSmrg(define_insn "mve_vcvttq_m_f16_f32v8hf" 4309*0bfacb9bSmrg [ 4310*0bfacb9bSmrg (set (match_operand:V8HF 0 "s_register_operand" "=w") 4311*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0") 4312*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w") 4313*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4314*0bfacb9bSmrg VCVTTQ_M_F16_F32)) 4315*0bfacb9bSmrg ] 4316*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4317*0bfacb9bSmrg "vpst\;vcvttt.f16.f32 %q0, %q2" 4318*0bfacb9bSmrg [(set_attr "type" "mve_move") 4319*0bfacb9bSmrg (set_attr "length""8")]) 4320*0bfacb9bSmrg 4321*0bfacb9bSmrg;; 4322*0bfacb9bSmrg;; [vcvttq_m_f32_f16]) 4323*0bfacb9bSmrg;; 4324*0bfacb9bSmrg(define_insn "mve_vcvttq_m_f32_f16v4sf" 4325*0bfacb9bSmrg [ 4326*0bfacb9bSmrg (set (match_operand:V4SF 0 "s_register_operand" "=w") 4327*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SF 1 "s_register_operand" "0") 4328*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 4329*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4330*0bfacb9bSmrg VCVTTQ_M_F32_F16)) 4331*0bfacb9bSmrg ] 4332*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4333*0bfacb9bSmrg "vpst\;vcvttt.f32.f16 %q0, %q2" 4334*0bfacb9bSmrg [(set_attr "type" "mve_move") 4335*0bfacb9bSmrg (set_attr "length""8")]) 4336*0bfacb9bSmrg 4337*0bfacb9bSmrg;; 4338*0bfacb9bSmrg;; [vdupq_m_n_f]) 4339*0bfacb9bSmrg;; 4340*0bfacb9bSmrg(define_insn "mve_vdupq_m_n_f<mode>" 4341*0bfacb9bSmrg [ 4342*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4343*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4344*0bfacb9bSmrg (match_operand:<V_elem> 2 "s_register_operand" "r") 4345*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4346*0bfacb9bSmrg VDUPQ_M_N_F)) 4347*0bfacb9bSmrg ] 4348*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4349*0bfacb9bSmrg "vpst\;vdupt.%#<V_sz_elem> %q0, %2" 4350*0bfacb9bSmrg [(set_attr "type" "mve_move") 4351*0bfacb9bSmrg (set_attr "length""8")]) 4352*0bfacb9bSmrg 4353*0bfacb9bSmrg;; 4354*0bfacb9bSmrg;; [vfmaq_f]) 4355*0bfacb9bSmrg;; 4356*0bfacb9bSmrg(define_insn "mve_vfmaq_f<mode>" 4357*0bfacb9bSmrg [ 4358*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4359*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4360*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4361*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w")] 4362*0bfacb9bSmrg VFMAQ_F)) 4363*0bfacb9bSmrg ] 4364*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4365*0bfacb9bSmrg "vfma.f%#<V_sz_elem> %q0, %q2, %q3" 4366*0bfacb9bSmrg [(set_attr "type" "mve_move") 4367*0bfacb9bSmrg]) 4368*0bfacb9bSmrg 4369*0bfacb9bSmrg;; 4370*0bfacb9bSmrg;; [vfmaq_n_f]) 4371*0bfacb9bSmrg;; 4372*0bfacb9bSmrg(define_insn "mve_vfmaq_n_f<mode>" 4373*0bfacb9bSmrg [ 4374*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4375*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4376*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4377*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 4378*0bfacb9bSmrg VFMAQ_N_F)) 4379*0bfacb9bSmrg ] 4380*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4381*0bfacb9bSmrg "vfma.f%#<V_sz_elem> %q0, %q2, %3" 4382*0bfacb9bSmrg [(set_attr "type" "mve_move") 4383*0bfacb9bSmrg]) 4384*0bfacb9bSmrg 4385*0bfacb9bSmrg;; 4386*0bfacb9bSmrg;; [vfmasq_n_f]) 4387*0bfacb9bSmrg;; 4388*0bfacb9bSmrg(define_insn "mve_vfmasq_n_f<mode>" 4389*0bfacb9bSmrg [ 4390*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4391*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4392*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4393*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r")] 4394*0bfacb9bSmrg VFMASQ_N_F)) 4395*0bfacb9bSmrg ] 4396*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4397*0bfacb9bSmrg "vfmas.f%#<V_sz_elem> %q0, %q2, %3" 4398*0bfacb9bSmrg [(set_attr "type" "mve_move") 4399*0bfacb9bSmrg]) 4400*0bfacb9bSmrg;; 4401*0bfacb9bSmrg;; [vfmsq_f]) 4402*0bfacb9bSmrg;; 4403*0bfacb9bSmrg(define_insn "mve_vfmsq_f<mode>" 4404*0bfacb9bSmrg [ 4405*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4406*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4407*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4408*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w")] 4409*0bfacb9bSmrg VFMSQ_F)) 4410*0bfacb9bSmrg ] 4411*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4412*0bfacb9bSmrg "vfms.f%#<V_sz_elem> %q0, %q2, %q3" 4413*0bfacb9bSmrg [(set_attr "type" "mve_move") 4414*0bfacb9bSmrg]) 4415*0bfacb9bSmrg 4416*0bfacb9bSmrg;; 4417*0bfacb9bSmrg;; [vmaxnmaq_m_f]) 4418*0bfacb9bSmrg;; 4419*0bfacb9bSmrg(define_insn "mve_vmaxnmaq_m_f<mode>" 4420*0bfacb9bSmrg [ 4421*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4422*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4423*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4424*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4425*0bfacb9bSmrg VMAXNMAQ_M_F)) 4426*0bfacb9bSmrg ] 4427*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4428*0bfacb9bSmrg "vpst\;vmaxnmat.f%#<V_sz_elem> %q0, %q2" 4429*0bfacb9bSmrg [(set_attr "type" "mve_move") 4430*0bfacb9bSmrg (set_attr "length""8")]) 4431*0bfacb9bSmrg;; 4432*0bfacb9bSmrg;; [vmaxnmavq_p_f]) 4433*0bfacb9bSmrg;; 4434*0bfacb9bSmrg(define_insn "mve_vmaxnmavq_p_f<mode>" 4435*0bfacb9bSmrg [ 4436*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 4437*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 4438*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4439*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4440*0bfacb9bSmrg VMAXNMAVQ_P_F)) 4441*0bfacb9bSmrg ] 4442*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4443*0bfacb9bSmrg "vpst\;vmaxnmavt.f%#<V_sz_elem> %0, %q2" 4444*0bfacb9bSmrg [(set_attr "type" "mve_move") 4445*0bfacb9bSmrg (set_attr "length""8")]) 4446*0bfacb9bSmrg 4447*0bfacb9bSmrg;; 4448*0bfacb9bSmrg;; [vmaxnmvq_p_f]) 4449*0bfacb9bSmrg;; 4450*0bfacb9bSmrg(define_insn "mve_vmaxnmvq_p_f<mode>" 4451*0bfacb9bSmrg [ 4452*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 4453*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 4454*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4455*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4456*0bfacb9bSmrg VMAXNMVQ_P_F)) 4457*0bfacb9bSmrg ] 4458*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4459*0bfacb9bSmrg "vpst\;vmaxnmvt.f%#<V_sz_elem> %0, %q2" 4460*0bfacb9bSmrg [(set_attr "type" "mve_move") 4461*0bfacb9bSmrg (set_attr "length""8")]) 4462*0bfacb9bSmrg;; 4463*0bfacb9bSmrg;; [vminnmaq_m_f]) 4464*0bfacb9bSmrg;; 4465*0bfacb9bSmrg(define_insn "mve_vminnmaq_m_f<mode>" 4466*0bfacb9bSmrg [ 4467*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4468*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4469*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4470*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4471*0bfacb9bSmrg VMINNMAQ_M_F)) 4472*0bfacb9bSmrg ] 4473*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4474*0bfacb9bSmrg "vpst\;vminnmat.f%#<V_sz_elem> %q0, %q2" 4475*0bfacb9bSmrg [(set_attr "type" "mve_move") 4476*0bfacb9bSmrg (set_attr "length""8")]) 4477*0bfacb9bSmrg 4478*0bfacb9bSmrg;; 4479*0bfacb9bSmrg;; [vminnmavq_p_f]) 4480*0bfacb9bSmrg;; 4481*0bfacb9bSmrg(define_insn "mve_vminnmavq_p_f<mode>" 4482*0bfacb9bSmrg [ 4483*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 4484*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 4485*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4486*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4487*0bfacb9bSmrg VMINNMAVQ_P_F)) 4488*0bfacb9bSmrg ] 4489*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4490*0bfacb9bSmrg "vpst\;vminnmavt.f%#<V_sz_elem> %0, %q2" 4491*0bfacb9bSmrg [(set_attr "type" "mve_move") 4492*0bfacb9bSmrg (set_attr "length""8")]) 4493*0bfacb9bSmrg;; 4494*0bfacb9bSmrg;; [vminnmvq_p_f]) 4495*0bfacb9bSmrg;; 4496*0bfacb9bSmrg(define_insn "mve_vminnmvq_p_f<mode>" 4497*0bfacb9bSmrg [ 4498*0bfacb9bSmrg (set (match_operand:<V_elem> 0 "s_register_operand" "=r") 4499*0bfacb9bSmrg (unspec:<V_elem> [(match_operand:<V_elem> 1 "s_register_operand" "0") 4500*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4501*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4502*0bfacb9bSmrg VMINNMVQ_P_F)) 4503*0bfacb9bSmrg ] 4504*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4505*0bfacb9bSmrg "vpst\;vminnmvt.f%#<V_sz_elem> %0, %q2" 4506*0bfacb9bSmrg [(set_attr "type" "mve_move") 4507*0bfacb9bSmrg (set_attr "length""8")]) 4508*0bfacb9bSmrg 4509*0bfacb9bSmrg;; 4510*0bfacb9bSmrg;; [vmlaldavaq_s, vmlaldavaq_u]) 4511*0bfacb9bSmrg;; 4512*0bfacb9bSmrg(define_insn "mve_vmlaldavaq_<supf><mode>" 4513*0bfacb9bSmrg [ 4514*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4515*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 4516*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4517*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w")] 4518*0bfacb9bSmrg VMLALDAVAQ)) 4519*0bfacb9bSmrg ] 4520*0bfacb9bSmrg "TARGET_HAVE_MVE" 4521*0bfacb9bSmrg "vmlaldava.<supf>%#<V_sz_elem> %Q0, %R0, %q2, %q3" 4522*0bfacb9bSmrg [(set_attr "type" "mve_move") 4523*0bfacb9bSmrg]) 4524*0bfacb9bSmrg 4525*0bfacb9bSmrg;; 4526*0bfacb9bSmrg;; [vmlaldavaxq_s]) 4527*0bfacb9bSmrg;; 4528*0bfacb9bSmrg(define_insn "mve_vmlaldavaxq_s<mode>" 4529*0bfacb9bSmrg [ 4530*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4531*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 4532*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4533*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w")] 4534*0bfacb9bSmrg VMLALDAVAXQ_S)) 4535*0bfacb9bSmrg ] 4536*0bfacb9bSmrg "TARGET_HAVE_MVE" 4537*0bfacb9bSmrg "vmlaldavax.s%#<V_sz_elem> %Q0, %R0, %q2, %q3" 4538*0bfacb9bSmrg [(set_attr "type" "mve_move") 4539*0bfacb9bSmrg]) 4540*0bfacb9bSmrg 4541*0bfacb9bSmrg;; 4542*0bfacb9bSmrg;; [vmlaldavq_p_u, vmlaldavq_p_s]) 4543*0bfacb9bSmrg;; 4544*0bfacb9bSmrg(define_insn "mve_vmlaldavq_p_<supf><mode>" 4545*0bfacb9bSmrg [ 4546*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4547*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 4548*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4549*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4550*0bfacb9bSmrg VMLALDAVQ_P)) 4551*0bfacb9bSmrg ] 4552*0bfacb9bSmrg "TARGET_HAVE_MVE" 4553*0bfacb9bSmrg "vpst\;vmlaldavt.<supf>%#<V_sz_elem> %Q0, %R0, %q1, %q2" 4554*0bfacb9bSmrg [(set_attr "type" "mve_move") 4555*0bfacb9bSmrg (set_attr "length""8")]) 4556*0bfacb9bSmrg 4557*0bfacb9bSmrg;; 4558*0bfacb9bSmrg;; [vmlaldavxq_p_s]) 4559*0bfacb9bSmrg;; 4560*0bfacb9bSmrg(define_insn "mve_vmlaldavxq_p_s<mode>" 4561*0bfacb9bSmrg [ 4562*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4563*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 4564*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4565*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4566*0bfacb9bSmrg VMLALDAVXQ_P_S)) 4567*0bfacb9bSmrg ] 4568*0bfacb9bSmrg "TARGET_HAVE_MVE" 4569*0bfacb9bSmrg "vpst\;vmlaldavxt.s%#<V_sz_elem>\t%Q0, %R0, %q1, %q2" 4570*0bfacb9bSmrg [(set_attr "type" "mve_move") 4571*0bfacb9bSmrg (set_attr "length""8")]) 4572*0bfacb9bSmrg;; 4573*0bfacb9bSmrg;; [vmlsldavaq_s]) 4574*0bfacb9bSmrg;; 4575*0bfacb9bSmrg(define_insn "mve_vmlsldavaq_s<mode>" 4576*0bfacb9bSmrg [ 4577*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4578*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 4579*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4580*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w")] 4581*0bfacb9bSmrg VMLSLDAVAQ_S)) 4582*0bfacb9bSmrg ] 4583*0bfacb9bSmrg "TARGET_HAVE_MVE" 4584*0bfacb9bSmrg "vmlsldava.s%#<V_sz_elem> %Q0, %R0, %q2, %q3" 4585*0bfacb9bSmrg [(set_attr "type" "mve_move") 4586*0bfacb9bSmrg]) 4587*0bfacb9bSmrg 4588*0bfacb9bSmrg;; 4589*0bfacb9bSmrg;; [vmlsldavaxq_s]) 4590*0bfacb9bSmrg;; 4591*0bfacb9bSmrg(define_insn "mve_vmlsldavaxq_s<mode>" 4592*0bfacb9bSmrg [ 4593*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4594*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 4595*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4596*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w")] 4597*0bfacb9bSmrg VMLSLDAVAXQ_S)) 4598*0bfacb9bSmrg ] 4599*0bfacb9bSmrg "TARGET_HAVE_MVE" 4600*0bfacb9bSmrg "vmlsldavax.s%#<V_sz_elem> %Q0, %R0, %q2, %q3" 4601*0bfacb9bSmrg [(set_attr "type" "mve_move") 4602*0bfacb9bSmrg]) 4603*0bfacb9bSmrg 4604*0bfacb9bSmrg;; 4605*0bfacb9bSmrg;; [vmlsldavq_p_s]) 4606*0bfacb9bSmrg;; 4607*0bfacb9bSmrg(define_insn "mve_vmlsldavq_p_s<mode>" 4608*0bfacb9bSmrg [ 4609*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4610*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 4611*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4612*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4613*0bfacb9bSmrg VMLSLDAVQ_P_S)) 4614*0bfacb9bSmrg ] 4615*0bfacb9bSmrg "TARGET_HAVE_MVE" 4616*0bfacb9bSmrg "vpst\;vmlsldavt.s%#<V_sz_elem> %Q0, %R0, %q1, %q2" 4617*0bfacb9bSmrg [(set_attr "type" "mve_move") 4618*0bfacb9bSmrg (set_attr "length""8")]) 4619*0bfacb9bSmrg 4620*0bfacb9bSmrg;; 4621*0bfacb9bSmrg;; [vmlsldavxq_p_s]) 4622*0bfacb9bSmrg;; 4623*0bfacb9bSmrg(define_insn "mve_vmlsldavxq_p_s<mode>" 4624*0bfacb9bSmrg [ 4625*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4626*0bfacb9bSmrg (unspec:DI [(match_operand:MVE_5 1 "s_register_operand" "w") 4627*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4628*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4629*0bfacb9bSmrg VMLSLDAVXQ_P_S)) 4630*0bfacb9bSmrg ] 4631*0bfacb9bSmrg "TARGET_HAVE_MVE" 4632*0bfacb9bSmrg "vpst\;vmlsldavxt.s%#<V_sz_elem> %Q0, %R0, %q1, %q2" 4633*0bfacb9bSmrg [(set_attr "type" "mve_move") 4634*0bfacb9bSmrg (set_attr "length""8")]) 4635*0bfacb9bSmrg;; 4636*0bfacb9bSmrg;; [vmovlbq_m_u, vmovlbq_m_s]) 4637*0bfacb9bSmrg;; 4638*0bfacb9bSmrg(define_insn "mve_vmovlbq_m_<supf><mode>" 4639*0bfacb9bSmrg [ 4640*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 4641*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 4642*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 4643*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4644*0bfacb9bSmrg VMOVLBQ_M)) 4645*0bfacb9bSmrg ] 4646*0bfacb9bSmrg "TARGET_HAVE_MVE" 4647*0bfacb9bSmrg "vpst\;vmovlbt.<supf>%#<V_sz_elem> %q0, %q2" 4648*0bfacb9bSmrg [(set_attr "type" "mve_move") 4649*0bfacb9bSmrg (set_attr "length""8")]) 4650*0bfacb9bSmrg;; 4651*0bfacb9bSmrg;; [vmovltq_m_u, vmovltq_m_s]) 4652*0bfacb9bSmrg;; 4653*0bfacb9bSmrg(define_insn "mve_vmovltq_m_<supf><mode>" 4654*0bfacb9bSmrg [ 4655*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 4656*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 4657*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 4658*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4659*0bfacb9bSmrg VMOVLTQ_M)) 4660*0bfacb9bSmrg ] 4661*0bfacb9bSmrg "TARGET_HAVE_MVE" 4662*0bfacb9bSmrg "vpst\;vmovltt.<supf>%#<V_sz_elem> %q0, %q2" 4663*0bfacb9bSmrg [(set_attr "type" "mve_move") 4664*0bfacb9bSmrg (set_attr "length""8")]) 4665*0bfacb9bSmrg;; 4666*0bfacb9bSmrg;; [vmovnbq_m_u, vmovnbq_m_s]) 4667*0bfacb9bSmrg;; 4668*0bfacb9bSmrg(define_insn "mve_vmovnbq_m_<supf><mode>" 4669*0bfacb9bSmrg [ 4670*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4671*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4672*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4673*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4674*0bfacb9bSmrg VMOVNBQ_M)) 4675*0bfacb9bSmrg ] 4676*0bfacb9bSmrg "TARGET_HAVE_MVE" 4677*0bfacb9bSmrg "vpst\;vmovnbt.i%#<V_sz_elem> %q0, %q2" 4678*0bfacb9bSmrg [(set_attr "type" "mve_move") 4679*0bfacb9bSmrg (set_attr "length""8")]) 4680*0bfacb9bSmrg 4681*0bfacb9bSmrg;; 4682*0bfacb9bSmrg;; [vmovntq_m_u, vmovntq_m_s]) 4683*0bfacb9bSmrg;; 4684*0bfacb9bSmrg(define_insn "mve_vmovntq_m_<supf><mode>" 4685*0bfacb9bSmrg [ 4686*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4687*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4688*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4689*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4690*0bfacb9bSmrg VMOVNTQ_M)) 4691*0bfacb9bSmrg ] 4692*0bfacb9bSmrg "TARGET_HAVE_MVE" 4693*0bfacb9bSmrg "vpst\;vmovntt.i%#<V_sz_elem> %q0, %q2" 4694*0bfacb9bSmrg [(set_attr "type" "mve_move") 4695*0bfacb9bSmrg (set_attr "length""8")]) 4696*0bfacb9bSmrg 4697*0bfacb9bSmrg;; 4698*0bfacb9bSmrg;; [vmvnq_m_n_u, vmvnq_m_n_s]) 4699*0bfacb9bSmrg;; 4700*0bfacb9bSmrg(define_insn "mve_vmvnq_m_n_<supf><mode>" 4701*0bfacb9bSmrg [ 4702*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 4703*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 4704*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i") 4705*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4706*0bfacb9bSmrg VMVNQ_M_N)) 4707*0bfacb9bSmrg ] 4708*0bfacb9bSmrg "TARGET_HAVE_MVE" 4709*0bfacb9bSmrg "vpst\;vmvnt.i%#<V_sz_elem> %q0, %2" 4710*0bfacb9bSmrg [(set_attr "type" "mve_move") 4711*0bfacb9bSmrg (set_attr "length""8")]) 4712*0bfacb9bSmrg;; 4713*0bfacb9bSmrg;; [vnegq_m_f]) 4714*0bfacb9bSmrg;; 4715*0bfacb9bSmrg(define_insn "mve_vnegq_m_f<mode>" 4716*0bfacb9bSmrg [ 4717*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4718*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4719*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4720*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4721*0bfacb9bSmrg VNEGQ_M_F)) 4722*0bfacb9bSmrg ] 4723*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4724*0bfacb9bSmrg "vpst\;vnegt.f%#<V_sz_elem> %q0, %q2" 4725*0bfacb9bSmrg [(set_attr "type" "mve_move") 4726*0bfacb9bSmrg (set_attr "length""8")]) 4727*0bfacb9bSmrg 4728*0bfacb9bSmrg;; 4729*0bfacb9bSmrg;; [vorrq_m_n_s, vorrq_m_n_u]) 4730*0bfacb9bSmrg;; 4731*0bfacb9bSmrg(define_insn "mve_vorrq_m_n_<supf><mode>" 4732*0bfacb9bSmrg [ 4733*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 4734*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 4735*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i") 4736*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4737*0bfacb9bSmrg VORRQ_M_N)) 4738*0bfacb9bSmrg ] 4739*0bfacb9bSmrg "TARGET_HAVE_MVE" 4740*0bfacb9bSmrg "vpst\;vorrt.i%#<V_sz_elem> %q0, %2" 4741*0bfacb9bSmrg [(set_attr "type" "mve_move") 4742*0bfacb9bSmrg (set_attr "length""8")]) 4743*0bfacb9bSmrg;; 4744*0bfacb9bSmrg;; [vpselq_f]) 4745*0bfacb9bSmrg;; 4746*0bfacb9bSmrg(define_insn "mve_vpselq_f<mode>" 4747*0bfacb9bSmrg [ 4748*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4749*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w") 4750*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4751*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4752*0bfacb9bSmrg VPSELQ_F)) 4753*0bfacb9bSmrg ] 4754*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4755*0bfacb9bSmrg "vpsel %q0, %q1, %q2" 4756*0bfacb9bSmrg [(set_attr "type" "mve_move") 4757*0bfacb9bSmrg]) 4758*0bfacb9bSmrg 4759*0bfacb9bSmrg;; 4760*0bfacb9bSmrg;; [vqmovnbq_m_s, vqmovnbq_m_u]) 4761*0bfacb9bSmrg;; 4762*0bfacb9bSmrg(define_insn "mve_vqmovnbq_m_<supf><mode>" 4763*0bfacb9bSmrg [ 4764*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4765*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4766*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4767*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4768*0bfacb9bSmrg VQMOVNBQ_M)) 4769*0bfacb9bSmrg ] 4770*0bfacb9bSmrg "TARGET_HAVE_MVE" 4771*0bfacb9bSmrg "vpst\;vqmovnbt.<supf>%#<V_sz_elem> %q0, %q2" 4772*0bfacb9bSmrg [(set_attr "type" "mve_move") 4773*0bfacb9bSmrg (set_attr "length""8")]) 4774*0bfacb9bSmrg 4775*0bfacb9bSmrg;; 4776*0bfacb9bSmrg;; [vqmovntq_m_u, vqmovntq_m_s]) 4777*0bfacb9bSmrg;; 4778*0bfacb9bSmrg(define_insn "mve_vqmovntq_m_<supf><mode>" 4779*0bfacb9bSmrg [ 4780*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4781*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4782*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4783*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4784*0bfacb9bSmrg VQMOVNTQ_M)) 4785*0bfacb9bSmrg ] 4786*0bfacb9bSmrg "TARGET_HAVE_MVE" 4787*0bfacb9bSmrg "vpst\;vqmovntt.<supf>%#<V_sz_elem> %q0, %q2" 4788*0bfacb9bSmrg [(set_attr "type" "mve_move") 4789*0bfacb9bSmrg (set_attr "length""8")]) 4790*0bfacb9bSmrg 4791*0bfacb9bSmrg;; 4792*0bfacb9bSmrg;; [vqmovunbq_m_s]) 4793*0bfacb9bSmrg;; 4794*0bfacb9bSmrg(define_insn "mve_vqmovunbq_m_s<mode>" 4795*0bfacb9bSmrg [ 4796*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4797*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4798*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4799*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4800*0bfacb9bSmrg VQMOVUNBQ_M_S)) 4801*0bfacb9bSmrg ] 4802*0bfacb9bSmrg "TARGET_HAVE_MVE" 4803*0bfacb9bSmrg "vpst\;vqmovunbt.s%#<V_sz_elem> %q0, %q2" 4804*0bfacb9bSmrg [(set_attr "type" "mve_move") 4805*0bfacb9bSmrg (set_attr "length""8")]) 4806*0bfacb9bSmrg 4807*0bfacb9bSmrg;; 4808*0bfacb9bSmrg;; [vqmovuntq_m_s]) 4809*0bfacb9bSmrg;; 4810*0bfacb9bSmrg(define_insn "mve_vqmovuntq_m_s<mode>" 4811*0bfacb9bSmrg [ 4812*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4813*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4814*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4815*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4816*0bfacb9bSmrg VQMOVUNTQ_M_S)) 4817*0bfacb9bSmrg ] 4818*0bfacb9bSmrg "TARGET_HAVE_MVE" 4819*0bfacb9bSmrg "vpst\;vqmovuntt.s%#<V_sz_elem> %q0, %q2" 4820*0bfacb9bSmrg [(set_attr "type" "mve_move") 4821*0bfacb9bSmrg (set_attr "length""8")]) 4822*0bfacb9bSmrg 4823*0bfacb9bSmrg;; 4824*0bfacb9bSmrg;; [vqrshrntq_n_u, vqrshrntq_n_s]) 4825*0bfacb9bSmrg;; 4826*0bfacb9bSmrg(define_insn "mve_vqrshrntq_n_<supf><mode>" 4827*0bfacb9bSmrg [ 4828*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4829*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4830*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4831*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb")] 4832*0bfacb9bSmrg VQRSHRNTQ_N)) 4833*0bfacb9bSmrg ] 4834*0bfacb9bSmrg "TARGET_HAVE_MVE" 4835*0bfacb9bSmrg "vqrshrnt.<supf>%#<V_sz_elem> %q0, %q2, %3" 4836*0bfacb9bSmrg [(set_attr "type" "mve_move") 4837*0bfacb9bSmrg]) 4838*0bfacb9bSmrg 4839*0bfacb9bSmrg;; 4840*0bfacb9bSmrg;; [vqrshruntq_n_s]) 4841*0bfacb9bSmrg;; 4842*0bfacb9bSmrg(define_insn "mve_vqrshruntq_n_s<mode>" 4843*0bfacb9bSmrg [ 4844*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4845*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4846*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4847*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb")] 4848*0bfacb9bSmrg VQRSHRUNTQ_N_S)) 4849*0bfacb9bSmrg ] 4850*0bfacb9bSmrg "TARGET_HAVE_MVE" 4851*0bfacb9bSmrg "vqrshrunt.s%#<V_sz_elem> %q0, %q2, %3" 4852*0bfacb9bSmrg [(set_attr "type" "mve_move") 4853*0bfacb9bSmrg]) 4854*0bfacb9bSmrg 4855*0bfacb9bSmrg;; 4856*0bfacb9bSmrg;; [vqshrnbq_n_u, vqshrnbq_n_s]) 4857*0bfacb9bSmrg;; 4858*0bfacb9bSmrg(define_insn "mve_vqshrnbq_n_<supf><mode>" 4859*0bfacb9bSmrg [ 4860*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4861*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4862*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4863*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] 4864*0bfacb9bSmrg VQSHRNBQ_N)) 4865*0bfacb9bSmrg ] 4866*0bfacb9bSmrg "TARGET_HAVE_MVE" 4867*0bfacb9bSmrg "vqshrnb.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 4868*0bfacb9bSmrg [(set_attr "type" "mve_move") 4869*0bfacb9bSmrg]) 4870*0bfacb9bSmrg 4871*0bfacb9bSmrg;; 4872*0bfacb9bSmrg;; [vqshrntq_n_u, vqshrntq_n_s]) 4873*0bfacb9bSmrg;; 4874*0bfacb9bSmrg(define_insn "mve_vqshrntq_n_<supf><mode>" 4875*0bfacb9bSmrg [ 4876*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4877*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4878*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4879*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] 4880*0bfacb9bSmrg VQSHRNTQ_N)) 4881*0bfacb9bSmrg ] 4882*0bfacb9bSmrg "TARGET_HAVE_MVE" 4883*0bfacb9bSmrg "vqshrnt.<supf>%#<V_sz_elem> %q0, %q2, %3" 4884*0bfacb9bSmrg [(set_attr "type" "mve_move") 4885*0bfacb9bSmrg]) 4886*0bfacb9bSmrg 4887*0bfacb9bSmrg;; 4888*0bfacb9bSmrg;; [vqshrunbq_n_s]) 4889*0bfacb9bSmrg;; 4890*0bfacb9bSmrg(define_insn "mve_vqshrunbq_n_s<mode>" 4891*0bfacb9bSmrg [ 4892*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4893*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4894*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4895*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] 4896*0bfacb9bSmrg VQSHRUNBQ_N_S)) 4897*0bfacb9bSmrg ] 4898*0bfacb9bSmrg "TARGET_HAVE_MVE" 4899*0bfacb9bSmrg "vqshrunb.s%#<V_sz_elem> %q0, %q2, %3" 4900*0bfacb9bSmrg [(set_attr "type" "mve_move") 4901*0bfacb9bSmrg]) 4902*0bfacb9bSmrg 4903*0bfacb9bSmrg;; 4904*0bfacb9bSmrg;; [vqshruntq_n_s]) 4905*0bfacb9bSmrg;; 4906*0bfacb9bSmrg(define_insn "mve_vqshruntq_n_s<mode>" 4907*0bfacb9bSmrg [ 4908*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 4909*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 4910*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 4911*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] 4912*0bfacb9bSmrg VQSHRUNTQ_N_S)) 4913*0bfacb9bSmrg ] 4914*0bfacb9bSmrg "TARGET_HAVE_MVE" 4915*0bfacb9bSmrg "vqshrunt.s%#<V_sz_elem> %q0, %q2, %3" 4916*0bfacb9bSmrg [(set_attr "type" "mve_move") 4917*0bfacb9bSmrg]) 4918*0bfacb9bSmrg 4919*0bfacb9bSmrg;; 4920*0bfacb9bSmrg;; [vrev32q_m_f]) 4921*0bfacb9bSmrg;; 4922*0bfacb9bSmrg(define_insn "mve_vrev32q_m_fv8hf" 4923*0bfacb9bSmrg [ 4924*0bfacb9bSmrg (set (match_operand:V8HF 0 "s_register_operand" "=w") 4925*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "0") 4926*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 4927*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4928*0bfacb9bSmrg VREV32Q_M_F)) 4929*0bfacb9bSmrg ] 4930*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4931*0bfacb9bSmrg "vpst\;vrev32t.16 %q0, %q2" 4932*0bfacb9bSmrg [(set_attr "type" "mve_move") 4933*0bfacb9bSmrg (set_attr "length""8")]) 4934*0bfacb9bSmrg 4935*0bfacb9bSmrg;; 4936*0bfacb9bSmrg;; [vrev32q_m_s, vrev32q_m_u]) 4937*0bfacb9bSmrg;; 4938*0bfacb9bSmrg(define_insn "mve_vrev32q_m_<supf><mode>" 4939*0bfacb9bSmrg [ 4940*0bfacb9bSmrg (set (match_operand:MVE_3 0 "s_register_operand" "=w") 4941*0bfacb9bSmrg (unspec:MVE_3 [(match_operand:MVE_3 1 "s_register_operand" "0") 4942*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 4943*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4944*0bfacb9bSmrg VREV32Q_M)) 4945*0bfacb9bSmrg ] 4946*0bfacb9bSmrg "TARGET_HAVE_MVE" 4947*0bfacb9bSmrg "vpst\;vrev32t.%#<V_sz_elem> %q0, %q2" 4948*0bfacb9bSmrg [(set_attr "type" "mve_move") 4949*0bfacb9bSmrg (set_attr "length""8")]) 4950*0bfacb9bSmrg 4951*0bfacb9bSmrg;; 4952*0bfacb9bSmrg;; [vrev64q_m_f]) 4953*0bfacb9bSmrg;; 4954*0bfacb9bSmrg(define_insn "mve_vrev64q_m_f<mode>" 4955*0bfacb9bSmrg [ 4956*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 4957*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 4958*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 4959*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4960*0bfacb9bSmrg VREV64Q_M_F)) 4961*0bfacb9bSmrg ] 4962*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 4963*0bfacb9bSmrg "vpst\;vrev64t.%#<V_sz_elem> %q0, %q2" 4964*0bfacb9bSmrg [(set_attr "type" "mve_move") 4965*0bfacb9bSmrg (set_attr "length""8")]) 4966*0bfacb9bSmrg 4967*0bfacb9bSmrg;; 4968*0bfacb9bSmrg;; [vrmlaldavhaxq_s]) 4969*0bfacb9bSmrg;; 4970*0bfacb9bSmrg(define_insn "mve_vrmlaldavhaxq_sv4si" 4971*0bfacb9bSmrg [ 4972*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4973*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 4974*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 4975*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w")] 4976*0bfacb9bSmrg VRMLALDAVHAXQ_S)) 4977*0bfacb9bSmrg ] 4978*0bfacb9bSmrg "TARGET_HAVE_MVE" 4979*0bfacb9bSmrg "vrmlaldavhax.s32 %Q0, %R0, %q2, %q3" 4980*0bfacb9bSmrg [(set_attr "type" "mve_move") 4981*0bfacb9bSmrg]) 4982*0bfacb9bSmrg 4983*0bfacb9bSmrg;; 4984*0bfacb9bSmrg;; [vrmlaldavhxq_p_s]) 4985*0bfacb9bSmrg;; 4986*0bfacb9bSmrg(define_insn "mve_vrmlaldavhxq_p_sv4si" 4987*0bfacb9bSmrg [ 4988*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 4989*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 4990*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 4991*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 4992*0bfacb9bSmrg VRMLALDAVHXQ_P_S)) 4993*0bfacb9bSmrg ] 4994*0bfacb9bSmrg "TARGET_HAVE_MVE" 4995*0bfacb9bSmrg "vpst\;vrmlaldavhxt.s32 %Q0, %R0, %q1, %q2" 4996*0bfacb9bSmrg [(set_attr "type" "mve_move") 4997*0bfacb9bSmrg (set_attr "length""8")]) 4998*0bfacb9bSmrg 4999*0bfacb9bSmrg;; 5000*0bfacb9bSmrg;; [vrmlsldavhaxq_s]) 5001*0bfacb9bSmrg;; 5002*0bfacb9bSmrg(define_insn "mve_vrmlsldavhaxq_sv4si" 5003*0bfacb9bSmrg [ 5004*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 5005*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 5006*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 5007*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w")] 5008*0bfacb9bSmrg VRMLSLDAVHAXQ_S)) 5009*0bfacb9bSmrg ] 5010*0bfacb9bSmrg "TARGET_HAVE_MVE" 5011*0bfacb9bSmrg "vrmlsldavhax.s32 %Q0, %R0, %q2, %q3" 5012*0bfacb9bSmrg [(set_attr "type" "mve_move") 5013*0bfacb9bSmrg]) 5014*0bfacb9bSmrg 5015*0bfacb9bSmrg;; 5016*0bfacb9bSmrg;; [vrmlsldavhq_p_s]) 5017*0bfacb9bSmrg;; 5018*0bfacb9bSmrg(define_insn "mve_vrmlsldavhq_p_sv4si" 5019*0bfacb9bSmrg [ 5020*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 5021*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 5022*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 5023*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5024*0bfacb9bSmrg VRMLSLDAVHQ_P_S)) 5025*0bfacb9bSmrg ] 5026*0bfacb9bSmrg "TARGET_HAVE_MVE" 5027*0bfacb9bSmrg "vpst\;vrmlsldavht.s32 %Q0, %R0, %q1, %q2" 5028*0bfacb9bSmrg [(set_attr "type" "mve_move") 5029*0bfacb9bSmrg (set_attr "length""8")]) 5030*0bfacb9bSmrg 5031*0bfacb9bSmrg;; 5032*0bfacb9bSmrg;; [vrmlsldavhxq_p_s]) 5033*0bfacb9bSmrg;; 5034*0bfacb9bSmrg(define_insn "mve_vrmlsldavhxq_p_sv4si" 5035*0bfacb9bSmrg [ 5036*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 5037*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 5038*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 5039*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5040*0bfacb9bSmrg VRMLSLDAVHXQ_P_S)) 5041*0bfacb9bSmrg ] 5042*0bfacb9bSmrg "TARGET_HAVE_MVE" 5043*0bfacb9bSmrg "vpst\;vrmlsldavhxt.s32 %Q0, %R0, %q1, %q2" 5044*0bfacb9bSmrg [(set_attr "type" "mve_move") 5045*0bfacb9bSmrg (set_attr "length""8")]) 5046*0bfacb9bSmrg 5047*0bfacb9bSmrg;; 5048*0bfacb9bSmrg;; [vrndaq_m_f]) 5049*0bfacb9bSmrg;; 5050*0bfacb9bSmrg(define_insn "mve_vrndaq_m_f<mode>" 5051*0bfacb9bSmrg [ 5052*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 5053*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 5054*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 5055*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5056*0bfacb9bSmrg VRNDAQ_M_F)) 5057*0bfacb9bSmrg ] 5058*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5059*0bfacb9bSmrg "vpst\;vrintat.f%#<V_sz_elem> %q0, %q2" 5060*0bfacb9bSmrg [(set_attr "type" "mve_move") 5061*0bfacb9bSmrg (set_attr "length""8")]) 5062*0bfacb9bSmrg 5063*0bfacb9bSmrg;; 5064*0bfacb9bSmrg;; [vrndmq_m_f]) 5065*0bfacb9bSmrg;; 5066*0bfacb9bSmrg(define_insn "mve_vrndmq_m_f<mode>" 5067*0bfacb9bSmrg [ 5068*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 5069*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 5070*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 5071*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5072*0bfacb9bSmrg VRNDMQ_M_F)) 5073*0bfacb9bSmrg ] 5074*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5075*0bfacb9bSmrg "vpst\;vrintmt.f%#<V_sz_elem> %q0, %q2" 5076*0bfacb9bSmrg [(set_attr "type" "mve_move") 5077*0bfacb9bSmrg (set_attr "length""8")]) 5078*0bfacb9bSmrg 5079*0bfacb9bSmrg;; 5080*0bfacb9bSmrg;; [vrndnq_m_f]) 5081*0bfacb9bSmrg;; 5082*0bfacb9bSmrg(define_insn "mve_vrndnq_m_f<mode>" 5083*0bfacb9bSmrg [ 5084*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 5085*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 5086*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 5087*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5088*0bfacb9bSmrg VRNDNQ_M_F)) 5089*0bfacb9bSmrg ] 5090*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5091*0bfacb9bSmrg "vpst\;vrintnt.f%#<V_sz_elem> %q0, %q2" 5092*0bfacb9bSmrg [(set_attr "type" "mve_move") 5093*0bfacb9bSmrg (set_attr "length""8")]) 5094*0bfacb9bSmrg 5095*0bfacb9bSmrg;; 5096*0bfacb9bSmrg;; [vrndpq_m_f]) 5097*0bfacb9bSmrg;; 5098*0bfacb9bSmrg(define_insn "mve_vrndpq_m_f<mode>" 5099*0bfacb9bSmrg [ 5100*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 5101*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 5102*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 5103*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5104*0bfacb9bSmrg VRNDPQ_M_F)) 5105*0bfacb9bSmrg ] 5106*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5107*0bfacb9bSmrg "vpst\;vrintpt.f%#<V_sz_elem> %q0, %q2" 5108*0bfacb9bSmrg [(set_attr "type" "mve_move") 5109*0bfacb9bSmrg (set_attr "length""8")]) 5110*0bfacb9bSmrg 5111*0bfacb9bSmrg;; 5112*0bfacb9bSmrg;; [vrndxq_m_f]) 5113*0bfacb9bSmrg;; 5114*0bfacb9bSmrg(define_insn "mve_vrndxq_m_f<mode>" 5115*0bfacb9bSmrg [ 5116*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 5117*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 5118*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 5119*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5120*0bfacb9bSmrg VRNDXQ_M_F)) 5121*0bfacb9bSmrg ] 5122*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5123*0bfacb9bSmrg "vpst\;vrintxt.f%#<V_sz_elem> %q0, %q2" 5124*0bfacb9bSmrg [(set_attr "type" "mve_move") 5125*0bfacb9bSmrg (set_attr "length""8")]) 5126*0bfacb9bSmrg 5127*0bfacb9bSmrg;; 5128*0bfacb9bSmrg;; [vrshrnbq_n_s, vrshrnbq_n_u]) 5129*0bfacb9bSmrg;; 5130*0bfacb9bSmrg(define_insn "mve_vrshrnbq_n_<supf><mode>" 5131*0bfacb9bSmrg [ 5132*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 5133*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 5134*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 5135*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb")] 5136*0bfacb9bSmrg VRSHRNBQ_N)) 5137*0bfacb9bSmrg ] 5138*0bfacb9bSmrg "TARGET_HAVE_MVE" 5139*0bfacb9bSmrg "vrshrnb.i%#<V_sz_elem> %q0, %q2, %3" 5140*0bfacb9bSmrg [(set_attr "type" "mve_move") 5141*0bfacb9bSmrg]) 5142*0bfacb9bSmrg 5143*0bfacb9bSmrg;; 5144*0bfacb9bSmrg;; [vrshrntq_n_u, vrshrntq_n_s]) 5145*0bfacb9bSmrg;; 5146*0bfacb9bSmrg(define_insn "mve_vrshrntq_n_<supf><mode>" 5147*0bfacb9bSmrg [ 5148*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 5149*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 5150*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 5151*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb")] 5152*0bfacb9bSmrg VRSHRNTQ_N)) 5153*0bfacb9bSmrg ] 5154*0bfacb9bSmrg "TARGET_HAVE_MVE" 5155*0bfacb9bSmrg "vrshrnt.i%#<V_sz_elem> %q0, %q2, %3" 5156*0bfacb9bSmrg [(set_attr "type" "mve_move") 5157*0bfacb9bSmrg]) 5158*0bfacb9bSmrg 5159*0bfacb9bSmrg;; 5160*0bfacb9bSmrg;; [vshrnbq_n_u, vshrnbq_n_s]) 5161*0bfacb9bSmrg;; 5162*0bfacb9bSmrg(define_insn "mve_vshrnbq_n_<supf><mode>" 5163*0bfacb9bSmrg [ 5164*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 5165*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 5166*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 5167*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] 5168*0bfacb9bSmrg VSHRNBQ_N)) 5169*0bfacb9bSmrg ] 5170*0bfacb9bSmrg "TARGET_HAVE_MVE" 5171*0bfacb9bSmrg "vshrnb.i%#<V_sz_elem> %q0, %q2, %3" 5172*0bfacb9bSmrg [(set_attr "type" "mve_move") 5173*0bfacb9bSmrg]) 5174*0bfacb9bSmrg 5175*0bfacb9bSmrg;; 5176*0bfacb9bSmrg;; [vshrntq_n_s, vshrntq_n_u]) 5177*0bfacb9bSmrg;; 5178*0bfacb9bSmrg(define_insn "mve_vshrntq_n_<supf><mode>" 5179*0bfacb9bSmrg [ 5180*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 5181*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 5182*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 5183*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] 5184*0bfacb9bSmrg VSHRNTQ_N)) 5185*0bfacb9bSmrg ] 5186*0bfacb9bSmrg "TARGET_HAVE_MVE" 5187*0bfacb9bSmrg "vshrnt.i%#<V_sz_elem>\t%q0, %q2, %3" 5188*0bfacb9bSmrg [(set_attr "type" "mve_move") 5189*0bfacb9bSmrg]) 5190*0bfacb9bSmrg 5191*0bfacb9bSmrg;; 5192*0bfacb9bSmrg;; [vcvtmq_m_s, vcvtmq_m_u]) 5193*0bfacb9bSmrg;; 5194*0bfacb9bSmrg(define_insn "mve_vcvtmq_m_<supf><mode>" 5195*0bfacb9bSmrg [ 5196*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 5197*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 5198*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 5199*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5200*0bfacb9bSmrg VCVTMQ_M)) 5201*0bfacb9bSmrg ] 5202*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5203*0bfacb9bSmrg "vpst\;vcvtmt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2" 5204*0bfacb9bSmrg [(set_attr "type" "mve_move") 5205*0bfacb9bSmrg (set_attr "length""8")]) 5206*0bfacb9bSmrg 5207*0bfacb9bSmrg;; 5208*0bfacb9bSmrg;; [vcvtpq_m_u, vcvtpq_m_s]) 5209*0bfacb9bSmrg;; 5210*0bfacb9bSmrg(define_insn "mve_vcvtpq_m_<supf><mode>" 5211*0bfacb9bSmrg [ 5212*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 5213*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 5214*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 5215*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5216*0bfacb9bSmrg VCVTPQ_M)) 5217*0bfacb9bSmrg ] 5218*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5219*0bfacb9bSmrg "vpst\;vcvtpt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2" 5220*0bfacb9bSmrg [(set_attr "type" "mve_move") 5221*0bfacb9bSmrg (set_attr "length""8")]) 5222*0bfacb9bSmrg 5223*0bfacb9bSmrg;; 5224*0bfacb9bSmrg;; [vcvtnq_m_s, vcvtnq_m_u]) 5225*0bfacb9bSmrg;; 5226*0bfacb9bSmrg(define_insn "mve_vcvtnq_m_<supf><mode>" 5227*0bfacb9bSmrg [ 5228*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 5229*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 5230*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 5231*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5232*0bfacb9bSmrg VCVTNQ_M)) 5233*0bfacb9bSmrg ] 5234*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5235*0bfacb9bSmrg "vpst\;vcvtnt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2" 5236*0bfacb9bSmrg [(set_attr "type" "mve_move") 5237*0bfacb9bSmrg (set_attr "length""8")]) 5238*0bfacb9bSmrg 5239*0bfacb9bSmrg;; 5240*0bfacb9bSmrg;; [vcvtq_m_n_from_f_s, vcvtq_m_n_from_f_u]) 5241*0bfacb9bSmrg;; 5242*0bfacb9bSmrg(define_insn "mve_vcvtq_m_n_from_f_<supf><mode>" 5243*0bfacb9bSmrg [ 5244*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 5245*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 5246*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 5247*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>") 5248*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5249*0bfacb9bSmrg VCVTQ_M_N_FROM_F)) 5250*0bfacb9bSmrg ] 5251*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5252*0bfacb9bSmrg "vpst\;vcvtt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2, %3" 5253*0bfacb9bSmrg [(set_attr "type" "mve_move") 5254*0bfacb9bSmrg (set_attr "length""8")]) 5255*0bfacb9bSmrg 5256*0bfacb9bSmrg;; 5257*0bfacb9bSmrg;; [vrev16q_m_u, vrev16q_m_s]) 5258*0bfacb9bSmrg;; 5259*0bfacb9bSmrg(define_insn "mve_vrev16q_m_<supf>v16qi" 5260*0bfacb9bSmrg [ 5261*0bfacb9bSmrg (set (match_operand:V16QI 0 "s_register_operand" "=w") 5262*0bfacb9bSmrg (unspec:V16QI [(match_operand:V16QI 1 "s_register_operand" "0") 5263*0bfacb9bSmrg (match_operand:V16QI 2 "s_register_operand" "w") 5264*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5265*0bfacb9bSmrg VREV16Q_M)) 5266*0bfacb9bSmrg ] 5267*0bfacb9bSmrg "TARGET_HAVE_MVE" 5268*0bfacb9bSmrg "vpst\;vrev16t.8 %q0, %q2" 5269*0bfacb9bSmrg [(set_attr "type" "mve_move") 5270*0bfacb9bSmrg (set_attr "length""8")]) 5271*0bfacb9bSmrg 5272*0bfacb9bSmrg;; 5273*0bfacb9bSmrg;; [vcvtq_m_from_f_u, vcvtq_m_from_f_s]) 5274*0bfacb9bSmrg;; 5275*0bfacb9bSmrg(define_insn "mve_vcvtq_m_from_f_<supf><mode>" 5276*0bfacb9bSmrg [ 5277*0bfacb9bSmrg (set (match_operand:MVE_5 0 "s_register_operand" "=w") 5278*0bfacb9bSmrg (unspec:MVE_5 [(match_operand:MVE_5 1 "s_register_operand" "0") 5279*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 5280*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5281*0bfacb9bSmrg VCVTQ_M_FROM_F)) 5282*0bfacb9bSmrg ] 5283*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5284*0bfacb9bSmrg "vpst\;vcvtt.<supf>%#<V_sz_elem>.f%#<V_sz_elem>\t%q0, %q2" 5285*0bfacb9bSmrg [(set_attr "type" "mve_move") 5286*0bfacb9bSmrg (set_attr "length""8")]) 5287*0bfacb9bSmrg 5288*0bfacb9bSmrg;; 5289*0bfacb9bSmrg;; [vrmlaldavhq_p_u vrmlaldavhq_p_s]) 5290*0bfacb9bSmrg;; 5291*0bfacb9bSmrg(define_insn "mve_vrmlaldavhq_p_<supf>v4si" 5292*0bfacb9bSmrg [ 5293*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 5294*0bfacb9bSmrg (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w") 5295*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 5296*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 5297*0bfacb9bSmrg VRMLALDAVHQ_P)) 5298*0bfacb9bSmrg ] 5299*0bfacb9bSmrg "TARGET_HAVE_MVE" 5300*0bfacb9bSmrg "vpst\;vrmlaldavht.<supf>32 %Q0, %R0, %q1, %q2" 5301*0bfacb9bSmrg [(set_attr "type" "mve_move") 5302*0bfacb9bSmrg (set_attr "length""8")]) 5303*0bfacb9bSmrg 5304*0bfacb9bSmrg;; 5305*0bfacb9bSmrg;; [vrmlsldavhaq_s]) 5306*0bfacb9bSmrg;; 5307*0bfacb9bSmrg(define_insn "mve_vrmlsldavhaq_sv4si" 5308*0bfacb9bSmrg [ 5309*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 5310*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 5311*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 5312*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w")] 5313*0bfacb9bSmrg VRMLSLDAVHAQ_S)) 5314*0bfacb9bSmrg ] 5315*0bfacb9bSmrg "TARGET_HAVE_MVE" 5316*0bfacb9bSmrg "vrmlsldavha.s32 %Q0, %R0, %q2, %q3" 5317*0bfacb9bSmrg [(set_attr "type" "mve_move") 5318*0bfacb9bSmrg]) 5319*0bfacb9bSmrg 5320*0bfacb9bSmrg;; 5321*0bfacb9bSmrg;; [vabavq_p_s, vabavq_p_u]) 5322*0bfacb9bSmrg;; 5323*0bfacb9bSmrg(define_insn "mve_vabavq_p_<supf><mode>" 5324*0bfacb9bSmrg [ 5325*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=r") 5326*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 5327*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5328*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5329*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5330*0bfacb9bSmrg VABAVQ_P)) 5331*0bfacb9bSmrg ] 5332*0bfacb9bSmrg "TARGET_HAVE_MVE" 5333*0bfacb9bSmrg "vpst\;vabavt.<supf>%#<V_sz_elem>\t%0, %q2, %q3" 5334*0bfacb9bSmrg [(set_attr "type" "mve_move") 5335*0bfacb9bSmrg]) 5336*0bfacb9bSmrg 5337*0bfacb9bSmrg;; 5338*0bfacb9bSmrg;; [vqshluq_m_n_s]) 5339*0bfacb9bSmrg;; 5340*0bfacb9bSmrg(define_insn "mve_vqshluq_m_n_s<mode>" 5341*0bfacb9bSmrg [ 5342*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5343*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5344*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5345*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_7" "Ra") 5346*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5347*0bfacb9bSmrg VQSHLUQ_M_N_S)) 5348*0bfacb9bSmrg ] 5349*0bfacb9bSmrg "TARGET_HAVE_MVE" 5350*0bfacb9bSmrg "vpst\n\tvqshlut.s%#<V_sz_elem>\t%q0, %q2, %3" 5351*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 5352*0bfacb9bSmrg 5353*0bfacb9bSmrg;; 5354*0bfacb9bSmrg;; [vshlq_m_s, vshlq_m_u]) 5355*0bfacb9bSmrg;; 5356*0bfacb9bSmrg(define_insn "mve_vshlq_m_<supf><mode>" 5357*0bfacb9bSmrg [ 5358*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5359*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5360*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5361*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5362*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5363*0bfacb9bSmrg VSHLQ_M)) 5364*0bfacb9bSmrg ] 5365*0bfacb9bSmrg "TARGET_HAVE_MVE" 5366*0bfacb9bSmrg "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 5367*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 5368*0bfacb9bSmrg 5369*0bfacb9bSmrg;; 5370*0bfacb9bSmrg;; [vsriq_m_n_s, vsriq_m_n_u]) 5371*0bfacb9bSmrg;; 5372*0bfacb9bSmrg(define_insn "mve_vsriq_m_n_<supf><mode>" 5373*0bfacb9bSmrg [ 5374*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5375*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5376*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5377*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") 5378*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5379*0bfacb9bSmrg VSRIQ_M_N)) 5380*0bfacb9bSmrg ] 5381*0bfacb9bSmrg "TARGET_HAVE_MVE" 5382*0bfacb9bSmrg "vpst\;vsrit.%#<V_sz_elem>\t%q0, %q2, %3" 5383*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 5384*0bfacb9bSmrg 5385*0bfacb9bSmrg;; 5386*0bfacb9bSmrg;; [vsubq_m_u, vsubq_m_s]) 5387*0bfacb9bSmrg;; 5388*0bfacb9bSmrg(define_insn "mve_vsubq_m_<supf><mode>" 5389*0bfacb9bSmrg [ 5390*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5391*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5392*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5393*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5394*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5395*0bfacb9bSmrg VSUBQ_M)) 5396*0bfacb9bSmrg ] 5397*0bfacb9bSmrg "TARGET_HAVE_MVE" 5398*0bfacb9bSmrg "vpst\;vsubt.i%#<V_sz_elem>\t%q0, %q2, %q3" 5399*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 5400*0bfacb9bSmrg 5401*0bfacb9bSmrg;; 5402*0bfacb9bSmrg;; [vcvtq_m_n_to_f_u, vcvtq_m_n_to_f_s]) 5403*0bfacb9bSmrg;; 5404*0bfacb9bSmrg(define_insn "mve_vcvtq_m_n_to_f_<supf><mode>" 5405*0bfacb9bSmrg [ 5406*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 5407*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 5408*0bfacb9bSmrg (match_operand:<MVE_CNVT> 2 "s_register_operand" "w") 5409*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>") 5410*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5411*0bfacb9bSmrg VCVTQ_M_N_TO_F)) 5412*0bfacb9bSmrg ] 5413*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 5414*0bfacb9bSmrg "vpst\;vcvtt.f%#<V_sz_elem>.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 5415*0bfacb9bSmrg [(set_attr "type" "mve_move") 5416*0bfacb9bSmrg (set_attr "length""8")]) 5417*0bfacb9bSmrg;; 5418*0bfacb9bSmrg;; [vabdq_m_s, vabdq_m_u]) 5419*0bfacb9bSmrg;; 5420*0bfacb9bSmrg(define_insn "mve_vabdq_m_<supf><mode>" 5421*0bfacb9bSmrg [ 5422*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5423*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5424*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5425*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5426*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5427*0bfacb9bSmrg VABDQ_M)) 5428*0bfacb9bSmrg ] 5429*0bfacb9bSmrg "TARGET_HAVE_MVE" 5430*0bfacb9bSmrg "vpst\;vabdt.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5431*0bfacb9bSmrg [(set_attr "type" "mve_move") 5432*0bfacb9bSmrg (set_attr "length""8")]) 5433*0bfacb9bSmrg 5434*0bfacb9bSmrg;; 5435*0bfacb9bSmrg;; [vaddq_m_n_s, vaddq_m_n_u]) 5436*0bfacb9bSmrg;; 5437*0bfacb9bSmrg(define_insn "mve_vaddq_m_n_<supf><mode>" 5438*0bfacb9bSmrg [ 5439*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5440*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5441*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5442*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5443*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5444*0bfacb9bSmrg VADDQ_M_N)) 5445*0bfacb9bSmrg ] 5446*0bfacb9bSmrg "TARGET_HAVE_MVE" 5447*0bfacb9bSmrg "vpst\;vaddt.i%#<V_sz_elem> %q0, %q2, %3" 5448*0bfacb9bSmrg [(set_attr "type" "mve_move") 5449*0bfacb9bSmrg (set_attr "length""8")]) 5450*0bfacb9bSmrg 5451*0bfacb9bSmrg;; 5452*0bfacb9bSmrg;; [vaddq_m_u, vaddq_m_s]) 5453*0bfacb9bSmrg;; 5454*0bfacb9bSmrg(define_insn "mve_vaddq_m_<supf><mode>" 5455*0bfacb9bSmrg [ 5456*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5457*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5458*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5459*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5460*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5461*0bfacb9bSmrg VADDQ_M)) 5462*0bfacb9bSmrg ] 5463*0bfacb9bSmrg "TARGET_HAVE_MVE" 5464*0bfacb9bSmrg "vpst\;vaddt.i%#<V_sz_elem> %q0, %q2, %q3" 5465*0bfacb9bSmrg [(set_attr "type" "mve_move") 5466*0bfacb9bSmrg (set_attr "length""8")]) 5467*0bfacb9bSmrg 5468*0bfacb9bSmrg;; 5469*0bfacb9bSmrg;; [vandq_m_u, vandq_m_s]) 5470*0bfacb9bSmrg;; 5471*0bfacb9bSmrg(define_insn "mve_vandq_m_<supf><mode>" 5472*0bfacb9bSmrg [ 5473*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5474*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5475*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5476*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5477*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5478*0bfacb9bSmrg VANDQ_M)) 5479*0bfacb9bSmrg ] 5480*0bfacb9bSmrg "TARGET_HAVE_MVE" 5481*0bfacb9bSmrg "vpst\;vandt %q0, %q2, %q3" 5482*0bfacb9bSmrg [(set_attr "type" "mve_move") 5483*0bfacb9bSmrg (set_attr "length""8")]) 5484*0bfacb9bSmrg 5485*0bfacb9bSmrg;; 5486*0bfacb9bSmrg;; [vbicq_m_u, vbicq_m_s]) 5487*0bfacb9bSmrg;; 5488*0bfacb9bSmrg(define_insn "mve_vbicq_m_<supf><mode>" 5489*0bfacb9bSmrg [ 5490*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5491*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5492*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5493*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5494*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5495*0bfacb9bSmrg VBICQ_M)) 5496*0bfacb9bSmrg ] 5497*0bfacb9bSmrg "TARGET_HAVE_MVE" 5498*0bfacb9bSmrg "vpst\;vbict %q0, %q2, %q3" 5499*0bfacb9bSmrg [(set_attr "type" "mve_move") 5500*0bfacb9bSmrg (set_attr "length""8")]) 5501*0bfacb9bSmrg 5502*0bfacb9bSmrg;; 5503*0bfacb9bSmrg;; [vbrsrq_m_n_u, vbrsrq_m_n_s]) 5504*0bfacb9bSmrg;; 5505*0bfacb9bSmrg(define_insn "mve_vbrsrq_m_n_<supf><mode>" 5506*0bfacb9bSmrg [ 5507*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5508*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5509*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5510*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "r") 5511*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5512*0bfacb9bSmrg VBRSRQ_M_N)) 5513*0bfacb9bSmrg ] 5514*0bfacb9bSmrg "TARGET_HAVE_MVE" 5515*0bfacb9bSmrg "vpst\;vbrsrt.%#<V_sz_elem> %q0, %q2, %3" 5516*0bfacb9bSmrg [(set_attr "type" "mve_move") 5517*0bfacb9bSmrg (set_attr "length""8")]) 5518*0bfacb9bSmrg 5519*0bfacb9bSmrg;; 5520*0bfacb9bSmrg;; [vcaddq_rot270_m_u, vcaddq_rot270_m_s]) 5521*0bfacb9bSmrg;; 5522*0bfacb9bSmrg(define_insn "mve_vcaddq_rot270_m_<supf><mode>" 5523*0bfacb9bSmrg [ 5524*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 5525*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5526*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5527*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5528*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5529*0bfacb9bSmrg VCADDQ_ROT270_M)) 5530*0bfacb9bSmrg ] 5531*0bfacb9bSmrg "TARGET_HAVE_MVE" 5532*0bfacb9bSmrg "vpst\;vcaddt.i%#<V_sz_elem> %q0, %q2, %q3, #270" 5533*0bfacb9bSmrg [(set_attr "type" "mve_move") 5534*0bfacb9bSmrg (set_attr "length""8")]) 5535*0bfacb9bSmrg 5536*0bfacb9bSmrg;; 5537*0bfacb9bSmrg;; [vcaddq_rot90_m_u, vcaddq_rot90_m_s]) 5538*0bfacb9bSmrg;; 5539*0bfacb9bSmrg(define_insn "mve_vcaddq_rot90_m_<supf><mode>" 5540*0bfacb9bSmrg [ 5541*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 5542*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5543*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5544*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5545*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5546*0bfacb9bSmrg VCADDQ_ROT90_M)) 5547*0bfacb9bSmrg ] 5548*0bfacb9bSmrg "TARGET_HAVE_MVE" 5549*0bfacb9bSmrg "vpst\;vcaddt.i%#<V_sz_elem> %q0, %q2, %q3, #90" 5550*0bfacb9bSmrg [(set_attr "type" "mve_move") 5551*0bfacb9bSmrg (set_attr "length""8")]) 5552*0bfacb9bSmrg 5553*0bfacb9bSmrg;; 5554*0bfacb9bSmrg;; [veorq_m_s, veorq_m_u]) 5555*0bfacb9bSmrg;; 5556*0bfacb9bSmrg(define_insn "mve_veorq_m_<supf><mode>" 5557*0bfacb9bSmrg [ 5558*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5559*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5560*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5561*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5562*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5563*0bfacb9bSmrg VEORQ_M)) 5564*0bfacb9bSmrg ] 5565*0bfacb9bSmrg "TARGET_HAVE_MVE" 5566*0bfacb9bSmrg "vpst\;veort %q0, %q2, %q3" 5567*0bfacb9bSmrg [(set_attr "type" "mve_move") 5568*0bfacb9bSmrg (set_attr "length""8")]) 5569*0bfacb9bSmrg 5570*0bfacb9bSmrg;; 5571*0bfacb9bSmrg;; [vhaddq_m_n_s, vhaddq_m_n_u]) 5572*0bfacb9bSmrg;; 5573*0bfacb9bSmrg(define_insn "mve_vhaddq_m_n_<supf><mode>" 5574*0bfacb9bSmrg [ 5575*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5576*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5577*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5578*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5579*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5580*0bfacb9bSmrg VHADDQ_M_N)) 5581*0bfacb9bSmrg ] 5582*0bfacb9bSmrg "TARGET_HAVE_MVE" 5583*0bfacb9bSmrg "vpst\;vhaddt.<supf>%#<V_sz_elem> %q0, %q2, %3" 5584*0bfacb9bSmrg [(set_attr "type" "mve_move") 5585*0bfacb9bSmrg (set_attr "length""8")]) 5586*0bfacb9bSmrg 5587*0bfacb9bSmrg;; 5588*0bfacb9bSmrg;; [vhaddq_m_s, vhaddq_m_u]) 5589*0bfacb9bSmrg;; 5590*0bfacb9bSmrg(define_insn "mve_vhaddq_m_<supf><mode>" 5591*0bfacb9bSmrg [ 5592*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5593*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5594*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5595*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5596*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5597*0bfacb9bSmrg VHADDQ_M)) 5598*0bfacb9bSmrg ] 5599*0bfacb9bSmrg "TARGET_HAVE_MVE" 5600*0bfacb9bSmrg "vpst\;vhaddt.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5601*0bfacb9bSmrg [(set_attr "type" "mve_move") 5602*0bfacb9bSmrg (set_attr "length""8")]) 5603*0bfacb9bSmrg 5604*0bfacb9bSmrg;; 5605*0bfacb9bSmrg;; [vhsubq_m_n_s, vhsubq_m_n_u]) 5606*0bfacb9bSmrg;; 5607*0bfacb9bSmrg(define_insn "mve_vhsubq_m_n_<supf><mode>" 5608*0bfacb9bSmrg [ 5609*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5610*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5611*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5612*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5613*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5614*0bfacb9bSmrg VHSUBQ_M_N)) 5615*0bfacb9bSmrg ] 5616*0bfacb9bSmrg "TARGET_HAVE_MVE" 5617*0bfacb9bSmrg "vpst\;vhsubt.<supf>%#<V_sz_elem> %q0, %q2, %3" 5618*0bfacb9bSmrg [(set_attr "type" "mve_move") 5619*0bfacb9bSmrg (set_attr "length""8")]) 5620*0bfacb9bSmrg 5621*0bfacb9bSmrg;; 5622*0bfacb9bSmrg;; [vhsubq_m_s, vhsubq_m_u]) 5623*0bfacb9bSmrg;; 5624*0bfacb9bSmrg(define_insn "mve_vhsubq_m_<supf><mode>" 5625*0bfacb9bSmrg [ 5626*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5627*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5628*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5629*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5630*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5631*0bfacb9bSmrg VHSUBQ_M)) 5632*0bfacb9bSmrg ] 5633*0bfacb9bSmrg "TARGET_HAVE_MVE" 5634*0bfacb9bSmrg "vpst\;vhsubt.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5635*0bfacb9bSmrg [(set_attr "type" "mve_move") 5636*0bfacb9bSmrg (set_attr "length""8")]) 5637*0bfacb9bSmrg 5638*0bfacb9bSmrg;; 5639*0bfacb9bSmrg;; [vmaxq_m_s, vmaxq_m_u]) 5640*0bfacb9bSmrg;; 5641*0bfacb9bSmrg(define_insn "mve_vmaxq_m_<supf><mode>" 5642*0bfacb9bSmrg [ 5643*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5644*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5645*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5646*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5647*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5648*0bfacb9bSmrg VMAXQ_M)) 5649*0bfacb9bSmrg ] 5650*0bfacb9bSmrg "TARGET_HAVE_MVE" 5651*0bfacb9bSmrg "vpst\;vmaxt.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5652*0bfacb9bSmrg [(set_attr "type" "mve_move") 5653*0bfacb9bSmrg (set_attr "length""8")]) 5654*0bfacb9bSmrg 5655*0bfacb9bSmrg;; 5656*0bfacb9bSmrg;; [vminq_m_s, vminq_m_u]) 5657*0bfacb9bSmrg;; 5658*0bfacb9bSmrg(define_insn "mve_vminq_m_<supf><mode>" 5659*0bfacb9bSmrg [ 5660*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5661*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5662*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5663*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5664*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5665*0bfacb9bSmrg VMINQ_M)) 5666*0bfacb9bSmrg ] 5667*0bfacb9bSmrg "TARGET_HAVE_MVE" 5668*0bfacb9bSmrg "vpst\;vmint.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5669*0bfacb9bSmrg [(set_attr "type" "mve_move") 5670*0bfacb9bSmrg (set_attr "length""8")]) 5671*0bfacb9bSmrg 5672*0bfacb9bSmrg;; 5673*0bfacb9bSmrg;; [vmladavaq_p_u, vmladavaq_p_s]) 5674*0bfacb9bSmrg;; 5675*0bfacb9bSmrg(define_insn "mve_vmladavaq_p_<supf><mode>" 5676*0bfacb9bSmrg [ 5677*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 5678*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 5679*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5680*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5681*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5682*0bfacb9bSmrg VMLADAVAQ_P)) 5683*0bfacb9bSmrg ] 5684*0bfacb9bSmrg "TARGET_HAVE_MVE" 5685*0bfacb9bSmrg "vpst\;vmladavat.<supf>%#<V_sz_elem> %0, %q2, %q3" 5686*0bfacb9bSmrg [(set_attr "type" "mve_move") 5687*0bfacb9bSmrg (set_attr "length""8")]) 5688*0bfacb9bSmrg 5689*0bfacb9bSmrg;; 5690*0bfacb9bSmrg;; [vmlaq_m_n_s, vmlaq_m_n_u]) 5691*0bfacb9bSmrg;; 5692*0bfacb9bSmrg(define_insn "mve_vmlaq_m_n_<supf><mode>" 5693*0bfacb9bSmrg [ 5694*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5695*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5696*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5697*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5698*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5699*0bfacb9bSmrg VMLAQ_M_N)) 5700*0bfacb9bSmrg ] 5701*0bfacb9bSmrg "TARGET_HAVE_MVE" 5702*0bfacb9bSmrg "vpst\;vmlat.<supf>%#<V_sz_elem> %q0, %q2, %3" 5703*0bfacb9bSmrg [(set_attr "type" "mve_move") 5704*0bfacb9bSmrg (set_attr "length""8")]) 5705*0bfacb9bSmrg 5706*0bfacb9bSmrg;; 5707*0bfacb9bSmrg;; [vmlasq_m_n_u, vmlasq_m_n_s]) 5708*0bfacb9bSmrg;; 5709*0bfacb9bSmrg(define_insn "mve_vmlasq_m_n_<supf><mode>" 5710*0bfacb9bSmrg [ 5711*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5712*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5713*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5714*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5715*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5716*0bfacb9bSmrg VMLASQ_M_N)) 5717*0bfacb9bSmrg ] 5718*0bfacb9bSmrg "TARGET_HAVE_MVE" 5719*0bfacb9bSmrg "vpst\;vmlast.<supf>%#<V_sz_elem> %q0, %q2, %3" 5720*0bfacb9bSmrg [(set_attr "type" "mve_move") 5721*0bfacb9bSmrg (set_attr "length""8")]) 5722*0bfacb9bSmrg 5723*0bfacb9bSmrg;; 5724*0bfacb9bSmrg;; [vmulhq_m_s, vmulhq_m_u]) 5725*0bfacb9bSmrg;; 5726*0bfacb9bSmrg(define_insn "mve_vmulhq_m_<supf><mode>" 5727*0bfacb9bSmrg [ 5728*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5729*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5730*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5731*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5732*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5733*0bfacb9bSmrg VMULHQ_M)) 5734*0bfacb9bSmrg ] 5735*0bfacb9bSmrg "TARGET_HAVE_MVE" 5736*0bfacb9bSmrg "vpst\;vmulht.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5737*0bfacb9bSmrg [(set_attr "type" "mve_move") 5738*0bfacb9bSmrg (set_attr "length""8")]) 5739*0bfacb9bSmrg 5740*0bfacb9bSmrg;; 5741*0bfacb9bSmrg;; [vmullbq_int_m_u, vmullbq_int_m_s]) 5742*0bfacb9bSmrg;; 5743*0bfacb9bSmrg(define_insn "mve_vmullbq_int_m_<supf><mode>" 5744*0bfacb9bSmrg [ 5745*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 5746*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 5747*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5748*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5749*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5750*0bfacb9bSmrg VMULLBQ_INT_M)) 5751*0bfacb9bSmrg ] 5752*0bfacb9bSmrg "TARGET_HAVE_MVE" 5753*0bfacb9bSmrg "vpst\;vmullbt.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5754*0bfacb9bSmrg [(set_attr "type" "mve_move") 5755*0bfacb9bSmrg (set_attr "length""8")]) 5756*0bfacb9bSmrg 5757*0bfacb9bSmrg;; 5758*0bfacb9bSmrg;; [vmulltq_int_m_s, vmulltq_int_m_u]) 5759*0bfacb9bSmrg;; 5760*0bfacb9bSmrg(define_insn "mve_vmulltq_int_m_<supf><mode>" 5761*0bfacb9bSmrg [ 5762*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 5763*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 5764*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5765*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5766*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5767*0bfacb9bSmrg VMULLTQ_INT_M)) 5768*0bfacb9bSmrg ] 5769*0bfacb9bSmrg "TARGET_HAVE_MVE" 5770*0bfacb9bSmrg "vpst\;vmulltt.<supf>%#<V_sz_elem> %q0, %q2, %q3" 5771*0bfacb9bSmrg [(set_attr "type" "mve_move") 5772*0bfacb9bSmrg (set_attr "length""8")]) 5773*0bfacb9bSmrg 5774*0bfacb9bSmrg;; 5775*0bfacb9bSmrg;; [vmulq_m_n_u, vmulq_m_n_s]) 5776*0bfacb9bSmrg;; 5777*0bfacb9bSmrg(define_insn "mve_vmulq_m_n_<supf><mode>" 5778*0bfacb9bSmrg [ 5779*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5780*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5781*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5782*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5783*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5784*0bfacb9bSmrg VMULQ_M_N)) 5785*0bfacb9bSmrg ] 5786*0bfacb9bSmrg "TARGET_HAVE_MVE" 5787*0bfacb9bSmrg "vpst\;vmult.i%#<V_sz_elem> %q0, %q2, %3" 5788*0bfacb9bSmrg [(set_attr "type" "mve_move") 5789*0bfacb9bSmrg (set_attr "length""8")]) 5790*0bfacb9bSmrg 5791*0bfacb9bSmrg;; 5792*0bfacb9bSmrg;; [vmulq_m_s, vmulq_m_u]) 5793*0bfacb9bSmrg;; 5794*0bfacb9bSmrg(define_insn "mve_vmulq_m_<supf><mode>" 5795*0bfacb9bSmrg [ 5796*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5797*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5798*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5799*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5800*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5801*0bfacb9bSmrg VMULQ_M)) 5802*0bfacb9bSmrg ] 5803*0bfacb9bSmrg "TARGET_HAVE_MVE" 5804*0bfacb9bSmrg "vpst\;vmult.i%#<V_sz_elem> %q0, %q2, %q3" 5805*0bfacb9bSmrg [(set_attr "type" "mve_move") 5806*0bfacb9bSmrg (set_attr "length""8")]) 5807*0bfacb9bSmrg 5808*0bfacb9bSmrg;; 5809*0bfacb9bSmrg;; [vornq_m_u, vornq_m_s]) 5810*0bfacb9bSmrg;; 5811*0bfacb9bSmrg(define_insn "mve_vornq_m_<supf><mode>" 5812*0bfacb9bSmrg [ 5813*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5814*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5815*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5816*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5817*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5818*0bfacb9bSmrg VORNQ_M)) 5819*0bfacb9bSmrg ] 5820*0bfacb9bSmrg "TARGET_HAVE_MVE" 5821*0bfacb9bSmrg "vpst\;vornt %q0, %q2, %q3" 5822*0bfacb9bSmrg [(set_attr "type" "mve_move") 5823*0bfacb9bSmrg (set_attr "length""8")]) 5824*0bfacb9bSmrg 5825*0bfacb9bSmrg;; 5826*0bfacb9bSmrg;; [vorrq_m_s, vorrq_m_u]) 5827*0bfacb9bSmrg;; 5828*0bfacb9bSmrg(define_insn "mve_vorrq_m_<supf><mode>" 5829*0bfacb9bSmrg [ 5830*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5831*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5832*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5833*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5834*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5835*0bfacb9bSmrg VORRQ_M)) 5836*0bfacb9bSmrg ] 5837*0bfacb9bSmrg "TARGET_HAVE_MVE" 5838*0bfacb9bSmrg "vpst\;vorrt %q0, %q2, %q3" 5839*0bfacb9bSmrg [(set_attr "type" "mve_move") 5840*0bfacb9bSmrg (set_attr "length""8")]) 5841*0bfacb9bSmrg 5842*0bfacb9bSmrg;; 5843*0bfacb9bSmrg;; [vqaddq_m_n_u, vqaddq_m_n_s]) 5844*0bfacb9bSmrg;; 5845*0bfacb9bSmrg(define_insn "mve_vqaddq_m_n_<supf><mode>" 5846*0bfacb9bSmrg [ 5847*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5848*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5849*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5850*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5851*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5852*0bfacb9bSmrg VQADDQ_M_N)) 5853*0bfacb9bSmrg ] 5854*0bfacb9bSmrg "TARGET_HAVE_MVE" 5855*0bfacb9bSmrg "vpst\;vqaddt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 5856*0bfacb9bSmrg [(set_attr "type" "mve_move") 5857*0bfacb9bSmrg (set_attr "length""8")]) 5858*0bfacb9bSmrg 5859*0bfacb9bSmrg;; 5860*0bfacb9bSmrg;; [vqaddq_m_u, vqaddq_m_s]) 5861*0bfacb9bSmrg;; 5862*0bfacb9bSmrg(define_insn "mve_vqaddq_m_<supf><mode>" 5863*0bfacb9bSmrg [ 5864*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5865*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5866*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5867*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5868*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5869*0bfacb9bSmrg VQADDQ_M)) 5870*0bfacb9bSmrg ] 5871*0bfacb9bSmrg "TARGET_HAVE_MVE" 5872*0bfacb9bSmrg "vpst\;vqaddt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 5873*0bfacb9bSmrg [(set_attr "type" "mve_move") 5874*0bfacb9bSmrg (set_attr "length""8")]) 5875*0bfacb9bSmrg 5876*0bfacb9bSmrg;; 5877*0bfacb9bSmrg;; [vqdmlahq_m_n_s]) 5878*0bfacb9bSmrg;; 5879*0bfacb9bSmrg(define_insn "mve_vqdmlahq_m_n_s<mode>" 5880*0bfacb9bSmrg [ 5881*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5882*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5883*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5884*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5885*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5886*0bfacb9bSmrg VQDMLAHQ_M_N_S)) 5887*0bfacb9bSmrg ] 5888*0bfacb9bSmrg "TARGET_HAVE_MVE" 5889*0bfacb9bSmrg "vpst\;vqdmlaht.s%#<V_sz_elem>\t%q0, %q2, %3" 5890*0bfacb9bSmrg [(set_attr "type" "mve_move") 5891*0bfacb9bSmrg (set_attr "length""8")]) 5892*0bfacb9bSmrg 5893*0bfacb9bSmrg;; 5894*0bfacb9bSmrg;; [vqdmlashq_m_n_s]) 5895*0bfacb9bSmrg;; 5896*0bfacb9bSmrg(define_insn "mve_vqdmlashq_m_n_s<mode>" 5897*0bfacb9bSmrg [ 5898*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5899*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5900*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5901*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5902*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5903*0bfacb9bSmrg VQDMLASHQ_M_N_S)) 5904*0bfacb9bSmrg ] 5905*0bfacb9bSmrg "TARGET_HAVE_MVE" 5906*0bfacb9bSmrg "vpst\;vqdmlasht.s%#<V_sz_elem>\t%q0, %q2, %3" 5907*0bfacb9bSmrg [(set_attr "type" "mve_move") 5908*0bfacb9bSmrg (set_attr "length""8")]) 5909*0bfacb9bSmrg 5910*0bfacb9bSmrg;; 5911*0bfacb9bSmrg;; [vqrdmlahq_m_n_s]) 5912*0bfacb9bSmrg;; 5913*0bfacb9bSmrg(define_insn "mve_vqrdmlahq_m_n_s<mode>" 5914*0bfacb9bSmrg [ 5915*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5916*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5917*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5918*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5919*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5920*0bfacb9bSmrg VQRDMLAHQ_M_N_S)) 5921*0bfacb9bSmrg ] 5922*0bfacb9bSmrg "TARGET_HAVE_MVE" 5923*0bfacb9bSmrg "vpst\;vqrdmlaht.s%#<V_sz_elem>\t%q0, %q2, %3" 5924*0bfacb9bSmrg [(set_attr "type" "mve_move") 5925*0bfacb9bSmrg (set_attr "length""8")]) 5926*0bfacb9bSmrg 5927*0bfacb9bSmrg;; 5928*0bfacb9bSmrg;; [vqrdmlashq_m_n_s]) 5929*0bfacb9bSmrg;; 5930*0bfacb9bSmrg(define_insn "mve_vqrdmlashq_m_n_s<mode>" 5931*0bfacb9bSmrg [ 5932*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5933*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5934*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5935*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 5936*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5937*0bfacb9bSmrg VQRDMLASHQ_M_N_S)) 5938*0bfacb9bSmrg ] 5939*0bfacb9bSmrg "TARGET_HAVE_MVE" 5940*0bfacb9bSmrg "vpst\;vqrdmlasht.s%#<V_sz_elem>\t%q0, %q2, %3" 5941*0bfacb9bSmrg [(set_attr "type" "mve_move") 5942*0bfacb9bSmrg (set_attr "length""8")]) 5943*0bfacb9bSmrg 5944*0bfacb9bSmrg;; 5945*0bfacb9bSmrg;; [vqrshlq_m_u, vqrshlq_m_s]) 5946*0bfacb9bSmrg;; 5947*0bfacb9bSmrg(define_insn "mve_vqrshlq_m_<supf><mode>" 5948*0bfacb9bSmrg [ 5949*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5950*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5951*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5952*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5953*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5954*0bfacb9bSmrg VQRSHLQ_M)) 5955*0bfacb9bSmrg ] 5956*0bfacb9bSmrg "TARGET_HAVE_MVE" 5957*0bfacb9bSmrg "vpst\;vqrshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 5958*0bfacb9bSmrg [(set_attr "type" "mve_move") 5959*0bfacb9bSmrg (set_attr "length""8")]) 5960*0bfacb9bSmrg 5961*0bfacb9bSmrg;; 5962*0bfacb9bSmrg;; [vqshlq_m_n_s, vqshlq_m_n_u]) 5963*0bfacb9bSmrg;; 5964*0bfacb9bSmrg(define_insn "mve_vqshlq_m_n_<supf><mode>" 5965*0bfacb9bSmrg [ 5966*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5967*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5968*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5969*0bfacb9bSmrg (match_operand:SI 3 "immediate_operand" "i") 5970*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5971*0bfacb9bSmrg VQSHLQ_M_N)) 5972*0bfacb9bSmrg ] 5973*0bfacb9bSmrg "TARGET_HAVE_MVE" 5974*0bfacb9bSmrg "vpst\;vqshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 5975*0bfacb9bSmrg [(set_attr "type" "mve_move") 5976*0bfacb9bSmrg (set_attr "length""8")]) 5977*0bfacb9bSmrg 5978*0bfacb9bSmrg;; 5979*0bfacb9bSmrg;; [vqshlq_m_u, vqshlq_m_s]) 5980*0bfacb9bSmrg;; 5981*0bfacb9bSmrg(define_insn "mve_vqshlq_m_<supf><mode>" 5982*0bfacb9bSmrg [ 5983*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 5984*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 5985*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 5986*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 5987*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 5988*0bfacb9bSmrg VQSHLQ_M)) 5989*0bfacb9bSmrg ] 5990*0bfacb9bSmrg "TARGET_HAVE_MVE" 5991*0bfacb9bSmrg "vpst\;vqshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 5992*0bfacb9bSmrg [(set_attr "type" "mve_move") 5993*0bfacb9bSmrg (set_attr "length""8")]) 5994*0bfacb9bSmrg 5995*0bfacb9bSmrg;; 5996*0bfacb9bSmrg;; [vqsubq_m_n_u, vqsubq_m_n_s]) 5997*0bfacb9bSmrg;; 5998*0bfacb9bSmrg(define_insn "mve_vqsubq_m_n_<supf><mode>" 5999*0bfacb9bSmrg [ 6000*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6001*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6002*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6003*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6004*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6005*0bfacb9bSmrg VQSUBQ_M_N)) 6006*0bfacb9bSmrg ] 6007*0bfacb9bSmrg "TARGET_HAVE_MVE" 6008*0bfacb9bSmrg "vpst\;vqsubt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6009*0bfacb9bSmrg [(set_attr "type" "mve_move") 6010*0bfacb9bSmrg (set_attr "length""8")]) 6011*0bfacb9bSmrg 6012*0bfacb9bSmrg;; 6013*0bfacb9bSmrg;; [vqsubq_m_u, vqsubq_m_s]) 6014*0bfacb9bSmrg;; 6015*0bfacb9bSmrg(define_insn "mve_vqsubq_m_<supf><mode>" 6016*0bfacb9bSmrg [ 6017*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6018*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6019*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6020*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6021*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6022*0bfacb9bSmrg VQSUBQ_M)) 6023*0bfacb9bSmrg ] 6024*0bfacb9bSmrg "TARGET_HAVE_MVE" 6025*0bfacb9bSmrg "vpst\;vqsubt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 6026*0bfacb9bSmrg [(set_attr "type" "mve_move") 6027*0bfacb9bSmrg (set_attr "length""8")]) 6028*0bfacb9bSmrg 6029*0bfacb9bSmrg;; 6030*0bfacb9bSmrg;; [vrhaddq_m_u, vrhaddq_m_s]) 6031*0bfacb9bSmrg;; 6032*0bfacb9bSmrg(define_insn "mve_vrhaddq_m_<supf><mode>" 6033*0bfacb9bSmrg [ 6034*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6035*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6036*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6037*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6038*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6039*0bfacb9bSmrg VRHADDQ_M)) 6040*0bfacb9bSmrg ] 6041*0bfacb9bSmrg "TARGET_HAVE_MVE" 6042*0bfacb9bSmrg "vpst\;vrhaddt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 6043*0bfacb9bSmrg [(set_attr "type" "mve_move") 6044*0bfacb9bSmrg (set_attr "length""8")]) 6045*0bfacb9bSmrg 6046*0bfacb9bSmrg;; 6047*0bfacb9bSmrg;; [vrmulhq_m_u, vrmulhq_m_s]) 6048*0bfacb9bSmrg;; 6049*0bfacb9bSmrg(define_insn "mve_vrmulhq_m_<supf><mode>" 6050*0bfacb9bSmrg [ 6051*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6052*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6053*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6054*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6055*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6056*0bfacb9bSmrg VRMULHQ_M)) 6057*0bfacb9bSmrg ] 6058*0bfacb9bSmrg "TARGET_HAVE_MVE" 6059*0bfacb9bSmrg "vpst\;vrmulht.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 6060*0bfacb9bSmrg [(set_attr "type" "mve_move") 6061*0bfacb9bSmrg (set_attr "length""8")]) 6062*0bfacb9bSmrg 6063*0bfacb9bSmrg;; 6064*0bfacb9bSmrg;; [vrshlq_m_s, vrshlq_m_u]) 6065*0bfacb9bSmrg;; 6066*0bfacb9bSmrg(define_insn "mve_vrshlq_m_<supf><mode>" 6067*0bfacb9bSmrg [ 6068*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6069*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6070*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6071*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6072*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6073*0bfacb9bSmrg VRSHLQ_M)) 6074*0bfacb9bSmrg ] 6075*0bfacb9bSmrg "TARGET_HAVE_MVE" 6076*0bfacb9bSmrg "vpst\;vrshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3" 6077*0bfacb9bSmrg [(set_attr "type" "mve_move") 6078*0bfacb9bSmrg (set_attr "length""8")]) 6079*0bfacb9bSmrg 6080*0bfacb9bSmrg;; 6081*0bfacb9bSmrg;; [vrshrq_m_n_s, vrshrq_m_n_u]) 6082*0bfacb9bSmrg;; 6083*0bfacb9bSmrg(define_insn "mve_vrshrq_m_n_<supf><mode>" 6084*0bfacb9bSmrg [ 6085*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6086*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6087*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6088*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>") 6089*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6090*0bfacb9bSmrg VRSHRQ_M_N)) 6091*0bfacb9bSmrg ] 6092*0bfacb9bSmrg "TARGET_HAVE_MVE" 6093*0bfacb9bSmrg "vpst\;vrshrt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6094*0bfacb9bSmrg [(set_attr "type" "mve_move") 6095*0bfacb9bSmrg (set_attr "length""8")]) 6096*0bfacb9bSmrg 6097*0bfacb9bSmrg;; 6098*0bfacb9bSmrg;; [vshlq_m_n_s, vshlq_m_n_u]) 6099*0bfacb9bSmrg;; 6100*0bfacb9bSmrg(define_insn "mve_vshlq_m_n_<supf><mode>" 6101*0bfacb9bSmrg [ 6102*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6103*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6104*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6105*0bfacb9bSmrg (match_operand:SI 3 "immediate_operand" "i") 6106*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6107*0bfacb9bSmrg VSHLQ_M_N)) 6108*0bfacb9bSmrg ] 6109*0bfacb9bSmrg "TARGET_HAVE_MVE" 6110*0bfacb9bSmrg "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6111*0bfacb9bSmrg [(set_attr "type" "mve_move") 6112*0bfacb9bSmrg (set_attr "length""8")]) 6113*0bfacb9bSmrg 6114*0bfacb9bSmrg;; 6115*0bfacb9bSmrg;; [vshrq_m_n_s, vshrq_m_n_u]) 6116*0bfacb9bSmrg;; 6117*0bfacb9bSmrg(define_insn "mve_vshrq_m_n_<supf><mode>" 6118*0bfacb9bSmrg [ 6119*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6120*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6121*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6122*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>") 6123*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6124*0bfacb9bSmrg VSHRQ_M_N)) 6125*0bfacb9bSmrg ] 6126*0bfacb9bSmrg "TARGET_HAVE_MVE" 6127*0bfacb9bSmrg "vpst\;vshrt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6128*0bfacb9bSmrg [(set_attr "type" "mve_move") 6129*0bfacb9bSmrg (set_attr "length""8")]) 6130*0bfacb9bSmrg 6131*0bfacb9bSmrg;; 6132*0bfacb9bSmrg;; [vsliq_m_n_u, vsliq_m_n_s]) 6133*0bfacb9bSmrg;; 6134*0bfacb9bSmrg(define_insn "mve_vsliq_m_n_<supf><mode>" 6135*0bfacb9bSmrg [ 6136*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6137*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6138*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6139*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>") 6140*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6141*0bfacb9bSmrg VSLIQ_M_N)) 6142*0bfacb9bSmrg ] 6143*0bfacb9bSmrg "TARGET_HAVE_MVE" 6144*0bfacb9bSmrg "vpst\;vslit.%#<V_sz_elem>\t%q0, %q2, %3" 6145*0bfacb9bSmrg [(set_attr "type" "mve_move") 6146*0bfacb9bSmrg (set_attr "length""8")]) 6147*0bfacb9bSmrg 6148*0bfacb9bSmrg;; 6149*0bfacb9bSmrg;; [vsubq_m_n_s, vsubq_m_n_u]) 6150*0bfacb9bSmrg;; 6151*0bfacb9bSmrg(define_insn "mve_vsubq_m_n_<supf><mode>" 6152*0bfacb9bSmrg [ 6153*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6154*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6155*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6156*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6157*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6158*0bfacb9bSmrg VSUBQ_M_N)) 6159*0bfacb9bSmrg ] 6160*0bfacb9bSmrg "TARGET_HAVE_MVE" 6161*0bfacb9bSmrg "vpst\;vsubt.i%#<V_sz_elem>\t%q0, %q2, %3" 6162*0bfacb9bSmrg [(set_attr "type" "mve_move") 6163*0bfacb9bSmrg (set_attr "length""8")]) 6164*0bfacb9bSmrg 6165*0bfacb9bSmrg;; 6166*0bfacb9bSmrg;; [vhcaddq_rot270_m_s]) 6167*0bfacb9bSmrg;; 6168*0bfacb9bSmrg(define_insn "mve_vhcaddq_rot270_m_s<mode>" 6169*0bfacb9bSmrg [ 6170*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 6171*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6172*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6173*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6174*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6175*0bfacb9bSmrg VHCADDQ_ROT270_M_S)) 6176*0bfacb9bSmrg ] 6177*0bfacb9bSmrg "TARGET_HAVE_MVE" 6178*0bfacb9bSmrg "vpst\;vhcaddt.s%#<V_sz_elem>\t%q0, %q2, %q3, #270" 6179*0bfacb9bSmrg [(set_attr "type" "mve_move") 6180*0bfacb9bSmrg (set_attr "length""8")]) 6181*0bfacb9bSmrg 6182*0bfacb9bSmrg;; 6183*0bfacb9bSmrg;; [vhcaddq_rot90_m_s]) 6184*0bfacb9bSmrg;; 6185*0bfacb9bSmrg(define_insn "mve_vhcaddq_rot90_m_s<mode>" 6186*0bfacb9bSmrg [ 6187*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>") 6188*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6189*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6190*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6191*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6192*0bfacb9bSmrg VHCADDQ_ROT90_M_S)) 6193*0bfacb9bSmrg ] 6194*0bfacb9bSmrg "TARGET_HAVE_MVE" 6195*0bfacb9bSmrg "vpst\;vhcaddt.s%#<V_sz_elem>\t%q0, %q2, %q3, #90" 6196*0bfacb9bSmrg [(set_attr "type" "mve_move") 6197*0bfacb9bSmrg (set_attr "length""8")]) 6198*0bfacb9bSmrg 6199*0bfacb9bSmrg;; 6200*0bfacb9bSmrg;; [vmladavaxq_p_s]) 6201*0bfacb9bSmrg;; 6202*0bfacb9bSmrg(define_insn "mve_vmladavaxq_p_s<mode>" 6203*0bfacb9bSmrg [ 6204*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 6205*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 6206*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6207*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6208*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6209*0bfacb9bSmrg VMLADAVAXQ_P_S)) 6210*0bfacb9bSmrg ] 6211*0bfacb9bSmrg "TARGET_HAVE_MVE" 6212*0bfacb9bSmrg "vpst\;vmladavaxt.s%#<V_sz_elem>\t%0, %q2, %q3" 6213*0bfacb9bSmrg [(set_attr "type" "mve_move") 6214*0bfacb9bSmrg (set_attr "length""8")]) 6215*0bfacb9bSmrg 6216*0bfacb9bSmrg;; 6217*0bfacb9bSmrg;; [vmlsdavaq_p_s]) 6218*0bfacb9bSmrg;; 6219*0bfacb9bSmrg(define_insn "mve_vmlsdavaq_p_s<mode>" 6220*0bfacb9bSmrg [ 6221*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 6222*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 6223*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6224*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6225*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6226*0bfacb9bSmrg VMLSDAVAQ_P_S)) 6227*0bfacb9bSmrg ] 6228*0bfacb9bSmrg "TARGET_HAVE_MVE" 6229*0bfacb9bSmrg "vpst\;vmlsdavat.s%#<V_sz_elem>\t%0, %q2, %q3" 6230*0bfacb9bSmrg [(set_attr "type" "mve_move") 6231*0bfacb9bSmrg (set_attr "length""8")]) 6232*0bfacb9bSmrg 6233*0bfacb9bSmrg;; 6234*0bfacb9bSmrg;; [vmlsdavaxq_p_s]) 6235*0bfacb9bSmrg;; 6236*0bfacb9bSmrg(define_insn "mve_vmlsdavaxq_p_s<mode>" 6237*0bfacb9bSmrg [ 6238*0bfacb9bSmrg (set (match_operand:SI 0 "s_register_operand" "=Te") 6239*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "s_register_operand" "0") 6240*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6241*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6242*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6243*0bfacb9bSmrg VMLSDAVAXQ_P_S)) 6244*0bfacb9bSmrg ] 6245*0bfacb9bSmrg "TARGET_HAVE_MVE" 6246*0bfacb9bSmrg "vpst\;vmlsdavaxt.s%#<V_sz_elem>\t%0, %q2, %q3" 6247*0bfacb9bSmrg [(set_attr "type" "mve_move") 6248*0bfacb9bSmrg (set_attr "length""8")]) 6249*0bfacb9bSmrg 6250*0bfacb9bSmrg;; 6251*0bfacb9bSmrg;; [vqdmladhq_m_s]) 6252*0bfacb9bSmrg;; 6253*0bfacb9bSmrg(define_insn "mve_vqdmladhq_m_s<mode>" 6254*0bfacb9bSmrg [ 6255*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6256*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6257*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6258*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6259*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6260*0bfacb9bSmrg VQDMLADHQ_M_S)) 6261*0bfacb9bSmrg ] 6262*0bfacb9bSmrg "TARGET_HAVE_MVE" 6263*0bfacb9bSmrg "vpst\;vqdmladht.s%#<V_sz_elem>\t%q0, %q2, %q3" 6264*0bfacb9bSmrg [(set_attr "type" "mve_move") 6265*0bfacb9bSmrg (set_attr "length""8")]) 6266*0bfacb9bSmrg 6267*0bfacb9bSmrg;; 6268*0bfacb9bSmrg;; [vqdmladhxq_m_s]) 6269*0bfacb9bSmrg;; 6270*0bfacb9bSmrg(define_insn "mve_vqdmladhxq_m_s<mode>" 6271*0bfacb9bSmrg [ 6272*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6273*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6274*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6275*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6276*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6277*0bfacb9bSmrg VQDMLADHXQ_M_S)) 6278*0bfacb9bSmrg ] 6279*0bfacb9bSmrg "TARGET_HAVE_MVE" 6280*0bfacb9bSmrg "vpst\;vqdmladhxt.s%#<V_sz_elem>\t%q0, %q2, %q3" 6281*0bfacb9bSmrg [(set_attr "type" "mve_move") 6282*0bfacb9bSmrg (set_attr "length""8")]) 6283*0bfacb9bSmrg 6284*0bfacb9bSmrg;; 6285*0bfacb9bSmrg;; [vqdmlsdhq_m_s]) 6286*0bfacb9bSmrg;; 6287*0bfacb9bSmrg(define_insn "mve_vqdmlsdhq_m_s<mode>" 6288*0bfacb9bSmrg [ 6289*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6290*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6291*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6292*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6293*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6294*0bfacb9bSmrg VQDMLSDHQ_M_S)) 6295*0bfacb9bSmrg ] 6296*0bfacb9bSmrg "TARGET_HAVE_MVE" 6297*0bfacb9bSmrg "vpst\;vqdmlsdht.s%#<V_sz_elem>\t%q0, %q2, %q3" 6298*0bfacb9bSmrg [(set_attr "type" "mve_move") 6299*0bfacb9bSmrg (set_attr "length""8")]) 6300*0bfacb9bSmrg 6301*0bfacb9bSmrg;; 6302*0bfacb9bSmrg;; [vqdmlsdhxq_m_s]) 6303*0bfacb9bSmrg;; 6304*0bfacb9bSmrg(define_insn "mve_vqdmlsdhxq_m_s<mode>" 6305*0bfacb9bSmrg [ 6306*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6307*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6308*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6309*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6310*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6311*0bfacb9bSmrg VQDMLSDHXQ_M_S)) 6312*0bfacb9bSmrg ] 6313*0bfacb9bSmrg "TARGET_HAVE_MVE" 6314*0bfacb9bSmrg "vpst\;vqdmlsdhxt.s%#<V_sz_elem>\t%q0, %q2, %q3" 6315*0bfacb9bSmrg [(set_attr "type" "mve_move") 6316*0bfacb9bSmrg (set_attr "length""8")]) 6317*0bfacb9bSmrg 6318*0bfacb9bSmrg;; 6319*0bfacb9bSmrg;; [vqdmulhq_m_n_s]) 6320*0bfacb9bSmrg;; 6321*0bfacb9bSmrg(define_insn "mve_vqdmulhq_m_n_s<mode>" 6322*0bfacb9bSmrg [ 6323*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6324*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6325*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6326*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6327*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6328*0bfacb9bSmrg VQDMULHQ_M_N_S)) 6329*0bfacb9bSmrg ] 6330*0bfacb9bSmrg "TARGET_HAVE_MVE" 6331*0bfacb9bSmrg "vpst\;vqdmulht.s%#<V_sz_elem>\t%q0, %q2, %3" 6332*0bfacb9bSmrg [(set_attr "type" "mve_move") 6333*0bfacb9bSmrg (set_attr "length""8")]) 6334*0bfacb9bSmrg 6335*0bfacb9bSmrg;; 6336*0bfacb9bSmrg;; [vqdmulhq_m_s]) 6337*0bfacb9bSmrg;; 6338*0bfacb9bSmrg(define_insn "mve_vqdmulhq_m_s<mode>" 6339*0bfacb9bSmrg [ 6340*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6341*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6342*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6343*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6344*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6345*0bfacb9bSmrg VQDMULHQ_M_S)) 6346*0bfacb9bSmrg ] 6347*0bfacb9bSmrg "TARGET_HAVE_MVE" 6348*0bfacb9bSmrg "vpst\;vqdmulht.s%#<V_sz_elem>\t%q0, %q2, %q3" 6349*0bfacb9bSmrg [(set_attr "type" "mve_move") 6350*0bfacb9bSmrg (set_attr "length""8")]) 6351*0bfacb9bSmrg 6352*0bfacb9bSmrg;; 6353*0bfacb9bSmrg;; [vqrdmladhq_m_s]) 6354*0bfacb9bSmrg;; 6355*0bfacb9bSmrg(define_insn "mve_vqrdmladhq_m_s<mode>" 6356*0bfacb9bSmrg [ 6357*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6358*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6359*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6360*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6361*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6362*0bfacb9bSmrg VQRDMLADHQ_M_S)) 6363*0bfacb9bSmrg ] 6364*0bfacb9bSmrg "TARGET_HAVE_MVE" 6365*0bfacb9bSmrg "vpst\;vqrdmladht.s%#<V_sz_elem>\t%q0, %q2, %q3" 6366*0bfacb9bSmrg [(set_attr "type" "mve_move") 6367*0bfacb9bSmrg (set_attr "length""8")]) 6368*0bfacb9bSmrg 6369*0bfacb9bSmrg;; 6370*0bfacb9bSmrg;; [vqrdmladhxq_m_s]) 6371*0bfacb9bSmrg;; 6372*0bfacb9bSmrg(define_insn "mve_vqrdmladhxq_m_s<mode>" 6373*0bfacb9bSmrg [ 6374*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6375*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6376*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6377*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6378*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6379*0bfacb9bSmrg VQRDMLADHXQ_M_S)) 6380*0bfacb9bSmrg ] 6381*0bfacb9bSmrg "TARGET_HAVE_MVE" 6382*0bfacb9bSmrg "vpst\;vqrdmladhxt.s%#<V_sz_elem>\t%q0, %q2, %q3" 6383*0bfacb9bSmrg [(set_attr "type" "mve_move") 6384*0bfacb9bSmrg (set_attr "length""8")]) 6385*0bfacb9bSmrg 6386*0bfacb9bSmrg;; 6387*0bfacb9bSmrg;; [vqrdmlsdhq_m_s]) 6388*0bfacb9bSmrg;; 6389*0bfacb9bSmrg(define_insn "mve_vqrdmlsdhq_m_s<mode>" 6390*0bfacb9bSmrg [ 6391*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6392*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6393*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6394*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6395*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6396*0bfacb9bSmrg VQRDMLSDHQ_M_S)) 6397*0bfacb9bSmrg ] 6398*0bfacb9bSmrg "TARGET_HAVE_MVE" 6399*0bfacb9bSmrg "vpst\;vqrdmlsdht.s%#<V_sz_elem>\t%q0, %q2, %q3" 6400*0bfacb9bSmrg [(set_attr "type" "mve_move") 6401*0bfacb9bSmrg (set_attr "length""8")]) 6402*0bfacb9bSmrg 6403*0bfacb9bSmrg;; 6404*0bfacb9bSmrg;; [vqrdmlsdhxq_m_s]) 6405*0bfacb9bSmrg;; 6406*0bfacb9bSmrg(define_insn "mve_vqrdmlsdhxq_m_s<mode>" 6407*0bfacb9bSmrg [ 6408*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6409*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6410*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6411*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6412*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6413*0bfacb9bSmrg VQRDMLSDHXQ_M_S)) 6414*0bfacb9bSmrg ] 6415*0bfacb9bSmrg "TARGET_HAVE_MVE" 6416*0bfacb9bSmrg "vpst\;vqrdmlsdhxt.s%#<V_sz_elem>\t%q0, %q2, %q3" 6417*0bfacb9bSmrg [(set_attr "type" "mve_move") 6418*0bfacb9bSmrg (set_attr "length""8")]) 6419*0bfacb9bSmrg 6420*0bfacb9bSmrg;; 6421*0bfacb9bSmrg;; [vqrdmulhq_m_n_s]) 6422*0bfacb9bSmrg;; 6423*0bfacb9bSmrg(define_insn "mve_vqrdmulhq_m_n_s<mode>" 6424*0bfacb9bSmrg [ 6425*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6426*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6427*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6428*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6429*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6430*0bfacb9bSmrg VQRDMULHQ_M_N_S)) 6431*0bfacb9bSmrg ] 6432*0bfacb9bSmrg "TARGET_HAVE_MVE" 6433*0bfacb9bSmrg "vpst\;vqrdmulht.s%#<V_sz_elem>\t%q0, %q2, %3" 6434*0bfacb9bSmrg [(set_attr "type" "mve_move") 6435*0bfacb9bSmrg (set_attr "length""8")]) 6436*0bfacb9bSmrg 6437*0bfacb9bSmrg;; 6438*0bfacb9bSmrg;; [vqrdmulhq_m_s]) 6439*0bfacb9bSmrg;; 6440*0bfacb9bSmrg(define_insn "mve_vqrdmulhq_m_s<mode>" 6441*0bfacb9bSmrg [ 6442*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 6443*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 6444*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 6445*0bfacb9bSmrg (match_operand:MVE_2 3 "s_register_operand" "w") 6446*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6447*0bfacb9bSmrg VQRDMULHQ_M_S)) 6448*0bfacb9bSmrg ] 6449*0bfacb9bSmrg "TARGET_HAVE_MVE" 6450*0bfacb9bSmrg "vpst\;vqrdmulht.s%#<V_sz_elem>\t%q0, %q2, %q3" 6451*0bfacb9bSmrg [(set_attr "type" "mve_move") 6452*0bfacb9bSmrg (set_attr "length""8")]) 6453*0bfacb9bSmrg 6454*0bfacb9bSmrg;; 6455*0bfacb9bSmrg;; [vmlaldavaq_p_u, vmlaldavaq_p_s]) 6456*0bfacb9bSmrg;; 6457*0bfacb9bSmrg(define_insn "mve_vmlaldavaq_p_<supf><mode>" 6458*0bfacb9bSmrg [ 6459*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6460*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6461*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6462*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w") 6463*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6464*0bfacb9bSmrg VMLALDAVAQ_P)) 6465*0bfacb9bSmrg ] 6466*0bfacb9bSmrg "TARGET_HAVE_MVE" 6467*0bfacb9bSmrg "vpst\;vmlaldavat.<supf>%#<V_sz_elem> %Q0, %R0, %q2, %q3" 6468*0bfacb9bSmrg [(set_attr "type" "mve_move") 6469*0bfacb9bSmrg (set_attr "length""8")]) 6470*0bfacb9bSmrg 6471*0bfacb9bSmrg;; 6472*0bfacb9bSmrg;; [vmlaldavaxq_p_s]) 6473*0bfacb9bSmrg;; 6474*0bfacb9bSmrg(define_insn "mve_vmlaldavaxq_p_<supf><mode>" 6475*0bfacb9bSmrg [ 6476*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6477*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6478*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6479*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w") 6480*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6481*0bfacb9bSmrg VMLALDAVAXQ_P)) 6482*0bfacb9bSmrg ] 6483*0bfacb9bSmrg "TARGET_HAVE_MVE" 6484*0bfacb9bSmrg "vpst\;vmlaldavaxt.<supf>%#<V_sz_elem> %Q0, %R0, %q2, %q3" 6485*0bfacb9bSmrg [(set_attr "type" "mve_move") 6486*0bfacb9bSmrg (set_attr "length""8")]) 6487*0bfacb9bSmrg 6488*0bfacb9bSmrg;; 6489*0bfacb9bSmrg;; [vqrshrnbq_m_n_u, vqrshrnbq_m_n_s]) 6490*0bfacb9bSmrg;; 6491*0bfacb9bSmrg(define_insn "mve_vqrshrnbq_m_n_<supf><mode>" 6492*0bfacb9bSmrg [ 6493*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6494*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6495*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6496*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb") 6497*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6498*0bfacb9bSmrg VQRSHRNBQ_M_N)) 6499*0bfacb9bSmrg ] 6500*0bfacb9bSmrg "TARGET_HAVE_MVE" 6501*0bfacb9bSmrg "vpst\;vqrshrnbt.<supf>%#<V_sz_elem> %q0, %q2, %3" 6502*0bfacb9bSmrg [(set_attr "type" "mve_move") 6503*0bfacb9bSmrg (set_attr "length""8")]) 6504*0bfacb9bSmrg 6505*0bfacb9bSmrg;; 6506*0bfacb9bSmrg;; [vqrshrntq_m_n_s, vqrshrntq_m_n_u]) 6507*0bfacb9bSmrg;; 6508*0bfacb9bSmrg(define_insn "mve_vqrshrntq_m_n_<supf><mode>" 6509*0bfacb9bSmrg [ 6510*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6511*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6512*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6513*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb") 6514*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6515*0bfacb9bSmrg VQRSHRNTQ_M_N)) 6516*0bfacb9bSmrg ] 6517*0bfacb9bSmrg "TARGET_HAVE_MVE" 6518*0bfacb9bSmrg "vpst\;vqrshrntt.<supf>%#<V_sz_elem> %q0, %q2, %3" 6519*0bfacb9bSmrg [(set_attr "type" "mve_move") 6520*0bfacb9bSmrg (set_attr "length""8")]) 6521*0bfacb9bSmrg 6522*0bfacb9bSmrg;; 6523*0bfacb9bSmrg;; [vqshrnbq_m_n_u, vqshrnbq_m_n_s]) 6524*0bfacb9bSmrg;; 6525*0bfacb9bSmrg(define_insn "mve_vqshrnbq_m_n_<supf><mode>" 6526*0bfacb9bSmrg [ 6527*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6528*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6529*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6530*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6531*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6532*0bfacb9bSmrg VQSHRNBQ_M_N)) 6533*0bfacb9bSmrg ] 6534*0bfacb9bSmrg "TARGET_HAVE_MVE" 6535*0bfacb9bSmrg "vpst\n\tvqshrnbt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6536*0bfacb9bSmrg [(set_attr "type" "mve_move") 6537*0bfacb9bSmrg (set_attr "length""8")]) 6538*0bfacb9bSmrg 6539*0bfacb9bSmrg;; 6540*0bfacb9bSmrg;; [vqshrntq_m_n_s, vqshrntq_m_n_u]) 6541*0bfacb9bSmrg;; 6542*0bfacb9bSmrg(define_insn "mve_vqshrntq_m_n_<supf><mode>" 6543*0bfacb9bSmrg [ 6544*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6545*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6546*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6547*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6548*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6549*0bfacb9bSmrg VQSHRNTQ_M_N)) 6550*0bfacb9bSmrg ] 6551*0bfacb9bSmrg "TARGET_HAVE_MVE" 6552*0bfacb9bSmrg "vpst\;vqshrntt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6553*0bfacb9bSmrg [(set_attr "type" "mve_move") 6554*0bfacb9bSmrg (set_attr "length""8")]) 6555*0bfacb9bSmrg 6556*0bfacb9bSmrg;; 6557*0bfacb9bSmrg;; [vrmlaldavhaq_p_s]) 6558*0bfacb9bSmrg;; 6559*0bfacb9bSmrg(define_insn "mve_vrmlaldavhaq_p_sv4si" 6560*0bfacb9bSmrg [ 6561*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6562*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6563*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 6564*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 6565*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6566*0bfacb9bSmrg VRMLALDAVHAQ_P_S)) 6567*0bfacb9bSmrg ] 6568*0bfacb9bSmrg "TARGET_HAVE_MVE" 6569*0bfacb9bSmrg "vpst\;vrmlaldavhat.s32\t%Q0, %R0, %q2, %q3" 6570*0bfacb9bSmrg [(set_attr "type" "mve_move") 6571*0bfacb9bSmrg (set_attr "length""8")]) 6572*0bfacb9bSmrg 6573*0bfacb9bSmrg;; 6574*0bfacb9bSmrg;; [vrshrnbq_m_n_u, vrshrnbq_m_n_s]) 6575*0bfacb9bSmrg;; 6576*0bfacb9bSmrg(define_insn "mve_vrshrnbq_m_n_<supf><mode>" 6577*0bfacb9bSmrg [ 6578*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6579*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6580*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6581*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb") 6582*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6583*0bfacb9bSmrg VRSHRNBQ_M_N)) 6584*0bfacb9bSmrg ] 6585*0bfacb9bSmrg "TARGET_HAVE_MVE" 6586*0bfacb9bSmrg "vpst\;vrshrnbt.i%#<V_sz_elem>\t%q0, %q2, %3" 6587*0bfacb9bSmrg [(set_attr "type" "mve_move") 6588*0bfacb9bSmrg (set_attr "length""8")]) 6589*0bfacb9bSmrg 6590*0bfacb9bSmrg;; 6591*0bfacb9bSmrg;; [vrshrntq_m_n_u, vrshrntq_m_n_s]) 6592*0bfacb9bSmrg;; 6593*0bfacb9bSmrg(define_insn "mve_vrshrntq_m_n_<supf><mode>" 6594*0bfacb9bSmrg [ 6595*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6596*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6597*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6598*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb") 6599*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6600*0bfacb9bSmrg VRSHRNTQ_M_N)) 6601*0bfacb9bSmrg ] 6602*0bfacb9bSmrg "TARGET_HAVE_MVE" 6603*0bfacb9bSmrg "vpst\;vrshrntt.i%#<V_sz_elem>\t%q0, %q2, %3" 6604*0bfacb9bSmrg [(set_attr "type" "mve_move") 6605*0bfacb9bSmrg (set_attr "length""8")]) 6606*0bfacb9bSmrg 6607*0bfacb9bSmrg;; 6608*0bfacb9bSmrg;; [vshllbq_m_n_u, vshllbq_m_n_s]) 6609*0bfacb9bSmrg;; 6610*0bfacb9bSmrg(define_insn "mve_vshllbq_m_n_<supf><mode>" 6611*0bfacb9bSmrg [ 6612*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 6613*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6614*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 6615*0bfacb9bSmrg (match_operand:SI 3 "immediate_operand" "i") 6616*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6617*0bfacb9bSmrg VSHLLBQ_M_N)) 6618*0bfacb9bSmrg ] 6619*0bfacb9bSmrg "TARGET_HAVE_MVE" 6620*0bfacb9bSmrg "vpst\;vshllbt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6621*0bfacb9bSmrg [(set_attr "type" "mve_move") 6622*0bfacb9bSmrg (set_attr "length""8")]) 6623*0bfacb9bSmrg 6624*0bfacb9bSmrg;; 6625*0bfacb9bSmrg;; [vshlltq_m_n_u, vshlltq_m_n_s]) 6626*0bfacb9bSmrg;; 6627*0bfacb9bSmrg(define_insn "mve_vshlltq_m_n_<supf><mode>" 6628*0bfacb9bSmrg [ 6629*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 6630*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6631*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 6632*0bfacb9bSmrg (match_operand:SI 3 "immediate_operand" "i") 6633*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6634*0bfacb9bSmrg VSHLLTQ_M_N)) 6635*0bfacb9bSmrg ] 6636*0bfacb9bSmrg "TARGET_HAVE_MVE" 6637*0bfacb9bSmrg "vpst\;vshlltt.<supf>%#<V_sz_elem>\t%q0, %q2, %3" 6638*0bfacb9bSmrg [(set_attr "type" "mve_move") 6639*0bfacb9bSmrg (set_attr "length""8")]) 6640*0bfacb9bSmrg 6641*0bfacb9bSmrg;; 6642*0bfacb9bSmrg;; [vshrnbq_m_n_s, vshrnbq_m_n_u]) 6643*0bfacb9bSmrg;; 6644*0bfacb9bSmrg(define_insn "mve_vshrnbq_m_n_<supf><mode>" 6645*0bfacb9bSmrg [ 6646*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6647*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6648*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6649*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6650*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6651*0bfacb9bSmrg VSHRNBQ_M_N)) 6652*0bfacb9bSmrg ] 6653*0bfacb9bSmrg "TARGET_HAVE_MVE" 6654*0bfacb9bSmrg "vpst\;vshrnbt.i%#<V_sz_elem>\t%q0, %q2, %3" 6655*0bfacb9bSmrg [(set_attr "type" "mve_move") 6656*0bfacb9bSmrg (set_attr "length""8")]) 6657*0bfacb9bSmrg 6658*0bfacb9bSmrg;; 6659*0bfacb9bSmrg;; [vshrntq_m_n_s, vshrntq_m_n_u]) 6660*0bfacb9bSmrg;; 6661*0bfacb9bSmrg(define_insn "mve_vshrntq_m_n_<supf><mode>" 6662*0bfacb9bSmrg [ 6663*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6664*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6665*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6666*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6667*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6668*0bfacb9bSmrg VSHRNTQ_M_N)) 6669*0bfacb9bSmrg ] 6670*0bfacb9bSmrg "TARGET_HAVE_MVE" 6671*0bfacb9bSmrg "vpst\;vshrntt.i%#<V_sz_elem>\t%q0, %q2, %3" 6672*0bfacb9bSmrg [(set_attr "type" "mve_move") 6673*0bfacb9bSmrg (set_attr "length""8")]) 6674*0bfacb9bSmrg 6675*0bfacb9bSmrg;; 6676*0bfacb9bSmrg;; [vmlsldavaq_p_s]) 6677*0bfacb9bSmrg;; 6678*0bfacb9bSmrg(define_insn "mve_vmlsldavaq_p_s<mode>" 6679*0bfacb9bSmrg [ 6680*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6681*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6682*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6683*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w") 6684*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6685*0bfacb9bSmrg VMLSLDAVAQ_P_S)) 6686*0bfacb9bSmrg ] 6687*0bfacb9bSmrg "TARGET_HAVE_MVE" 6688*0bfacb9bSmrg "vpst\;vmlsldavat.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3" 6689*0bfacb9bSmrg [(set_attr "type" "mve_move") 6690*0bfacb9bSmrg (set_attr "length""8")]) 6691*0bfacb9bSmrg 6692*0bfacb9bSmrg;; 6693*0bfacb9bSmrg;; [vmlsldavaxq_p_s]) 6694*0bfacb9bSmrg;; 6695*0bfacb9bSmrg(define_insn "mve_vmlsldavaxq_p_s<mode>" 6696*0bfacb9bSmrg [ 6697*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6698*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6699*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6700*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w") 6701*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6702*0bfacb9bSmrg VMLSLDAVAXQ_P_S)) 6703*0bfacb9bSmrg ] 6704*0bfacb9bSmrg "TARGET_HAVE_MVE" 6705*0bfacb9bSmrg "vpst\;vmlsldavaxt.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3" 6706*0bfacb9bSmrg [(set_attr "type" "mve_move") 6707*0bfacb9bSmrg (set_attr "length""8")]) 6708*0bfacb9bSmrg 6709*0bfacb9bSmrg;; 6710*0bfacb9bSmrg;; [vmullbq_poly_m_p]) 6711*0bfacb9bSmrg;; 6712*0bfacb9bSmrg(define_insn "mve_vmullbq_poly_m_p<mode>" 6713*0bfacb9bSmrg [ 6714*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 6715*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6716*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 6717*0bfacb9bSmrg (match_operand:MVE_3 3 "s_register_operand" "w") 6718*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6719*0bfacb9bSmrg VMULLBQ_POLY_M_P)) 6720*0bfacb9bSmrg ] 6721*0bfacb9bSmrg "TARGET_HAVE_MVE" 6722*0bfacb9bSmrg "vpst\;vmullbt.p%#<V_sz_elem>\t%q0, %q2, %q3" 6723*0bfacb9bSmrg [(set_attr "type" "mve_move") 6724*0bfacb9bSmrg (set_attr "length""8")]) 6725*0bfacb9bSmrg 6726*0bfacb9bSmrg;; 6727*0bfacb9bSmrg;; [vmulltq_poly_m_p]) 6728*0bfacb9bSmrg;; 6729*0bfacb9bSmrg(define_insn "mve_vmulltq_poly_m_p<mode>" 6730*0bfacb9bSmrg [ 6731*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "=w") 6732*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6733*0bfacb9bSmrg (match_operand:MVE_3 2 "s_register_operand" "w") 6734*0bfacb9bSmrg (match_operand:MVE_3 3 "s_register_operand" "w") 6735*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6736*0bfacb9bSmrg VMULLTQ_POLY_M_P)) 6737*0bfacb9bSmrg ] 6738*0bfacb9bSmrg "TARGET_HAVE_MVE" 6739*0bfacb9bSmrg "vpst\;vmulltt.p%#<V_sz_elem>\t%q0, %q2, %q3" 6740*0bfacb9bSmrg [(set_attr "type" "mve_move") 6741*0bfacb9bSmrg (set_attr "length""8")]) 6742*0bfacb9bSmrg 6743*0bfacb9bSmrg;; 6744*0bfacb9bSmrg;; [vqdmullbq_m_n_s]) 6745*0bfacb9bSmrg;; 6746*0bfacb9bSmrg(define_insn "mve_vqdmullbq_m_n_s<mode>" 6747*0bfacb9bSmrg [ 6748*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 6749*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6750*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6751*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6752*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6753*0bfacb9bSmrg VQDMULLBQ_M_N_S)) 6754*0bfacb9bSmrg ] 6755*0bfacb9bSmrg "TARGET_HAVE_MVE" 6756*0bfacb9bSmrg "vpst\;vqdmullbt.s%#<V_sz_elem>\t%q0, %q2, %3" 6757*0bfacb9bSmrg [(set_attr "type" "mve_move") 6758*0bfacb9bSmrg (set_attr "length""8")]) 6759*0bfacb9bSmrg 6760*0bfacb9bSmrg;; 6761*0bfacb9bSmrg;; [vqdmullbq_m_s]) 6762*0bfacb9bSmrg;; 6763*0bfacb9bSmrg(define_insn "mve_vqdmullbq_m_s<mode>" 6764*0bfacb9bSmrg [ 6765*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 6766*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6767*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6768*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w") 6769*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6770*0bfacb9bSmrg VQDMULLBQ_M_S)) 6771*0bfacb9bSmrg ] 6772*0bfacb9bSmrg "TARGET_HAVE_MVE" 6773*0bfacb9bSmrg "vpst\;vqdmullbt.s%#<V_sz_elem>\t%q0, %q2, %q3" 6774*0bfacb9bSmrg [(set_attr "type" "mve_move") 6775*0bfacb9bSmrg (set_attr "length""8")]) 6776*0bfacb9bSmrg 6777*0bfacb9bSmrg;; 6778*0bfacb9bSmrg;; [vqdmulltq_m_n_s]) 6779*0bfacb9bSmrg;; 6780*0bfacb9bSmrg(define_insn "mve_vqdmulltq_m_n_s<mode>" 6781*0bfacb9bSmrg [ 6782*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 6783*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6784*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6785*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6786*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6787*0bfacb9bSmrg VQDMULLTQ_M_N_S)) 6788*0bfacb9bSmrg ] 6789*0bfacb9bSmrg "TARGET_HAVE_MVE" 6790*0bfacb9bSmrg "vpst\;vqdmulltt.s%#<V_sz_elem>\t%q0, %q2, %3" 6791*0bfacb9bSmrg [(set_attr "type" "mve_move") 6792*0bfacb9bSmrg (set_attr "length""8")]) 6793*0bfacb9bSmrg 6794*0bfacb9bSmrg;; 6795*0bfacb9bSmrg;; [vqdmulltq_m_s]) 6796*0bfacb9bSmrg;; 6797*0bfacb9bSmrg(define_insn "mve_vqdmulltq_m_s<mode>" 6798*0bfacb9bSmrg [ 6799*0bfacb9bSmrg (set (match_operand:<V_double_width> 0 "s_register_operand" "<earlyclobber_32>") 6800*0bfacb9bSmrg (unspec:<V_double_width> [(match_operand:<V_double_width> 1 "s_register_operand" "0") 6801*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6802*0bfacb9bSmrg (match_operand:MVE_5 3 "s_register_operand" "w") 6803*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6804*0bfacb9bSmrg VQDMULLTQ_M_S)) 6805*0bfacb9bSmrg ] 6806*0bfacb9bSmrg "TARGET_HAVE_MVE" 6807*0bfacb9bSmrg "vpst\;vqdmulltt.s%#<V_sz_elem>\t%q0, %q2, %q3" 6808*0bfacb9bSmrg [(set_attr "type" "mve_move") 6809*0bfacb9bSmrg (set_attr "length""8")]) 6810*0bfacb9bSmrg 6811*0bfacb9bSmrg;; 6812*0bfacb9bSmrg;; [vqrshrunbq_m_n_s]) 6813*0bfacb9bSmrg;; 6814*0bfacb9bSmrg(define_insn "mve_vqrshrunbq_m_n_s<mode>" 6815*0bfacb9bSmrg [ 6816*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6817*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6818*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6819*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_8" "Rb") 6820*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6821*0bfacb9bSmrg VQRSHRUNBQ_M_N_S)) 6822*0bfacb9bSmrg ] 6823*0bfacb9bSmrg "TARGET_HAVE_MVE" 6824*0bfacb9bSmrg "vpst\;vqrshrunbt.s%#<V_sz_elem>\t%q0, %q2, %3" 6825*0bfacb9bSmrg [(set_attr "type" "mve_move") 6826*0bfacb9bSmrg (set_attr "length""8")]) 6827*0bfacb9bSmrg 6828*0bfacb9bSmrg;; 6829*0bfacb9bSmrg;; [vqrshruntq_m_n_s]) 6830*0bfacb9bSmrg;; 6831*0bfacb9bSmrg(define_insn "mve_vqrshruntq_m_n_s<mode>" 6832*0bfacb9bSmrg [ 6833*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6834*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6835*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6836*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6837*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6838*0bfacb9bSmrg VQRSHRUNTQ_M_N_S)) 6839*0bfacb9bSmrg ] 6840*0bfacb9bSmrg "TARGET_HAVE_MVE" 6841*0bfacb9bSmrg "vpst\;vqrshruntt.s%#<V_sz_elem>\t%q0, %q2, %3" 6842*0bfacb9bSmrg [(set_attr "type" "mve_move") 6843*0bfacb9bSmrg (set_attr "length""8")]) 6844*0bfacb9bSmrg 6845*0bfacb9bSmrg;; 6846*0bfacb9bSmrg;; [vqshrunbq_m_n_s]) 6847*0bfacb9bSmrg;; 6848*0bfacb9bSmrg(define_insn "mve_vqshrunbq_m_n_s<mode>" 6849*0bfacb9bSmrg [ 6850*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6851*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6852*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6853*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6854*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6855*0bfacb9bSmrg VQSHRUNBQ_M_N_S)) 6856*0bfacb9bSmrg ] 6857*0bfacb9bSmrg "TARGET_HAVE_MVE" 6858*0bfacb9bSmrg "vpst\;vqshrunbt.s%#<V_sz_elem>\t%q0, %q2, %3" 6859*0bfacb9bSmrg [(set_attr "type" "mve_move") 6860*0bfacb9bSmrg (set_attr "length""8")]) 6861*0bfacb9bSmrg 6862*0bfacb9bSmrg;; 6863*0bfacb9bSmrg;; [vqshruntq_m_n_s]) 6864*0bfacb9bSmrg;; 6865*0bfacb9bSmrg(define_insn "mve_vqshruntq_m_n_s<mode>" 6866*0bfacb9bSmrg [ 6867*0bfacb9bSmrg (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") 6868*0bfacb9bSmrg (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") 6869*0bfacb9bSmrg (match_operand:MVE_5 2 "s_register_operand" "w") 6870*0bfacb9bSmrg (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") 6871*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6872*0bfacb9bSmrg VQSHRUNTQ_M_N_S)) 6873*0bfacb9bSmrg ] 6874*0bfacb9bSmrg "TARGET_HAVE_MVE" 6875*0bfacb9bSmrg "vpst\;vqshruntt.s%#<V_sz_elem>\t%q0, %q2, %3" 6876*0bfacb9bSmrg [(set_attr "type" "mve_move") 6877*0bfacb9bSmrg (set_attr "length""8")]) 6878*0bfacb9bSmrg 6879*0bfacb9bSmrg;; 6880*0bfacb9bSmrg;; [vrmlaldavhaq_p_u]) 6881*0bfacb9bSmrg;; 6882*0bfacb9bSmrg(define_insn "mve_vrmlaldavhaq_p_uv4si" 6883*0bfacb9bSmrg [ 6884*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6885*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6886*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 6887*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 6888*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6889*0bfacb9bSmrg VRMLALDAVHAQ_P_U)) 6890*0bfacb9bSmrg ] 6891*0bfacb9bSmrg "TARGET_HAVE_MVE" 6892*0bfacb9bSmrg "vpst\;vrmlaldavhat.u32\t%Q0, %R0, %q2, %q3" 6893*0bfacb9bSmrg [(set_attr "type" "mve_move") 6894*0bfacb9bSmrg (set_attr "length""8")]) 6895*0bfacb9bSmrg 6896*0bfacb9bSmrg;; 6897*0bfacb9bSmrg;; [vrmlaldavhaxq_p_s]) 6898*0bfacb9bSmrg;; 6899*0bfacb9bSmrg(define_insn "mve_vrmlaldavhaxq_p_sv4si" 6900*0bfacb9bSmrg [ 6901*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6902*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6903*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 6904*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 6905*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6906*0bfacb9bSmrg VRMLALDAVHAXQ_P_S)) 6907*0bfacb9bSmrg ] 6908*0bfacb9bSmrg "TARGET_HAVE_MVE" 6909*0bfacb9bSmrg "vpst\;vrmlaldavhaxt.s32\t%Q0, %R0, %q2, %q3" 6910*0bfacb9bSmrg [(set_attr "type" "mve_move") 6911*0bfacb9bSmrg (set_attr "length""8")]) 6912*0bfacb9bSmrg 6913*0bfacb9bSmrg;; 6914*0bfacb9bSmrg;; [vrmlsldavhaq_p_s]) 6915*0bfacb9bSmrg;; 6916*0bfacb9bSmrg(define_insn "mve_vrmlsldavhaq_p_sv4si" 6917*0bfacb9bSmrg [ 6918*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6919*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6920*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 6921*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 6922*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6923*0bfacb9bSmrg VRMLSLDAVHAQ_P_S)) 6924*0bfacb9bSmrg ] 6925*0bfacb9bSmrg "TARGET_HAVE_MVE" 6926*0bfacb9bSmrg "vpst\;vrmlsldavhat.s32\t%Q0, %R0, %q2, %q3" 6927*0bfacb9bSmrg [(set_attr "type" "mve_move") 6928*0bfacb9bSmrg (set_attr "length""8")]) 6929*0bfacb9bSmrg 6930*0bfacb9bSmrg;; 6931*0bfacb9bSmrg;; [vrmlsldavhaxq_p_s]) 6932*0bfacb9bSmrg;; 6933*0bfacb9bSmrg(define_insn "mve_vrmlsldavhaxq_p_sv4si" 6934*0bfacb9bSmrg [ 6935*0bfacb9bSmrg (set (match_operand:DI 0 "s_register_operand" "=r") 6936*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "s_register_operand" "0") 6937*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 6938*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 6939*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6940*0bfacb9bSmrg VRMLSLDAVHAXQ_P_S)) 6941*0bfacb9bSmrg ] 6942*0bfacb9bSmrg "TARGET_HAVE_MVE" 6943*0bfacb9bSmrg "vpst\;vrmlsldavhaxt.s32\t%Q0, %R0, %q2, %q3" 6944*0bfacb9bSmrg [(set_attr "type" "mve_move") 6945*0bfacb9bSmrg (set_attr "length""8")]) 6946*0bfacb9bSmrg;; 6947*0bfacb9bSmrg;; [vabdq_m_f]) 6948*0bfacb9bSmrg;; 6949*0bfacb9bSmrg(define_insn "mve_vabdq_m_f<mode>" 6950*0bfacb9bSmrg [ 6951*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 6952*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 6953*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 6954*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 6955*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6956*0bfacb9bSmrg VABDQ_M_F)) 6957*0bfacb9bSmrg ] 6958*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 6959*0bfacb9bSmrg "vpst\;vabdt.f%#<V_sz_elem> %q0, %q2, %q3" 6960*0bfacb9bSmrg [(set_attr "type" "mve_move") 6961*0bfacb9bSmrg (set_attr "length""8")]) 6962*0bfacb9bSmrg 6963*0bfacb9bSmrg;; 6964*0bfacb9bSmrg;; [vaddq_m_f]) 6965*0bfacb9bSmrg;; 6966*0bfacb9bSmrg(define_insn "mve_vaddq_m_f<mode>" 6967*0bfacb9bSmrg [ 6968*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 6969*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 6970*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 6971*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 6972*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6973*0bfacb9bSmrg VADDQ_M_F)) 6974*0bfacb9bSmrg ] 6975*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 6976*0bfacb9bSmrg "vpst\;vaddt.f%#<V_sz_elem> %q0, %q2, %q3" 6977*0bfacb9bSmrg [(set_attr "type" "mve_move") 6978*0bfacb9bSmrg (set_attr "length""8")]) 6979*0bfacb9bSmrg 6980*0bfacb9bSmrg;; 6981*0bfacb9bSmrg;; [vaddq_m_n_f]) 6982*0bfacb9bSmrg;; 6983*0bfacb9bSmrg(define_insn "mve_vaddq_m_n_f<mode>" 6984*0bfacb9bSmrg [ 6985*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 6986*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 6987*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 6988*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 6989*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 6990*0bfacb9bSmrg VADDQ_M_N_F)) 6991*0bfacb9bSmrg ] 6992*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 6993*0bfacb9bSmrg "vpst\;vaddt.f%#<V_sz_elem> %q0, %q2, %3" 6994*0bfacb9bSmrg [(set_attr "type" "mve_move") 6995*0bfacb9bSmrg (set_attr "length""8")]) 6996*0bfacb9bSmrg 6997*0bfacb9bSmrg;; 6998*0bfacb9bSmrg;; [vandq_m_f]) 6999*0bfacb9bSmrg;; 7000*0bfacb9bSmrg(define_insn "mve_vandq_m_f<mode>" 7001*0bfacb9bSmrg [ 7002*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7003*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7004*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7005*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7006*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7007*0bfacb9bSmrg VANDQ_M_F)) 7008*0bfacb9bSmrg ] 7009*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7010*0bfacb9bSmrg "vpst\;vandt %q0, %q2, %q3" 7011*0bfacb9bSmrg [(set_attr "type" "mve_move") 7012*0bfacb9bSmrg (set_attr "length""8")]) 7013*0bfacb9bSmrg 7014*0bfacb9bSmrg;; 7015*0bfacb9bSmrg;; [vbicq_m_f]) 7016*0bfacb9bSmrg;; 7017*0bfacb9bSmrg(define_insn "mve_vbicq_m_f<mode>" 7018*0bfacb9bSmrg [ 7019*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7020*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7021*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7022*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7023*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7024*0bfacb9bSmrg VBICQ_M_F)) 7025*0bfacb9bSmrg ] 7026*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7027*0bfacb9bSmrg "vpst\;vbict %q0, %q2, %q3" 7028*0bfacb9bSmrg [(set_attr "type" "mve_move") 7029*0bfacb9bSmrg (set_attr "length""8")]) 7030*0bfacb9bSmrg 7031*0bfacb9bSmrg;; 7032*0bfacb9bSmrg;; [vbrsrq_m_n_f]) 7033*0bfacb9bSmrg;; 7034*0bfacb9bSmrg(define_insn "mve_vbrsrq_m_n_f<mode>" 7035*0bfacb9bSmrg [ 7036*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7037*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7038*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7039*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "r") 7040*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7041*0bfacb9bSmrg VBRSRQ_M_N_F)) 7042*0bfacb9bSmrg ] 7043*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7044*0bfacb9bSmrg "vpst\;vbrsrt.%#<V_sz_elem> %q0, %q2, %3" 7045*0bfacb9bSmrg [(set_attr "type" "mve_move") 7046*0bfacb9bSmrg (set_attr "length""8")]) 7047*0bfacb9bSmrg 7048*0bfacb9bSmrg;; 7049*0bfacb9bSmrg;; [vcaddq_rot270_m_f]) 7050*0bfacb9bSmrg;; 7051*0bfacb9bSmrg(define_insn "mve_vcaddq_rot270_m_f<mode>" 7052*0bfacb9bSmrg [ 7053*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 7054*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7055*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7056*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7057*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7058*0bfacb9bSmrg VCADDQ_ROT270_M_F)) 7059*0bfacb9bSmrg ] 7060*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7061*0bfacb9bSmrg "vpst\;vcaddt.f%#<V_sz_elem> %q0, %q2, %q3, #270" 7062*0bfacb9bSmrg [(set_attr "type" "mve_move") 7063*0bfacb9bSmrg (set_attr "length""8")]) 7064*0bfacb9bSmrg 7065*0bfacb9bSmrg;; 7066*0bfacb9bSmrg;; [vcaddq_rot90_m_f]) 7067*0bfacb9bSmrg;; 7068*0bfacb9bSmrg(define_insn "mve_vcaddq_rot90_m_f<mode>" 7069*0bfacb9bSmrg [ 7070*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 7071*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7072*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7073*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7074*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7075*0bfacb9bSmrg VCADDQ_ROT90_M_F)) 7076*0bfacb9bSmrg ] 7077*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7078*0bfacb9bSmrg "vpst\;vcaddt.f%#<V_sz_elem> %q0, %q2, %q3, #90" 7079*0bfacb9bSmrg [(set_attr "type" "mve_move") 7080*0bfacb9bSmrg (set_attr "length""8")]) 7081*0bfacb9bSmrg 7082*0bfacb9bSmrg;; 7083*0bfacb9bSmrg;; [vcmlaq_m_f]) 7084*0bfacb9bSmrg;; 7085*0bfacb9bSmrg(define_insn "mve_vcmlaq_m_f<mode>" 7086*0bfacb9bSmrg [ 7087*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7088*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7089*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7090*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7091*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7092*0bfacb9bSmrg VCMLAQ_M_F)) 7093*0bfacb9bSmrg ] 7094*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7095*0bfacb9bSmrg "vpst\;vcmlat.f%#<V_sz_elem> %q0, %q2, %q3, #0" 7096*0bfacb9bSmrg [(set_attr "type" "mve_move") 7097*0bfacb9bSmrg (set_attr "length""8")]) 7098*0bfacb9bSmrg 7099*0bfacb9bSmrg;; 7100*0bfacb9bSmrg;; [vcmlaq_rot180_m_f]) 7101*0bfacb9bSmrg;; 7102*0bfacb9bSmrg(define_insn "mve_vcmlaq_rot180_m_f<mode>" 7103*0bfacb9bSmrg [ 7104*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7105*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7106*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7107*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7108*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7109*0bfacb9bSmrg VCMLAQ_ROT180_M_F)) 7110*0bfacb9bSmrg ] 7111*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7112*0bfacb9bSmrg "vpst\;vcmlat.f%#<V_sz_elem> %q0, %q2, %q3, #180" 7113*0bfacb9bSmrg [(set_attr "type" "mve_move") 7114*0bfacb9bSmrg (set_attr "length""8")]) 7115*0bfacb9bSmrg 7116*0bfacb9bSmrg;; 7117*0bfacb9bSmrg;; [vcmlaq_rot270_m_f]) 7118*0bfacb9bSmrg;; 7119*0bfacb9bSmrg(define_insn "mve_vcmlaq_rot270_m_f<mode>" 7120*0bfacb9bSmrg [ 7121*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7122*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7123*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7124*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7125*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7126*0bfacb9bSmrg VCMLAQ_ROT270_M_F)) 7127*0bfacb9bSmrg ] 7128*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7129*0bfacb9bSmrg "vpst\;vcmlat.f%#<V_sz_elem> %q0, %q2, %q3, #270" 7130*0bfacb9bSmrg [(set_attr "type" "mve_move") 7131*0bfacb9bSmrg (set_attr "length""8")]) 7132*0bfacb9bSmrg 7133*0bfacb9bSmrg;; 7134*0bfacb9bSmrg;; [vcmlaq_rot90_m_f]) 7135*0bfacb9bSmrg;; 7136*0bfacb9bSmrg(define_insn "mve_vcmlaq_rot90_m_f<mode>" 7137*0bfacb9bSmrg [ 7138*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7139*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7140*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7141*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7142*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7143*0bfacb9bSmrg VCMLAQ_ROT90_M_F)) 7144*0bfacb9bSmrg ] 7145*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7146*0bfacb9bSmrg "vpst\;vcmlat.f%#<V_sz_elem> %q0, %q2, %q3, #90" 7147*0bfacb9bSmrg [(set_attr "type" "mve_move") 7148*0bfacb9bSmrg (set_attr "length""8")]) 7149*0bfacb9bSmrg 7150*0bfacb9bSmrg;; 7151*0bfacb9bSmrg;; [vcmulq_m_f]) 7152*0bfacb9bSmrg;; 7153*0bfacb9bSmrg(define_insn "mve_vcmulq_m_f<mode>" 7154*0bfacb9bSmrg [ 7155*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 7156*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7157*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7158*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7159*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7160*0bfacb9bSmrg VCMULQ_M_F)) 7161*0bfacb9bSmrg ] 7162*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7163*0bfacb9bSmrg "vpst\;vcmult.f%#<V_sz_elem> %q0, %q2, %q3, #0" 7164*0bfacb9bSmrg [(set_attr "type" "mve_move") 7165*0bfacb9bSmrg (set_attr "length""8")]) 7166*0bfacb9bSmrg 7167*0bfacb9bSmrg;; 7168*0bfacb9bSmrg;; [vcmulq_rot180_m_f]) 7169*0bfacb9bSmrg;; 7170*0bfacb9bSmrg(define_insn "mve_vcmulq_rot180_m_f<mode>" 7171*0bfacb9bSmrg [ 7172*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 7173*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7174*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7175*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7176*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7177*0bfacb9bSmrg VCMULQ_ROT180_M_F)) 7178*0bfacb9bSmrg ] 7179*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7180*0bfacb9bSmrg "vpst\;vcmult.f%#<V_sz_elem> %q0, %q2, %q3, #180" 7181*0bfacb9bSmrg [(set_attr "type" "mve_move") 7182*0bfacb9bSmrg (set_attr "length""8")]) 7183*0bfacb9bSmrg 7184*0bfacb9bSmrg;; 7185*0bfacb9bSmrg;; [vcmulq_rot270_m_f]) 7186*0bfacb9bSmrg;; 7187*0bfacb9bSmrg(define_insn "mve_vcmulq_rot270_m_f<mode>" 7188*0bfacb9bSmrg [ 7189*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 7190*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7191*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7192*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7193*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7194*0bfacb9bSmrg VCMULQ_ROT270_M_F)) 7195*0bfacb9bSmrg ] 7196*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7197*0bfacb9bSmrg "vpst\;vcmult.f%#<V_sz_elem> %q0, %q2, %q3, #270" 7198*0bfacb9bSmrg [(set_attr "type" "mve_move") 7199*0bfacb9bSmrg (set_attr "length""8")]) 7200*0bfacb9bSmrg 7201*0bfacb9bSmrg;; 7202*0bfacb9bSmrg;; [vcmulq_rot90_m_f]) 7203*0bfacb9bSmrg;; 7204*0bfacb9bSmrg(define_insn "mve_vcmulq_rot90_m_f<mode>" 7205*0bfacb9bSmrg [ 7206*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "<earlyclobber_32>") 7207*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7208*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7209*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7210*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7211*0bfacb9bSmrg VCMULQ_ROT90_M_F)) 7212*0bfacb9bSmrg ] 7213*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7214*0bfacb9bSmrg "vpst\;vcmult.f%#<V_sz_elem> %q0, %q2, %q3, #90" 7215*0bfacb9bSmrg [(set_attr "type" "mve_move") 7216*0bfacb9bSmrg (set_attr "length""8")]) 7217*0bfacb9bSmrg 7218*0bfacb9bSmrg;; 7219*0bfacb9bSmrg;; [veorq_m_f]) 7220*0bfacb9bSmrg;; 7221*0bfacb9bSmrg(define_insn "mve_veorq_m_f<mode>" 7222*0bfacb9bSmrg [ 7223*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7224*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7225*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7226*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7227*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7228*0bfacb9bSmrg VEORQ_M_F)) 7229*0bfacb9bSmrg ] 7230*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7231*0bfacb9bSmrg "vpst\;veort %q0, %q2, %q3" 7232*0bfacb9bSmrg [(set_attr "type" "mve_move") 7233*0bfacb9bSmrg (set_attr "length""8")]) 7234*0bfacb9bSmrg 7235*0bfacb9bSmrg;; 7236*0bfacb9bSmrg;; [vfmaq_m_f]) 7237*0bfacb9bSmrg;; 7238*0bfacb9bSmrg(define_insn "mve_vfmaq_m_f<mode>" 7239*0bfacb9bSmrg [ 7240*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7241*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7242*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7243*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7244*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7245*0bfacb9bSmrg VFMAQ_M_F)) 7246*0bfacb9bSmrg ] 7247*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7248*0bfacb9bSmrg "vpst\;vfmat.f%#<V_sz_elem> %q0, %q2, %q3" 7249*0bfacb9bSmrg [(set_attr "type" "mve_move") 7250*0bfacb9bSmrg (set_attr "length""8")]) 7251*0bfacb9bSmrg 7252*0bfacb9bSmrg;; 7253*0bfacb9bSmrg;; [vfmaq_m_n_f]) 7254*0bfacb9bSmrg;; 7255*0bfacb9bSmrg(define_insn "mve_vfmaq_m_n_f<mode>" 7256*0bfacb9bSmrg [ 7257*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7258*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7259*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7260*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 7261*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7262*0bfacb9bSmrg VFMAQ_M_N_F)) 7263*0bfacb9bSmrg ] 7264*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7265*0bfacb9bSmrg "vpst\;vfmat.f%#<V_sz_elem> %q0, %q2, %3" 7266*0bfacb9bSmrg [(set_attr "type" "mve_move") 7267*0bfacb9bSmrg (set_attr "length""8")]) 7268*0bfacb9bSmrg 7269*0bfacb9bSmrg;; 7270*0bfacb9bSmrg;; [vfmasq_m_n_f]) 7271*0bfacb9bSmrg;; 7272*0bfacb9bSmrg(define_insn "mve_vfmasq_m_n_f<mode>" 7273*0bfacb9bSmrg [ 7274*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7275*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7276*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7277*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 7278*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7279*0bfacb9bSmrg VFMASQ_M_N_F)) 7280*0bfacb9bSmrg ] 7281*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7282*0bfacb9bSmrg "vpst\;vfmast.f%#<V_sz_elem> %q0, %q2, %3" 7283*0bfacb9bSmrg [(set_attr "type" "mve_move") 7284*0bfacb9bSmrg (set_attr "length""8")]) 7285*0bfacb9bSmrg 7286*0bfacb9bSmrg;; 7287*0bfacb9bSmrg;; [vfmsq_m_f]) 7288*0bfacb9bSmrg;; 7289*0bfacb9bSmrg(define_insn "mve_vfmsq_m_f<mode>" 7290*0bfacb9bSmrg [ 7291*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7292*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7293*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7294*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7295*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7296*0bfacb9bSmrg VFMSQ_M_F)) 7297*0bfacb9bSmrg ] 7298*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7299*0bfacb9bSmrg "vpst\;vfmst.f%#<V_sz_elem> %q0, %q2, %q3" 7300*0bfacb9bSmrg [(set_attr "type" "mve_move") 7301*0bfacb9bSmrg (set_attr "length""8")]) 7302*0bfacb9bSmrg 7303*0bfacb9bSmrg;; 7304*0bfacb9bSmrg;; [vmaxnmq_m_f]) 7305*0bfacb9bSmrg;; 7306*0bfacb9bSmrg(define_insn "mve_vmaxnmq_m_f<mode>" 7307*0bfacb9bSmrg [ 7308*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7309*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7310*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7311*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7312*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7313*0bfacb9bSmrg VMAXNMQ_M_F)) 7314*0bfacb9bSmrg ] 7315*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7316*0bfacb9bSmrg "vpst\;vmaxnmt.f%#<V_sz_elem> %q0, %q2, %q3" 7317*0bfacb9bSmrg [(set_attr "type" "mve_move") 7318*0bfacb9bSmrg (set_attr "length""8")]) 7319*0bfacb9bSmrg 7320*0bfacb9bSmrg;; 7321*0bfacb9bSmrg;; [vminnmq_m_f]) 7322*0bfacb9bSmrg;; 7323*0bfacb9bSmrg(define_insn "mve_vminnmq_m_f<mode>" 7324*0bfacb9bSmrg [ 7325*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7326*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7327*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7328*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7329*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7330*0bfacb9bSmrg VMINNMQ_M_F)) 7331*0bfacb9bSmrg ] 7332*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7333*0bfacb9bSmrg "vpst\;vminnmt.f%#<V_sz_elem> %q0, %q2, %q3" 7334*0bfacb9bSmrg [(set_attr "type" "mve_move") 7335*0bfacb9bSmrg (set_attr "length""8")]) 7336*0bfacb9bSmrg 7337*0bfacb9bSmrg;; 7338*0bfacb9bSmrg;; [vmulq_m_f]) 7339*0bfacb9bSmrg;; 7340*0bfacb9bSmrg(define_insn "mve_vmulq_m_f<mode>" 7341*0bfacb9bSmrg [ 7342*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7343*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7344*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7345*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7346*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7347*0bfacb9bSmrg VMULQ_M_F)) 7348*0bfacb9bSmrg ] 7349*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7350*0bfacb9bSmrg "vpst\;vmult.f%#<V_sz_elem> %q0, %q2, %q3" 7351*0bfacb9bSmrg [(set_attr "type" "mve_move") 7352*0bfacb9bSmrg (set_attr "length""8")]) 7353*0bfacb9bSmrg 7354*0bfacb9bSmrg;; 7355*0bfacb9bSmrg;; [vmulq_m_n_f]) 7356*0bfacb9bSmrg;; 7357*0bfacb9bSmrg(define_insn "mve_vmulq_m_n_f<mode>" 7358*0bfacb9bSmrg [ 7359*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7360*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7361*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7362*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 7363*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7364*0bfacb9bSmrg VMULQ_M_N_F)) 7365*0bfacb9bSmrg ] 7366*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7367*0bfacb9bSmrg "vpst\;vmult.f%#<V_sz_elem> %q0, %q2, %3" 7368*0bfacb9bSmrg [(set_attr "type" "mve_move") 7369*0bfacb9bSmrg (set_attr "length""8")]) 7370*0bfacb9bSmrg 7371*0bfacb9bSmrg;; 7372*0bfacb9bSmrg;; [vornq_m_f]) 7373*0bfacb9bSmrg;; 7374*0bfacb9bSmrg(define_insn "mve_vornq_m_f<mode>" 7375*0bfacb9bSmrg [ 7376*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7377*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7378*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7379*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7380*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7381*0bfacb9bSmrg VORNQ_M_F)) 7382*0bfacb9bSmrg ] 7383*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7384*0bfacb9bSmrg "vpst\;vornt %q0, %q2, %q3" 7385*0bfacb9bSmrg [(set_attr "type" "mve_move") 7386*0bfacb9bSmrg (set_attr "length""8")]) 7387*0bfacb9bSmrg 7388*0bfacb9bSmrg;; 7389*0bfacb9bSmrg;; [vorrq_m_f]) 7390*0bfacb9bSmrg;; 7391*0bfacb9bSmrg(define_insn "mve_vorrq_m_f<mode>" 7392*0bfacb9bSmrg [ 7393*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7394*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7395*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7396*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7397*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7398*0bfacb9bSmrg VORRQ_M_F)) 7399*0bfacb9bSmrg ] 7400*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7401*0bfacb9bSmrg "vpst\;vorrt %q0, %q2, %q3" 7402*0bfacb9bSmrg [(set_attr "type" "mve_move") 7403*0bfacb9bSmrg (set_attr "length""8")]) 7404*0bfacb9bSmrg 7405*0bfacb9bSmrg;; 7406*0bfacb9bSmrg;; [vsubq_m_f]) 7407*0bfacb9bSmrg;; 7408*0bfacb9bSmrg(define_insn "mve_vsubq_m_f<mode>" 7409*0bfacb9bSmrg [ 7410*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7411*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7412*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7413*0bfacb9bSmrg (match_operand:MVE_0 3 "s_register_operand" "w") 7414*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7415*0bfacb9bSmrg VSUBQ_M_F)) 7416*0bfacb9bSmrg ] 7417*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7418*0bfacb9bSmrg "vpst\;vsubt.f%#<V_sz_elem>\t%q0, %q2, %q3" 7419*0bfacb9bSmrg [(set_attr "type" "mve_move") 7420*0bfacb9bSmrg (set_attr "length""8")]) 7421*0bfacb9bSmrg 7422*0bfacb9bSmrg;; 7423*0bfacb9bSmrg;; [vsubq_m_n_f]) 7424*0bfacb9bSmrg;; 7425*0bfacb9bSmrg(define_insn "mve_vsubq_m_n_f<mode>" 7426*0bfacb9bSmrg [ 7427*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 7428*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0") 7429*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w") 7430*0bfacb9bSmrg (match_operand:<V_elem> 3 "s_register_operand" "r") 7431*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 7432*0bfacb9bSmrg VSUBQ_M_N_F)) 7433*0bfacb9bSmrg ] 7434*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7435*0bfacb9bSmrg "vpst\;vsubt.f%#<V_sz_elem>\t%q0, %q2, %3" 7436*0bfacb9bSmrg [(set_attr "type" "mve_move") 7437*0bfacb9bSmrg (set_attr "length""8")]) 7438*0bfacb9bSmrg 7439*0bfacb9bSmrg;; 7440*0bfacb9bSmrg;; [vstrbq_s vstrbq_u] 7441*0bfacb9bSmrg;; 7442*0bfacb9bSmrg(define_insn "mve_vstrbq_<supf><mode>" 7443*0bfacb9bSmrg [(set (match_operand:<MVE_B_ELEM> 0 "mve_memory_operand" "=Ux") 7444*0bfacb9bSmrg (unspec:<MVE_B_ELEM> [(match_operand:MVE_2 1 "s_register_operand" "w")] 7445*0bfacb9bSmrg VSTRBQ)) 7446*0bfacb9bSmrg ] 7447*0bfacb9bSmrg "TARGET_HAVE_MVE" 7448*0bfacb9bSmrg{ 7449*0bfacb9bSmrg rtx ops[2]; 7450*0bfacb9bSmrg int regno = REGNO (operands[1]); 7451*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 7452*0bfacb9bSmrg ops[0] = operands[0]; 7453*0bfacb9bSmrg output_asm_insn("vstrb.<V_sz_elem>\t%q1, %E0",ops); 7454*0bfacb9bSmrg return ""; 7455*0bfacb9bSmrg} 7456*0bfacb9bSmrg [(set_attr "length" "4")]) 7457*0bfacb9bSmrg 7458*0bfacb9bSmrg;; 7459*0bfacb9bSmrg;; [vstrbq_scatter_offset_s vstrbq_scatter_offset_u] 7460*0bfacb9bSmrg;; 7461*0bfacb9bSmrg(define_expand "mve_vstrbq_scatter_offset_<supf><mode>" 7462*0bfacb9bSmrg [(match_operand:<MVE_B_ELEM> 0 "mve_scatter_memory") 7463*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 7464*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand") 7465*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRBSOQ)] 7466*0bfacb9bSmrg "TARGET_HAVE_MVE" 7467*0bfacb9bSmrg{ 7468*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 7469*0bfacb9bSmrg gcc_assert (REG_P (ind)); 7470*0bfacb9bSmrg emit_insn (gen_mve_vstrbq_scatter_offset_<supf><mode>_insn (ind, operands[1], 7471*0bfacb9bSmrg operands[2])); 7472*0bfacb9bSmrg DONE; 7473*0bfacb9bSmrg}) 7474*0bfacb9bSmrg 7475*0bfacb9bSmrg(define_insn "mve_vstrbq_scatter_offset_<supf><mode>_insn" 7476*0bfacb9bSmrg [(set (mem:BLK (scratch)) 7477*0bfacb9bSmrg (unspec:BLK 7478*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 7479*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand" "w") 7480*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 7481*0bfacb9bSmrg VSTRBSOQ))] 7482*0bfacb9bSmrg "TARGET_HAVE_MVE" 7483*0bfacb9bSmrg "vstrb.<V_sz_elem>\t%q2, [%0, %q1]" 7484*0bfacb9bSmrg [(set_attr "length" "4")]) 7485*0bfacb9bSmrg 7486*0bfacb9bSmrg;; 7487*0bfacb9bSmrg;; [vstrwq_scatter_base_s vstrwq_scatter_base_u] 7488*0bfacb9bSmrg;; 7489*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_<supf>v4si" 7490*0bfacb9bSmrg [(set (mem:BLK (scratch)) 7491*0bfacb9bSmrg (unspec:BLK 7492*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand" "w") 7493*0bfacb9bSmrg (match_operand:SI 1 "immediate_operand" "i") 7494*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 7495*0bfacb9bSmrg VSTRWSBQ)) 7496*0bfacb9bSmrg ] 7497*0bfacb9bSmrg "TARGET_HAVE_MVE" 7498*0bfacb9bSmrg{ 7499*0bfacb9bSmrg rtx ops[3]; 7500*0bfacb9bSmrg ops[0] = operands[0]; 7501*0bfacb9bSmrg ops[1] = operands[1]; 7502*0bfacb9bSmrg ops[2] = operands[2]; 7503*0bfacb9bSmrg output_asm_insn("vstrw.u32\t%q2, [%q0, %1]",ops); 7504*0bfacb9bSmrg return ""; 7505*0bfacb9bSmrg} 7506*0bfacb9bSmrg [(set_attr "length" "4")]) 7507*0bfacb9bSmrg 7508*0bfacb9bSmrg;; 7509*0bfacb9bSmrg;; [vldrbq_gather_offset_s vldrbq_gather_offset_u] 7510*0bfacb9bSmrg;; 7511*0bfacb9bSmrg(define_insn "mve_vldrbq_gather_offset_<supf><mode>" 7512*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=&w") 7513*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "memory_operand" "Us") 7514*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w")] 7515*0bfacb9bSmrg VLDRBGOQ)) 7516*0bfacb9bSmrg ] 7517*0bfacb9bSmrg "TARGET_HAVE_MVE" 7518*0bfacb9bSmrg{ 7519*0bfacb9bSmrg rtx ops[3]; 7520*0bfacb9bSmrg ops[0] = operands[0]; 7521*0bfacb9bSmrg ops[1] = operands[1]; 7522*0bfacb9bSmrg ops[2] = operands[2]; 7523*0bfacb9bSmrg if (!strcmp ("<supf>","s") && <V_sz_elem> == 8) 7524*0bfacb9bSmrg output_asm_insn ("vldrb.u8\t%q0, [%m1, %q2]",ops); 7525*0bfacb9bSmrg else 7526*0bfacb9bSmrg output_asm_insn ("vldrb.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops); 7527*0bfacb9bSmrg return ""; 7528*0bfacb9bSmrg} 7529*0bfacb9bSmrg [(set_attr "length" "4")]) 7530*0bfacb9bSmrg 7531*0bfacb9bSmrg;; 7532*0bfacb9bSmrg;; [vldrbq_s vldrbq_u] 7533*0bfacb9bSmrg;; 7534*0bfacb9bSmrg(define_insn "mve_vldrbq_<supf><mode>" 7535*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 7536*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "mve_memory_operand" "Ux")] 7537*0bfacb9bSmrg VLDRBQ)) 7538*0bfacb9bSmrg ] 7539*0bfacb9bSmrg "TARGET_HAVE_MVE" 7540*0bfacb9bSmrg{ 7541*0bfacb9bSmrg rtx ops[2]; 7542*0bfacb9bSmrg int regno = REGNO (operands[0]); 7543*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7544*0bfacb9bSmrg ops[1] = operands[1]; 7545*0bfacb9bSmrg if (<V_sz_elem> == 8) 7546*0bfacb9bSmrg output_asm_insn ("vldrb.<V_sz_elem>\t%q0, %E1",ops); 7547*0bfacb9bSmrg else 7548*0bfacb9bSmrg output_asm_insn ("vldrb.<supf><V_sz_elem>\t%q0, %E1",ops); 7549*0bfacb9bSmrg return ""; 7550*0bfacb9bSmrg} 7551*0bfacb9bSmrg [(set_attr "length" "4")]) 7552*0bfacb9bSmrg 7553*0bfacb9bSmrg;; 7554*0bfacb9bSmrg;; [vldrwq_gather_base_s vldrwq_gather_base_u] 7555*0bfacb9bSmrg;; 7556*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_<supf>v4si" 7557*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 7558*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 7559*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 7560*0bfacb9bSmrg VLDRWGBQ)) 7561*0bfacb9bSmrg ] 7562*0bfacb9bSmrg "TARGET_HAVE_MVE" 7563*0bfacb9bSmrg{ 7564*0bfacb9bSmrg rtx ops[3]; 7565*0bfacb9bSmrg ops[0] = operands[0]; 7566*0bfacb9bSmrg ops[1] = operands[1]; 7567*0bfacb9bSmrg ops[2] = operands[2]; 7568*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]",ops); 7569*0bfacb9bSmrg return ""; 7570*0bfacb9bSmrg} 7571*0bfacb9bSmrg [(set_attr "length" "4")]) 7572*0bfacb9bSmrg 7573*0bfacb9bSmrg;; 7574*0bfacb9bSmrg;; [vstrbq_scatter_offset_p_s vstrbq_scatter_offset_p_u] 7575*0bfacb9bSmrg;; 7576*0bfacb9bSmrg(define_expand "mve_vstrbq_scatter_offset_p_<supf><mode>" 7577*0bfacb9bSmrg [(match_operand:<MVE_B_ELEM> 0 "mve_scatter_memory") 7578*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 7579*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand") 7580*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up") 7581*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRBSOQ)] 7582*0bfacb9bSmrg "TARGET_HAVE_MVE" 7583*0bfacb9bSmrg{ 7584*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 7585*0bfacb9bSmrg gcc_assert (REG_P (ind)); 7586*0bfacb9bSmrg emit_insn ( 7587*0bfacb9bSmrg gen_mve_vstrbq_scatter_offset_p_<supf><mode>_insn (ind, operands[1], 7588*0bfacb9bSmrg operands[2], 7589*0bfacb9bSmrg operands[3])); 7590*0bfacb9bSmrg DONE; 7591*0bfacb9bSmrg}) 7592*0bfacb9bSmrg 7593*0bfacb9bSmrg(define_insn "mve_vstrbq_scatter_offset_p_<supf><mode>_insn" 7594*0bfacb9bSmrg [(set (mem:BLK (scratch)) 7595*0bfacb9bSmrg (unspec:BLK 7596*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 7597*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand" "w") 7598*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 7599*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 7600*0bfacb9bSmrg VSTRBSOQ))] 7601*0bfacb9bSmrg "TARGET_HAVE_MVE" 7602*0bfacb9bSmrg "vpst\;vstrbt.<V_sz_elem>\t%q2, [%0, %q1]" 7603*0bfacb9bSmrg [(set_attr "length" "8")]) 7604*0bfacb9bSmrg 7605*0bfacb9bSmrg;; 7606*0bfacb9bSmrg;; [vstrwq_scatter_base_p_s vstrwq_scatter_base_p_u] 7607*0bfacb9bSmrg;; 7608*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_p_<supf>v4si" 7609*0bfacb9bSmrg [(set (mem:BLK (scratch)) 7610*0bfacb9bSmrg (unspec:BLK 7611*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand" "w") 7612*0bfacb9bSmrg (match_operand:SI 1 "immediate_operand" "i") 7613*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 7614*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 7615*0bfacb9bSmrg VSTRWSBQ)) 7616*0bfacb9bSmrg ] 7617*0bfacb9bSmrg "TARGET_HAVE_MVE" 7618*0bfacb9bSmrg{ 7619*0bfacb9bSmrg rtx ops[3]; 7620*0bfacb9bSmrg ops[0] = operands[0]; 7621*0bfacb9bSmrg ops[1] = operands[1]; 7622*0bfacb9bSmrg ops[2] = operands[2]; 7623*0bfacb9bSmrg output_asm_insn ("vpst\n\tvstrwt.u32\t%q2, [%q0, %1]",ops); 7624*0bfacb9bSmrg return ""; 7625*0bfacb9bSmrg} 7626*0bfacb9bSmrg [(set_attr "length" "8")]) 7627*0bfacb9bSmrg 7628*0bfacb9bSmrg;; 7629*0bfacb9bSmrg;; [vstrbq_p_s vstrbq_p_u] 7630*0bfacb9bSmrg;; 7631*0bfacb9bSmrg(define_insn "mve_vstrbq_p_<supf><mode>" 7632*0bfacb9bSmrg [(set (match_operand:<MVE_B_ELEM> 0 "mve_memory_operand" "=Ux") 7633*0bfacb9bSmrg (unspec:<MVE_B_ELEM> [(match_operand:MVE_2 1 "s_register_operand" "w") 7634*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 7635*0bfacb9bSmrg VSTRBQ)) 7636*0bfacb9bSmrg ] 7637*0bfacb9bSmrg "TARGET_HAVE_MVE" 7638*0bfacb9bSmrg{ 7639*0bfacb9bSmrg rtx ops[2]; 7640*0bfacb9bSmrg int regno = REGNO (operands[1]); 7641*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 7642*0bfacb9bSmrg ops[0] = operands[0]; 7643*0bfacb9bSmrg output_asm_insn ("vpst\;vstrbt.<V_sz_elem>\t%q1, %E0",ops); 7644*0bfacb9bSmrg return ""; 7645*0bfacb9bSmrg} 7646*0bfacb9bSmrg [(set_attr "length" "8")]) 7647*0bfacb9bSmrg 7648*0bfacb9bSmrg;; 7649*0bfacb9bSmrg;; [vldrbq_gather_offset_z_s vldrbq_gather_offset_z_u] 7650*0bfacb9bSmrg;; 7651*0bfacb9bSmrg(define_insn "mve_vldrbq_gather_offset_z_<supf><mode>" 7652*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=&w") 7653*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "memory_operand" "Us") 7654*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w") 7655*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 7656*0bfacb9bSmrg VLDRBGOQ)) 7657*0bfacb9bSmrg ] 7658*0bfacb9bSmrg "TARGET_HAVE_MVE" 7659*0bfacb9bSmrg{ 7660*0bfacb9bSmrg rtx ops[4]; 7661*0bfacb9bSmrg ops[0] = operands[0]; 7662*0bfacb9bSmrg ops[1] = operands[1]; 7663*0bfacb9bSmrg ops[2] = operands[2]; 7664*0bfacb9bSmrg ops[3] = operands[3]; 7665*0bfacb9bSmrg if (!strcmp ("<supf>","s") && <V_sz_elem> == 8) 7666*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrbt.u8\t%q0, [%m1, %q2]",ops); 7667*0bfacb9bSmrg else 7668*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrbt.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops); 7669*0bfacb9bSmrg return ""; 7670*0bfacb9bSmrg} 7671*0bfacb9bSmrg [(set_attr "length" "8")]) 7672*0bfacb9bSmrg 7673*0bfacb9bSmrg;; 7674*0bfacb9bSmrg;; [vldrbq_z_s vldrbq_z_u] 7675*0bfacb9bSmrg;; 7676*0bfacb9bSmrg(define_insn "mve_vldrbq_z_<supf><mode>" 7677*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 7678*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:<MVE_B_ELEM> 1 "mve_memory_operand" "Ux") 7679*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 7680*0bfacb9bSmrg VLDRBQ)) 7681*0bfacb9bSmrg ] 7682*0bfacb9bSmrg "TARGET_HAVE_MVE" 7683*0bfacb9bSmrg{ 7684*0bfacb9bSmrg rtx ops[2]; 7685*0bfacb9bSmrg int regno = REGNO (operands[0]); 7686*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7687*0bfacb9bSmrg ops[1] = operands[1]; 7688*0bfacb9bSmrg if (<V_sz_elem> == 8) 7689*0bfacb9bSmrg output_asm_insn ("vpst\;vldrbt.<V_sz_elem>\t%q0, %E1",ops); 7690*0bfacb9bSmrg else 7691*0bfacb9bSmrg output_asm_insn ("vpst\;vldrbt.<supf><V_sz_elem>\t%q0, %E1",ops); 7692*0bfacb9bSmrg return ""; 7693*0bfacb9bSmrg} 7694*0bfacb9bSmrg [(set_attr "length" "8")]) 7695*0bfacb9bSmrg 7696*0bfacb9bSmrg;; 7697*0bfacb9bSmrg;; [vldrwq_gather_base_z_s vldrwq_gather_base_z_u] 7698*0bfacb9bSmrg;; 7699*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_z_<supf>v4si" 7700*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 7701*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 7702*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i") 7703*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 7704*0bfacb9bSmrg VLDRWGBQ)) 7705*0bfacb9bSmrg ] 7706*0bfacb9bSmrg "TARGET_HAVE_MVE" 7707*0bfacb9bSmrg{ 7708*0bfacb9bSmrg rtx ops[3]; 7709*0bfacb9bSmrg ops[0] = operands[0]; 7710*0bfacb9bSmrg ops[1] = operands[1]; 7711*0bfacb9bSmrg ops[2] = operands[2]; 7712*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%q1, %2]",ops); 7713*0bfacb9bSmrg return ""; 7714*0bfacb9bSmrg} 7715*0bfacb9bSmrg [(set_attr "length" "8")]) 7716*0bfacb9bSmrg 7717*0bfacb9bSmrg;; 7718*0bfacb9bSmrg;; [vldrhq_f] 7719*0bfacb9bSmrg;; 7720*0bfacb9bSmrg(define_insn "mve_vldrhq_fv8hf" 7721*0bfacb9bSmrg [(set (match_operand:V8HF 0 "s_register_operand" "=w") 7722*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HI 1 "mve_memory_operand" "Ux")] 7723*0bfacb9bSmrg VLDRHQ_F)) 7724*0bfacb9bSmrg ] 7725*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7726*0bfacb9bSmrg{ 7727*0bfacb9bSmrg rtx ops[2]; 7728*0bfacb9bSmrg int regno = REGNO (operands[0]); 7729*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7730*0bfacb9bSmrg ops[1] = operands[1]; 7731*0bfacb9bSmrg output_asm_insn ("vldrh.16\t%q0, %E1",ops); 7732*0bfacb9bSmrg return ""; 7733*0bfacb9bSmrg} 7734*0bfacb9bSmrg [(set_attr "length" "4")]) 7735*0bfacb9bSmrg 7736*0bfacb9bSmrg;; 7737*0bfacb9bSmrg;; [vldrhq_gather_offset_s vldrhq_gather_offset_u] 7738*0bfacb9bSmrg;; 7739*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_offset_<supf><mode>" 7740*0bfacb9bSmrg [(set (match_operand:MVE_6 0 "s_register_operand" "=&w") 7741*0bfacb9bSmrg (unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us") 7742*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w")] 7743*0bfacb9bSmrg VLDRHGOQ)) 7744*0bfacb9bSmrg ] 7745*0bfacb9bSmrg "TARGET_HAVE_MVE" 7746*0bfacb9bSmrg{ 7747*0bfacb9bSmrg rtx ops[3]; 7748*0bfacb9bSmrg ops[0] = operands[0]; 7749*0bfacb9bSmrg ops[1] = operands[1]; 7750*0bfacb9bSmrg ops[2] = operands[2]; 7751*0bfacb9bSmrg if (!strcmp ("<supf>","s") && <V_sz_elem> == 16) 7752*0bfacb9bSmrg output_asm_insn ("vldrh.u16\t%q0, [%m1, %q2]",ops); 7753*0bfacb9bSmrg else 7754*0bfacb9bSmrg output_asm_insn ("vldrh.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops); 7755*0bfacb9bSmrg return ""; 7756*0bfacb9bSmrg} 7757*0bfacb9bSmrg [(set_attr "length" "4")]) 7758*0bfacb9bSmrg 7759*0bfacb9bSmrg;; 7760*0bfacb9bSmrg;; [vldrhq_gather_offset_z_s vldrhq_gather_offset_z_u] 7761*0bfacb9bSmrg;; 7762*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_offset_z_<supf><mode>" 7763*0bfacb9bSmrg [(set (match_operand:MVE_6 0 "s_register_operand" "=&w") 7764*0bfacb9bSmrg (unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us") 7765*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w") 7766*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up") 7767*0bfacb9bSmrg ]VLDRHGOQ)) 7768*0bfacb9bSmrg ] 7769*0bfacb9bSmrg "TARGET_HAVE_MVE" 7770*0bfacb9bSmrg{ 7771*0bfacb9bSmrg rtx ops[4]; 7772*0bfacb9bSmrg ops[0] = operands[0]; 7773*0bfacb9bSmrg ops[1] = operands[1]; 7774*0bfacb9bSmrg ops[2] = operands[2]; 7775*0bfacb9bSmrg ops[3] = operands[3]; 7776*0bfacb9bSmrg if (!strcmp ("<supf>","s") && <V_sz_elem> == 16) 7777*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrht.u16\t%q0, [%m1, %q2]",ops); 7778*0bfacb9bSmrg else 7779*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrht.<supf><V_sz_elem>\t%q0, [%m1, %q2]",ops); 7780*0bfacb9bSmrg return ""; 7781*0bfacb9bSmrg} 7782*0bfacb9bSmrg [(set_attr "length" "8")]) 7783*0bfacb9bSmrg 7784*0bfacb9bSmrg;; 7785*0bfacb9bSmrg;; [vldrhq_gather_shifted_offset_s vldrhq_gather_shifted_offset_u] 7786*0bfacb9bSmrg;; 7787*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_shifted_offset_<supf><mode>" 7788*0bfacb9bSmrg [(set (match_operand:MVE_6 0 "s_register_operand" "=&w") 7789*0bfacb9bSmrg (unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us") 7790*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w")] 7791*0bfacb9bSmrg VLDRHGSOQ)) 7792*0bfacb9bSmrg ] 7793*0bfacb9bSmrg "TARGET_HAVE_MVE" 7794*0bfacb9bSmrg{ 7795*0bfacb9bSmrg rtx ops[3]; 7796*0bfacb9bSmrg ops[0] = operands[0]; 7797*0bfacb9bSmrg ops[1] = operands[1]; 7798*0bfacb9bSmrg ops[2] = operands[2]; 7799*0bfacb9bSmrg if (!strcmp ("<supf>","s") && <V_sz_elem> == 16) 7800*0bfacb9bSmrg output_asm_insn ("vldrh.u16\t%q0, [%m1, %q2, uxtw #1]",ops); 7801*0bfacb9bSmrg else 7802*0bfacb9bSmrg output_asm_insn ("vldrh.<supf><V_sz_elem>\t%q0, [%m1, %q2, uxtw #1]",ops); 7803*0bfacb9bSmrg return ""; 7804*0bfacb9bSmrg} 7805*0bfacb9bSmrg [(set_attr "length" "4")]) 7806*0bfacb9bSmrg 7807*0bfacb9bSmrg;; 7808*0bfacb9bSmrg;; [vldrhq_gather_shifted_offset_z_s vldrhq_gather_shited_offset_z_u] 7809*0bfacb9bSmrg;; 7810*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_shifted_offset_z_<supf><mode>" 7811*0bfacb9bSmrg [(set (match_operand:MVE_6 0 "s_register_operand" "=&w") 7812*0bfacb9bSmrg (unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "memory_operand" "Us") 7813*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w") 7814*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up") 7815*0bfacb9bSmrg ]VLDRHGSOQ)) 7816*0bfacb9bSmrg ] 7817*0bfacb9bSmrg "TARGET_HAVE_MVE" 7818*0bfacb9bSmrg{ 7819*0bfacb9bSmrg rtx ops[4]; 7820*0bfacb9bSmrg ops[0] = operands[0]; 7821*0bfacb9bSmrg ops[1] = operands[1]; 7822*0bfacb9bSmrg ops[2] = operands[2]; 7823*0bfacb9bSmrg ops[3] = operands[3]; 7824*0bfacb9bSmrg if (!strcmp ("<supf>","s") && <V_sz_elem> == 16) 7825*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrht.u16\t%q0, [%m1, %q2, uxtw #1]",ops); 7826*0bfacb9bSmrg else 7827*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrht.<supf><V_sz_elem>\t%q0, [%m1, %q2, uxtw #1]",ops); 7828*0bfacb9bSmrg return ""; 7829*0bfacb9bSmrg} 7830*0bfacb9bSmrg [(set_attr "length" "8")]) 7831*0bfacb9bSmrg 7832*0bfacb9bSmrg;; 7833*0bfacb9bSmrg;; [vldrhq_s, vldrhq_u] 7834*0bfacb9bSmrg;; 7835*0bfacb9bSmrg(define_insn "mve_vldrhq_<supf><mode>" 7836*0bfacb9bSmrg [(set (match_operand:MVE_6 0 "s_register_operand" "=w") 7837*0bfacb9bSmrg (unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "mve_memory_operand" "Ux")] 7838*0bfacb9bSmrg VLDRHQ)) 7839*0bfacb9bSmrg ] 7840*0bfacb9bSmrg "TARGET_HAVE_MVE" 7841*0bfacb9bSmrg{ 7842*0bfacb9bSmrg rtx ops[2]; 7843*0bfacb9bSmrg int regno = REGNO (operands[0]); 7844*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7845*0bfacb9bSmrg ops[1] = operands[1]; 7846*0bfacb9bSmrg if (<V_sz_elem> == 16) 7847*0bfacb9bSmrg output_asm_insn ("vldrh.16\t%q0, %E1",ops); 7848*0bfacb9bSmrg else 7849*0bfacb9bSmrg output_asm_insn ("vldrh.<supf><V_sz_elem>\t%q0, %E1",ops); 7850*0bfacb9bSmrg return ""; 7851*0bfacb9bSmrg} 7852*0bfacb9bSmrg [(set_attr "length" "4")]) 7853*0bfacb9bSmrg 7854*0bfacb9bSmrg;; 7855*0bfacb9bSmrg;; [vldrhq_z_f] 7856*0bfacb9bSmrg;; 7857*0bfacb9bSmrg(define_insn "mve_vldrhq_z_fv8hf" 7858*0bfacb9bSmrg [(set (match_operand:V8HF 0 "s_register_operand" "=w") 7859*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HI 1 "mve_memory_operand" "Ux") 7860*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 7861*0bfacb9bSmrg VLDRHQ_F)) 7862*0bfacb9bSmrg ] 7863*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7864*0bfacb9bSmrg{ 7865*0bfacb9bSmrg rtx ops[2]; 7866*0bfacb9bSmrg int regno = REGNO (operands[0]); 7867*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7868*0bfacb9bSmrg ops[1] = operands[1]; 7869*0bfacb9bSmrg output_asm_insn ("vpst\;vldrht.16\t%q0, %E1",ops); 7870*0bfacb9bSmrg return ""; 7871*0bfacb9bSmrg} 7872*0bfacb9bSmrg [(set_attr "length" "8")]) 7873*0bfacb9bSmrg 7874*0bfacb9bSmrg;; 7875*0bfacb9bSmrg;; [vldrhq_z_s vldrhq_z_u] 7876*0bfacb9bSmrg;; 7877*0bfacb9bSmrg(define_insn "mve_vldrhq_z_<supf><mode>" 7878*0bfacb9bSmrg [(set (match_operand:MVE_6 0 "s_register_operand" "=w") 7879*0bfacb9bSmrg (unspec:MVE_6 [(match_operand:<MVE_H_ELEM> 1 "mve_memory_operand" "Ux") 7880*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 7881*0bfacb9bSmrg VLDRHQ)) 7882*0bfacb9bSmrg ] 7883*0bfacb9bSmrg "TARGET_HAVE_MVE" 7884*0bfacb9bSmrg{ 7885*0bfacb9bSmrg rtx ops[2]; 7886*0bfacb9bSmrg int regno = REGNO (operands[0]); 7887*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7888*0bfacb9bSmrg ops[1] = operands[1]; 7889*0bfacb9bSmrg if (<V_sz_elem> == 16) 7890*0bfacb9bSmrg output_asm_insn ("vpst\;vldrht.16\t%q0, %E1",ops); 7891*0bfacb9bSmrg else 7892*0bfacb9bSmrg output_asm_insn ("vpst\;vldrht.<supf><V_sz_elem>\t%q0, %E1",ops); 7893*0bfacb9bSmrg return ""; 7894*0bfacb9bSmrg} 7895*0bfacb9bSmrg [(set_attr "length" "8")]) 7896*0bfacb9bSmrg 7897*0bfacb9bSmrg;; 7898*0bfacb9bSmrg;; [vldrwq_f] 7899*0bfacb9bSmrg;; 7900*0bfacb9bSmrg(define_insn "mve_vldrwq_fv4sf" 7901*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=w") 7902*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Ux")] 7903*0bfacb9bSmrg VLDRWQ_F)) 7904*0bfacb9bSmrg ] 7905*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7906*0bfacb9bSmrg{ 7907*0bfacb9bSmrg rtx ops[2]; 7908*0bfacb9bSmrg int regno = REGNO (operands[0]); 7909*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7910*0bfacb9bSmrg ops[1] = operands[1]; 7911*0bfacb9bSmrg output_asm_insn ("vldrw.32\t%q0, %E1",ops); 7912*0bfacb9bSmrg return ""; 7913*0bfacb9bSmrg} 7914*0bfacb9bSmrg [(set_attr "length" "4")]) 7915*0bfacb9bSmrg 7916*0bfacb9bSmrg;; 7917*0bfacb9bSmrg;; [vldrwq_s vldrwq_u] 7918*0bfacb9bSmrg;; 7919*0bfacb9bSmrg(define_insn "mve_vldrwq_<supf>v4si" 7920*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 7921*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Ux")] 7922*0bfacb9bSmrg VLDRWQ)) 7923*0bfacb9bSmrg ] 7924*0bfacb9bSmrg "TARGET_HAVE_MVE" 7925*0bfacb9bSmrg{ 7926*0bfacb9bSmrg rtx ops[2]; 7927*0bfacb9bSmrg int regno = REGNO (operands[0]); 7928*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7929*0bfacb9bSmrg ops[1] = operands[1]; 7930*0bfacb9bSmrg output_asm_insn ("vldrw.32\t%q0, %E1",ops); 7931*0bfacb9bSmrg return ""; 7932*0bfacb9bSmrg} 7933*0bfacb9bSmrg [(set_attr "length" "4")]) 7934*0bfacb9bSmrg 7935*0bfacb9bSmrg;; 7936*0bfacb9bSmrg;; [vldrwq_z_f] 7937*0bfacb9bSmrg;; 7938*0bfacb9bSmrg(define_insn "mve_vldrwq_z_fv4sf" 7939*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=w") 7940*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Ux") 7941*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 7942*0bfacb9bSmrg VLDRWQ_F)) 7943*0bfacb9bSmrg ] 7944*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 7945*0bfacb9bSmrg{ 7946*0bfacb9bSmrg rtx ops[2]; 7947*0bfacb9bSmrg int regno = REGNO (operands[0]); 7948*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7949*0bfacb9bSmrg ops[1] = operands[1]; 7950*0bfacb9bSmrg output_asm_insn ("vpst\;vldrwt.32\t%q0, %E1",ops); 7951*0bfacb9bSmrg return ""; 7952*0bfacb9bSmrg} 7953*0bfacb9bSmrg [(set_attr "length" "8")]) 7954*0bfacb9bSmrg 7955*0bfacb9bSmrg;; 7956*0bfacb9bSmrg;; [vldrwq_z_s vldrwq_z_u] 7957*0bfacb9bSmrg;; 7958*0bfacb9bSmrg(define_insn "mve_vldrwq_z_<supf>v4si" 7959*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 7960*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Ux") 7961*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 7962*0bfacb9bSmrg VLDRWQ)) 7963*0bfacb9bSmrg ] 7964*0bfacb9bSmrg "TARGET_HAVE_MVE" 7965*0bfacb9bSmrg{ 7966*0bfacb9bSmrg rtx ops[2]; 7967*0bfacb9bSmrg int regno = REGNO (operands[0]); 7968*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 7969*0bfacb9bSmrg ops[1] = operands[1]; 7970*0bfacb9bSmrg output_asm_insn ("vpst\;vldrwt.32\t%q0, %E1",ops); 7971*0bfacb9bSmrg return ""; 7972*0bfacb9bSmrg} 7973*0bfacb9bSmrg [(set_attr "length" "8")]) 7974*0bfacb9bSmrg 7975*0bfacb9bSmrg(define_expand "mve_vld1q_f<mode>" 7976*0bfacb9bSmrg [(match_operand:MVE_0 0 "s_register_operand") 7977*0bfacb9bSmrg (unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "mve_memory_operand")] VLD1Q_F) 7978*0bfacb9bSmrg ] 7979*0bfacb9bSmrg "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT" 7980*0bfacb9bSmrg{ 7981*0bfacb9bSmrg emit_insn (gen_mve_vldr<V_sz_elem1>q_f<mode>(operands[0],operands[1])); 7982*0bfacb9bSmrg DONE; 7983*0bfacb9bSmrg}) 7984*0bfacb9bSmrg 7985*0bfacb9bSmrg(define_expand "mve_vld1q_<supf><mode>" 7986*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 7987*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "mve_memory_operand")] VLD1Q) 7988*0bfacb9bSmrg ] 7989*0bfacb9bSmrg "TARGET_HAVE_MVE" 7990*0bfacb9bSmrg{ 7991*0bfacb9bSmrg emit_insn (gen_mve_vldr<V_sz_elem1>q_<supf><mode>(operands[0],operands[1])); 7992*0bfacb9bSmrg DONE; 7993*0bfacb9bSmrg}) 7994*0bfacb9bSmrg 7995*0bfacb9bSmrg;; 7996*0bfacb9bSmrg;; [vldrdq_gather_base_s vldrdq_gather_base_u] 7997*0bfacb9bSmrg;; 7998*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_base_<supf>v2di" 7999*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 8000*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w") 8001*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 8002*0bfacb9bSmrg VLDRDGBQ)) 8003*0bfacb9bSmrg ] 8004*0bfacb9bSmrg "TARGET_HAVE_MVE" 8005*0bfacb9bSmrg{ 8006*0bfacb9bSmrg rtx ops[3]; 8007*0bfacb9bSmrg ops[0] = operands[0]; 8008*0bfacb9bSmrg ops[1] = operands[1]; 8009*0bfacb9bSmrg ops[2] = operands[2]; 8010*0bfacb9bSmrg output_asm_insn ("vldrd.64\t%q0, [%q1, %2]",ops); 8011*0bfacb9bSmrg return ""; 8012*0bfacb9bSmrg} 8013*0bfacb9bSmrg [(set_attr "length" "4")]) 8014*0bfacb9bSmrg 8015*0bfacb9bSmrg;; 8016*0bfacb9bSmrg;; [vldrdq_gather_base_z_s vldrdq_gather_base_z_u] 8017*0bfacb9bSmrg;; 8018*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_base_z_<supf>v2di" 8019*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 8020*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w") 8021*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i") 8022*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8023*0bfacb9bSmrg VLDRDGBQ)) 8024*0bfacb9bSmrg ] 8025*0bfacb9bSmrg "TARGET_HAVE_MVE" 8026*0bfacb9bSmrg{ 8027*0bfacb9bSmrg rtx ops[3]; 8028*0bfacb9bSmrg ops[0] = operands[0]; 8029*0bfacb9bSmrg ops[1] = operands[1]; 8030*0bfacb9bSmrg ops[2] = operands[2]; 8031*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrdt.u64\t%q0, [%q1, %2]",ops); 8032*0bfacb9bSmrg return ""; 8033*0bfacb9bSmrg} 8034*0bfacb9bSmrg [(set_attr "length" "8")]) 8035*0bfacb9bSmrg 8036*0bfacb9bSmrg;; 8037*0bfacb9bSmrg;; [vldrdq_gather_offset_s vldrdq_gather_offset_u] 8038*0bfacb9bSmrg;; 8039*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_offset_<supf>v2di" 8040*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 8041*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us") 8042*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w")] 8043*0bfacb9bSmrg VLDRDGOQ)) 8044*0bfacb9bSmrg ] 8045*0bfacb9bSmrg "TARGET_HAVE_MVE" 8046*0bfacb9bSmrg{ 8047*0bfacb9bSmrg rtx ops[3]; 8048*0bfacb9bSmrg ops[0] = operands[0]; 8049*0bfacb9bSmrg ops[1] = operands[1]; 8050*0bfacb9bSmrg ops[2] = operands[2]; 8051*0bfacb9bSmrg output_asm_insn ("vldrd.u64\t%q0, [%m1, %q2]",ops); 8052*0bfacb9bSmrg return ""; 8053*0bfacb9bSmrg} 8054*0bfacb9bSmrg [(set_attr "length" "4")]) 8055*0bfacb9bSmrg 8056*0bfacb9bSmrg;; 8057*0bfacb9bSmrg;; [vldrdq_gather_offset_z_s vldrdq_gather_offset_z_u] 8058*0bfacb9bSmrg;; 8059*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_offset_z_<supf>v2di" 8060*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 8061*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us") 8062*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w") 8063*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8064*0bfacb9bSmrg VLDRDGOQ)) 8065*0bfacb9bSmrg ] 8066*0bfacb9bSmrg "TARGET_HAVE_MVE" 8067*0bfacb9bSmrg{ 8068*0bfacb9bSmrg rtx ops[3]; 8069*0bfacb9bSmrg ops[0] = operands[0]; 8070*0bfacb9bSmrg ops[1] = operands[1]; 8071*0bfacb9bSmrg ops[2] = operands[2]; 8072*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrdt.u64\t%q0, [%m1, %q2]",ops); 8073*0bfacb9bSmrg return ""; 8074*0bfacb9bSmrg} 8075*0bfacb9bSmrg [(set_attr "length" "8")]) 8076*0bfacb9bSmrg 8077*0bfacb9bSmrg;; 8078*0bfacb9bSmrg;; [vldrdq_gather_shifted_offset_s vldrdq_gather_shifted_offset_u] 8079*0bfacb9bSmrg;; 8080*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_shifted_offset_<supf>v2di" 8081*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 8082*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us") 8083*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w")] 8084*0bfacb9bSmrg VLDRDGSOQ)) 8085*0bfacb9bSmrg ] 8086*0bfacb9bSmrg "TARGET_HAVE_MVE" 8087*0bfacb9bSmrg{ 8088*0bfacb9bSmrg rtx ops[3]; 8089*0bfacb9bSmrg ops[0] = operands[0]; 8090*0bfacb9bSmrg ops[1] = operands[1]; 8091*0bfacb9bSmrg ops[2] = operands[2]; 8092*0bfacb9bSmrg output_asm_insn ("vldrd.u64\t%q0, [%m1, %q2, uxtw #3]",ops); 8093*0bfacb9bSmrg return ""; 8094*0bfacb9bSmrg} 8095*0bfacb9bSmrg [(set_attr "length" "4")]) 8096*0bfacb9bSmrg 8097*0bfacb9bSmrg;; 8098*0bfacb9bSmrg;; [vldrdq_gather_shifted_offset_z_s vldrdq_gather_shifted_offset_z_u] 8099*0bfacb9bSmrg;; 8100*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_shifted_offset_z_<supf>v2di" 8101*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 8102*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us") 8103*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w") 8104*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8105*0bfacb9bSmrg VLDRDGSOQ)) 8106*0bfacb9bSmrg ] 8107*0bfacb9bSmrg "TARGET_HAVE_MVE" 8108*0bfacb9bSmrg{ 8109*0bfacb9bSmrg rtx ops[3]; 8110*0bfacb9bSmrg ops[0] = operands[0]; 8111*0bfacb9bSmrg ops[1] = operands[1]; 8112*0bfacb9bSmrg ops[2] = operands[2]; 8113*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrdt.u64\t%q0, [%m1, %q2, uxtw #3]",ops); 8114*0bfacb9bSmrg return ""; 8115*0bfacb9bSmrg} 8116*0bfacb9bSmrg [(set_attr "length" "8")]) 8117*0bfacb9bSmrg 8118*0bfacb9bSmrg;; 8119*0bfacb9bSmrg;; [vldrhq_gather_offset_f] 8120*0bfacb9bSmrg;; 8121*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_offset_fv8hf" 8122*0bfacb9bSmrg [(set (match_operand:V8HF 0 "s_register_operand" "=&w") 8123*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us") 8124*0bfacb9bSmrg (match_operand:V8HI 2 "s_register_operand" "w")] 8125*0bfacb9bSmrg VLDRHQGO_F)) 8126*0bfacb9bSmrg ] 8127*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8128*0bfacb9bSmrg{ 8129*0bfacb9bSmrg rtx ops[3]; 8130*0bfacb9bSmrg ops[0] = operands[0]; 8131*0bfacb9bSmrg ops[1] = operands[1]; 8132*0bfacb9bSmrg ops[2] = operands[2]; 8133*0bfacb9bSmrg output_asm_insn ("vldrh.f16\t%q0, [%m1, %q2]",ops); 8134*0bfacb9bSmrg return ""; 8135*0bfacb9bSmrg} 8136*0bfacb9bSmrg [(set_attr "length" "4")]) 8137*0bfacb9bSmrg 8138*0bfacb9bSmrg;; 8139*0bfacb9bSmrg;; [vldrhq_gather_offset_z_f] 8140*0bfacb9bSmrg;; 8141*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_offset_z_fv8hf" 8142*0bfacb9bSmrg [(set (match_operand:V8HF 0 "s_register_operand" "=&w") 8143*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us") 8144*0bfacb9bSmrg (match_operand:V8HI 2 "s_register_operand" "w") 8145*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8146*0bfacb9bSmrg VLDRHQGO_F)) 8147*0bfacb9bSmrg ] 8148*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8149*0bfacb9bSmrg{ 8150*0bfacb9bSmrg rtx ops[4]; 8151*0bfacb9bSmrg ops[0] = operands[0]; 8152*0bfacb9bSmrg ops[1] = operands[1]; 8153*0bfacb9bSmrg ops[2] = operands[2]; 8154*0bfacb9bSmrg ops[3] = operands[3]; 8155*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrht.f16\t%q0, [%m1, %q2]",ops); 8156*0bfacb9bSmrg return ""; 8157*0bfacb9bSmrg} 8158*0bfacb9bSmrg [(set_attr "length" "8")]) 8159*0bfacb9bSmrg 8160*0bfacb9bSmrg;; 8161*0bfacb9bSmrg;; [vldrhq_gather_shifted_offset_f] 8162*0bfacb9bSmrg;; 8163*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_shifted_offset_fv8hf" 8164*0bfacb9bSmrg [(set (match_operand:V8HF 0 "s_register_operand" "=&w") 8165*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us") 8166*0bfacb9bSmrg (match_operand:V8HI 2 "s_register_operand" "w")] 8167*0bfacb9bSmrg VLDRHQGSO_F)) 8168*0bfacb9bSmrg ] 8169*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8170*0bfacb9bSmrg{ 8171*0bfacb9bSmrg rtx ops[3]; 8172*0bfacb9bSmrg ops[0] = operands[0]; 8173*0bfacb9bSmrg ops[1] = operands[1]; 8174*0bfacb9bSmrg ops[2] = operands[2]; 8175*0bfacb9bSmrg output_asm_insn ("vldrh.f16\t%q0, [%m1, %q2, uxtw #1]",ops); 8176*0bfacb9bSmrg return ""; 8177*0bfacb9bSmrg} 8178*0bfacb9bSmrg [(set_attr "length" "4")]) 8179*0bfacb9bSmrg 8180*0bfacb9bSmrg;; 8181*0bfacb9bSmrg;; [vldrhq_gather_shifted_offset_z_f] 8182*0bfacb9bSmrg;; 8183*0bfacb9bSmrg(define_insn "mve_vldrhq_gather_shifted_offset_z_fv8hf" 8184*0bfacb9bSmrg [(set (match_operand:V8HF 0 "s_register_operand" "=&w") 8185*0bfacb9bSmrg (unspec:V8HF [(match_operand:V8HI 1 "memory_operand" "Us") 8186*0bfacb9bSmrg (match_operand:V8HI 2 "s_register_operand" "w") 8187*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8188*0bfacb9bSmrg VLDRHQGSO_F)) 8189*0bfacb9bSmrg ] 8190*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8191*0bfacb9bSmrg{ 8192*0bfacb9bSmrg rtx ops[4]; 8193*0bfacb9bSmrg ops[0] = operands[0]; 8194*0bfacb9bSmrg ops[1] = operands[1]; 8195*0bfacb9bSmrg ops[2] = operands[2]; 8196*0bfacb9bSmrg ops[3] = operands[3]; 8197*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrht.f16\t%q0, [%m1, %q2, uxtw #1]",ops); 8198*0bfacb9bSmrg return ""; 8199*0bfacb9bSmrg} 8200*0bfacb9bSmrg [(set_attr "length" "8")]) 8201*0bfacb9bSmrg 8202*0bfacb9bSmrg;; 8203*0bfacb9bSmrg;; [vldrwq_gather_base_f] 8204*0bfacb9bSmrg;; 8205*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_fv4sf" 8206*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 8207*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "s_register_operand" "w") 8208*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")] 8209*0bfacb9bSmrg VLDRWQGB_F)) 8210*0bfacb9bSmrg ] 8211*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8212*0bfacb9bSmrg{ 8213*0bfacb9bSmrg rtx ops[3]; 8214*0bfacb9bSmrg ops[0] = operands[0]; 8215*0bfacb9bSmrg ops[1] = operands[1]; 8216*0bfacb9bSmrg ops[2] = operands[2]; 8217*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]",ops); 8218*0bfacb9bSmrg return ""; 8219*0bfacb9bSmrg} 8220*0bfacb9bSmrg [(set_attr "length" "4")]) 8221*0bfacb9bSmrg 8222*0bfacb9bSmrg;; 8223*0bfacb9bSmrg;; [vldrwq_gather_base_z_f] 8224*0bfacb9bSmrg;; 8225*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_z_fv4sf" 8226*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 8227*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "s_register_operand" "w") 8228*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i") 8229*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8230*0bfacb9bSmrg VLDRWQGB_F)) 8231*0bfacb9bSmrg ] 8232*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8233*0bfacb9bSmrg{ 8234*0bfacb9bSmrg rtx ops[3]; 8235*0bfacb9bSmrg ops[0] = operands[0]; 8236*0bfacb9bSmrg ops[1] = operands[1]; 8237*0bfacb9bSmrg ops[2] = operands[2]; 8238*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%q1, %2]",ops); 8239*0bfacb9bSmrg return ""; 8240*0bfacb9bSmrg} 8241*0bfacb9bSmrg [(set_attr "length" "8")]) 8242*0bfacb9bSmrg 8243*0bfacb9bSmrg;; 8244*0bfacb9bSmrg;; [vldrwq_gather_offset_f] 8245*0bfacb9bSmrg;; 8246*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_offset_fv4sf" 8247*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 8248*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us") 8249*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 8250*0bfacb9bSmrg VLDRWQGO_F)) 8251*0bfacb9bSmrg ] 8252*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8253*0bfacb9bSmrg{ 8254*0bfacb9bSmrg rtx ops[3]; 8255*0bfacb9bSmrg ops[0] = operands[0]; 8256*0bfacb9bSmrg ops[1] = operands[1]; 8257*0bfacb9bSmrg ops[2] = operands[2]; 8258*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2]",ops); 8259*0bfacb9bSmrg return ""; 8260*0bfacb9bSmrg} 8261*0bfacb9bSmrg [(set_attr "length" "4")]) 8262*0bfacb9bSmrg 8263*0bfacb9bSmrg;; 8264*0bfacb9bSmrg;; [vldrwq_gather_offset_s vldrwq_gather_offset_u] 8265*0bfacb9bSmrg;; 8266*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_offset_<supf>v4si" 8267*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 8268*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us") 8269*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 8270*0bfacb9bSmrg VLDRWGOQ)) 8271*0bfacb9bSmrg ] 8272*0bfacb9bSmrg "TARGET_HAVE_MVE" 8273*0bfacb9bSmrg{ 8274*0bfacb9bSmrg rtx ops[3]; 8275*0bfacb9bSmrg ops[0] = operands[0]; 8276*0bfacb9bSmrg ops[1] = operands[1]; 8277*0bfacb9bSmrg ops[2] = operands[2]; 8278*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2]",ops); 8279*0bfacb9bSmrg return ""; 8280*0bfacb9bSmrg} 8281*0bfacb9bSmrg [(set_attr "length" "4")]) 8282*0bfacb9bSmrg 8283*0bfacb9bSmrg;; 8284*0bfacb9bSmrg;; [vldrwq_gather_offset_z_f] 8285*0bfacb9bSmrg;; 8286*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_offset_z_fv4sf" 8287*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 8288*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us") 8289*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 8290*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8291*0bfacb9bSmrg VLDRWQGO_F)) 8292*0bfacb9bSmrg ] 8293*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8294*0bfacb9bSmrg{ 8295*0bfacb9bSmrg rtx ops[4]; 8296*0bfacb9bSmrg ops[0] = operands[0]; 8297*0bfacb9bSmrg ops[1] = operands[1]; 8298*0bfacb9bSmrg ops[2] = operands[2]; 8299*0bfacb9bSmrg ops[3] = operands[3]; 8300*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2]",ops); 8301*0bfacb9bSmrg return ""; 8302*0bfacb9bSmrg} 8303*0bfacb9bSmrg [(set_attr "length" "8")]) 8304*0bfacb9bSmrg 8305*0bfacb9bSmrg;; 8306*0bfacb9bSmrg;; [vldrwq_gather_offset_z_s vldrwq_gather_offset_z_u] 8307*0bfacb9bSmrg;; 8308*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_offset_z_<supf>v4si" 8309*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 8310*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us") 8311*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 8312*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8313*0bfacb9bSmrg VLDRWGOQ)) 8314*0bfacb9bSmrg ] 8315*0bfacb9bSmrg "TARGET_HAVE_MVE" 8316*0bfacb9bSmrg{ 8317*0bfacb9bSmrg rtx ops[4]; 8318*0bfacb9bSmrg ops[0] = operands[0]; 8319*0bfacb9bSmrg ops[1] = operands[1]; 8320*0bfacb9bSmrg ops[2] = operands[2]; 8321*0bfacb9bSmrg ops[3] = operands[3]; 8322*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2]",ops); 8323*0bfacb9bSmrg return ""; 8324*0bfacb9bSmrg} 8325*0bfacb9bSmrg [(set_attr "length" "8")]) 8326*0bfacb9bSmrg 8327*0bfacb9bSmrg;; 8328*0bfacb9bSmrg;; [vldrwq_gather_shifted_offset_f] 8329*0bfacb9bSmrg;; 8330*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_shifted_offset_fv4sf" 8331*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 8332*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us") 8333*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 8334*0bfacb9bSmrg VLDRWQGSO_F)) 8335*0bfacb9bSmrg ] 8336*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8337*0bfacb9bSmrg{ 8338*0bfacb9bSmrg rtx ops[3]; 8339*0bfacb9bSmrg ops[0] = operands[0]; 8340*0bfacb9bSmrg ops[1] = operands[1]; 8341*0bfacb9bSmrg ops[2] = operands[2]; 8342*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2, uxtw #2]",ops); 8343*0bfacb9bSmrg return ""; 8344*0bfacb9bSmrg} 8345*0bfacb9bSmrg [(set_attr "length" "4")]) 8346*0bfacb9bSmrg 8347*0bfacb9bSmrg;; 8348*0bfacb9bSmrg;; [vldrwq_gather_shifted_offset_s vldrwq_gather_shifted_offset_u] 8349*0bfacb9bSmrg;; 8350*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_shifted_offset_<supf>v4si" 8351*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 8352*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us") 8353*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 8354*0bfacb9bSmrg VLDRWGSOQ)) 8355*0bfacb9bSmrg ] 8356*0bfacb9bSmrg "TARGET_HAVE_MVE" 8357*0bfacb9bSmrg{ 8358*0bfacb9bSmrg rtx ops[3]; 8359*0bfacb9bSmrg ops[0] = operands[0]; 8360*0bfacb9bSmrg ops[1] = operands[1]; 8361*0bfacb9bSmrg ops[2] = operands[2]; 8362*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%m1, %q2, uxtw #2]",ops); 8363*0bfacb9bSmrg return ""; 8364*0bfacb9bSmrg} 8365*0bfacb9bSmrg [(set_attr "length" "4")]) 8366*0bfacb9bSmrg 8367*0bfacb9bSmrg;; 8368*0bfacb9bSmrg;; [vldrwq_gather_shifted_offset_z_f] 8369*0bfacb9bSmrg;; 8370*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_shifted_offset_z_fv4sf" 8371*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 8372*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 1 "memory_operand" "Us") 8373*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 8374*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8375*0bfacb9bSmrg VLDRWQGSO_F)) 8376*0bfacb9bSmrg ] 8377*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8378*0bfacb9bSmrg{ 8379*0bfacb9bSmrg rtx ops[4]; 8380*0bfacb9bSmrg ops[0] = operands[0]; 8381*0bfacb9bSmrg ops[1] = operands[1]; 8382*0bfacb9bSmrg ops[2] = operands[2]; 8383*0bfacb9bSmrg ops[3] = operands[3]; 8384*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2, uxtw #2]",ops); 8385*0bfacb9bSmrg return ""; 8386*0bfacb9bSmrg} 8387*0bfacb9bSmrg [(set_attr "length" "8")]) 8388*0bfacb9bSmrg 8389*0bfacb9bSmrg;; 8390*0bfacb9bSmrg;; [vldrwq_gather_shifted_offset_z_s vldrwq_gather_shifted_offset_z_u] 8391*0bfacb9bSmrg;; 8392*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_shifted_offset_z_<supf>v4si" 8393*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 8394*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "memory_operand" "Us") 8395*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 8396*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8397*0bfacb9bSmrg VLDRWGSOQ)) 8398*0bfacb9bSmrg ] 8399*0bfacb9bSmrg "TARGET_HAVE_MVE" 8400*0bfacb9bSmrg{ 8401*0bfacb9bSmrg rtx ops[4]; 8402*0bfacb9bSmrg ops[0] = operands[0]; 8403*0bfacb9bSmrg ops[1] = operands[1]; 8404*0bfacb9bSmrg ops[2] = operands[2]; 8405*0bfacb9bSmrg ops[3] = operands[3]; 8406*0bfacb9bSmrg output_asm_insn ("vpst\n\tvldrwt.u32\t%q0, [%m1, %q2, uxtw #2]",ops); 8407*0bfacb9bSmrg return ""; 8408*0bfacb9bSmrg} 8409*0bfacb9bSmrg [(set_attr "length" "8")]) 8410*0bfacb9bSmrg 8411*0bfacb9bSmrg;; 8412*0bfacb9bSmrg;; [vstrhq_f] 8413*0bfacb9bSmrg;; 8414*0bfacb9bSmrg(define_insn "mve_vstrhq_fv8hf" 8415*0bfacb9bSmrg [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux") 8416*0bfacb9bSmrg (unspec:V8HI [(match_operand:V8HF 1 "s_register_operand" "w")] 8417*0bfacb9bSmrg VSTRHQ_F)) 8418*0bfacb9bSmrg ] 8419*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8420*0bfacb9bSmrg{ 8421*0bfacb9bSmrg rtx ops[2]; 8422*0bfacb9bSmrg int regno = REGNO (operands[1]); 8423*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8424*0bfacb9bSmrg ops[0] = operands[0]; 8425*0bfacb9bSmrg output_asm_insn ("vstrh.16\t%q1, %E0",ops); 8426*0bfacb9bSmrg return ""; 8427*0bfacb9bSmrg} 8428*0bfacb9bSmrg [(set_attr "length" "4")]) 8429*0bfacb9bSmrg 8430*0bfacb9bSmrg;; 8431*0bfacb9bSmrg;; [vstrhq_p_f] 8432*0bfacb9bSmrg;; 8433*0bfacb9bSmrg(define_insn "mve_vstrhq_p_fv8hf" 8434*0bfacb9bSmrg [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux") 8435*0bfacb9bSmrg (unspec:V8HI [(match_operand:V8HF 1 "s_register_operand" "w") 8436*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 8437*0bfacb9bSmrg VSTRHQ_F)) 8438*0bfacb9bSmrg ] 8439*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8440*0bfacb9bSmrg{ 8441*0bfacb9bSmrg rtx ops[2]; 8442*0bfacb9bSmrg int regno = REGNO (operands[1]); 8443*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8444*0bfacb9bSmrg ops[0] = operands[0]; 8445*0bfacb9bSmrg output_asm_insn ("vpst\;vstrht.16\t%q1, %E0",ops); 8446*0bfacb9bSmrg return ""; 8447*0bfacb9bSmrg} 8448*0bfacb9bSmrg [(set_attr "length" "8")]) 8449*0bfacb9bSmrg 8450*0bfacb9bSmrg;; 8451*0bfacb9bSmrg;; [vstrhq_p_s vstrhq_p_u] 8452*0bfacb9bSmrg;; 8453*0bfacb9bSmrg(define_insn "mve_vstrhq_p_<supf><mode>" 8454*0bfacb9bSmrg [(set (match_operand:<MVE_H_ELEM> 0 "mve_memory_operand" "=Ux") 8455*0bfacb9bSmrg (unspec:<MVE_H_ELEM> [(match_operand:MVE_6 1 "s_register_operand" "w") 8456*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 8457*0bfacb9bSmrg VSTRHQ)) 8458*0bfacb9bSmrg ] 8459*0bfacb9bSmrg "TARGET_HAVE_MVE" 8460*0bfacb9bSmrg{ 8461*0bfacb9bSmrg rtx ops[2]; 8462*0bfacb9bSmrg int regno = REGNO (operands[1]); 8463*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8464*0bfacb9bSmrg ops[0] = operands[0]; 8465*0bfacb9bSmrg output_asm_insn ("vpst\;vstrht.<V_sz_elem>\t%q1, %E0",ops); 8466*0bfacb9bSmrg return ""; 8467*0bfacb9bSmrg} 8468*0bfacb9bSmrg [(set_attr "length" "8")]) 8469*0bfacb9bSmrg 8470*0bfacb9bSmrg;; 8471*0bfacb9bSmrg;; [vstrhq_scatter_offset_p_s vstrhq_scatter_offset_p_u] 8472*0bfacb9bSmrg;; 8473*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_offset_p_<supf><mode>" 8474*0bfacb9bSmrg [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory") 8475*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand") 8476*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand") 8477*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 8478*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHSOQ)] 8479*0bfacb9bSmrg "TARGET_HAVE_MVE" 8480*0bfacb9bSmrg{ 8481*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8482*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8483*0bfacb9bSmrg emit_insn ( 8484*0bfacb9bSmrg gen_mve_vstrhq_scatter_offset_p_<supf><mode>_insn (ind, operands[1], 8485*0bfacb9bSmrg operands[2], 8486*0bfacb9bSmrg operands[3])); 8487*0bfacb9bSmrg DONE; 8488*0bfacb9bSmrg}) 8489*0bfacb9bSmrg 8490*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_offset_p_<supf><mode>_insn" 8491*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8492*0bfacb9bSmrg (unspec:BLK 8493*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8494*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand" "w") 8495*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w") 8496*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8497*0bfacb9bSmrg VSTRHSOQ))] 8498*0bfacb9bSmrg "TARGET_HAVE_MVE" 8499*0bfacb9bSmrg "vpst\;vstrht.<V_sz_elem>\t%q2, [%0, %q1]" 8500*0bfacb9bSmrg [(set_attr "length" "8")]) 8501*0bfacb9bSmrg 8502*0bfacb9bSmrg;; 8503*0bfacb9bSmrg;; [vstrhq_scatter_offset_s vstrhq_scatter_offset_u] 8504*0bfacb9bSmrg;; 8505*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_offset_<supf><mode>" 8506*0bfacb9bSmrg [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory") 8507*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand") 8508*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand") 8509*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHSOQ)] 8510*0bfacb9bSmrg "TARGET_HAVE_MVE" 8511*0bfacb9bSmrg{ 8512*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8513*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8514*0bfacb9bSmrg emit_insn (gen_mve_vstrhq_scatter_offset_<supf><mode>_insn (ind, operands[1], 8515*0bfacb9bSmrg operands[2])); 8516*0bfacb9bSmrg DONE; 8517*0bfacb9bSmrg}) 8518*0bfacb9bSmrg 8519*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_offset_<supf><mode>_insn" 8520*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8521*0bfacb9bSmrg (unspec:BLK 8522*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8523*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand" "w") 8524*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w")] 8525*0bfacb9bSmrg VSTRHSOQ))] 8526*0bfacb9bSmrg "TARGET_HAVE_MVE" 8527*0bfacb9bSmrg "vstrh.<V_sz_elem>\t%q2, [%0, %q1]" 8528*0bfacb9bSmrg [(set_attr "length" "4")]) 8529*0bfacb9bSmrg 8530*0bfacb9bSmrg;; 8531*0bfacb9bSmrg;; [vstrhq_scatter_shifted_offset_p_s vstrhq_scatter_shifted_offset_p_u] 8532*0bfacb9bSmrg;; 8533*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_shifted_offset_p_<supf><mode>" 8534*0bfacb9bSmrg [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory") 8535*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand") 8536*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand") 8537*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 8538*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHSSOQ)] 8539*0bfacb9bSmrg "TARGET_HAVE_MVE" 8540*0bfacb9bSmrg{ 8541*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8542*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8543*0bfacb9bSmrg emit_insn ( 8544*0bfacb9bSmrg gen_mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn (ind, operands[1], 8545*0bfacb9bSmrg operands[2], 8546*0bfacb9bSmrg operands[3])); 8547*0bfacb9bSmrg DONE; 8548*0bfacb9bSmrg}) 8549*0bfacb9bSmrg 8550*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn" 8551*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8552*0bfacb9bSmrg (unspec:BLK 8553*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8554*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand" "w") 8555*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w") 8556*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8557*0bfacb9bSmrg VSTRHSSOQ))] 8558*0bfacb9bSmrg "TARGET_HAVE_MVE" 8559*0bfacb9bSmrg "vpst\;vstrht.<V_sz_elem>\t%q2, [%0, %q1, uxtw #1]" 8560*0bfacb9bSmrg [(set_attr "length" "8")]) 8561*0bfacb9bSmrg 8562*0bfacb9bSmrg;; 8563*0bfacb9bSmrg;; [vstrhq_scatter_shifted_offset_s vstrhq_scatter_shifted_offset_u] 8564*0bfacb9bSmrg;; 8565*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_shifted_offset_<supf><mode>" 8566*0bfacb9bSmrg [(match_operand:<MVE_H_ELEM> 0 "mve_scatter_memory") 8567*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand") 8568*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand") 8569*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHSSOQ)] 8570*0bfacb9bSmrg "TARGET_HAVE_MVE" 8571*0bfacb9bSmrg{ 8572*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8573*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8574*0bfacb9bSmrg emit_insn ( 8575*0bfacb9bSmrg gen_mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn (ind, operands[1], 8576*0bfacb9bSmrg operands[2])); 8577*0bfacb9bSmrg DONE; 8578*0bfacb9bSmrg}) 8579*0bfacb9bSmrg 8580*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn" 8581*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8582*0bfacb9bSmrg (unspec:BLK 8583*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8584*0bfacb9bSmrg (match_operand:MVE_6 1 "s_register_operand" "w") 8585*0bfacb9bSmrg (match_operand:MVE_6 2 "s_register_operand" "w")] 8586*0bfacb9bSmrg VSTRHSSOQ))] 8587*0bfacb9bSmrg "TARGET_HAVE_MVE" 8588*0bfacb9bSmrg "vstrh.<V_sz_elem>\t%q2, [%0, %q1, uxtw #1]" 8589*0bfacb9bSmrg [(set_attr "length" "4")]) 8590*0bfacb9bSmrg 8591*0bfacb9bSmrg;; 8592*0bfacb9bSmrg;; [vstrhq_s, vstrhq_u] 8593*0bfacb9bSmrg;; 8594*0bfacb9bSmrg(define_insn "mve_vstrhq_<supf><mode>" 8595*0bfacb9bSmrg [(set (match_operand:<MVE_H_ELEM> 0 "mve_memory_operand" "=Ux") 8596*0bfacb9bSmrg (unspec:<MVE_H_ELEM> [(match_operand:MVE_6 1 "s_register_operand" "w")] 8597*0bfacb9bSmrg VSTRHQ)) 8598*0bfacb9bSmrg ] 8599*0bfacb9bSmrg "TARGET_HAVE_MVE" 8600*0bfacb9bSmrg{ 8601*0bfacb9bSmrg rtx ops[2]; 8602*0bfacb9bSmrg int regno = REGNO (operands[1]); 8603*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8604*0bfacb9bSmrg ops[0] = operands[0]; 8605*0bfacb9bSmrg output_asm_insn ("vstrh.<V_sz_elem>\t%q1, %E0",ops); 8606*0bfacb9bSmrg return ""; 8607*0bfacb9bSmrg} 8608*0bfacb9bSmrg [(set_attr "length" "4")]) 8609*0bfacb9bSmrg 8610*0bfacb9bSmrg;; 8611*0bfacb9bSmrg;; [vstrwq_f] 8612*0bfacb9bSmrg;; 8613*0bfacb9bSmrg(define_insn "mve_vstrwq_fv4sf" 8614*0bfacb9bSmrg [(set (match_operand:V4SI 0 "memory_operand" "=Ux") 8615*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SF 1 "s_register_operand" "w")] 8616*0bfacb9bSmrg VSTRWQ_F)) 8617*0bfacb9bSmrg ] 8618*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8619*0bfacb9bSmrg{ 8620*0bfacb9bSmrg rtx ops[2]; 8621*0bfacb9bSmrg int regno = REGNO (operands[1]); 8622*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8623*0bfacb9bSmrg ops[0] = operands[0]; 8624*0bfacb9bSmrg output_asm_insn ("vstrw.32\t%q1, %E0",ops); 8625*0bfacb9bSmrg return ""; 8626*0bfacb9bSmrg} 8627*0bfacb9bSmrg [(set_attr "length" "4")]) 8628*0bfacb9bSmrg 8629*0bfacb9bSmrg;; 8630*0bfacb9bSmrg;; [vstrwq_p_f] 8631*0bfacb9bSmrg;; 8632*0bfacb9bSmrg(define_insn "mve_vstrwq_p_fv4sf" 8633*0bfacb9bSmrg [(set (match_operand:V4SI 0 "memory_operand" "=Ux") 8634*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SF 1 "s_register_operand" "w") 8635*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 8636*0bfacb9bSmrg VSTRWQ_F)) 8637*0bfacb9bSmrg ] 8638*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8639*0bfacb9bSmrg{ 8640*0bfacb9bSmrg rtx ops[2]; 8641*0bfacb9bSmrg int regno = REGNO (operands[1]); 8642*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8643*0bfacb9bSmrg ops[0] = operands[0]; 8644*0bfacb9bSmrg output_asm_insn ("vpst\;vstrwt.32\t%q1, %E0",ops); 8645*0bfacb9bSmrg return ""; 8646*0bfacb9bSmrg} 8647*0bfacb9bSmrg [(set_attr "length" "8")]) 8648*0bfacb9bSmrg 8649*0bfacb9bSmrg;; 8650*0bfacb9bSmrg;; [vstrwq_p_s vstrwq_p_u] 8651*0bfacb9bSmrg;; 8652*0bfacb9bSmrg(define_insn "mve_vstrwq_p_<supf>v4si" 8653*0bfacb9bSmrg [(set (match_operand:V4SI 0 "memory_operand" "=Ux") 8654*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 8655*0bfacb9bSmrg (match_operand:HI 2 "vpr_register_operand" "Up")] 8656*0bfacb9bSmrg VSTRWQ)) 8657*0bfacb9bSmrg ] 8658*0bfacb9bSmrg "TARGET_HAVE_MVE" 8659*0bfacb9bSmrg{ 8660*0bfacb9bSmrg rtx ops[2]; 8661*0bfacb9bSmrg int regno = REGNO (operands[1]); 8662*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8663*0bfacb9bSmrg ops[0] = operands[0]; 8664*0bfacb9bSmrg output_asm_insn ("vpst\;vstrwt.32\t%q1, %E0",ops); 8665*0bfacb9bSmrg return ""; 8666*0bfacb9bSmrg} 8667*0bfacb9bSmrg [(set_attr "length" "8")]) 8668*0bfacb9bSmrg 8669*0bfacb9bSmrg;; 8670*0bfacb9bSmrg;; [vstrwq_s vstrwq_u] 8671*0bfacb9bSmrg;; 8672*0bfacb9bSmrg(define_insn "mve_vstrwq_<supf>v4si" 8673*0bfacb9bSmrg [(set (match_operand:V4SI 0 "memory_operand" "=Ux") 8674*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")] 8675*0bfacb9bSmrg VSTRWQ)) 8676*0bfacb9bSmrg ] 8677*0bfacb9bSmrg "TARGET_HAVE_MVE" 8678*0bfacb9bSmrg{ 8679*0bfacb9bSmrg rtx ops[2]; 8680*0bfacb9bSmrg int regno = REGNO (operands[1]); 8681*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno); 8682*0bfacb9bSmrg ops[0] = operands[0]; 8683*0bfacb9bSmrg output_asm_insn ("vstrw.32\t%q1, %E0",ops); 8684*0bfacb9bSmrg return ""; 8685*0bfacb9bSmrg} 8686*0bfacb9bSmrg [(set_attr "length" "4")]) 8687*0bfacb9bSmrg 8688*0bfacb9bSmrg(define_expand "mve_vst1q_f<mode>" 8689*0bfacb9bSmrg [(match_operand:<MVE_CNVT> 0 "mve_memory_operand") 8690*0bfacb9bSmrg (unspec:<MVE_CNVT> [(match_operand:MVE_0 1 "s_register_operand")] VST1Q_F) 8691*0bfacb9bSmrg ] 8692*0bfacb9bSmrg "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT" 8693*0bfacb9bSmrg{ 8694*0bfacb9bSmrg emit_insn (gen_mve_vstr<V_sz_elem1>q_f<mode>(operands[0],operands[1])); 8695*0bfacb9bSmrg DONE; 8696*0bfacb9bSmrg}) 8697*0bfacb9bSmrg 8698*0bfacb9bSmrg(define_expand "mve_vst1q_<supf><mode>" 8699*0bfacb9bSmrg [(match_operand:MVE_2 0 "mve_memory_operand") 8700*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand")] VST1Q) 8701*0bfacb9bSmrg ] 8702*0bfacb9bSmrg "TARGET_HAVE_MVE" 8703*0bfacb9bSmrg{ 8704*0bfacb9bSmrg emit_insn (gen_mve_vstr<V_sz_elem1>q_<supf><mode>(operands[0],operands[1])); 8705*0bfacb9bSmrg DONE; 8706*0bfacb9bSmrg}) 8707*0bfacb9bSmrg 8708*0bfacb9bSmrg;; 8709*0bfacb9bSmrg;; [vstrdq_scatter_base_p_s vstrdq_scatter_base_p_u] 8710*0bfacb9bSmrg;; 8711*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_base_p_<supf>v2di" 8712*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8713*0bfacb9bSmrg (unspec:BLK 8714*0bfacb9bSmrg [(match_operand:V2DI 0 "s_register_operand" "w") 8715*0bfacb9bSmrg (match_operand:SI 1 "mve_vldrd_immediate" "Ri") 8716*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w") 8717*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8718*0bfacb9bSmrg VSTRDSBQ)) 8719*0bfacb9bSmrg ] 8720*0bfacb9bSmrg "TARGET_HAVE_MVE" 8721*0bfacb9bSmrg{ 8722*0bfacb9bSmrg rtx ops[3]; 8723*0bfacb9bSmrg ops[0] = operands[0]; 8724*0bfacb9bSmrg ops[1] = operands[1]; 8725*0bfacb9bSmrg ops[2] = operands[2]; 8726*0bfacb9bSmrg output_asm_insn ("vpst\;\tvstrdt.u64\t%q2, [%q0, %1]",ops); 8727*0bfacb9bSmrg return ""; 8728*0bfacb9bSmrg} 8729*0bfacb9bSmrg [(set_attr "length" "8")]) 8730*0bfacb9bSmrg 8731*0bfacb9bSmrg;; 8732*0bfacb9bSmrg;; [vstrdq_scatter_base_s vstrdq_scatter_base_u] 8733*0bfacb9bSmrg;; 8734*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_base_<supf>v2di" 8735*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8736*0bfacb9bSmrg (unspec:BLK 8737*0bfacb9bSmrg [(match_operand:V2DI 0 "s_register_operand" "=w") 8738*0bfacb9bSmrg (match_operand:SI 1 "mve_vldrd_immediate" "Ri") 8739*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w")] 8740*0bfacb9bSmrg VSTRDSBQ)) 8741*0bfacb9bSmrg ] 8742*0bfacb9bSmrg "TARGET_HAVE_MVE" 8743*0bfacb9bSmrg{ 8744*0bfacb9bSmrg rtx ops[3]; 8745*0bfacb9bSmrg ops[0] = operands[0]; 8746*0bfacb9bSmrg ops[1] = operands[1]; 8747*0bfacb9bSmrg ops[2] = operands[2]; 8748*0bfacb9bSmrg output_asm_insn ("vstrd.u64\t%q2, [%q0, %1]",ops); 8749*0bfacb9bSmrg return ""; 8750*0bfacb9bSmrg} 8751*0bfacb9bSmrg [(set_attr "length" "4")]) 8752*0bfacb9bSmrg 8753*0bfacb9bSmrg;; 8754*0bfacb9bSmrg;; [vstrdq_scatter_offset_p_s vstrdq_scatter_offset_p_u] 8755*0bfacb9bSmrg;; 8756*0bfacb9bSmrg(define_expand "mve_vstrdq_scatter_offset_p_<supf>v2di" 8757*0bfacb9bSmrg [(match_operand:V2DI 0 "mve_scatter_memory") 8758*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 8759*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand") 8760*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 8761*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRDSOQ)] 8762*0bfacb9bSmrg "TARGET_HAVE_MVE" 8763*0bfacb9bSmrg{ 8764*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8765*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8766*0bfacb9bSmrg emit_insn (gen_mve_vstrdq_scatter_offset_p_<supf>v2di_insn (ind, operands[1], 8767*0bfacb9bSmrg operands[2], 8768*0bfacb9bSmrg operands[3])); 8769*0bfacb9bSmrg DONE; 8770*0bfacb9bSmrg}) 8771*0bfacb9bSmrg 8772*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_offset_p_<supf>v2di_insn" 8773*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8774*0bfacb9bSmrg (unspec:BLK 8775*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8776*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand" "w") 8777*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w") 8778*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8779*0bfacb9bSmrg VSTRDSOQ))] 8780*0bfacb9bSmrg "TARGET_HAVE_MVE" 8781*0bfacb9bSmrg "vpst\;vstrdt.64\t%q2, [%0, %q1]" 8782*0bfacb9bSmrg [(set_attr "length" "8")]) 8783*0bfacb9bSmrg 8784*0bfacb9bSmrg;; 8785*0bfacb9bSmrg;; [vstrdq_scatter_offset_s vstrdq_scatter_offset_u] 8786*0bfacb9bSmrg;; 8787*0bfacb9bSmrg(define_expand "mve_vstrdq_scatter_offset_<supf>v2di" 8788*0bfacb9bSmrg [(match_operand:V2DI 0 "mve_scatter_memory") 8789*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 8790*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand") 8791*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRDSOQ)] 8792*0bfacb9bSmrg "TARGET_HAVE_MVE" 8793*0bfacb9bSmrg{ 8794*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8795*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8796*0bfacb9bSmrg emit_insn (gen_mve_vstrdq_scatter_offset_<supf>v2di_insn (ind, operands[1], 8797*0bfacb9bSmrg operands[2])); 8798*0bfacb9bSmrg DONE; 8799*0bfacb9bSmrg}) 8800*0bfacb9bSmrg 8801*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_offset_<supf>v2di_insn" 8802*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8803*0bfacb9bSmrg (unspec:BLK 8804*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8805*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand" "w") 8806*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w")] 8807*0bfacb9bSmrg VSTRDSOQ))] 8808*0bfacb9bSmrg "TARGET_HAVE_MVE" 8809*0bfacb9bSmrg "vstrd.64\t%q2, [%0, %q1]" 8810*0bfacb9bSmrg [(set_attr "length" "4")]) 8811*0bfacb9bSmrg 8812*0bfacb9bSmrg;; 8813*0bfacb9bSmrg;; [vstrdq_scatter_shifted_offset_p_s vstrdq_scatter_shifted_offset_p_u] 8814*0bfacb9bSmrg;; 8815*0bfacb9bSmrg(define_expand "mve_vstrdq_scatter_shifted_offset_p_<supf>v2di" 8816*0bfacb9bSmrg [(match_operand:V2DI 0 "mve_scatter_memory") 8817*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 8818*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand") 8819*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 8820*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRDSSOQ)] 8821*0bfacb9bSmrg "TARGET_HAVE_MVE" 8822*0bfacb9bSmrg{ 8823*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8824*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8825*0bfacb9bSmrg emit_insn ( 8826*0bfacb9bSmrg gen_mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn (ind, operands[1], 8827*0bfacb9bSmrg operands[2], 8828*0bfacb9bSmrg operands[3])); 8829*0bfacb9bSmrg DONE; 8830*0bfacb9bSmrg}) 8831*0bfacb9bSmrg 8832*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn" 8833*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8834*0bfacb9bSmrg (unspec:BLK 8835*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8836*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand" "w") 8837*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w") 8838*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8839*0bfacb9bSmrg VSTRDSSOQ))] 8840*0bfacb9bSmrg "TARGET_HAVE_MVE" 8841*0bfacb9bSmrg "vpst\;vstrdt.64\t%q2, [%0, %q1, UXTW #3]" 8842*0bfacb9bSmrg [(set_attr "length" "8")]) 8843*0bfacb9bSmrg 8844*0bfacb9bSmrg;; 8845*0bfacb9bSmrg;; [vstrdq_scatter_shifted_offset_s vstrdq_scatter_shifted_offset_u] 8846*0bfacb9bSmrg;; 8847*0bfacb9bSmrg(define_expand "mve_vstrdq_scatter_shifted_offset_<supf>v2di" 8848*0bfacb9bSmrg [(match_operand:V2DI 0 "mve_scatter_memory") 8849*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 8850*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand") 8851*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRDSSOQ)] 8852*0bfacb9bSmrg "TARGET_HAVE_MVE" 8853*0bfacb9bSmrg{ 8854*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8855*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8856*0bfacb9bSmrg emit_insn ( 8857*0bfacb9bSmrg gen_mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn (ind, operands[1], 8858*0bfacb9bSmrg operands[2])); 8859*0bfacb9bSmrg DONE; 8860*0bfacb9bSmrg}) 8861*0bfacb9bSmrg 8862*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn" 8863*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8864*0bfacb9bSmrg (unspec:BLK 8865*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8866*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand" "w") 8867*0bfacb9bSmrg (match_operand:V2DI 2 "s_register_operand" "w")] 8868*0bfacb9bSmrg VSTRDSSOQ))] 8869*0bfacb9bSmrg "TARGET_HAVE_MVE" 8870*0bfacb9bSmrg "vstrd.64\t%q2, [%0, %q1, UXTW #3]" 8871*0bfacb9bSmrg [(set_attr "length" "4")]) 8872*0bfacb9bSmrg 8873*0bfacb9bSmrg;; 8874*0bfacb9bSmrg;; [vstrhq_scatter_offset_f] 8875*0bfacb9bSmrg;; 8876*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_offset_fv8hf" 8877*0bfacb9bSmrg [(match_operand:V8HI 0 "mve_scatter_memory") 8878*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand") 8879*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand") 8880*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHQSO_F)] 8881*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8882*0bfacb9bSmrg{ 8883*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8884*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8885*0bfacb9bSmrg emit_insn (gen_mve_vstrhq_scatter_offset_fv8hf_insn (ind, operands[1], 8886*0bfacb9bSmrg operands[2])); 8887*0bfacb9bSmrg DONE; 8888*0bfacb9bSmrg}) 8889*0bfacb9bSmrg 8890*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_offset_fv8hf_insn" 8891*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8892*0bfacb9bSmrg (unspec:BLK 8893*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8894*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand" "w") 8895*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w")] 8896*0bfacb9bSmrg VSTRHQSO_F))] 8897*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8898*0bfacb9bSmrg "vstrh.16\t%q2, [%0, %q1]" 8899*0bfacb9bSmrg [(set_attr "length" "4")]) 8900*0bfacb9bSmrg 8901*0bfacb9bSmrg;; 8902*0bfacb9bSmrg;; [vstrhq_scatter_offset_p_f] 8903*0bfacb9bSmrg;; 8904*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_offset_p_fv8hf" 8905*0bfacb9bSmrg [(match_operand:V8HI 0 "mve_scatter_memory") 8906*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand") 8907*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand") 8908*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 8909*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHQSO_F)] 8910*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8911*0bfacb9bSmrg{ 8912*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8913*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8914*0bfacb9bSmrg emit_insn (gen_mve_vstrhq_scatter_offset_p_fv8hf_insn (ind, operands[1], 8915*0bfacb9bSmrg operands[2], 8916*0bfacb9bSmrg operands[3])); 8917*0bfacb9bSmrg DONE; 8918*0bfacb9bSmrg}) 8919*0bfacb9bSmrg 8920*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_offset_p_fv8hf_insn" 8921*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8922*0bfacb9bSmrg (unspec:BLK 8923*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8924*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand" "w") 8925*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 8926*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8927*0bfacb9bSmrg VSTRHQSO_F))] 8928*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8929*0bfacb9bSmrg "vpst\;vstrht.16\t%q2, [%0, %q1]" 8930*0bfacb9bSmrg [(set_attr "length" "8")]) 8931*0bfacb9bSmrg 8932*0bfacb9bSmrg;; 8933*0bfacb9bSmrg;; [vstrhq_scatter_shifted_offset_f] 8934*0bfacb9bSmrg;; 8935*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_shifted_offset_fv8hf" 8936*0bfacb9bSmrg [(match_operand:V8HI 0 "memory_operand" "=Us") 8937*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand" "w") 8938*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 8939*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHQSSO_F)] 8940*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8941*0bfacb9bSmrg{ 8942*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8943*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8944*0bfacb9bSmrg emit_insn (gen_mve_vstrhq_scatter_shifted_offset_fv8hf_insn (ind, operands[1], 8945*0bfacb9bSmrg operands[2])); 8946*0bfacb9bSmrg DONE; 8947*0bfacb9bSmrg}) 8948*0bfacb9bSmrg 8949*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_shifted_offset_fv8hf_insn" 8950*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8951*0bfacb9bSmrg (unspec:BLK 8952*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8953*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand" "w") 8954*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w")] 8955*0bfacb9bSmrg VSTRHQSSO_F))] 8956*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8957*0bfacb9bSmrg "vstrh.16\t%q2, [%0, %q1, uxtw #1]" 8958*0bfacb9bSmrg [(set_attr "length" "4")]) 8959*0bfacb9bSmrg 8960*0bfacb9bSmrg;; 8961*0bfacb9bSmrg;; [vstrhq_scatter_shifted_offset_p_f] 8962*0bfacb9bSmrg;; 8963*0bfacb9bSmrg(define_expand "mve_vstrhq_scatter_shifted_offset_p_fv8hf" 8964*0bfacb9bSmrg [(match_operand:V8HI 0 "memory_operand" "=Us") 8965*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand" "w") 8966*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 8967*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up") 8968*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRHQSSO_F)] 8969*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8970*0bfacb9bSmrg{ 8971*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 8972*0bfacb9bSmrg gcc_assert (REG_P (ind)); 8973*0bfacb9bSmrg emit_insn ( 8974*0bfacb9bSmrg gen_mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn (ind, operands[1], 8975*0bfacb9bSmrg operands[2], 8976*0bfacb9bSmrg operands[3])); 8977*0bfacb9bSmrg DONE; 8978*0bfacb9bSmrg}) 8979*0bfacb9bSmrg 8980*0bfacb9bSmrg(define_insn "mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn" 8981*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8982*0bfacb9bSmrg (unspec:BLK 8983*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 8984*0bfacb9bSmrg (match_operand:V8HI 1 "s_register_operand" "w") 8985*0bfacb9bSmrg (match_operand:V8HF 2 "s_register_operand" "w") 8986*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 8987*0bfacb9bSmrg VSTRHQSSO_F))] 8988*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 8989*0bfacb9bSmrg "vpst\;vstrht.16\t%q2, [%0, %q1, uxtw #1]" 8990*0bfacb9bSmrg [(set_attr "length" "8")]) 8991*0bfacb9bSmrg 8992*0bfacb9bSmrg;; 8993*0bfacb9bSmrg;; [vstrwq_scatter_base_f] 8994*0bfacb9bSmrg;; 8995*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_fv4sf" 8996*0bfacb9bSmrg [(set (mem:BLK (scratch)) 8997*0bfacb9bSmrg (unspec:BLK 8998*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand" "w") 8999*0bfacb9bSmrg (match_operand:SI 1 "immediate_operand" "i") 9000*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w")] 9001*0bfacb9bSmrg VSTRWQSB_F)) 9002*0bfacb9bSmrg ] 9003*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9004*0bfacb9bSmrg{ 9005*0bfacb9bSmrg rtx ops[3]; 9006*0bfacb9bSmrg ops[0] = operands[0]; 9007*0bfacb9bSmrg ops[1] = operands[1]; 9008*0bfacb9bSmrg ops[2] = operands[2]; 9009*0bfacb9bSmrg output_asm_insn ("vstrw.u32\t%q2, [%q0, %1]",ops); 9010*0bfacb9bSmrg return ""; 9011*0bfacb9bSmrg} 9012*0bfacb9bSmrg [(set_attr "length" "4")]) 9013*0bfacb9bSmrg 9014*0bfacb9bSmrg;; 9015*0bfacb9bSmrg;; [vstrwq_scatter_base_p_f] 9016*0bfacb9bSmrg;; 9017*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_p_fv4sf" 9018*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9019*0bfacb9bSmrg (unspec:BLK 9020*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand" "w") 9021*0bfacb9bSmrg (match_operand:SI 1 "immediate_operand" "i") 9022*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w") 9023*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 9024*0bfacb9bSmrg VSTRWQSB_F)) 9025*0bfacb9bSmrg ] 9026*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9027*0bfacb9bSmrg{ 9028*0bfacb9bSmrg rtx ops[3]; 9029*0bfacb9bSmrg ops[0] = operands[0]; 9030*0bfacb9bSmrg ops[1] = operands[1]; 9031*0bfacb9bSmrg ops[2] = operands[2]; 9032*0bfacb9bSmrg output_asm_insn ("vpst\n\tvstrwt.u32\t%q2, [%q0, %1]",ops); 9033*0bfacb9bSmrg return ""; 9034*0bfacb9bSmrg} 9035*0bfacb9bSmrg [(set_attr "length" "8")]) 9036*0bfacb9bSmrg 9037*0bfacb9bSmrg;; 9038*0bfacb9bSmrg;; [vstrwq_scatter_offset_f] 9039*0bfacb9bSmrg;; 9040*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_offset_fv4sf" 9041*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9042*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9043*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand") 9044*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWQSO_F)] 9045*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9046*0bfacb9bSmrg{ 9047*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9048*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9049*0bfacb9bSmrg emit_insn (gen_mve_vstrwq_scatter_offset_fv4sf_insn (ind, operands[1], 9050*0bfacb9bSmrg operands[2])); 9051*0bfacb9bSmrg DONE; 9052*0bfacb9bSmrg}) 9053*0bfacb9bSmrg 9054*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_offset_fv4sf_insn" 9055*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9056*0bfacb9bSmrg (unspec:BLK 9057*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9058*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9059*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w")] 9060*0bfacb9bSmrg VSTRWQSO_F))] 9061*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9062*0bfacb9bSmrg "vstrw.32\t%q2, [%0, %q1]" 9063*0bfacb9bSmrg [(set_attr "length" "4")]) 9064*0bfacb9bSmrg 9065*0bfacb9bSmrg;; 9066*0bfacb9bSmrg;; [vstrwq_scatter_offset_p_f] 9067*0bfacb9bSmrg;; 9068*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_offset_p_fv4sf" 9069*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9070*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9071*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand") 9072*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9073*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWQSO_F)] 9074*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9075*0bfacb9bSmrg{ 9076*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9077*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9078*0bfacb9bSmrg emit_insn (gen_mve_vstrwq_scatter_offset_p_fv4sf_insn (ind, operands[1], 9079*0bfacb9bSmrg operands[2], 9080*0bfacb9bSmrg operands[3])); 9081*0bfacb9bSmrg DONE; 9082*0bfacb9bSmrg}) 9083*0bfacb9bSmrg 9084*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_offset_p_fv4sf_insn" 9085*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9086*0bfacb9bSmrg (unspec:BLK 9087*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9088*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9089*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w") 9090*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 9091*0bfacb9bSmrg VSTRWQSO_F))] 9092*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9093*0bfacb9bSmrg "vpst\;vstrwt.32\t%q2, [%0, %q1]" 9094*0bfacb9bSmrg [(set_attr "length" "8")]) 9095*0bfacb9bSmrg 9096*0bfacb9bSmrg;; 9097*0bfacb9bSmrg;; [vstrwq_scatter_offset_s vstrwq_scatter_offset_u] 9098*0bfacb9bSmrg;; 9099*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_offset_p_<supf>v4si" 9100*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9101*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9102*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand") 9103*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9104*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWSOQ)] 9105*0bfacb9bSmrg "TARGET_HAVE_MVE" 9106*0bfacb9bSmrg{ 9107*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9108*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9109*0bfacb9bSmrg emit_insn (gen_mve_vstrwq_scatter_offset_p_<supf>v4si_insn (ind, operands[1], 9110*0bfacb9bSmrg operands[2], 9111*0bfacb9bSmrg operands[3])); 9112*0bfacb9bSmrg DONE; 9113*0bfacb9bSmrg}) 9114*0bfacb9bSmrg 9115*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_offset_p_<supf>v4si_insn" 9116*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9117*0bfacb9bSmrg (unspec:BLK 9118*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9119*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9120*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 9121*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 9122*0bfacb9bSmrg VSTRWSOQ))] 9123*0bfacb9bSmrg "TARGET_HAVE_MVE" 9124*0bfacb9bSmrg "vpst\;vstrwt.32\t%q2, [%0, %q1]" 9125*0bfacb9bSmrg [(set_attr "length" "8")]) 9126*0bfacb9bSmrg 9127*0bfacb9bSmrg;; 9128*0bfacb9bSmrg;; [vstrwq_scatter_offset_s vstrwq_scatter_offset_u] 9129*0bfacb9bSmrg;; 9130*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_offset_<supf>v4si" 9131*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9132*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9133*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand") 9134*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWSOQ)] 9135*0bfacb9bSmrg "TARGET_HAVE_MVE" 9136*0bfacb9bSmrg{ 9137*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9138*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9139*0bfacb9bSmrg emit_insn (gen_mve_vstrwq_scatter_offset_<supf>v4si_insn (ind, operands[1], 9140*0bfacb9bSmrg operands[2])); 9141*0bfacb9bSmrg DONE; 9142*0bfacb9bSmrg}) 9143*0bfacb9bSmrg 9144*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_offset_<supf>v4si_insn" 9145*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9146*0bfacb9bSmrg (unspec:BLK 9147*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9148*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9149*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 9150*0bfacb9bSmrg VSTRWSOQ))] 9151*0bfacb9bSmrg "TARGET_HAVE_MVE" 9152*0bfacb9bSmrg "vstrw.32\t%q2, [%0, %q1]" 9153*0bfacb9bSmrg [(set_attr "length" "4")]) 9154*0bfacb9bSmrg 9155*0bfacb9bSmrg;; 9156*0bfacb9bSmrg;; [vstrwq_scatter_shifted_offset_f] 9157*0bfacb9bSmrg;; 9158*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_shifted_offset_fv4sf" 9159*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9160*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9161*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand") 9162*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWQSSO_F)] 9163*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9164*0bfacb9bSmrg{ 9165*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9166*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9167*0bfacb9bSmrg emit_insn (gen_mve_vstrwq_scatter_shifted_offset_fv4sf_insn (ind, operands[1], 9168*0bfacb9bSmrg operands[2])); 9169*0bfacb9bSmrg DONE; 9170*0bfacb9bSmrg}) 9171*0bfacb9bSmrg 9172*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_shifted_offset_fv4sf_insn" 9173*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9174*0bfacb9bSmrg (unspec:BLK 9175*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9176*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9177*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w")] 9178*0bfacb9bSmrg VSTRWQSSO_F))] 9179*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9180*0bfacb9bSmrg "vstrw.32\t%q2, [%0, %q1, uxtw #2]" 9181*0bfacb9bSmrg [(set_attr "length" "8")]) 9182*0bfacb9bSmrg 9183*0bfacb9bSmrg;; 9184*0bfacb9bSmrg;; [vstrwq_scatter_shifted_offset_p_f] 9185*0bfacb9bSmrg;; 9186*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_shifted_offset_p_fv4sf" 9187*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9188*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9189*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand") 9190*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9191*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWQSSO_F)] 9192*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9193*0bfacb9bSmrg{ 9194*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9195*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9196*0bfacb9bSmrg emit_insn ( 9197*0bfacb9bSmrg gen_mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn (ind, operands[1], 9198*0bfacb9bSmrg operands[2], 9199*0bfacb9bSmrg operands[3])); 9200*0bfacb9bSmrg DONE; 9201*0bfacb9bSmrg}) 9202*0bfacb9bSmrg 9203*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn" 9204*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9205*0bfacb9bSmrg (unspec:BLK 9206*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9207*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9208*0bfacb9bSmrg (match_operand:V4SF 2 "s_register_operand" "w") 9209*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 9210*0bfacb9bSmrg VSTRWQSSO_F))] 9211*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9212*0bfacb9bSmrg "vpst\;vstrwt.32\t%q2, [%0, %q1, uxtw #2]" 9213*0bfacb9bSmrg [(set_attr "length" "8")]) 9214*0bfacb9bSmrg 9215*0bfacb9bSmrg;; 9216*0bfacb9bSmrg;; [vstrwq_scatter_shifted_offset_p_s vstrwq_scatter_shifted_offset_p_u] 9217*0bfacb9bSmrg;; 9218*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_shifted_offset_p_<supf>v4si" 9219*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9220*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9221*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand") 9222*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9223*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWSSOQ)] 9224*0bfacb9bSmrg "TARGET_HAVE_MVE" 9225*0bfacb9bSmrg{ 9226*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9227*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9228*0bfacb9bSmrg emit_insn ( 9229*0bfacb9bSmrg gen_mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn (ind, operands[1], 9230*0bfacb9bSmrg operands[2], 9231*0bfacb9bSmrg operands[3])); 9232*0bfacb9bSmrg DONE; 9233*0bfacb9bSmrg}) 9234*0bfacb9bSmrg 9235*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn" 9236*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9237*0bfacb9bSmrg (unspec:BLK 9238*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9239*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9240*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 9241*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand" "Up")] 9242*0bfacb9bSmrg VSTRWSSOQ))] 9243*0bfacb9bSmrg "TARGET_HAVE_MVE" 9244*0bfacb9bSmrg "vpst\;vstrwt.32\t%q2, [%0, %q1, uxtw #2]" 9245*0bfacb9bSmrg [(set_attr "length" "8")]) 9246*0bfacb9bSmrg 9247*0bfacb9bSmrg;; 9248*0bfacb9bSmrg;; [vstrwq_scatter_shifted_offset_s vstrwq_scatter_shifted_offset_u] 9249*0bfacb9bSmrg;; 9250*0bfacb9bSmrg(define_expand "mve_vstrwq_scatter_shifted_offset_<supf>v4si" 9251*0bfacb9bSmrg [(match_operand:V4SI 0 "mve_scatter_memory") 9252*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9253*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand") 9254*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VSTRWSSOQ)] 9255*0bfacb9bSmrg "TARGET_HAVE_MVE" 9256*0bfacb9bSmrg{ 9257*0bfacb9bSmrg rtx ind = XEXP (operands[0], 0); 9258*0bfacb9bSmrg gcc_assert (REG_P (ind)); 9259*0bfacb9bSmrg emit_insn ( 9260*0bfacb9bSmrg gen_mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn (ind, operands[1], 9261*0bfacb9bSmrg operands[2])); 9262*0bfacb9bSmrg DONE; 9263*0bfacb9bSmrg}) 9264*0bfacb9bSmrg 9265*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn" 9266*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9267*0bfacb9bSmrg (unspec:BLK 9268*0bfacb9bSmrg [(match_operand:SI 0 "register_operand" "r") 9269*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand" "w") 9270*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 9271*0bfacb9bSmrg VSTRWSSOQ))] 9272*0bfacb9bSmrg "TARGET_HAVE_MVE" 9273*0bfacb9bSmrg "vstrw.32\t%q2, [%0, %q1, uxtw #2]" 9274*0bfacb9bSmrg [(set_attr "length" "4")]) 9275*0bfacb9bSmrg 9276*0bfacb9bSmrg;; 9277*0bfacb9bSmrg;; [vaddq_s, vaddq_u]) 9278*0bfacb9bSmrg;; 9279*0bfacb9bSmrg(define_insn "mve_vaddq<mode>" 9280*0bfacb9bSmrg [ 9281*0bfacb9bSmrg (set (match_operand:MVE_2 0 "s_register_operand" "=w") 9282*0bfacb9bSmrg (plus:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w") 9283*0bfacb9bSmrg (match_operand:MVE_2 2 "s_register_operand" "w"))) 9284*0bfacb9bSmrg ] 9285*0bfacb9bSmrg "TARGET_HAVE_MVE" 9286*0bfacb9bSmrg "vadd.i%#<V_sz_elem> %q0, %q1, %q2" 9287*0bfacb9bSmrg [(set_attr "type" "mve_move") 9288*0bfacb9bSmrg]) 9289*0bfacb9bSmrg 9290*0bfacb9bSmrg;; 9291*0bfacb9bSmrg;; [vaddq_f]) 9292*0bfacb9bSmrg;; 9293*0bfacb9bSmrg(define_insn "mve_vaddq_f<mode>" 9294*0bfacb9bSmrg [ 9295*0bfacb9bSmrg (set (match_operand:MVE_0 0 "s_register_operand" "=w") 9296*0bfacb9bSmrg (plus:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w") 9297*0bfacb9bSmrg (match_operand:MVE_0 2 "s_register_operand" "w"))) 9298*0bfacb9bSmrg ] 9299*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9300*0bfacb9bSmrg "vadd.f%#<V_sz_elem> %q0, %q1, %q2" 9301*0bfacb9bSmrg [(set_attr "type" "mve_move") 9302*0bfacb9bSmrg]) 9303*0bfacb9bSmrg 9304*0bfacb9bSmrg;; 9305*0bfacb9bSmrg;; [vidupq_n_u]) 9306*0bfacb9bSmrg;; 9307*0bfacb9bSmrg(define_expand "mve_vidupq_n_u<mode>" 9308*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9309*0bfacb9bSmrg (match_operand:SI 1 "s_register_operand") 9310*0bfacb9bSmrg (match_operand:SI 2 "mve_imm_selective_upto_8")] 9311*0bfacb9bSmrg "TARGET_HAVE_MVE" 9312*0bfacb9bSmrg{ 9313*0bfacb9bSmrg rtx temp = gen_reg_rtx (SImode); 9314*0bfacb9bSmrg emit_move_insn (temp, operands[1]); 9315*0bfacb9bSmrg rtx inc = gen_int_mode (INTVAL(operands[2]) * <MVE_LANES>, SImode); 9316*0bfacb9bSmrg emit_insn (gen_mve_vidupq_u<mode>_insn (operands[0], temp, operands[1], 9317*0bfacb9bSmrg operands[2], inc)); 9318*0bfacb9bSmrg DONE; 9319*0bfacb9bSmrg}) 9320*0bfacb9bSmrg 9321*0bfacb9bSmrg;; 9322*0bfacb9bSmrg;; [vidupq_u_insn]) 9323*0bfacb9bSmrg;; 9324*0bfacb9bSmrg(define_insn "mve_vidupq_u<mode>_insn" 9325*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9326*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1") 9327*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg")] 9328*0bfacb9bSmrg VIDUPQ)) 9329*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=Te") 9330*0bfacb9bSmrg (plus:SI (match_dup 2) 9331*0bfacb9bSmrg (match_operand:SI 4 "immediate_operand" "i")))] 9332*0bfacb9bSmrg "TARGET_HAVE_MVE" 9333*0bfacb9bSmrg "vidup.u%#<V_sz_elem>\t%q0, %1, %3") 9334*0bfacb9bSmrg 9335*0bfacb9bSmrg;; 9336*0bfacb9bSmrg;; [vidupq_m_n_u]) 9337*0bfacb9bSmrg;; 9338*0bfacb9bSmrg(define_expand "mve_vidupq_m_n_u<mode>" 9339*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9340*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 9341*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 9342*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8") 9343*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand")] 9344*0bfacb9bSmrg "TARGET_HAVE_MVE" 9345*0bfacb9bSmrg{ 9346*0bfacb9bSmrg rtx temp = gen_reg_rtx (SImode); 9347*0bfacb9bSmrg emit_move_insn (temp, operands[2]); 9348*0bfacb9bSmrg rtx inc = gen_int_mode (INTVAL(operands[3]) * <MVE_LANES>, SImode); 9349*0bfacb9bSmrg emit_insn (gen_mve_vidupq_m_wb_u<mode>_insn(operands[0], operands[1], temp, 9350*0bfacb9bSmrg operands[2], operands[3], 9351*0bfacb9bSmrg operands[4], inc)); 9352*0bfacb9bSmrg DONE; 9353*0bfacb9bSmrg}) 9354*0bfacb9bSmrg 9355*0bfacb9bSmrg;; 9356*0bfacb9bSmrg;; [vidupq_m_wb_u_insn]) 9357*0bfacb9bSmrg;; 9358*0bfacb9bSmrg(define_insn "mve_vidupq_m_wb_u<mode>_insn" 9359*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9360*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 9361*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "2") 9362*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg") 9363*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand" "Up")] 9364*0bfacb9bSmrg VIDUPQ_M)) 9365*0bfacb9bSmrg (set (match_operand:SI 2 "s_register_operand" "=Te") 9366*0bfacb9bSmrg (plus:SI (match_dup 3) 9367*0bfacb9bSmrg (match_operand:SI 6 "immediate_operand" "i")))] 9368*0bfacb9bSmrg "TARGET_HAVE_MVE" 9369*0bfacb9bSmrg "vpst\;\tvidupt.u%#<V_sz_elem>\t%q0, %2, %4" 9370*0bfacb9bSmrg [(set_attr "length""8")]) 9371*0bfacb9bSmrg 9372*0bfacb9bSmrg;; 9373*0bfacb9bSmrg;; [vddupq_n_u]) 9374*0bfacb9bSmrg;; 9375*0bfacb9bSmrg(define_expand "mve_vddupq_n_u<mode>" 9376*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9377*0bfacb9bSmrg (match_operand:SI 1 "s_register_operand") 9378*0bfacb9bSmrg (match_operand:SI 2 "mve_imm_selective_upto_8")] 9379*0bfacb9bSmrg "TARGET_HAVE_MVE" 9380*0bfacb9bSmrg{ 9381*0bfacb9bSmrg rtx temp = gen_reg_rtx (SImode); 9382*0bfacb9bSmrg emit_move_insn (temp, operands[1]); 9383*0bfacb9bSmrg rtx inc = gen_int_mode (INTVAL(operands[2]) * <MVE_LANES>, SImode); 9384*0bfacb9bSmrg emit_insn (gen_mve_vddupq_u<mode>_insn (operands[0], temp, operands[1], 9385*0bfacb9bSmrg operands[2], inc)); 9386*0bfacb9bSmrg DONE; 9387*0bfacb9bSmrg}) 9388*0bfacb9bSmrg 9389*0bfacb9bSmrg;; 9390*0bfacb9bSmrg;; [vddupq_u_insn]) 9391*0bfacb9bSmrg;; 9392*0bfacb9bSmrg(define_insn "mve_vddupq_u<mode>_insn" 9393*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9394*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1") 9395*0bfacb9bSmrg (match_operand:SI 3 "immediate_operand" "i")] 9396*0bfacb9bSmrg VDDUPQ)) 9397*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=Te") 9398*0bfacb9bSmrg (minus:SI (match_dup 2) 9399*0bfacb9bSmrg (match_operand:SI 4 "immediate_operand" "i")))] 9400*0bfacb9bSmrg "TARGET_HAVE_MVE" 9401*0bfacb9bSmrg "vddup.u%#<V_sz_elem> %q0, %1, %3") 9402*0bfacb9bSmrg 9403*0bfacb9bSmrg;; 9404*0bfacb9bSmrg;; [vddupq_m_n_u]) 9405*0bfacb9bSmrg;; 9406*0bfacb9bSmrg(define_expand "mve_vddupq_m_n_u<mode>" 9407*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9408*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 9409*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 9410*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8") 9411*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand")] 9412*0bfacb9bSmrg "TARGET_HAVE_MVE" 9413*0bfacb9bSmrg{ 9414*0bfacb9bSmrg rtx temp = gen_reg_rtx (SImode); 9415*0bfacb9bSmrg emit_move_insn (temp, operands[2]); 9416*0bfacb9bSmrg rtx inc = gen_int_mode (INTVAL(operands[3]) * <MVE_LANES>, SImode); 9417*0bfacb9bSmrg emit_insn (gen_mve_vddupq_m_wb_u<mode>_insn(operands[0], operands[1], temp, 9418*0bfacb9bSmrg operands[2], operands[3], 9419*0bfacb9bSmrg operands[4], inc)); 9420*0bfacb9bSmrg DONE; 9421*0bfacb9bSmrg}) 9422*0bfacb9bSmrg 9423*0bfacb9bSmrg;; 9424*0bfacb9bSmrg;; [vddupq_m_wb_u_insn]) 9425*0bfacb9bSmrg;; 9426*0bfacb9bSmrg(define_insn "mve_vddupq_m_wb_u<mode>_insn" 9427*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9428*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") 9429*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "2") 9430*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg") 9431*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand" "Up")] 9432*0bfacb9bSmrg VDDUPQ_M)) 9433*0bfacb9bSmrg (set (match_operand:SI 2 "s_register_operand" "=Te") 9434*0bfacb9bSmrg (minus:SI (match_dup 3) 9435*0bfacb9bSmrg (match_operand:SI 6 "immediate_operand" "i")))] 9436*0bfacb9bSmrg "TARGET_HAVE_MVE" 9437*0bfacb9bSmrg "vpst\;\tvddupt.u%#<V_sz_elem>\t%q0, %2, %4" 9438*0bfacb9bSmrg [(set_attr "length""8")]) 9439*0bfacb9bSmrg 9440*0bfacb9bSmrg;; 9441*0bfacb9bSmrg;; [vdwdupq_n_u]) 9442*0bfacb9bSmrg;; 9443*0bfacb9bSmrg(define_expand "mve_vdwdupq_n_u<mode>" 9444*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9445*0bfacb9bSmrg (match_operand:SI 1 "s_register_operand") 9446*0bfacb9bSmrg (match_operand:DI 2 "s_register_operand") 9447*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8")] 9448*0bfacb9bSmrg "TARGET_HAVE_MVE" 9449*0bfacb9bSmrg{ 9450*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (SImode); 9451*0bfacb9bSmrg emit_insn (gen_mve_vdwdupq_wb_u<mode>_insn (operands[0], ignore_wb, 9452*0bfacb9bSmrg operands[1], operands[2], 9453*0bfacb9bSmrg operands[3])); 9454*0bfacb9bSmrg DONE; 9455*0bfacb9bSmrg}) 9456*0bfacb9bSmrg 9457*0bfacb9bSmrg;; 9458*0bfacb9bSmrg;; [vdwdupq_wb_u]) 9459*0bfacb9bSmrg;; 9460*0bfacb9bSmrg(define_expand "mve_vdwdupq_wb_u<mode>" 9461*0bfacb9bSmrg [(match_operand:SI 0 "s_register_operand") 9462*0bfacb9bSmrg (match_operand:SI 1 "s_register_operand") 9463*0bfacb9bSmrg (match_operand:DI 2 "s_register_operand") 9464*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8") 9465*0bfacb9bSmrg (unspec:MVE_2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] 9466*0bfacb9bSmrg "TARGET_HAVE_MVE" 9467*0bfacb9bSmrg{ 9468*0bfacb9bSmrg rtx ignore_vec = gen_reg_rtx (<MODE>mode); 9469*0bfacb9bSmrg emit_insn (gen_mve_vdwdupq_wb_u<mode>_insn (ignore_vec, operands[0], 9470*0bfacb9bSmrg operands[1], operands[2], 9471*0bfacb9bSmrg operands[3])); 9472*0bfacb9bSmrg DONE; 9473*0bfacb9bSmrg}) 9474*0bfacb9bSmrg 9475*0bfacb9bSmrg;; 9476*0bfacb9bSmrg;; [vdwdupq_wb_u_insn]) 9477*0bfacb9bSmrg;; 9478*0bfacb9bSmrg(define_insn "mve_vdwdupq_wb_u<mode>_insn" 9479*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9480*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1") 9481*0bfacb9bSmrg (subreg:SI (match_operand:DI 3 "s_register_operand" "r") 4) 9482*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg")] 9483*0bfacb9bSmrg VDWDUPQ)) 9484*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=Te") 9485*0bfacb9bSmrg (unspec:SI [(match_dup 2) 9486*0bfacb9bSmrg (subreg:SI (match_dup 3) 4) 9487*0bfacb9bSmrg (match_dup 4)] 9488*0bfacb9bSmrg VDWDUPQ))] 9489*0bfacb9bSmrg "TARGET_HAVE_MVE" 9490*0bfacb9bSmrg "vdwdup.u%#<V_sz_elem>\t%q0, %2, %R3, %4" 9491*0bfacb9bSmrg) 9492*0bfacb9bSmrg 9493*0bfacb9bSmrg;; 9494*0bfacb9bSmrg;; [vdwdupq_m_n_u]) 9495*0bfacb9bSmrg;; 9496*0bfacb9bSmrg(define_expand "mve_vdwdupq_m_n_u<mode>" 9497*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9498*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 9499*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 9500*0bfacb9bSmrg (match_operand:DI 3 "s_register_operand") 9501*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8") 9502*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand")] 9503*0bfacb9bSmrg "TARGET_HAVE_MVE" 9504*0bfacb9bSmrg{ 9505*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (SImode); 9506*0bfacb9bSmrg emit_insn (gen_mve_vdwdupq_m_wb_u<mode>_insn (operands[0], ignore_wb, 9507*0bfacb9bSmrg operands[1], operands[2], 9508*0bfacb9bSmrg operands[3], operands[4], 9509*0bfacb9bSmrg operands[5])); 9510*0bfacb9bSmrg DONE; 9511*0bfacb9bSmrg}) 9512*0bfacb9bSmrg 9513*0bfacb9bSmrg;; 9514*0bfacb9bSmrg;; [vdwdupq_m_wb_u]) 9515*0bfacb9bSmrg;; 9516*0bfacb9bSmrg(define_expand "mve_vdwdupq_m_wb_u<mode>" 9517*0bfacb9bSmrg [(match_operand:SI 0 "s_register_operand") 9518*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 9519*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 9520*0bfacb9bSmrg (match_operand:DI 3 "s_register_operand") 9521*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8") 9522*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand")] 9523*0bfacb9bSmrg "TARGET_HAVE_MVE" 9524*0bfacb9bSmrg{ 9525*0bfacb9bSmrg rtx ignore_vec = gen_reg_rtx (<MODE>mode); 9526*0bfacb9bSmrg emit_insn (gen_mve_vdwdupq_m_wb_u<mode>_insn (ignore_vec, operands[0], 9527*0bfacb9bSmrg operands[1], operands[2], 9528*0bfacb9bSmrg operands[3], operands[4], 9529*0bfacb9bSmrg operands[5])); 9530*0bfacb9bSmrg DONE; 9531*0bfacb9bSmrg}) 9532*0bfacb9bSmrg 9533*0bfacb9bSmrg;; 9534*0bfacb9bSmrg;; [vdwdupq_m_wb_u_insn]) 9535*0bfacb9bSmrg;; 9536*0bfacb9bSmrg(define_insn "mve_vdwdupq_m_wb_u<mode>_insn" 9537*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9538*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0") 9539*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "1") 9540*0bfacb9bSmrg (subreg:SI (match_operand:DI 4 "s_register_operand" "r") 4) 9541*0bfacb9bSmrg (match_operand:SI 5 "mve_imm_selective_upto_8" "Rg") 9542*0bfacb9bSmrg (match_operand:HI 6 "vpr_register_operand" "Up")] 9543*0bfacb9bSmrg VDWDUPQ_M)) 9544*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=Te") 9545*0bfacb9bSmrg (unspec:SI [(match_dup 2) 9546*0bfacb9bSmrg (match_dup 3) 9547*0bfacb9bSmrg (subreg:SI (match_dup 4) 4) 9548*0bfacb9bSmrg (match_dup 5) 9549*0bfacb9bSmrg (match_dup 6)] 9550*0bfacb9bSmrg VDWDUPQ_M)) 9551*0bfacb9bSmrg ] 9552*0bfacb9bSmrg "TARGET_HAVE_MVE" 9553*0bfacb9bSmrg "vpst\;\tvdwdupt.u%#<V_sz_elem>\t%q2, %3, %R4, %5" 9554*0bfacb9bSmrg [(set_attr "type" "mve_move") 9555*0bfacb9bSmrg (set_attr "length""8")]) 9556*0bfacb9bSmrg 9557*0bfacb9bSmrg;; 9558*0bfacb9bSmrg;; [viwdupq_n_u]) 9559*0bfacb9bSmrg;; 9560*0bfacb9bSmrg(define_expand "mve_viwdupq_n_u<mode>" 9561*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9562*0bfacb9bSmrg (match_operand:SI 1 "s_register_operand") 9563*0bfacb9bSmrg (match_operand:DI 2 "s_register_operand") 9564*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8")] 9565*0bfacb9bSmrg "TARGET_HAVE_MVE" 9566*0bfacb9bSmrg{ 9567*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (SImode); 9568*0bfacb9bSmrg emit_insn (gen_mve_viwdupq_wb_u<mode>_insn (operands[0], ignore_wb, 9569*0bfacb9bSmrg operands[1], operands[2], 9570*0bfacb9bSmrg operands[3])); 9571*0bfacb9bSmrg DONE; 9572*0bfacb9bSmrg}) 9573*0bfacb9bSmrg 9574*0bfacb9bSmrg;; 9575*0bfacb9bSmrg;; [viwdupq_wb_u]) 9576*0bfacb9bSmrg;; 9577*0bfacb9bSmrg(define_expand "mve_viwdupq_wb_u<mode>" 9578*0bfacb9bSmrg [(match_operand:SI 0 "s_register_operand") 9579*0bfacb9bSmrg (match_operand:SI 1 "s_register_operand") 9580*0bfacb9bSmrg (match_operand:DI 2 "s_register_operand") 9581*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_selective_upto_8") 9582*0bfacb9bSmrg (unspec:MVE_2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] 9583*0bfacb9bSmrg "TARGET_HAVE_MVE" 9584*0bfacb9bSmrg{ 9585*0bfacb9bSmrg rtx ignore_vec = gen_reg_rtx (<MODE>mode); 9586*0bfacb9bSmrg emit_insn (gen_mve_viwdupq_wb_u<mode>_insn (ignore_vec, operands[0], 9587*0bfacb9bSmrg operands[1], operands[2], 9588*0bfacb9bSmrg operands[3])); 9589*0bfacb9bSmrg DONE; 9590*0bfacb9bSmrg}) 9591*0bfacb9bSmrg 9592*0bfacb9bSmrg;; 9593*0bfacb9bSmrg;; [viwdupq_wb_u_insn]) 9594*0bfacb9bSmrg;; 9595*0bfacb9bSmrg(define_insn "mve_viwdupq_wb_u<mode>_insn" 9596*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9597*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:SI 2 "s_register_operand" "1") 9598*0bfacb9bSmrg (subreg:SI (match_operand:DI 3 "s_register_operand" "r") 4) 9599*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8" "Rg")] 9600*0bfacb9bSmrg VIWDUPQ)) 9601*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=Te") 9602*0bfacb9bSmrg (unspec:SI [(match_dup 2) 9603*0bfacb9bSmrg (subreg:SI (match_dup 3) 4) 9604*0bfacb9bSmrg (match_dup 4)] 9605*0bfacb9bSmrg VIWDUPQ))] 9606*0bfacb9bSmrg "TARGET_HAVE_MVE" 9607*0bfacb9bSmrg "viwdup.u%#<V_sz_elem>\t%q0, %2, %R3, %4" 9608*0bfacb9bSmrg) 9609*0bfacb9bSmrg 9610*0bfacb9bSmrg;; 9611*0bfacb9bSmrg;; [viwdupq_m_n_u]) 9612*0bfacb9bSmrg;; 9613*0bfacb9bSmrg(define_expand "mve_viwdupq_m_n_u<mode>" 9614*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 9615*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 9616*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 9617*0bfacb9bSmrg (match_operand:DI 3 "s_register_operand") 9618*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8") 9619*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand")] 9620*0bfacb9bSmrg "TARGET_HAVE_MVE" 9621*0bfacb9bSmrg{ 9622*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (SImode); 9623*0bfacb9bSmrg emit_insn (gen_mve_viwdupq_m_wb_u<mode>_insn (operands[0], ignore_wb, 9624*0bfacb9bSmrg operands[1], operands[2], 9625*0bfacb9bSmrg operands[3], operands[4], 9626*0bfacb9bSmrg operands[5])); 9627*0bfacb9bSmrg DONE; 9628*0bfacb9bSmrg}) 9629*0bfacb9bSmrg 9630*0bfacb9bSmrg;; 9631*0bfacb9bSmrg;; [viwdupq_m_wb_u]) 9632*0bfacb9bSmrg;; 9633*0bfacb9bSmrg(define_expand "mve_viwdupq_m_wb_u<mode>" 9634*0bfacb9bSmrg [(match_operand:SI 0 "s_register_operand") 9635*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 9636*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 9637*0bfacb9bSmrg (match_operand:DI 3 "s_register_operand") 9638*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_selective_upto_8") 9639*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand")] 9640*0bfacb9bSmrg "TARGET_HAVE_MVE" 9641*0bfacb9bSmrg{ 9642*0bfacb9bSmrg rtx ignore_vec = gen_reg_rtx (<MODE>mode); 9643*0bfacb9bSmrg emit_insn (gen_mve_viwdupq_m_wb_u<mode>_insn (ignore_vec, operands[0], 9644*0bfacb9bSmrg operands[1], operands[2], 9645*0bfacb9bSmrg operands[3], operands[4], 9646*0bfacb9bSmrg operands[5])); 9647*0bfacb9bSmrg DONE; 9648*0bfacb9bSmrg}) 9649*0bfacb9bSmrg 9650*0bfacb9bSmrg;; 9651*0bfacb9bSmrg;; [viwdupq_m_wb_u_insn]) 9652*0bfacb9bSmrg;; 9653*0bfacb9bSmrg(define_insn "mve_viwdupq_m_wb_u<mode>_insn" 9654*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 9655*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0") 9656*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "1") 9657*0bfacb9bSmrg (subreg:SI (match_operand:DI 4 "s_register_operand" "r") 4) 9658*0bfacb9bSmrg (match_operand:SI 5 "mve_imm_selective_upto_8" "Rg") 9659*0bfacb9bSmrg (match_operand:HI 6 "vpr_register_operand" "Up")] 9660*0bfacb9bSmrg VIWDUPQ_M)) 9661*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=Te") 9662*0bfacb9bSmrg (unspec:SI [(match_dup 2) 9663*0bfacb9bSmrg (match_dup 3) 9664*0bfacb9bSmrg (subreg:SI (match_dup 4) 4) 9665*0bfacb9bSmrg (match_dup 5) 9666*0bfacb9bSmrg (match_dup 6)] 9667*0bfacb9bSmrg VIWDUPQ_M)) 9668*0bfacb9bSmrg ] 9669*0bfacb9bSmrg "TARGET_HAVE_MVE" 9670*0bfacb9bSmrg "vpst\;\tviwdupt.u%#<V_sz_elem>\t%q2, %3, %R4, %5" 9671*0bfacb9bSmrg [(set_attr "type" "mve_move") 9672*0bfacb9bSmrg (set_attr "length""8")]) 9673*0bfacb9bSmrg 9674*0bfacb9bSmrg;; 9675*0bfacb9bSmrg;; [vstrwq_scatter_base_wb_s vstrwq_scatter_base_wb_u] 9676*0bfacb9bSmrg;; 9677*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_wb_<supf>v4si" 9678*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9679*0bfacb9bSmrg (unspec:BLK 9680*0bfacb9bSmrg [(match_operand:V4SI 1 "s_register_operand" "0") 9681*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate" "Ri") 9682*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w")] 9683*0bfacb9bSmrg VSTRWSBWBQ)) 9684*0bfacb9bSmrg (set (match_operand:V4SI 0 "s_register_operand" "=w") 9685*0bfacb9bSmrg (unspec:V4SI [(match_dup 1) (match_dup 2)] 9686*0bfacb9bSmrg VSTRWSBWBQ)) 9687*0bfacb9bSmrg ] 9688*0bfacb9bSmrg "TARGET_HAVE_MVE" 9689*0bfacb9bSmrg{ 9690*0bfacb9bSmrg rtx ops[3]; 9691*0bfacb9bSmrg ops[0] = operands[1]; 9692*0bfacb9bSmrg ops[1] = operands[2]; 9693*0bfacb9bSmrg ops[2] = operands[3]; 9694*0bfacb9bSmrg output_asm_insn ("vstrw.u32\t%q2, [%q0, %1]!",ops); 9695*0bfacb9bSmrg return ""; 9696*0bfacb9bSmrg} 9697*0bfacb9bSmrg [(set_attr "length" "4")]) 9698*0bfacb9bSmrg 9699*0bfacb9bSmrg;; 9700*0bfacb9bSmrg;; [vstrwq_scatter_base_wb_p_s vstrwq_scatter_base_wb_p_u] 9701*0bfacb9bSmrg;; 9702*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_wb_p_<supf>v4si" 9703*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9704*0bfacb9bSmrg (unspec:BLK 9705*0bfacb9bSmrg [(match_operand:V4SI 1 "s_register_operand" "0") 9706*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate" "Ri") 9707*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 9708*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand")] 9709*0bfacb9bSmrg VSTRWSBWBQ)) 9710*0bfacb9bSmrg (set (match_operand:V4SI 0 "s_register_operand" "=w") 9711*0bfacb9bSmrg (unspec:V4SI [(match_dup 1) (match_dup 2)] 9712*0bfacb9bSmrg VSTRWSBWBQ)) 9713*0bfacb9bSmrg ] 9714*0bfacb9bSmrg "TARGET_HAVE_MVE" 9715*0bfacb9bSmrg{ 9716*0bfacb9bSmrg rtx ops[3]; 9717*0bfacb9bSmrg ops[0] = operands[1]; 9718*0bfacb9bSmrg ops[1] = operands[2]; 9719*0bfacb9bSmrg ops[2] = operands[3]; 9720*0bfacb9bSmrg output_asm_insn ("vpst\;\tvstrwt.u32\t%q2, [%q0, %1]!",ops); 9721*0bfacb9bSmrg return ""; 9722*0bfacb9bSmrg} 9723*0bfacb9bSmrg [(set_attr "length" "8")]) 9724*0bfacb9bSmrg 9725*0bfacb9bSmrg;; 9726*0bfacb9bSmrg;; [vstrwq_scatter_base_wb_f] 9727*0bfacb9bSmrg;; 9728*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_wb_fv4sf" 9729*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9730*0bfacb9bSmrg (unspec:BLK 9731*0bfacb9bSmrg [(match_operand:V4SI 1 "s_register_operand" "0") 9732*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate" "Ri") 9733*0bfacb9bSmrg (match_operand:V4SF 3 "s_register_operand" "w")] 9734*0bfacb9bSmrg VSTRWQSBWB_F)) 9735*0bfacb9bSmrg (set (match_operand:V4SI 0 "s_register_operand" "=w") 9736*0bfacb9bSmrg (unspec:V4SI [(match_dup 1) (match_dup 2)] 9737*0bfacb9bSmrg VSTRWQSBWB_F)) 9738*0bfacb9bSmrg ] 9739*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9740*0bfacb9bSmrg{ 9741*0bfacb9bSmrg rtx ops[3]; 9742*0bfacb9bSmrg ops[0] = operands[1]; 9743*0bfacb9bSmrg ops[1] = operands[2]; 9744*0bfacb9bSmrg ops[2] = operands[3]; 9745*0bfacb9bSmrg output_asm_insn ("vstrw.u32\t%q2, [%q0, %1]!",ops); 9746*0bfacb9bSmrg return ""; 9747*0bfacb9bSmrg} 9748*0bfacb9bSmrg [(set_attr "length" "4")]) 9749*0bfacb9bSmrg 9750*0bfacb9bSmrg;; 9751*0bfacb9bSmrg;; [vstrwq_scatter_base_wb_p_f] 9752*0bfacb9bSmrg;; 9753*0bfacb9bSmrg(define_insn "mve_vstrwq_scatter_base_wb_p_fv4sf" 9754*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9755*0bfacb9bSmrg (unspec:BLK 9756*0bfacb9bSmrg [(match_operand:V4SI 1 "s_register_operand" "0") 9757*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate" "Ri") 9758*0bfacb9bSmrg (match_operand:V4SF 3 "s_register_operand" "w") 9759*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand")] 9760*0bfacb9bSmrg VSTRWQSBWB_F)) 9761*0bfacb9bSmrg (set (match_operand:V4SI 0 "s_register_operand" "=w") 9762*0bfacb9bSmrg (unspec:V4SI [(match_dup 1) (match_dup 2)] 9763*0bfacb9bSmrg VSTRWQSBWB_F)) 9764*0bfacb9bSmrg ] 9765*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9766*0bfacb9bSmrg{ 9767*0bfacb9bSmrg rtx ops[3]; 9768*0bfacb9bSmrg ops[0] = operands[1]; 9769*0bfacb9bSmrg ops[1] = operands[2]; 9770*0bfacb9bSmrg ops[2] = operands[3]; 9771*0bfacb9bSmrg output_asm_insn ("vpst\;\tvstrwt.u32\t%q2, [%q0, %1]!",ops); 9772*0bfacb9bSmrg return ""; 9773*0bfacb9bSmrg} 9774*0bfacb9bSmrg [(set_attr "length" "8")]) 9775*0bfacb9bSmrg 9776*0bfacb9bSmrg;; 9777*0bfacb9bSmrg;; [vstrdq_scatter_base_wb_s vstrdq_scatter_base_wb_u] 9778*0bfacb9bSmrg;; 9779*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_base_wb_<supf>v2di" 9780*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9781*0bfacb9bSmrg (unspec:BLK 9782*0bfacb9bSmrg [(match_operand:V2DI 1 "s_register_operand" "0") 9783*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate" "Ri") 9784*0bfacb9bSmrg (match_operand:V2DI 3 "s_register_operand" "w")] 9785*0bfacb9bSmrg VSTRDSBWBQ)) 9786*0bfacb9bSmrg (set (match_operand:V2DI 0 "s_register_operand" "=&w") 9787*0bfacb9bSmrg (unspec:V2DI [(match_dup 1) (match_dup 2)] 9788*0bfacb9bSmrg VSTRDSBWBQ)) 9789*0bfacb9bSmrg ] 9790*0bfacb9bSmrg "TARGET_HAVE_MVE" 9791*0bfacb9bSmrg{ 9792*0bfacb9bSmrg rtx ops[3]; 9793*0bfacb9bSmrg ops[0] = operands[1]; 9794*0bfacb9bSmrg ops[1] = operands[2]; 9795*0bfacb9bSmrg ops[2] = operands[3]; 9796*0bfacb9bSmrg output_asm_insn ("vstrd.u64\t%q2, [%q0, %1]!",ops); 9797*0bfacb9bSmrg return ""; 9798*0bfacb9bSmrg} 9799*0bfacb9bSmrg [(set_attr "length" "4")]) 9800*0bfacb9bSmrg 9801*0bfacb9bSmrg;; 9802*0bfacb9bSmrg;; [vstrdq_scatter_base_wb_p_s vstrdq_scatter_base_wb_p_u] 9803*0bfacb9bSmrg;; 9804*0bfacb9bSmrg(define_insn "mve_vstrdq_scatter_base_wb_p_<supf>v2di" 9805*0bfacb9bSmrg [(set (mem:BLK (scratch)) 9806*0bfacb9bSmrg (unspec:BLK 9807*0bfacb9bSmrg [(match_operand:V2DI 1 "s_register_operand" "0") 9808*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate" "Ri") 9809*0bfacb9bSmrg (match_operand:V2DI 3 "s_register_operand" "w") 9810*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand")] 9811*0bfacb9bSmrg VSTRDSBWBQ)) 9812*0bfacb9bSmrg (set (match_operand:V2DI 0 "s_register_operand" "=w") 9813*0bfacb9bSmrg (unspec:V2DI [(match_dup 1) (match_dup 2)] 9814*0bfacb9bSmrg VSTRDSBWBQ)) 9815*0bfacb9bSmrg ] 9816*0bfacb9bSmrg "TARGET_HAVE_MVE" 9817*0bfacb9bSmrg{ 9818*0bfacb9bSmrg rtx ops[3]; 9819*0bfacb9bSmrg ops[0] = operands[1]; 9820*0bfacb9bSmrg ops[1] = operands[2]; 9821*0bfacb9bSmrg ops[2] = operands[3]; 9822*0bfacb9bSmrg output_asm_insn ("vpst;vstrdt.u64\t%q2, [%q0, %1]!",ops); 9823*0bfacb9bSmrg return ""; 9824*0bfacb9bSmrg} 9825*0bfacb9bSmrg [(set_attr "length" "8")]) 9826*0bfacb9bSmrg 9827*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_wb_<supf>v4si" 9828*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand") 9829*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9830*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9831*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)] 9832*0bfacb9bSmrg "TARGET_HAVE_MVE" 9833*0bfacb9bSmrg{ 9834*0bfacb9bSmrg rtx ignore_result = gen_reg_rtx (V4SImode); 9835*0bfacb9bSmrg emit_insn ( 9836*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_<supf>v4si_insn (ignore_result, operands[0], 9837*0bfacb9bSmrg operands[1], operands[2])); 9838*0bfacb9bSmrg DONE; 9839*0bfacb9bSmrg}) 9840*0bfacb9bSmrg 9841*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_nowb_<supf>v4si" 9842*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand") 9843*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9844*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9845*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)] 9846*0bfacb9bSmrg "TARGET_HAVE_MVE" 9847*0bfacb9bSmrg{ 9848*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (V4SImode); 9849*0bfacb9bSmrg emit_insn ( 9850*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_<supf>v4si_insn (operands[0], ignore_wb, 9851*0bfacb9bSmrg operands[1], operands[2])); 9852*0bfacb9bSmrg DONE; 9853*0bfacb9bSmrg}) 9854*0bfacb9bSmrg 9855*0bfacb9bSmrg;; 9856*0bfacb9bSmrg;; [vldrwq_gather_base_wb_s vldrwq_gather_base_wb_u] 9857*0bfacb9bSmrg;; 9858*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_wb_<supf>v4si_insn" 9859*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 9860*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 2 "s_register_operand" "1") 9861*0bfacb9bSmrg (match_operand:SI 3 "mve_vldrd_immediate" "Ri") 9862*0bfacb9bSmrg (mem:BLK (scratch))] 9863*0bfacb9bSmrg VLDRWGBWBQ)) 9864*0bfacb9bSmrg (set (match_operand:V4SI 1 "s_register_operand" "=&w") 9865*0bfacb9bSmrg (unspec:V4SI [(match_dup 2) (match_dup 3)] 9866*0bfacb9bSmrg VLDRWGBWBQ)) 9867*0bfacb9bSmrg ] 9868*0bfacb9bSmrg "TARGET_HAVE_MVE" 9869*0bfacb9bSmrg{ 9870*0bfacb9bSmrg rtx ops[3]; 9871*0bfacb9bSmrg ops[0] = operands[0]; 9872*0bfacb9bSmrg ops[1] = operands[2]; 9873*0bfacb9bSmrg ops[2] = operands[3]; 9874*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]!",ops); 9875*0bfacb9bSmrg return ""; 9876*0bfacb9bSmrg} 9877*0bfacb9bSmrg [(set_attr "length" "4")]) 9878*0bfacb9bSmrg 9879*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_wb_z_<supf>v4si" 9880*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand") 9881*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9882*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9883*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9884*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)] 9885*0bfacb9bSmrg "TARGET_HAVE_MVE" 9886*0bfacb9bSmrg{ 9887*0bfacb9bSmrg rtx ignore_result = gen_reg_rtx (V4SImode); 9888*0bfacb9bSmrg emit_insn ( 9889*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_z_<supf>v4si_insn (ignore_result, operands[0], 9890*0bfacb9bSmrg operands[1], operands[2], 9891*0bfacb9bSmrg operands[3])); 9892*0bfacb9bSmrg DONE; 9893*0bfacb9bSmrg}) 9894*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_nowb_z_<supf>v4si" 9895*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand") 9896*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9897*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9898*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9899*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWGBWBQ)] 9900*0bfacb9bSmrg "TARGET_HAVE_MVE" 9901*0bfacb9bSmrg{ 9902*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (V4SImode); 9903*0bfacb9bSmrg emit_insn ( 9904*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_z_<supf>v4si_insn (operands[0], ignore_wb, 9905*0bfacb9bSmrg operands[1], operands[2], 9906*0bfacb9bSmrg operands[3])); 9907*0bfacb9bSmrg DONE; 9908*0bfacb9bSmrg}) 9909*0bfacb9bSmrg 9910*0bfacb9bSmrg;; 9911*0bfacb9bSmrg;; [vldrwq_gather_base_wb_z_s vldrwq_gather_base_wb_z_u] 9912*0bfacb9bSmrg;; 9913*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_wb_z_<supf>v4si_insn" 9914*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=&w") 9915*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 2 "s_register_operand" "1") 9916*0bfacb9bSmrg (match_operand:SI 3 "mve_vldrd_immediate" "Ri") 9917*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up") 9918*0bfacb9bSmrg (mem:BLK (scratch))] 9919*0bfacb9bSmrg VLDRWGBWBQ)) 9920*0bfacb9bSmrg (set (match_operand:V4SI 1 "s_register_operand" "=&w") 9921*0bfacb9bSmrg (unspec:V4SI [(match_dup 2) (match_dup 3)] 9922*0bfacb9bSmrg VLDRWGBWBQ)) 9923*0bfacb9bSmrg ] 9924*0bfacb9bSmrg "TARGET_HAVE_MVE" 9925*0bfacb9bSmrg{ 9926*0bfacb9bSmrg rtx ops[3]; 9927*0bfacb9bSmrg ops[0] = operands[0]; 9928*0bfacb9bSmrg ops[1] = operands[2]; 9929*0bfacb9bSmrg ops[2] = operands[3]; 9930*0bfacb9bSmrg output_asm_insn ("vpst\;vldrwt.u32\t%q0, [%q1, %2]!",ops); 9931*0bfacb9bSmrg return ""; 9932*0bfacb9bSmrg} 9933*0bfacb9bSmrg [(set_attr "length" "8")]) 9934*0bfacb9bSmrg 9935*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_wb_fv4sf" 9936*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand") 9937*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9938*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9939*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)] 9940*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9941*0bfacb9bSmrg{ 9942*0bfacb9bSmrg rtx ignore_result = gen_reg_rtx (V4SFmode); 9943*0bfacb9bSmrg emit_insn ( 9944*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_fv4sf_insn (ignore_result, operands[0], 9945*0bfacb9bSmrg operands[1], operands[2])); 9946*0bfacb9bSmrg DONE; 9947*0bfacb9bSmrg}) 9948*0bfacb9bSmrg 9949*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_nowb_fv4sf" 9950*0bfacb9bSmrg [(match_operand:V4SF 0 "s_register_operand") 9951*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9952*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9953*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)] 9954*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9955*0bfacb9bSmrg{ 9956*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (V4SImode); 9957*0bfacb9bSmrg emit_insn ( 9958*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_fv4sf_insn (operands[0], ignore_wb, 9959*0bfacb9bSmrg operands[1], operands[2])); 9960*0bfacb9bSmrg DONE; 9961*0bfacb9bSmrg}) 9962*0bfacb9bSmrg 9963*0bfacb9bSmrg;; 9964*0bfacb9bSmrg;; [vldrwq_gather_base_wb_f] 9965*0bfacb9bSmrg;; 9966*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_wb_fv4sf_insn" 9967*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 9968*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 2 "s_register_operand" "1") 9969*0bfacb9bSmrg (match_operand:SI 3 "mve_vldrd_immediate" "Ri") 9970*0bfacb9bSmrg (mem:BLK (scratch))] 9971*0bfacb9bSmrg VLDRWQGBWB_F)) 9972*0bfacb9bSmrg (set (match_operand:V4SI 1 "s_register_operand" "=&w") 9973*0bfacb9bSmrg (unspec:V4SI [(match_dup 2) (match_dup 3)] 9974*0bfacb9bSmrg VLDRWQGBWB_F)) 9975*0bfacb9bSmrg ] 9976*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9977*0bfacb9bSmrg{ 9978*0bfacb9bSmrg rtx ops[3]; 9979*0bfacb9bSmrg ops[0] = operands[0]; 9980*0bfacb9bSmrg ops[1] = operands[2]; 9981*0bfacb9bSmrg ops[2] = operands[3]; 9982*0bfacb9bSmrg output_asm_insn ("vldrw.u32\t%q0, [%q1, %2]!",ops); 9983*0bfacb9bSmrg return ""; 9984*0bfacb9bSmrg} 9985*0bfacb9bSmrg [(set_attr "length" "4")]) 9986*0bfacb9bSmrg 9987*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_wb_z_fv4sf" 9988*0bfacb9bSmrg [(match_operand:V4SI 0 "s_register_operand") 9989*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 9990*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 9991*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 9992*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)] 9993*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 9994*0bfacb9bSmrg{ 9995*0bfacb9bSmrg rtx ignore_result = gen_reg_rtx (V4SFmode); 9996*0bfacb9bSmrg emit_insn ( 9997*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_z_fv4sf_insn (ignore_result, operands[0], 9998*0bfacb9bSmrg operands[1], operands[2], 9999*0bfacb9bSmrg operands[3])); 10000*0bfacb9bSmrg DONE; 10001*0bfacb9bSmrg}) 10002*0bfacb9bSmrg 10003*0bfacb9bSmrg(define_expand "mve_vldrwq_gather_base_nowb_z_fv4sf" 10004*0bfacb9bSmrg [(match_operand:V4SF 0 "s_register_operand") 10005*0bfacb9bSmrg (match_operand:V4SI 1 "s_register_operand") 10006*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 10007*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 10008*0bfacb9bSmrg (unspec:V4SI [(const_int 0)] VLDRWQGBWB_F)] 10009*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 10010*0bfacb9bSmrg{ 10011*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (V4SImode); 10012*0bfacb9bSmrg emit_insn ( 10013*0bfacb9bSmrg gen_mve_vldrwq_gather_base_wb_z_fv4sf_insn (operands[0], ignore_wb, 10014*0bfacb9bSmrg operands[1], operands[2], 10015*0bfacb9bSmrg operands[3])); 10016*0bfacb9bSmrg DONE; 10017*0bfacb9bSmrg}) 10018*0bfacb9bSmrg 10019*0bfacb9bSmrg;; 10020*0bfacb9bSmrg;; [vldrwq_gather_base_wb_z_f] 10021*0bfacb9bSmrg;; 10022*0bfacb9bSmrg(define_insn "mve_vldrwq_gather_base_wb_z_fv4sf_insn" 10023*0bfacb9bSmrg [(set (match_operand:V4SF 0 "s_register_operand" "=&w") 10024*0bfacb9bSmrg (unspec:V4SF [(match_operand:V4SI 2 "s_register_operand" "1") 10025*0bfacb9bSmrg (match_operand:SI 3 "mve_vldrd_immediate" "Ri") 10026*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up") 10027*0bfacb9bSmrg (mem:BLK (scratch))] 10028*0bfacb9bSmrg VLDRWQGBWB_F)) 10029*0bfacb9bSmrg (set (match_operand:V4SI 1 "s_register_operand" "=&w") 10030*0bfacb9bSmrg (unspec:V4SI [(match_dup 2) (match_dup 3)] 10031*0bfacb9bSmrg VLDRWQGBWB_F)) 10032*0bfacb9bSmrg ] 10033*0bfacb9bSmrg "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT" 10034*0bfacb9bSmrg{ 10035*0bfacb9bSmrg rtx ops[3]; 10036*0bfacb9bSmrg ops[0] = operands[0]; 10037*0bfacb9bSmrg ops[1] = operands[2]; 10038*0bfacb9bSmrg ops[2] = operands[3]; 10039*0bfacb9bSmrg output_asm_insn ("vpst\;vldrwt.u32\t%q0, [%q1, %2]!",ops); 10040*0bfacb9bSmrg return ""; 10041*0bfacb9bSmrg} 10042*0bfacb9bSmrg [(set_attr "length" "8")]) 10043*0bfacb9bSmrg 10044*0bfacb9bSmrg(define_expand "mve_vldrdq_gather_base_wb_<supf>v2di" 10045*0bfacb9bSmrg [(match_operand:V2DI 0 "s_register_operand") 10046*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 10047*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 10048*0bfacb9bSmrg (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)] 10049*0bfacb9bSmrg "TARGET_HAVE_MVE" 10050*0bfacb9bSmrg{ 10051*0bfacb9bSmrg rtx ignore_result = gen_reg_rtx (V2DImode); 10052*0bfacb9bSmrg emit_insn ( 10053*0bfacb9bSmrg gen_mve_vldrdq_gather_base_wb_<supf>v2di_insn (ignore_result, operands[0], 10054*0bfacb9bSmrg operands[1], operands[2])); 10055*0bfacb9bSmrg DONE; 10056*0bfacb9bSmrg}) 10057*0bfacb9bSmrg 10058*0bfacb9bSmrg(define_expand "mve_vldrdq_gather_base_nowb_<supf>v2di" 10059*0bfacb9bSmrg [(match_operand:V2DI 0 "s_register_operand") 10060*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 10061*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 10062*0bfacb9bSmrg (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)] 10063*0bfacb9bSmrg "TARGET_HAVE_MVE" 10064*0bfacb9bSmrg{ 10065*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (V2DImode); 10066*0bfacb9bSmrg emit_insn ( 10067*0bfacb9bSmrg gen_mve_vldrdq_gather_base_wb_<supf>v2di_insn (operands[0], ignore_wb, 10068*0bfacb9bSmrg operands[1], operands[2])); 10069*0bfacb9bSmrg DONE; 10070*0bfacb9bSmrg}) 10071*0bfacb9bSmrg 10072*0bfacb9bSmrg 10073*0bfacb9bSmrg;; 10074*0bfacb9bSmrg;; [vldrdq_gather_base_wb_s vldrdq_gather_base_wb_u] 10075*0bfacb9bSmrg;; 10076*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_base_wb_<supf>v2di_insn" 10077*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 10078*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 2 "s_register_operand" "1") 10079*0bfacb9bSmrg (match_operand:SI 3 "mve_vldrd_immediate" "Ri") 10080*0bfacb9bSmrg (mem:BLK (scratch))] 10081*0bfacb9bSmrg VLDRDGBWBQ)) 10082*0bfacb9bSmrg (set (match_operand:V2DI 1 "s_register_operand" "=&w") 10083*0bfacb9bSmrg (unspec:V2DI [(match_dup 2) (match_dup 3)] 10084*0bfacb9bSmrg VLDRDGBWBQ)) 10085*0bfacb9bSmrg ] 10086*0bfacb9bSmrg "TARGET_HAVE_MVE" 10087*0bfacb9bSmrg{ 10088*0bfacb9bSmrg rtx ops[3]; 10089*0bfacb9bSmrg ops[0] = operands[0]; 10090*0bfacb9bSmrg ops[1] = operands[2]; 10091*0bfacb9bSmrg ops[2] = operands[3]; 10092*0bfacb9bSmrg output_asm_insn ("vldrd.64\t%q0, [%q1, %2]!",ops); 10093*0bfacb9bSmrg return ""; 10094*0bfacb9bSmrg} 10095*0bfacb9bSmrg [(set_attr "length" "4")]) 10096*0bfacb9bSmrg 10097*0bfacb9bSmrg(define_expand "mve_vldrdq_gather_base_wb_z_<supf>v2di" 10098*0bfacb9bSmrg [(match_operand:V2DI 0 "s_register_operand") 10099*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 10100*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 10101*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 10102*0bfacb9bSmrg (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)] 10103*0bfacb9bSmrg "TARGET_HAVE_MVE" 10104*0bfacb9bSmrg{ 10105*0bfacb9bSmrg rtx ignore_result = gen_reg_rtx (V2DImode); 10106*0bfacb9bSmrg emit_insn ( 10107*0bfacb9bSmrg gen_mve_vldrdq_gather_base_wb_z_<supf>v2di_insn (ignore_result, operands[0], 10108*0bfacb9bSmrg operands[1], operands[2], 10109*0bfacb9bSmrg operands[3])); 10110*0bfacb9bSmrg DONE; 10111*0bfacb9bSmrg}) 10112*0bfacb9bSmrg 10113*0bfacb9bSmrg(define_expand "mve_vldrdq_gather_base_nowb_z_<supf>v2di" 10114*0bfacb9bSmrg [(match_operand:V2DI 0 "s_register_operand") 10115*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand") 10116*0bfacb9bSmrg (match_operand:SI 2 "mve_vldrd_immediate") 10117*0bfacb9bSmrg (match_operand:HI 3 "vpr_register_operand") 10118*0bfacb9bSmrg (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)] 10119*0bfacb9bSmrg "TARGET_HAVE_MVE" 10120*0bfacb9bSmrg{ 10121*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (V2DImode); 10122*0bfacb9bSmrg emit_insn ( 10123*0bfacb9bSmrg gen_mve_vldrdq_gather_base_wb_z_<supf>v2di_insn (operands[0], ignore_wb, 10124*0bfacb9bSmrg operands[1], operands[2], 10125*0bfacb9bSmrg operands[3])); 10126*0bfacb9bSmrg DONE; 10127*0bfacb9bSmrg}) 10128*0bfacb9bSmrg 10129*0bfacb9bSmrg(define_insn "get_fpscr_nzcvqc" 10130*0bfacb9bSmrg [(set (match_operand:SI 0 "register_operand" "=r") 10131*0bfacb9bSmrg (unspec:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))] 10132*0bfacb9bSmrg "TARGET_HAVE_MVE" 10133*0bfacb9bSmrg "vmrs\\t%0, FPSCR_nzcvqc" 10134*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10135*0bfacb9bSmrg 10136*0bfacb9bSmrg(define_insn "set_fpscr_nzcvqc" 10137*0bfacb9bSmrg [(set (reg:SI VFPCC_REGNUM) 10138*0bfacb9bSmrg (unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")] 10139*0bfacb9bSmrg VUNSPEC_SET_FPSCR_NZCVQC))] 10140*0bfacb9bSmrg "TARGET_HAVE_MVE" 10141*0bfacb9bSmrg "vmsr\\tFPSCR_nzcvqc, %0" 10142*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10143*0bfacb9bSmrg 10144*0bfacb9bSmrg;; 10145*0bfacb9bSmrg;; [vldrdq_gather_base_wb_z_s vldrdq_gather_base_wb_z_u] 10146*0bfacb9bSmrg;; 10147*0bfacb9bSmrg(define_insn "mve_vldrdq_gather_base_wb_z_<supf>v2di_insn" 10148*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=&w") 10149*0bfacb9bSmrg (unspec:V2DI [(match_operand:V2DI 2 "s_register_operand" "1") 10150*0bfacb9bSmrg (match_operand:SI 3 "mve_vldrd_immediate" "Ri") 10151*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up") 10152*0bfacb9bSmrg (mem:BLK (scratch))] 10153*0bfacb9bSmrg VLDRDGBWBQ)) 10154*0bfacb9bSmrg (set (match_operand:V2DI 1 "s_register_operand" "=&w") 10155*0bfacb9bSmrg (unspec:V2DI [(match_dup 2) (match_dup 3)] 10156*0bfacb9bSmrg VLDRDGBWBQ)) 10157*0bfacb9bSmrg ] 10158*0bfacb9bSmrg "TARGET_HAVE_MVE" 10159*0bfacb9bSmrg{ 10160*0bfacb9bSmrg rtx ops[3]; 10161*0bfacb9bSmrg ops[0] = operands[0]; 10162*0bfacb9bSmrg ops[1] = operands[2]; 10163*0bfacb9bSmrg ops[2] = operands[3]; 10164*0bfacb9bSmrg output_asm_insn ("vpst\;vldrdt.u64\t%q0, [%q1, %2]!",ops); 10165*0bfacb9bSmrg return ""; 10166*0bfacb9bSmrg} 10167*0bfacb9bSmrg [(set_attr "length" "8")]) 10168*0bfacb9bSmrg;; 10169*0bfacb9bSmrg;; [vadciq_m_s, vadciq_m_u]) 10170*0bfacb9bSmrg;; 10171*0bfacb9bSmrg(define_insn "mve_vadciq_m_<supf>v4si" 10172*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10173*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0") 10174*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 10175*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 10176*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 10177*0bfacb9bSmrg VADCIQ_M)) 10178*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10179*0bfacb9bSmrg (unspec:SI [(const_int 0)] 10180*0bfacb9bSmrg VADCIQ_M)) 10181*0bfacb9bSmrg ] 10182*0bfacb9bSmrg "TARGET_HAVE_MVE" 10183*0bfacb9bSmrg "vpst\;vadcit.i32\t%q0, %q2, %q3" 10184*0bfacb9bSmrg [(set_attr "type" "mve_move") 10185*0bfacb9bSmrg (set_attr "length" "8")]) 10186*0bfacb9bSmrg 10187*0bfacb9bSmrg;; 10188*0bfacb9bSmrg;; [vadciq_u, vadciq_s]) 10189*0bfacb9bSmrg;; 10190*0bfacb9bSmrg(define_insn "mve_vadciq_<supf>v4si" 10191*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10192*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 10193*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 10194*0bfacb9bSmrg VADCIQ)) 10195*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10196*0bfacb9bSmrg (unspec:SI [(const_int 0)] 10197*0bfacb9bSmrg VADCIQ)) 10198*0bfacb9bSmrg ] 10199*0bfacb9bSmrg "TARGET_HAVE_MVE" 10200*0bfacb9bSmrg "vadci.i32\t%q0, %q1, %q2" 10201*0bfacb9bSmrg [(set_attr "type" "mve_move") 10202*0bfacb9bSmrg (set_attr "length" "4")]) 10203*0bfacb9bSmrg 10204*0bfacb9bSmrg;; 10205*0bfacb9bSmrg;; [vadcq_m_s, vadcq_m_u]) 10206*0bfacb9bSmrg;; 10207*0bfacb9bSmrg(define_insn "mve_vadcq_m_<supf>v4si" 10208*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10209*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0") 10210*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 10211*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 10212*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 10213*0bfacb9bSmrg VADCQ_M)) 10214*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10215*0bfacb9bSmrg (unspec:SI [(reg:SI VFPCC_REGNUM)] 10216*0bfacb9bSmrg VADCQ_M)) 10217*0bfacb9bSmrg ] 10218*0bfacb9bSmrg "TARGET_HAVE_MVE" 10219*0bfacb9bSmrg "vpst\;vadct.i32\t%q0, %q2, %q3" 10220*0bfacb9bSmrg [(set_attr "type" "mve_move") 10221*0bfacb9bSmrg (set_attr "length" "8")]) 10222*0bfacb9bSmrg 10223*0bfacb9bSmrg;; 10224*0bfacb9bSmrg;; [vadcq_u, vadcq_s]) 10225*0bfacb9bSmrg;; 10226*0bfacb9bSmrg(define_insn "mve_vadcq_<supf>v4si" 10227*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10228*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 10229*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 10230*0bfacb9bSmrg VADCQ)) 10231*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10232*0bfacb9bSmrg (unspec:SI [(reg:SI VFPCC_REGNUM)] 10233*0bfacb9bSmrg VADCQ)) 10234*0bfacb9bSmrg ] 10235*0bfacb9bSmrg "TARGET_HAVE_MVE" 10236*0bfacb9bSmrg "vadc.i32\t%q0, %q1, %q2" 10237*0bfacb9bSmrg [(set_attr "type" "mve_move") 10238*0bfacb9bSmrg (set_attr "length" "4") 10239*0bfacb9bSmrg (set_attr "conds" "set")]) 10240*0bfacb9bSmrg 10241*0bfacb9bSmrg;; 10242*0bfacb9bSmrg;; [vsbciq_m_u, vsbciq_m_s]) 10243*0bfacb9bSmrg;; 10244*0bfacb9bSmrg(define_insn "mve_vsbciq_m_<supf>v4si" 10245*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10246*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 10247*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 10248*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 10249*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 10250*0bfacb9bSmrg VSBCIQ_M)) 10251*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10252*0bfacb9bSmrg (unspec:SI [(const_int 0)] 10253*0bfacb9bSmrg VSBCIQ_M)) 10254*0bfacb9bSmrg ] 10255*0bfacb9bSmrg "TARGET_HAVE_MVE" 10256*0bfacb9bSmrg "vpst\;vsbcit.i32\t%q0, %q2, %q3" 10257*0bfacb9bSmrg [(set_attr "type" "mve_move") 10258*0bfacb9bSmrg (set_attr "length" "8")]) 10259*0bfacb9bSmrg 10260*0bfacb9bSmrg;; 10261*0bfacb9bSmrg;; [vsbciq_s, vsbciq_u]) 10262*0bfacb9bSmrg;; 10263*0bfacb9bSmrg(define_insn "mve_vsbciq_<supf>v4si" 10264*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10265*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 10266*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 10267*0bfacb9bSmrg VSBCIQ)) 10268*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10269*0bfacb9bSmrg (unspec:SI [(const_int 0)] 10270*0bfacb9bSmrg VSBCIQ)) 10271*0bfacb9bSmrg ] 10272*0bfacb9bSmrg "TARGET_HAVE_MVE" 10273*0bfacb9bSmrg "vsbci.i32\t%q0, %q1, %q2" 10274*0bfacb9bSmrg [(set_attr "type" "mve_move") 10275*0bfacb9bSmrg (set_attr "length" "4")]) 10276*0bfacb9bSmrg 10277*0bfacb9bSmrg;; 10278*0bfacb9bSmrg;; [vsbcq_m_u, vsbcq_m_s]) 10279*0bfacb9bSmrg;; 10280*0bfacb9bSmrg(define_insn "mve_vsbcq_m_<supf>v4si" 10281*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10282*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 10283*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w") 10284*0bfacb9bSmrg (match_operand:V4SI 3 "s_register_operand" "w") 10285*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 10286*0bfacb9bSmrg VSBCQ_M)) 10287*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10288*0bfacb9bSmrg (unspec:SI [(reg:SI VFPCC_REGNUM)] 10289*0bfacb9bSmrg VSBCQ_M)) 10290*0bfacb9bSmrg ] 10291*0bfacb9bSmrg "TARGET_HAVE_MVE" 10292*0bfacb9bSmrg "vpst\;vsbct.i32\t%q0, %q2, %q3" 10293*0bfacb9bSmrg [(set_attr "type" "mve_move") 10294*0bfacb9bSmrg (set_attr "length" "8")]) 10295*0bfacb9bSmrg 10296*0bfacb9bSmrg;; 10297*0bfacb9bSmrg;; [vsbcq_s, vsbcq_u]) 10298*0bfacb9bSmrg;; 10299*0bfacb9bSmrg(define_insn "mve_vsbcq_<supf>v4si" 10300*0bfacb9bSmrg [(set (match_operand:V4SI 0 "s_register_operand" "=w") 10301*0bfacb9bSmrg (unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w") 10302*0bfacb9bSmrg (match_operand:V4SI 2 "s_register_operand" "w")] 10303*0bfacb9bSmrg VSBCQ)) 10304*0bfacb9bSmrg (set (reg:SI VFPCC_REGNUM) 10305*0bfacb9bSmrg (unspec:SI [(reg:SI VFPCC_REGNUM)] 10306*0bfacb9bSmrg VSBCQ)) 10307*0bfacb9bSmrg ] 10308*0bfacb9bSmrg "TARGET_HAVE_MVE" 10309*0bfacb9bSmrg "vsbc.i32\t%q0, %q1, %q2" 10310*0bfacb9bSmrg [(set_attr "type" "mve_move") 10311*0bfacb9bSmrg (set_attr "length" "4")]) 10312*0bfacb9bSmrg 10313*0bfacb9bSmrg;; 10314*0bfacb9bSmrg;; [vst2q]) 10315*0bfacb9bSmrg;; 10316*0bfacb9bSmrg(define_insn "mve_vst2q<mode>" 10317*0bfacb9bSmrg [(set (match_operand:OI 0 "neon_struct_operand" "=Um") 10318*0bfacb9bSmrg (unspec:OI [(match_operand:OI 1 "s_register_operand" "w") 10319*0bfacb9bSmrg (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] 10320*0bfacb9bSmrg VST2Q)) 10321*0bfacb9bSmrg ] 10322*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10323*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10324*0bfacb9bSmrg{ 10325*0bfacb9bSmrg rtx ops[4]; 10326*0bfacb9bSmrg int regno = REGNO (operands[1]); 10327*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 10328*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno + 4); 10329*0bfacb9bSmrg rtx reg = operands[0]; 10330*0bfacb9bSmrg while (reg && !REG_P (reg)) 10331*0bfacb9bSmrg reg = XEXP (reg, 0); 10332*0bfacb9bSmrg gcc_assert (REG_P (reg)); 10333*0bfacb9bSmrg ops[2] = reg; 10334*0bfacb9bSmrg ops[3] = operands[0]; 10335*0bfacb9bSmrg output_asm_insn ("vst20.<V_sz_elem>\t{%q0, %q1}, [%2]\n\t" 10336*0bfacb9bSmrg "vst21.<V_sz_elem>\t{%q0, %q1}, %3", ops); 10337*0bfacb9bSmrg return ""; 10338*0bfacb9bSmrg} 10339*0bfacb9bSmrg [(set_attr "length" "8")]) 10340*0bfacb9bSmrg 10341*0bfacb9bSmrg;; 10342*0bfacb9bSmrg;; [vld2q]) 10343*0bfacb9bSmrg;; 10344*0bfacb9bSmrg(define_insn "mve_vld2q<mode>" 10345*0bfacb9bSmrg [(set (match_operand:OI 0 "s_register_operand" "=w") 10346*0bfacb9bSmrg (unspec:OI [(match_operand:OI 1 "neon_struct_operand" "Um") 10347*0bfacb9bSmrg (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] 10348*0bfacb9bSmrg VLD2Q)) 10349*0bfacb9bSmrg ] 10350*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10351*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10352*0bfacb9bSmrg{ 10353*0bfacb9bSmrg rtx ops[4]; 10354*0bfacb9bSmrg int regno = REGNO (operands[0]); 10355*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 10356*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno + 4); 10357*0bfacb9bSmrg rtx reg = operands[1]; 10358*0bfacb9bSmrg while (reg && !REG_P (reg)) 10359*0bfacb9bSmrg reg = XEXP (reg, 0); 10360*0bfacb9bSmrg gcc_assert (REG_P (reg)); 10361*0bfacb9bSmrg ops[2] = reg; 10362*0bfacb9bSmrg ops[3] = operands[1]; 10363*0bfacb9bSmrg output_asm_insn ("vld20.<V_sz_elem>\t{%q0, %q1}, [%2]\n\t" 10364*0bfacb9bSmrg "vld21.<V_sz_elem>\t{%q0, %q1}, %3", ops); 10365*0bfacb9bSmrg return ""; 10366*0bfacb9bSmrg} 10367*0bfacb9bSmrg [(set_attr "length" "8")]) 10368*0bfacb9bSmrg 10369*0bfacb9bSmrg;; 10370*0bfacb9bSmrg;; [vld4q]) 10371*0bfacb9bSmrg;; 10372*0bfacb9bSmrg(define_insn "mve_vld4q<mode>" 10373*0bfacb9bSmrg [(set (match_operand:XI 0 "s_register_operand" "=w") 10374*0bfacb9bSmrg (unspec:XI [(match_operand:XI 1 "neon_struct_operand" "Um") 10375*0bfacb9bSmrg (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] 10376*0bfacb9bSmrg VLD4Q)) 10377*0bfacb9bSmrg ] 10378*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10379*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10380*0bfacb9bSmrg{ 10381*0bfacb9bSmrg rtx ops[6]; 10382*0bfacb9bSmrg int regno = REGNO (operands[0]); 10383*0bfacb9bSmrg ops[0] = gen_rtx_REG (TImode, regno); 10384*0bfacb9bSmrg ops[1] = gen_rtx_REG (TImode, regno+4); 10385*0bfacb9bSmrg ops[2] = gen_rtx_REG (TImode, regno+8); 10386*0bfacb9bSmrg ops[3] = gen_rtx_REG (TImode, regno + 12); 10387*0bfacb9bSmrg rtx reg = operands[1]; 10388*0bfacb9bSmrg while (reg && !REG_P (reg)) 10389*0bfacb9bSmrg reg = XEXP (reg, 0); 10390*0bfacb9bSmrg gcc_assert (REG_P (reg)); 10391*0bfacb9bSmrg ops[4] = reg; 10392*0bfacb9bSmrg ops[5] = operands[1]; 10393*0bfacb9bSmrg output_asm_insn ("vld40.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t" 10394*0bfacb9bSmrg "vld41.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t" 10395*0bfacb9bSmrg "vld42.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t" 10396*0bfacb9bSmrg "vld43.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, %5", ops); 10397*0bfacb9bSmrg return ""; 10398*0bfacb9bSmrg} 10399*0bfacb9bSmrg [(set_attr "length" "16")]) 10400*0bfacb9bSmrg;; 10401*0bfacb9bSmrg;; [vgetq_lane_u, vgetq_lane_s, vgetq_lane_f]) 10402*0bfacb9bSmrg;; 10403*0bfacb9bSmrg(define_insn "mve_vec_extract<mode><V_elem_l>" 10404*0bfacb9bSmrg [(set (match_operand:<V_elem> 0 "nonimmediate_operand" "=r") 10405*0bfacb9bSmrg (vec_select:<V_elem> 10406*0bfacb9bSmrg (match_operand:MVE_VLD_ST 1 "s_register_operand" "w") 10407*0bfacb9bSmrg (parallel [(match_operand:SI 2 "immediate_operand" "i")])))] 10408*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10409*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10410*0bfacb9bSmrg{ 10411*0bfacb9bSmrg if (BYTES_BIG_ENDIAN) 10412*0bfacb9bSmrg { 10413*0bfacb9bSmrg int elt = INTVAL (operands[2]); 10414*0bfacb9bSmrg elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt; 10415*0bfacb9bSmrg operands[2] = GEN_INT (elt); 10416*0bfacb9bSmrg } 10417*0bfacb9bSmrg return "vmov.<V_extr_elem>\t%0, %q1[%c2]"; 10418*0bfacb9bSmrg} 10419*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10420*0bfacb9bSmrg 10421*0bfacb9bSmrg(define_insn "mve_vec_extractv2didi" 10422*0bfacb9bSmrg [(set (match_operand:DI 0 "nonimmediate_operand" "=r") 10423*0bfacb9bSmrg (vec_select:DI 10424*0bfacb9bSmrg (match_operand:V2DI 1 "s_register_operand" "w") 10425*0bfacb9bSmrg (parallel [(match_operand:SI 2 "immediate_operand" "i")])))] 10426*0bfacb9bSmrg "TARGET_HAVE_MVE" 10427*0bfacb9bSmrg{ 10428*0bfacb9bSmrg int elt = INTVAL (operands[2]); 10429*0bfacb9bSmrg if (BYTES_BIG_ENDIAN) 10430*0bfacb9bSmrg elt = 1 - elt; 10431*0bfacb9bSmrg 10432*0bfacb9bSmrg if (elt == 0) 10433*0bfacb9bSmrg return "vmov\t%Q0, %R0, %e1"; 10434*0bfacb9bSmrg else 10435*0bfacb9bSmrg return "vmov\t%Q0, %R0, %f1"; 10436*0bfacb9bSmrg} 10437*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10438*0bfacb9bSmrg 10439*0bfacb9bSmrg(define_insn "*mve_vec_extract_sext_internal<mode>" 10440*0bfacb9bSmrg [(set (match_operand:SI 0 "s_register_operand" "=r") 10441*0bfacb9bSmrg (sign_extend:SI 10442*0bfacb9bSmrg (vec_select:<V_elem> 10443*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand" "w") 10444*0bfacb9bSmrg (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] 10445*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10446*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10447*0bfacb9bSmrg{ 10448*0bfacb9bSmrg if (BYTES_BIG_ENDIAN) 10449*0bfacb9bSmrg { 10450*0bfacb9bSmrg int elt = INTVAL (operands[2]); 10451*0bfacb9bSmrg elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt; 10452*0bfacb9bSmrg operands[2] = GEN_INT (elt); 10453*0bfacb9bSmrg } 10454*0bfacb9bSmrg return "vmov.s<V_sz_elem>\t%0, %q1[%c2]"; 10455*0bfacb9bSmrg} 10456*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10457*0bfacb9bSmrg 10458*0bfacb9bSmrg(define_insn "*mve_vec_extract_zext_internal<mode>" 10459*0bfacb9bSmrg [(set (match_operand:SI 0 "s_register_operand" "=r") 10460*0bfacb9bSmrg (zero_extend:SI 10461*0bfacb9bSmrg (vec_select:<V_elem> 10462*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand" "w") 10463*0bfacb9bSmrg (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] 10464*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10465*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10466*0bfacb9bSmrg{ 10467*0bfacb9bSmrg if (BYTES_BIG_ENDIAN) 10468*0bfacb9bSmrg { 10469*0bfacb9bSmrg int elt = INTVAL (operands[2]); 10470*0bfacb9bSmrg elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt; 10471*0bfacb9bSmrg operands[2] = GEN_INT (elt); 10472*0bfacb9bSmrg } 10473*0bfacb9bSmrg return "vmov.u<V_sz_elem>\t%0, %q1[%c2]"; 10474*0bfacb9bSmrg} 10475*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10476*0bfacb9bSmrg 10477*0bfacb9bSmrg;; 10478*0bfacb9bSmrg;; [vsetq_lane_u, vsetq_lane_s, vsetq_lane_f]) 10479*0bfacb9bSmrg;; 10480*0bfacb9bSmrg(define_insn "mve_vec_set<mode>_internal" 10481*0bfacb9bSmrg [(set (match_operand:VQ2 0 "s_register_operand" "=w") 10482*0bfacb9bSmrg (vec_merge:VQ2 10483*0bfacb9bSmrg (vec_duplicate:VQ2 10484*0bfacb9bSmrg (match_operand:<V_elem> 1 "nonimmediate_operand" "r")) 10485*0bfacb9bSmrg (match_operand:VQ2 3 "s_register_operand" "0") 10486*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")))] 10487*0bfacb9bSmrg "(TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode)) 10488*0bfacb9bSmrg || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode))" 10489*0bfacb9bSmrg{ 10490*0bfacb9bSmrg int elt = ffs ((int) INTVAL (operands[2])) - 1; 10491*0bfacb9bSmrg if (BYTES_BIG_ENDIAN) 10492*0bfacb9bSmrg elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt; 10493*0bfacb9bSmrg operands[2] = GEN_INT (elt); 10494*0bfacb9bSmrg 10495*0bfacb9bSmrg return "vmov.<V_sz_elem>\t%q0[%c2], %1"; 10496*0bfacb9bSmrg} 10497*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10498*0bfacb9bSmrg 10499*0bfacb9bSmrg(define_insn "mve_vec_setv2di_internal" 10500*0bfacb9bSmrg [(set (match_operand:V2DI 0 "s_register_operand" "=w") 10501*0bfacb9bSmrg (vec_merge:V2DI 10502*0bfacb9bSmrg (vec_duplicate:V2DI 10503*0bfacb9bSmrg (match_operand:DI 1 "nonimmediate_operand" "r")) 10504*0bfacb9bSmrg (match_operand:V2DI 3 "s_register_operand" "0") 10505*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "i")))] 10506*0bfacb9bSmrg "TARGET_HAVE_MVE" 10507*0bfacb9bSmrg{ 10508*0bfacb9bSmrg int elt = ffs ((int) INTVAL (operands[2])) - 1; 10509*0bfacb9bSmrg if (BYTES_BIG_ENDIAN) 10510*0bfacb9bSmrg elt = 1 - elt; 10511*0bfacb9bSmrg 10512*0bfacb9bSmrg if (elt == 0) 10513*0bfacb9bSmrg return "vmov\t%e0, %Q1, %R1"; 10514*0bfacb9bSmrg else 10515*0bfacb9bSmrg return "vmov\t%f0, %J1, %K1"; 10516*0bfacb9bSmrg} 10517*0bfacb9bSmrg [(set_attr "type" "mve_move")]) 10518*0bfacb9bSmrg 10519*0bfacb9bSmrg;; 10520*0bfacb9bSmrg;; [uqrshll_di] 10521*0bfacb9bSmrg;; 10522*0bfacb9bSmrg(define_insn "mve_uqrshll_sat<supf>_di" 10523*0bfacb9bSmrg [(set (match_operand:DI 0 "arm_low_register_operand" "=l") 10524*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0") 10525*0bfacb9bSmrg (match_operand:SI 2 "register_operand" "r")] 10526*0bfacb9bSmrg UQRSHLLQ))] 10527*0bfacb9bSmrg "TARGET_HAVE_MVE" 10528*0bfacb9bSmrg "uqrshll%?\\t%Q1, %R1, #<supf>, %2" 10529*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10530*0bfacb9bSmrg 10531*0bfacb9bSmrg;; 10532*0bfacb9bSmrg;; [sqrshrl_di] 10533*0bfacb9bSmrg;; 10534*0bfacb9bSmrg(define_insn "mve_sqrshrl_sat<supf>_di" 10535*0bfacb9bSmrg [(set (match_operand:DI 0 "arm_low_register_operand" "=l") 10536*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0") 10537*0bfacb9bSmrg (match_operand:SI 2 "register_operand" "r")] 10538*0bfacb9bSmrg SQRSHRLQ))] 10539*0bfacb9bSmrg "TARGET_HAVE_MVE" 10540*0bfacb9bSmrg "sqrshrl%?\\t%Q1, %R1, #<supf>, %2" 10541*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10542*0bfacb9bSmrg 10543*0bfacb9bSmrg;; 10544*0bfacb9bSmrg;; [uqrshl_si] 10545*0bfacb9bSmrg;; 10546*0bfacb9bSmrg(define_insn "mve_uqrshl_si" 10547*0bfacb9bSmrg [(set (match_operand:SI 0 "arm_general_register_operand" "=r") 10548*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0") 10549*0bfacb9bSmrg (match_operand:SI 2 "register_operand" "r")] 10550*0bfacb9bSmrg UQRSHL))] 10551*0bfacb9bSmrg "TARGET_HAVE_MVE" 10552*0bfacb9bSmrg "uqrshl%?\\t%1, %2" 10553*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10554*0bfacb9bSmrg 10555*0bfacb9bSmrg;; 10556*0bfacb9bSmrg;; [sqrshr_si] 10557*0bfacb9bSmrg;; 10558*0bfacb9bSmrg(define_insn "mve_sqrshr_si" 10559*0bfacb9bSmrg [(set (match_operand:SI 0 "arm_general_register_operand" "=r") 10560*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0") 10561*0bfacb9bSmrg (match_operand:SI 2 "register_operand" "r")] 10562*0bfacb9bSmrg SQRSHR))] 10563*0bfacb9bSmrg "TARGET_HAVE_MVE" 10564*0bfacb9bSmrg "sqrshr%?\\t%1, %2" 10565*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10566*0bfacb9bSmrg 10567*0bfacb9bSmrg;; 10568*0bfacb9bSmrg;; [uqshll_di] 10569*0bfacb9bSmrg;; 10570*0bfacb9bSmrg(define_insn "mve_uqshll_di" 10571*0bfacb9bSmrg [(set (match_operand:DI 0 "arm_low_register_operand" "=l") 10572*0bfacb9bSmrg (us_ashift:DI (match_operand:DI 1 "arm_low_register_operand" "0") 10573*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")))] 10574*0bfacb9bSmrg "TARGET_HAVE_MVE" 10575*0bfacb9bSmrg "uqshll%?\\t%Q1, %R1, %2" 10576*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10577*0bfacb9bSmrg 10578*0bfacb9bSmrg;; 10579*0bfacb9bSmrg;; [urshrl_di] 10580*0bfacb9bSmrg;; 10581*0bfacb9bSmrg(define_insn "mve_urshrl_di" 10582*0bfacb9bSmrg [(set (match_operand:DI 0 "arm_low_register_operand" "=l") 10583*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0") 10584*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")] 10585*0bfacb9bSmrg URSHRL))] 10586*0bfacb9bSmrg "TARGET_HAVE_MVE" 10587*0bfacb9bSmrg "urshrl%?\\t%Q1, %R1, %2" 10588*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10589*0bfacb9bSmrg 10590*0bfacb9bSmrg;; 10591*0bfacb9bSmrg;; [uqshl_si] 10592*0bfacb9bSmrg;; 10593*0bfacb9bSmrg(define_insn "mve_uqshl_si" 10594*0bfacb9bSmrg [(set (match_operand:SI 0 "arm_general_register_operand" "=r") 10595*0bfacb9bSmrg (us_ashift:SI (match_operand:SI 1 "arm_general_register_operand" "0") 10596*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")))] 10597*0bfacb9bSmrg "TARGET_HAVE_MVE" 10598*0bfacb9bSmrg "uqshl%?\\t%1, %2" 10599*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10600*0bfacb9bSmrg 10601*0bfacb9bSmrg;; 10602*0bfacb9bSmrg;; [urshr_si] 10603*0bfacb9bSmrg;; 10604*0bfacb9bSmrg(define_insn "mve_urshr_si" 10605*0bfacb9bSmrg [(set (match_operand:SI 0 "arm_general_register_operand" "=r") 10606*0bfacb9bSmrg (unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0") 10607*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")] 10608*0bfacb9bSmrg URSHR))] 10609*0bfacb9bSmrg "TARGET_HAVE_MVE" 10610*0bfacb9bSmrg "urshr%?\\t%1, %2" 10611*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10612*0bfacb9bSmrg 10613*0bfacb9bSmrg;; 10614*0bfacb9bSmrg;; [sqshl_si] 10615*0bfacb9bSmrg;; 10616*0bfacb9bSmrg(define_insn "mve_sqshl_si" 10617*0bfacb9bSmrg [(set (match_operand:SI 0 "arm_general_register_operand" "=r") 10618*0bfacb9bSmrg (ss_ashift:SI (match_operand:DI 1 "arm_general_register_operand" "0") 10619*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")))] 10620*0bfacb9bSmrg "TARGET_HAVE_MVE" 10621*0bfacb9bSmrg "sqshl%?\\t%1, %2" 10622*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10623*0bfacb9bSmrg 10624*0bfacb9bSmrg;; 10625*0bfacb9bSmrg;; [srshr_si] 10626*0bfacb9bSmrg;; 10627*0bfacb9bSmrg(define_insn "mve_srshr_si" 10628*0bfacb9bSmrg [(set (match_operand:SI 0 "arm_general_register_operand" "=r") 10629*0bfacb9bSmrg (unspec:SI [(match_operand:DI 1 "arm_general_register_operand" "0") 10630*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")] 10631*0bfacb9bSmrg SRSHR))] 10632*0bfacb9bSmrg "TARGET_HAVE_MVE" 10633*0bfacb9bSmrg "srshr%?\\t%1, %2" 10634*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10635*0bfacb9bSmrg 10636*0bfacb9bSmrg;; 10637*0bfacb9bSmrg;; [srshrl_di] 10638*0bfacb9bSmrg;; 10639*0bfacb9bSmrg(define_insn "mve_srshrl_di" 10640*0bfacb9bSmrg [(set (match_operand:DI 0 "arm_low_register_operand" "=l") 10641*0bfacb9bSmrg (unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0") 10642*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")] 10643*0bfacb9bSmrg SRSHRL))] 10644*0bfacb9bSmrg "TARGET_HAVE_MVE" 10645*0bfacb9bSmrg "srshrl%?\\t%Q1, %R1, %2" 10646*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10647*0bfacb9bSmrg 10648*0bfacb9bSmrg;; 10649*0bfacb9bSmrg;; [sqshll_di] 10650*0bfacb9bSmrg;; 10651*0bfacb9bSmrg(define_insn "mve_sqshll_di" 10652*0bfacb9bSmrg [(set (match_operand:DI 0 "arm_low_register_operand" "=l") 10653*0bfacb9bSmrg (ss_ashift:DI (match_operand:DI 1 "arm_low_register_operand" "0") 10654*0bfacb9bSmrg (match_operand:SI 2 "immediate_operand" "Pg")))] 10655*0bfacb9bSmrg "TARGET_HAVE_MVE" 10656*0bfacb9bSmrg "sqshll%?\\t%Q1, %R1, %2" 10657*0bfacb9bSmrg [(set_attr "predicable" "yes")]) 10658*0bfacb9bSmrg 10659*0bfacb9bSmrg;; 10660*0bfacb9bSmrg;; [vshlcq_m_u vshlcq_m_s] 10661*0bfacb9bSmrg;; 10662*0bfacb9bSmrg(define_expand "mve_vshlcq_m_vec_<supf><mode>" 10663*0bfacb9bSmrg [(match_operand:MVE_2 0 "s_register_operand") 10664*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 10665*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 10666*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_32") 10667*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand") 10668*0bfacb9bSmrg (unspec:MVE_2 [(const_int 0)] VSHLCQ_M)] 10669*0bfacb9bSmrg "TARGET_HAVE_MVE" 10670*0bfacb9bSmrg{ 10671*0bfacb9bSmrg rtx ignore_wb = gen_reg_rtx (SImode); 10672*0bfacb9bSmrg emit_insn (gen_mve_vshlcq_m_<supf><mode> (operands[0], ignore_wb, operands[1], 10673*0bfacb9bSmrg operands[2], operands[3], 10674*0bfacb9bSmrg operands[4])); 10675*0bfacb9bSmrg DONE; 10676*0bfacb9bSmrg}) 10677*0bfacb9bSmrg 10678*0bfacb9bSmrg(define_expand "mve_vshlcq_m_carry_<supf><mode>" 10679*0bfacb9bSmrg [(match_operand:SI 0 "s_register_operand") 10680*0bfacb9bSmrg (match_operand:MVE_2 1 "s_register_operand") 10681*0bfacb9bSmrg (match_operand:SI 2 "s_register_operand") 10682*0bfacb9bSmrg (match_operand:SI 3 "mve_imm_32") 10683*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand") 10684*0bfacb9bSmrg (unspec:MVE_2 [(const_int 0)] VSHLCQ_M)] 10685*0bfacb9bSmrg "TARGET_HAVE_MVE" 10686*0bfacb9bSmrg{ 10687*0bfacb9bSmrg rtx ignore_vec = gen_reg_rtx (<MODE>mode); 10688*0bfacb9bSmrg emit_insn (gen_mve_vshlcq_m_<supf><mode> (ignore_vec, operands[0], 10689*0bfacb9bSmrg operands[1], operands[2], 10690*0bfacb9bSmrg operands[3], operands[4])); 10691*0bfacb9bSmrg DONE; 10692*0bfacb9bSmrg}) 10693*0bfacb9bSmrg 10694*0bfacb9bSmrg(define_insn "mve_vshlcq_m_<supf><mode>" 10695*0bfacb9bSmrg [(set (match_operand:MVE_2 0 "s_register_operand" "=w") 10696*0bfacb9bSmrg (unspec:MVE_2 [(match_operand:MVE_2 2 "s_register_operand" "0") 10697*0bfacb9bSmrg (match_operand:SI 3 "s_register_operand" "1") 10698*0bfacb9bSmrg (match_operand:SI 4 "mve_imm_32" "Rf") 10699*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand" "Up")] 10700*0bfacb9bSmrg VSHLCQ_M)) 10701*0bfacb9bSmrg (set (match_operand:SI 1 "s_register_operand" "=r") 10702*0bfacb9bSmrg (unspec:SI [(match_dup 2) 10703*0bfacb9bSmrg (match_dup 3) 10704*0bfacb9bSmrg (match_dup 4) 10705*0bfacb9bSmrg (match_dup 5)] 10706*0bfacb9bSmrg VSHLCQ_M)) 10707*0bfacb9bSmrg ] 10708*0bfacb9bSmrg "TARGET_HAVE_MVE" 10709*0bfacb9bSmrg "vpst\;vshlct\t%q0, %1, %4" 10710*0bfacb9bSmrg [(set_attr "type" "mve_move") 10711*0bfacb9bSmrg (set_attr "length" "8")]) 10712*0bfacb9bSmrg 10713*0bfacb9bSmrg;; CDE instructions on MVE registers. 10714*0bfacb9bSmrg 10715*0bfacb9bSmrg(define_insn "arm_vcx1qv16qi" 10716*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10717*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10718*0bfacb9bSmrg (match_operand:SI 2 "const_int_mve_cde1_operand" "i")] 10719*0bfacb9bSmrg UNSPEC_VCDE))] 10720*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10721*0bfacb9bSmrg "vcx1\\tp%c1, %q0, #%c2" 10722*0bfacb9bSmrg [(set_attr "type" "coproc")] 10723*0bfacb9bSmrg) 10724*0bfacb9bSmrg 10725*0bfacb9bSmrg(define_insn "arm_vcx1qav16qi" 10726*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10727*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10728*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "0") 10729*0bfacb9bSmrg (match_operand:SI 3 "const_int_mve_cde1_operand" "i")] 10730*0bfacb9bSmrg UNSPEC_VCDEA))] 10731*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10732*0bfacb9bSmrg "vcx1a\\tp%c1, %q0, #%c3" 10733*0bfacb9bSmrg [(set_attr "type" "coproc")] 10734*0bfacb9bSmrg) 10735*0bfacb9bSmrg 10736*0bfacb9bSmrg(define_insn "arm_vcx2qv16qi" 10737*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10738*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10739*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "t") 10740*0bfacb9bSmrg (match_operand:SI 3 "const_int_mve_cde2_operand" "i")] 10741*0bfacb9bSmrg UNSPEC_VCDE))] 10742*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10743*0bfacb9bSmrg "vcx2\\tp%c1, %q0, %q2, #%c3" 10744*0bfacb9bSmrg [(set_attr "type" "coproc")] 10745*0bfacb9bSmrg) 10746*0bfacb9bSmrg 10747*0bfacb9bSmrg(define_insn "arm_vcx2qav16qi" 10748*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10749*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10750*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "0") 10751*0bfacb9bSmrg (match_operand:V16QI 3 "register_operand" "t") 10752*0bfacb9bSmrg (match_operand:SI 4 "const_int_mve_cde2_operand" "i")] 10753*0bfacb9bSmrg UNSPEC_VCDEA))] 10754*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10755*0bfacb9bSmrg "vcx2a\\tp%c1, %q0, %q3, #%c4" 10756*0bfacb9bSmrg [(set_attr "type" "coproc")] 10757*0bfacb9bSmrg) 10758*0bfacb9bSmrg 10759*0bfacb9bSmrg(define_insn "arm_vcx3qv16qi" 10760*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10761*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10762*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "t") 10763*0bfacb9bSmrg (match_operand:V16QI 3 "register_operand" "t") 10764*0bfacb9bSmrg (match_operand:SI 4 "const_int_mve_cde3_operand" "i")] 10765*0bfacb9bSmrg UNSPEC_VCDE))] 10766*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10767*0bfacb9bSmrg "vcx3\\tp%c1, %q0, %q2, %q3, #%c4" 10768*0bfacb9bSmrg [(set_attr "type" "coproc")] 10769*0bfacb9bSmrg) 10770*0bfacb9bSmrg 10771*0bfacb9bSmrg(define_insn "arm_vcx3qav16qi" 10772*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10773*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10774*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "0") 10775*0bfacb9bSmrg (match_operand:V16QI 3 "register_operand" "t") 10776*0bfacb9bSmrg (match_operand:V16QI 4 "register_operand" "t") 10777*0bfacb9bSmrg (match_operand:SI 5 "const_int_mve_cde3_operand" "i")] 10778*0bfacb9bSmrg UNSPEC_VCDEA))] 10779*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10780*0bfacb9bSmrg "vcx3a\\tp%c1, %q0, %q3, %q4, #%c5" 10781*0bfacb9bSmrg [(set_attr "type" "coproc")] 10782*0bfacb9bSmrg) 10783*0bfacb9bSmrg 10784*0bfacb9bSmrg(define_insn "arm_vcx1q<a>_p_v16qi" 10785*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10786*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10787*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "0") 10788*0bfacb9bSmrg (match_operand:SI 3 "const_int_mve_cde1_operand" "i") 10789*0bfacb9bSmrg (match_operand:HI 4 "vpr_register_operand" "Up")] 10790*0bfacb9bSmrg CDE_VCX))] 10791*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10792*0bfacb9bSmrg "vpst\;vcx1<a>t\\tp%c1, %q0, #%c3" 10793*0bfacb9bSmrg [(set_attr "type" "coproc") 10794*0bfacb9bSmrg (set_attr "length" "8")] 10795*0bfacb9bSmrg) 10796*0bfacb9bSmrg 10797*0bfacb9bSmrg(define_insn "arm_vcx2q<a>_p_v16qi" 10798*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10799*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10800*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "0") 10801*0bfacb9bSmrg (match_operand:V16QI 3 "register_operand" "t") 10802*0bfacb9bSmrg (match_operand:SI 4 "const_int_mve_cde2_operand" "i") 10803*0bfacb9bSmrg (match_operand:HI 5 "vpr_register_operand" "Up")] 10804*0bfacb9bSmrg CDE_VCX))] 10805*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10806*0bfacb9bSmrg "vpst\;vcx2<a>t\\tp%c1, %q0, %q3, #%c4" 10807*0bfacb9bSmrg [(set_attr "type" "coproc") 10808*0bfacb9bSmrg (set_attr "length" "8")] 10809*0bfacb9bSmrg) 10810*0bfacb9bSmrg 10811*0bfacb9bSmrg(define_insn "arm_vcx3q<a>_p_v16qi" 10812*0bfacb9bSmrg [(set (match_operand:V16QI 0 "register_operand" "=t") 10813*0bfacb9bSmrg (unspec:V16QI [(match_operand:SI 1 "const_int_coproc_operand" "i") 10814*0bfacb9bSmrg (match_operand:V16QI 2 "register_operand" "0") 10815*0bfacb9bSmrg (match_operand:V16QI 3 "register_operand" "t") 10816*0bfacb9bSmrg (match_operand:V16QI 4 "register_operand" "t") 10817*0bfacb9bSmrg (match_operand:SI 5 "const_int_mve_cde3_operand" "i") 10818*0bfacb9bSmrg (match_operand:HI 6 "vpr_register_operand" "Up")] 10819*0bfacb9bSmrg CDE_VCX))] 10820*0bfacb9bSmrg "TARGET_CDE && TARGET_HAVE_MVE" 10821*0bfacb9bSmrg "vpst\;vcx3<a>t\\tp%c1, %q0, %q3, %q4, #%c5" 10822*0bfacb9bSmrg [(set_attr "type" "coproc") 10823*0bfacb9bSmrg (set_attr "length" "8")] 10824*0bfacb9bSmrg) 10825