Lines Matching refs:Qm

318   def : Pat<(VTI.Vec (Op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn))),
319 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
324 (VTI.Vec (Op (VTI.Vec MQPR:$Qm),
327 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
332 def : Pat<(VTI.Vec (Op (VTI.Vec MQPR:$Qm),
336 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
338 (VTI.Vec MQPR:$Qm)))>;
342 def : Pat<(VTI.Vec !con((PredInt (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)),
345 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
354 def : Pat<(VTI.Vec (Op (VTI.Vec MQPR:$Qm), (VTI.Vec (ARMvdup rGPR:$Rn)))),
355 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), rGPR:$Rn))>;
360 (VTI.Vec (Op (VTI.Vec MQPR:$Qm),
363 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), rGPR:$Rn,
368 def : Pat<(VTI.Vec (Op (VTI.Vec MQPR:$Qm),
372 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), rGPR:$Rn,
374 (VTI.Vec MQPR:$Qm)))>;
378 def : Pat<(VTI.Vec !con((PredInt (VTI.Vec MQPR:$Qm), (VTI.Vec (ARMvdup rGPR:$Rn))),
381 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), rGPR:$Rn,
608 : MVE_rDest<(outs rGPR:$Rda), (ins rGPR:$Rda_src, MQPR:$Qn, MQPR:$Qm),
609 NoItinerary, "vabav", suffix, "$Rda, $Qn, $Qm", "$Rda = $Rda_src",
611 bits<4> Qm;
624 let Inst{5} = Qm{3};
625 let Inst{3-1} = Qm{2-0};
638 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
640 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm)))>;
645 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
648 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
663 iname, suffix, "$Rda, $Qm", cstr, size, pattern> {
664 bits<3> Qm;
675 let Inst{3-1} = Qm{2-0};
691 (ins tGPREven:$Rda_src, MQPR:$Qm), "$Rda = $Rda_src",
694 (ins MQPR:$Qm), "",
761 suffix, "$RdaLo, $RdaHi, $Qm", cstr, 0b10, pattern> {
762 bits<3> Qm;
774 let Inst{3-1} = Qm{2-0};
796 (ins tGPREven:$RdaLo_src, tGPROdd:$RdaHi_src, MQPR:$Qm),
800 (ins MQPR:$Qm), "",
831 : MVE_rDest<(outs rGPR:$RdaDest), (ins rGPR:$RdaSrc, MQPR:$Qm),
832 NoItinerary, iname, suffix, "$RdaSrc, $Qm",
834 bits<3> Qm;
846 let Inst{3-1} = Qm{2-0};
893 : MVE_rDest<(outs rGPR:$RdaDest), (ins rGPR:$RdaSrc, MQPR:$Qm), NoItinerary,
894 iname, suffix, "$RdaSrc, $Qm", "$RdaDest = $RdaSrc", size, pattern> {
895 bits<3> Qm;
907 let Inst{3-1} = Qm{2-0};
1020 "$RdaDest, $Qn, $Qm", cstr, vecsize, []> {
1022 bits<3> Qm;
1034 let Inst{3-1} = Qm{2-0};
1047 (ins MQPR:$Qn, MQPR:$Qm), "",
1050 (ins tGPREven:$RdaSrc, MQPR:$Qn, MQPR:$Qm),
1059 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
1061 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm)))>;
1068 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
1071 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
1079 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
1082 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm)))>;
1089 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
1093 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
1244 def : MVEInstAlias<"vmlav"#acc#"${vp}."#suffix#"\t$RdaDest, $Qn, $Qm",
1246 tGPREven:$RdaDest, MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;
1255 iname, suffix, "$RdaLoDest, $RdaHiDest, $Qn, $Qm", cstr, vecsize, pattern> {
1258 bits<3> Qm;
1270 let Inst{3-1} = Qm{2-0};
1286 iname # x, suffix, (ins MQPR:$Qn, MQPR:$Qm), "",
1290 (ins tGPREven:$RdaLoSrc, tGPROdd:$RdaHiSrc, MQPR:$Qn, MQPR:$Qm),
1314 def : MVEInstAlias<"vrmlalvh${vp}.s32\t$RdaLo, $RdaHi, $Qn, $Qm",
1317 MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;
1318 def : MVEInstAlias<"vrmlalvha${vp}.s32\t$RdaLo, $RdaHi, $Qn, $Qm",
1321 MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;
1322 def : MVEInstAlias<"vrmlalvh${vp}.u32\t$RdaLo, $RdaHi, $Qn, $Qm",
1325 MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;
1326 def : MVEInstAlias<"vrmlalvha${vp}.u32\t$RdaLo, $RdaHi, $Qn, $Qm",
1329 MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;
1384 "\t$RdaLoDest, $RdaHiDest, $Qn, $Qm",
1387 MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;
1406 : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm), itin, iname, suffix,
1407 "$Qd, $Qn, $Qm", vpred_r, cstr, vecsize, pattern> {
1410 bits<4> Qm;
1419 let Inst{5} = Qm{3};
1420 let Inst{3-1} = Qm{2-0};
1507 bits<4> Qm;
1511 let Inst{5} = Qm{3};
1512 let Inst{3-1} = Qm{2-0};
1515 def MVE_VBIC : MVE_bit_arith<(outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm),
1516 "vbic", "", "$Qd, $Qn, $Qm", "", 0b00> {
1534 : MVE_bit_arith<(outs MQPR:$Qd), (ins MQPR:$Qm), iname,
1535 suffix, "$Qd, $Qm", cstr, vecsize> {
1590 def MVE_VMVN : MVE_bit_arith<(outs MQPR:$Qd), (ins MQPR:$Qm),
1591 "vmvn", "", "$Qd, $Qm", "", 0b00> {
1613 : MVE_bit_arith<(outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm),
1614 iname, "", "$Qd, $Qn, $Qm", "", 0b00> {
1750 def MVE_VMOV : MVEInstAlias<"vmov${vp}\t$Qd, $Qm",
1751 (MVE_VORR MQPR:$Qd, MQPR:$Qm, MQPR:$Qm, vpred_r:$vp)>;
1943 : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm), NoItinerary,
1944 iname, suffix, "$Qd, $Qn, $Qm", vpred_r, "", size, pattern> {
1947 bits<4> Qm;
1955 let Inst{5} = Qm{3};
1956 let Inst{3-1} = Qm{2-0};
2010 def : Pat<(VTI.Vec (unpred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn))),
2011 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
2153 def : Pat<(VTI.Vec (unpred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2155 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
2209 def : Pat<(VTI.Vec (unpred_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2211 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
2231 def : Pat<(v16i8 (ARMvshrsImm (addnsw (addnsw (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn)),
2234 (MVE_VRHADDs8 MQPR:$Qm, MQPR:$Qn)>;
2235 def : Pat<(v8i16 (ARMvshrsImm (addnsw (addnsw (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn)),
2238 (MVE_VRHADDs16 MQPR:$Qm, MQPR:$Qn)>;
2239 def : Pat<(v4i32 (ARMvshrsImm (addnsw (addnsw (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn)),
2242 (MVE_VRHADDs32 MQPR:$Qm, MQPR:$Qn)>;
2243 def : Pat<(v16i8 (ARMvshruImm (addnuw (addnuw (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn)),
2246 (MVE_VRHADDu8 MQPR:$Qm, MQPR:$Qn)>;
2247 def : Pat<(v8i16 (ARMvshruImm (addnuw (addnuw (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn)),
2250 (MVE_VRHADDu16 MQPR:$Qm, MQPR:$Qn)>;
2251 def : Pat<(v4i32 (ARMvshruImm (addnuw (addnuw (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn)),
2254 (MVE_VRHADDu32 MQPR:$Qm, MQPR:$Qn)>;
2256 def : Pat<(v16i8 (ARMvshrsImm (addnsw (addnsw (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn)),
2259 (MVE_VRHADDs8 MQPR:$Qm, MQPR:$Qn)>;
2260 def : Pat<(v8i16 (ARMvshrsImm (addnsw (addnsw (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn)),
2263 (MVE_VRHADDs16 MQPR:$Qm, MQPR:$Qn)>;
2264 def : Pat<(v4i32 (ARMvshrsImm (addnsw (addnsw (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn)),
2267 (MVE_VRHADDs32 MQPR:$Qm, MQPR:$Qn)>;
2268 def : Pat<(v16i8 (ARMvshruImm (addnuw (addnuw (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn)),
2271 (MVE_VRHADDu8 MQPR:$Qm, MQPR:$Qn)>;
2272 def : Pat<(v8i16 (ARMvshruImm (addnuw (addnuw (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn)),
2275 (MVE_VRHADDu16 MQPR:$Qm, MQPR:$Qn)>;
2276 def : Pat<(v4i32 (ARMvshruImm (addnuw (addnuw (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn)),
2279 (MVE_VRHADDu32 MQPR:$Qm, MQPR:$Qn)>;
2314 def : Pat<(VTI.Vec (unpred_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn), (i32 VTI.Unsigned))),
2315 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
2317 def : Pat<(VTI.Vec (shift_op (add_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)), (i32 1))),
2318 (Inst MQPR:$Qm, MQPR:$Qn)>;
2345 def : Pat<(VTI.Vec (unpred_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2347 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
2349 def : Pat<(VTI.Vec (shift_op (sub_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)), (i32 1))),
2350 (Inst MQPR:$Qm, MQPR:$Qn)>;
2354 def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2357 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
2443 : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qm), NoItinerary,
2444 iname, suffix, "$Qd, $Qm", vpred_r, "", size, pattern> {
2446 bits<4> Qm;
2451 let Inst{5} = Qm{3};
2452 let Inst{3-1} = Qm{2-0};
2663 : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qd_src, MQPR:$Qm),
2664 NoItinerary, iname, suffix, "$Qd, $Qm", vpred_n, "$Qd = $Qd_src",
2667 bits<4> Qm;
2678 let Inst{5} = Qm{3};
2680 let Inst{3-1} = Qm{2-0};
2692 def : Pat<(VTI.Vec (unpred_op (VTI.Vec MQPR:$Qd), (abs (VTI.Vec MQPR:$Qm)))),
2693 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm)))>;
2696 def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm),
2698 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm),
2744 bits<4> Qm;
2748 let Inst{5} = Qm{3};
2749 let Inst{3-1} = Qm{2-0};
2754 : MVE_shift_imm<(outs MQPR:$Qd), (ins MQPR:$Qm),
2755 iname, suffix, "$Qd, $Qm", vpred_r, "",
2823 : MVE_shift_imm<(outs MQPR:$Qd), (ins MQPR:$Qm, immtype:$imm),
2824 iname, suffix, "$Qd, $Qm, $imm", vpred_r, "", vecsize, pattern> {
2870 : MVE_shift_imm<(outs MQPR:$Qd), (ins MQPR:$Qm),
2893 defm MVE_VSHLL_lws8 : MVE_VSHLL_lw<"vshll", "s8", 0b00, 0b0, "$Qd, $Qm, #8">;
2894 defm MVE_VSHLL_lws16 : MVE_VSHLL_lw<"vshll", "s16", 0b01, 0b0, "$Qd, $Qm, #16">;
2895 defm MVE_VSHLL_lwu8 : MVE_VSHLL_lw<"vshll", "u8", 0b00, 0b1, "$Qd, $Qm, #8">;
2896 defm MVE_VSHLL_lwu16 : MVE_VSHLL_lw<"vshll", "u16", 0b01, 0b1, "$Qd, $Qm, #16">;
2934 : MVE_shift_imm<(outs MQPR:$Qd), (ins MQPR:$QdSrc, MQPR:$Qm, imm:$imm),
2935 iname, suffix, "$Qd, $Qm, $imm", vpred_n, "$Qd = $QdSrc", vecsize> {
3076 defvar inparams = (? (OutVTI.Vec MQPR:$QdSrc), (InVTI.Vec MQPR:$Qm),
3079 defvar outparams = (inst (OutVTI.Vec MQPR:$QdSrc), (InVTI.Vec MQPR:$Qm),
3136 : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qm, MQPR:$Qn), NoItinerary,
3137 iname, suffix, "$Qd, $Qm, $Qn", vpred_r, "", size, []> {
3140 bits<4> Qm;
3155 let Inst{5} = Qm{3};
3157 let Inst{3-1} = Qm{2-0};
3214 bits<4> Qm;
3221 let Inst{5} = Qm{3};
3223 let Inst{3-1} = Qm{2-0};
3237 (ins MQPR:$Qd_src, MQPR:$Qm, immType:$imm),
3238 "$Qd, $Qm, $imm", vpred_n, "$Qd = $Qd_src", vecsize> {
3276 defvar inparams = (? (VTI.Vec MQPR:$QdSrc), (VTI.Vec MQPR:$Qm),
3278 defvar outparams = (inst (VTI.Vec MQPR:$QdSrc), (VTI.Vec MQPR:$Qm),
3298 (ins MQPR:$Qm, immType:$imm), "$Qd, $Qm, $imm",
3338 (ins MQPR:$Qm, immType:$imm), "$Qd, $Qm, $imm",
3368 (ins MQPR:$Qm, immType:$imm), "$Qd, $Qm, $imm",
3445 !con((ins MQPR:$Qm), imm), "$Qd, $Qm, $imm",
3486 !con((ins MQPR:$Qm), imm), "$Qd, $Qm, $imm",
3550 bits<4> Qm;
3554 let Inst{5} = Qm{3};
3555 let Inst{3-1} = Qm{2-0};
3562 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
3617 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm", vpred_r, "",
3655 (ins MQPR:$Qd_src, MQPR:$Qn, MQPR:$Qm, complexrotateop:$rot),
3656 "$Qd, $Qn, $Qm, $rot", vpred_n, "$Qd = $Qd_src", size, []> {
3680 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
3682 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3687 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm)))),
3689 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3694 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3697 (VTI.Vec MQPR:$Qm), imm:$rot,
3710 !con(iops, (ins MQPR:$Qn, MQPR:$Qm)), "$Qd, $Qn, $Qm",
3796 (ins MQPR:$Qn, MQPR:$Qm, complexrotateopodd:$rot),
3797 "$Qd, $Qn, $Qm, $rot", vpred_r, cstr, size, []> {
3821 imm:$rot, (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
3822 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3827 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3829 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3840 : MVE_float<"vabd", suffix, (outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm),
3841 "$Qd, $Qn, $Qm", vpred_r, "", size> {
3865 def : Pat<(VTI.Vec (unpred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
3867 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
3868 def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
3871 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
3884 def : Pat<(v8f16 (fabs (fsub (v8f16 MQPR:$Qm), (v8f16 MQPR:$Qn)))),
3885 (MVE_VABDf16 MQPR:$Qm, MQPR:$Qn)>;
3886 def : Pat<(v4f32 (fabs (fsub (v4f32 MQPR:$Qm), (v4f32 MQPR:$Qn)))),
3887 (MVE_VABDf32 MQPR:$Qm, MQPR:$Qn)>;
3893 (outs MQPR:$Qd), (ins MQPR:$Qm, imm_operand_type:$imm6),
3894 "$Qd, $Qm, $imm6", vpred_r, "", !if(fsi, 0b10, 0b01), []> {
3940 (i32 U), (SrcVTI.Vec MQPR:$Qm), imm:$scale)),
3941 (DestVTI.Vec (Inst (SrcVTI.Vec MQPR:$Qm), imm:$scale))>;
3944 (SrcVTI.Vec MQPR:$Qm),
3947 (DestVTI.Vec (Inst (SrcVTI.Vec MQPR:$Qm), imm:$scale,
3977 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
4034 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
4097 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
4138 : MVE_f<(outs MQPR:$Qd), (ins MQPR:$Qd_src, MQPR:$Qm),
4139 NoItinerary, iname, suffix, "$Qd, $Qm", vpred_n, "$Qd = $Qd_src",
4142 bits<4> Qm;
4151 let Inst{5} = Qm{3};
4153 let Inst{3-1} = Qm{2-0};
4169 (fabs (VTI.Vec MQPR:$Qm)))),
4170 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm)))>;
4173 def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm),
4175 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm),
4198 : MVE_p<(outs VCCR:$P0), (ins MQPR:$Qn, MQPR:$Qm, predtype:$fc),
4199 NoItinerary, "vcmp", suffix, "$fc, $Qn, $Qm", vpred_n, "", vecsize, pattern> {
4203 bits<4> Qm;
4214 let Inst{5} = Qm{3};
4216 let Inst{3-1} = Qm{2-0};
4533 bits<4> Qm;
4540 let Inst{5} = Qm{3};
4542 let Inst{3-1} = Qm{2-0};
4549 (ins MQPR:$Qd_src, MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
4602 (ins MQPR:$Qn, MQPR:$Qm, complexrotateop:$rot),
4603 "$Qd, $Qn, $Qm, $rot", vpred_r, cstr, size,
4627 imm:$rot, (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
4628 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
4633 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
4635 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
4648 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
4652 bits<4> Qm;
4677 def : Pat<(VTI.DblVec !con((unpred_op (VTI.Vec MQPR:$Qm),
4680 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
4683 def : Pat<(VTI.DblVec !con((pred_int (VTI.Vec MQPR:$Qm),
4687 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4782 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
4809 def : Pat<(VTI.Vec (PredInt (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4812 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4818 def : Pat<(VTI.Vec (unpred_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4820 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
4847 (ins MQPR:$Qd_src, MQPR:$Qm), "$Qd, $Qm",
4885 (VTI.Vec MQPR:$Qm), (i32 top))),
4886 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd_src), (VTI.Vec MQPR:$Qm)))>;
4895 def : Pat<(VTI.Vec (MVEvmovn (VTI.Vec MQPR:$Qm),
4897 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd_src), (VTI.Vec MQPR:$Qm)))>;
4900 // Match the IR intrinsic for a predicated VMOVN. This regards the Qm input
4904 (InVTI.Vec MQPR:$Qm), (i32 top),
4907 (InVTI.Vec MQPR:$Qm),
4919 (InVTI.Vec MQPR:$Qm),
4922 (InVTI.Vec MQPR:$Qm)))>;
4925 (InVTI.Vec MQPR:$Qm),
4929 (InVTI.Vec MQPR:$Qm),
4952 def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 0))),
4953 (v8i16 (MVE_VQMOVNs32bh (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4954 def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 1))),
4955 (v8i16 (MVE_VQMOVNs32th (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4956 def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 0))),
4957 (v16i8 (MVE_VQMOVNs16bh (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4958 def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 1))),
4959 (v16i8 (MVE_VQMOVNs16th (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4961 def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 0))),
4962 (v8i16 (MVE_VQMOVNu32bh (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4963 def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 1))),
4964 (v8i16 (MVE_VQMOVNu32th (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4965 def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 0))),
4966 (v16i8 (MVE_VQMOVNu16bh (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4967 def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 1))),
4968 (v16i8 (MVE_VQMOVNu16th (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4970 def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshrsImm (v4i32 MQPR:$Qm), imm0_31:$imm)), (i32 0))),
4971 (v8i16 (MVE_VQSHRNbhs32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4972 def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshrsImm (v8i16 MQPR:$Qm), imm0_15:$imm)), (i32 0))),
4973 (v16i8 (MVE_VQSHRNbhs16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4974 def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshrsImm (v4i32 MQPR:$Qm), imm0_31:$imm)), (i32 1))),
4975 (v8i16 (MVE_VQSHRNths32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4976 def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshrsImm (v8i16 MQPR:$Qm), imm0_15:$imm)), (i32 1))),
4977 (v16i8 (MVE_VQSHRNths16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4979 def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshruImm (v4i32 MQPR:$Qm), imm0_31:$imm)), (i32 0))),
4980 (v8i16 (MVE_VQSHRNbhu32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4981 def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshruImm (v8i16 MQPR:$Qm), imm0_15:$imm)), (i32 0))),
4982 (v16i8 (MVE_VQSHRNbhu16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4983 def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshruImm (v4i32 MQPR:$Qm), imm0_31:$imm)), (i32 1))),
4984 (v8i16 (MVE_VQSHRNthu32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4985 def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshruImm (v8i16 MQPR:$Qm), imm0_15:$imm)), (i32 1))),
4986 (v16i8 (MVE_VQSHRNthu16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4992 !con(iops_extra, (ins MQPR:$Qm)), "$Qd, $Qm",
5016 (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm), (i32 half))),
5017 (v8f16 (Inst (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm)))>;
5019 (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm), (i32 half),
5021 (v8f16 (Inst (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm),
5024 def : Pat<(v8f16 (MVEvcvtn (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm), (i32 half))),
5025 (v8f16 (Inst (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm)))>;
5034 def : Pat<(v4f32 (int_arm_mve_vcvt_widen (v8f16 MQPR:$Qm), (i32 half))),
5035 (v4f32 (Inst (v8f16 MQPR:$Qm)))>;
5037 (v4f32 MQPR:$inactive), (v8f16 MQPR:$Qm), (i32 half),
5039 (v4f32 (Inst (v8f16 MQPR:$Qm), ARMVCCThen,
5042 def : Pat<(v4f32 (MVEvcvtl (v8f16 MQPR:$Qm), (i32 half))),
5043 (v4f32 (Inst (v8f16 MQPR:$Qm)))>;
5055 (ins MQPR:$Qn, MQPR:$Qm, complexrotateopodd:$rot),
5056 "$Qd, $Qn, $Qm, $rot", vpred_r, cstr, size, []> {
5077 imm:$rot, (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
5078 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
5083 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
5085 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
5103 !con((ins MQPR:$Qn, MQPR:$Qm), carryin),
5104 "$Qd, $Qn, $Qm", vpred_r, "", 0b10, pattern> {
5130 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
5153 def : Pat<(VTI.DblVec (int_arm_mve_vqdmull (VTI.Vec MQPR:$Qm),
5155 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
5158 (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
5161 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
5229 def : Pat<(VTI.Vec !con((unpred_op (VTI.Vec MQPR:$Qm),
5232 (VTI.Vec (inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val)))>;
5234 def : Pat<(VTI.Vec !con((pred_op (VTI.Vec MQPR:$Qm),
5239 (VTI.Vec (inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val),
5334 def : Pat<(VTI.DblVec (int_arm_mve_vqdmull (VTI.Vec MQPR:$Qm),
5337 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val)))>;
5340 (VTI.Vec MQPR:$Qm),
5345 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val),
5382 def : Pat<(VTI.Vec (shift_op (add_op (VTI.Vec MQPR:$Qm), (VTI.Vec (ARMvdup rGPR:$Rn))), (i32 1))),
5383 (Inst MQPR:$Qm, rGPR:$Rn)>;
5476 def : Pat<(v4i32 (ARMvshlu (v4i32 MQPR:$Qm), (v4i32 (ARMvdup rGPR:$Rm)))),
5477 (v4i32 (MVE_VSHL_qru32 (v4i32 MQPR:$Qm), rGPR:$Rm))>;
5478 def : Pat<(v8i16 (ARMvshlu (v8i16 MQPR:$Qm), (v8i16 (ARMvdup rGPR:$Rm)))),
5479 (v8i16 (MVE_VSHL_qru16 (v8i16 MQPR:$Qm), rGPR:$Rm))>;
5480 def : Pat<(v16i8 (ARMvshlu (v16i8 MQPR:$Qm), (v16i8 (ARMvdup rGPR:$Rm)))),
5481 (v16i8 (MVE_VSHL_qru8 (v16i8 MQPR:$Qm), rGPR:$Rm))>;
5483 def : Pat<(v4i32 (ARMvshls (v4i32 MQPR:$Qm), (v4i32 (ARMvdup rGPR:$Rm)))),
5484 (v4i32 (MVE_VSHL_qrs32 (v4i32 MQPR:$Qm), rGPR:$Rm))>;
5485 def : Pat<(v8i16 (ARMvshls (v8i16 MQPR:$Qm), (v8i16 (ARMvdup rGPR:$Rm)))),
5486 (v8i16 (MVE_VSHL_qrs16 (v8i16 MQPR:$Qm), rGPR:$Rm))>;
5487 def : Pat<(v16i8 (ARMvshls (v16i8 MQPR:$Qm), (v16i8 (ARMvdup rGPR:$Rm)))),
5488 (v16i8 (MVE_VSHL_qrs8 (v16i8 MQPR:$Qm), rGPR:$Rm))>;
6322 // [Rn,Qm], i.e. a single GPR as the common base address, plus a
6333 // in Qm by the size of the loaded memory (i.e. to treat them as array
6337 // [Rn,Qm,UXTW #2] or similar.
6461 // [Qm,#imm], i.e. a vector containing a full base address for each
6607 : MVE_VPT<suffix, size, iops, "$fc, $Qn, $Qm"> {
6608 bits<4> Qm;
6612 let Inst{5} = Qm{3};
6613 let Inst{3-1} = Qm{2-0};
6619 (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_i:$fc)> {
6630 (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_u:$fc)> {
6641 (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_s:$fc)> {
6720 : MVE_VPTf<suffix, size, (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_fp:$fc),
6721 "$fc, $Qn, $Qm"> {
6723 bits<4> Qm;
6726 let Inst{5} = Qm{3};
6727 let Inst{3-1} = Qm{2-0};
6765 def MVE_VPSEL : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm), NoItinerary,
6766 "vpsel", "", "$Qd, $Qn, $Qm", vpred_n, "", 0b00, []> {
6769 bits<4> Qm;
6782 let Inst{5} = Qm{3};
6784 let Inst{3-1} = Qm{2-0};
6790 def : MVEInstAlias<"vpsel${vp}." # suffix # "\t$Qd, $Qn, $Qm",
6791 (MVE_VPSEL MQPR:$Qd, MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;