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};
3195 def : Pat<(v4i32 (ARMvshlu (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn))),
3196 (v4i32 (MVE_VSHL_by_vecu32 (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn)))>;
3197 def : Pat<(v8i16 (ARMvshlu (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn))),
3198 (v8i16 (MVE_VSHL_by_vecu16 (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn)))>;
3199 def : Pat<(v16i8 (ARMvshlu (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn))),
3200 (v16i8 (MVE_VSHL_by_vecu8 (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn)))>;
3202 def : Pat<(v4i32 (ARMvshls (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn))),
3203 (v4i32 (MVE_VSHL_by_vecs32 (v4i32 MQPR:$Qm), (v4i32 MQPR:$Qn)))>;
3204 def : Pat<(v8i16 (ARMvshls (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn))),
3205 (v8i16 (MVE_VSHL_by_vecs16 (v8i16 MQPR:$Qm), (v8i16 MQPR:$Qn)))>;
3206 def : Pat<(v16i8 (ARMvshls (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn))),
3207 (v16i8 (MVE_VSHL_by_vecs8 (v16i8 MQPR:$Qm), (v16i8 MQPR:$Qn)))>;
3215 bits<4> Qm;
3222 let Inst{5} = Qm{3};
3224 let Inst{3-1} = Qm{2-0};
3238 (ins MQPR:$Qd_src, MQPR:$Qm, immType:$imm),
3239 "$Qd, $Qm, $imm", vpred_n, "$Qd = $Qd_src", vecsize> {
3277 defvar inparams = (? (VTI.Vec MQPR:$QdSrc), (VTI.Vec MQPR:$Qm),
3279 defvar outparams = (inst (VTI.Vec MQPR:$QdSrc), (VTI.Vec MQPR:$Qm),
3299 (ins MQPR:$Qm, immType:$imm), "$Qd, $Qm, $imm",
3339 (ins MQPR:$Qm, immType:$imm), "$Qd, $Qm, $imm",
3369 (ins MQPR:$Qm, immType:$imm), "$Qd, $Qm, $imm",
3446 !con((ins MQPR:$Qm), imm), "$Qd, $Qm, $imm",
3487 !con((ins MQPR:$Qm), imm), "$Qd, $Qm, $imm",
3551 bits<4> Qm;
3555 let Inst{5} = Qm{3};
3556 let Inst{3-1} = Qm{2-0};
3563 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
3618 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm", vpred_r, "",
3656 (ins MQPR:$Qd_src, MQPR:$Qn, MQPR:$Qm, complexrotateop:$rot),
3657 "$Qd, $Qn, $Qm, $rot", vpred_n, "$Qd = $Qd_src", size, []> {
3681 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
3683 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3688 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3691 (VTI.Vec MQPR:$Qm), imm:$rot,
3705 !con(iops, (ins MQPR:$Qn, MQPR:$Qm)), "$Qd, $Qn, $Qm",
3791 (ins MQPR:$Qn, MQPR:$Qm, complexrotateopodd:$rot),
3792 "$Qd, $Qn, $Qm, $rot", vpred_r, cstr, size, []> {
3816 imm:$rot, (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
3817 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3822 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3824 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
3835 : MVE_float<"vabd", suffix, (outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm),
3836 "$Qd, $Qn, $Qm", vpred_r, "", size> {
3860 def : Pat<(VTI.Vec (unpred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
3862 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
3863 def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
3866 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
3879 def : Pat<(v8f16 (fabs (fsub (v8f16 MQPR:$Qm), (v8f16 MQPR:$Qn)))),
3880 (MVE_VABDf16 MQPR:$Qm, MQPR:$Qn)>;
3881 def : Pat<(v4f32 (fabs (fsub (v4f32 MQPR:$Qm), (v4f32 MQPR:$Qn)))),
3882 (MVE_VABDf32 MQPR:$Qm, MQPR:$Qn)>;
3888 (outs MQPR:$Qd), (ins MQPR:$Qm, imm_operand_type:$imm6),
3889 "$Qd, $Qm, $imm6", vpred_r, "", !if(fsi, 0b10, 0b01), []> {
3935 (i32 U), (SrcVTI.Vec MQPR:$Qm), imm:$scale)),
3936 (DestVTI.Vec (Inst (SrcVTI.Vec MQPR:$Qm), imm:$scale))>;
3939 (SrcVTI.Vec MQPR:$Qm),
3942 (DestVTI.Vec (Inst (SrcVTI.Vec MQPR:$Qm), imm:$scale,
3972 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
4029 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
4092 (ins MQPR:$Qm), "$Qd, $Qm", vpred_r, "", size, pattern> {
4133 : MVE_f<(outs MQPR:$Qd), (ins MQPR:$Qd_src, MQPR:$Qm),
4134 NoItinerary, iname, suffix, "$Qd, $Qm", vpred_n, "$Qd = $Qd_src",
4137 bits<4> Qm;
4146 let Inst{5} = Qm{3};
4148 let Inst{3-1} = Qm{2-0};
4164 (fabs (VTI.Vec MQPR:$Qm)))),
4165 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm)))>;
4168 def : Pat<(VTI.Vec (pred_int (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm),
4170 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd), (VTI.Vec MQPR:$Qm),
4193 : MVE_p<(outs VCCR:$P0), (ins MQPR:$Qn, MQPR:$Qm, predtype:$fc),
4194 NoItinerary, "vcmp", suffix, "$fc, $Qn, $Qm", vpred_n, "", vecsize, pattern> {
4198 bits<4> Qm;
4209 let Inst{5} = Qm{3};
4211 let Inst{3-1} = Qm{2-0};
4528 bits<4> Qm;
4535 let Inst{5} = Qm{3};
4537 let Inst{3-1} = Qm{2-0};
4544 (ins MQPR:$Qd_src, MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
4597 (ins MQPR:$Qn, MQPR:$Qm, complexrotateop:$rot),
4598 "$Qd, $Qn, $Qm, $rot", vpred_r, cstr, size,
4622 imm:$rot, (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
4623 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
4628 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
4630 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
4643 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
4647 bits<4> Qm;
4672 def : Pat<(VTI.DblVec !con((unpred_op (VTI.Vec MQPR:$Qm),
4675 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
4678 def : Pat<(VTI.DblVec !con((pred_int (VTI.Vec MQPR:$Qm),
4682 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4777 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
4804 def : Pat<(VTI.Vec (PredInt (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4807 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4813 def : Pat<(VTI.Vec (unpred_op (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
4815 (VTI.Vec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
4842 (ins MQPR:$Qd_src, MQPR:$Qm), "$Qd, $Qm",
4880 (VTI.Vec MQPR:$Qm), (i32 top))),
4881 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd_src), (VTI.Vec MQPR:$Qm)))>;
4890 def : Pat<(VTI.Vec (MVEvmovn (VTI.Vec MQPR:$Qm),
4892 (VTI.Vec (Inst (VTI.Vec MQPR:$Qd_src), (VTI.Vec MQPR:$Qm)))>;
4895 // Match the IR intrinsic for a predicated VMOVN. This regards the Qm input
4899 (InVTI.Vec MQPR:$Qm), (i32 top),
4902 (InVTI.Vec MQPR:$Qm),
4914 (InVTI.Vec MQPR:$Qm),
4917 (InVTI.Vec MQPR:$Qm)))>;
4920 (InVTI.Vec MQPR:$Qm),
4924 (InVTI.Vec MQPR:$Qm),
4947 def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 0))),
4948 (v8i16 (MVE_VQMOVNs32bh (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4949 def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 1))),
4950 (v8i16 (MVE_VQMOVNs32th (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4951 def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 0))),
4952 (v16i8 (MVE_VQMOVNs16bh (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4953 def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 1))),
4954 (v16i8 (MVE_VQMOVNs16th (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4956 def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 0))),
4957 (v8i16 (MVE_VQMOVNu32bh (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4958 def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), (i32 1))),
4959 (v8i16 (MVE_VQMOVNu32th (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm)))>;
4960 def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 0))),
4961 (v16i8 (MVE_VQMOVNu16bh (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4962 def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), (i32 1))),
4963 (v16i8 (MVE_VQMOVNu16th (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm)))>;
4965 …def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshrsImm (v4i32 MQPR:$Qm), imm0_31:$…
4966 (v8i16 (MVE_VQSHRNbhs32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4967 …def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshrsImm (v8i16 MQPR:$Qm), imm0_15:$…
4968 (v16i8 (MVE_VQSHRNbhs16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4969 …def : Pat<(v8i16 (MVEvqmovns (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshrsImm (v4i32 MQPR:$Qm), imm0_31:$…
4970 (v8i16 (MVE_VQSHRNths32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4971 …def : Pat<(v16i8 (MVEvqmovns (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshrsImm (v8i16 MQPR:$Qm), imm0_15:$…
4972 (v16i8 (MVE_VQSHRNths16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4974 …def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshruImm (v4i32 MQPR:$Qm), imm0_31:$…
4975 (v8i16 (MVE_VQSHRNbhu32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4976 …def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshruImm (v8i16 MQPR:$Qm), imm0_15:$…
4977 (v16i8 (MVE_VQSHRNbhu16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4978 …def : Pat<(v8i16 (MVEvqmovnu (v8i16 MQPR:$Qd_src), (v4i32 (ARMvshruImm (v4i32 MQPR:$Qm), imm0_31:$…
4979 (v8i16 (MVE_VQSHRNthu32 (v8i16 MQPR:$Qd_src), (v4i32 MQPR:$Qm), imm0_31:$imm))>;
4980 …def : Pat<(v16i8 (MVEvqmovnu (v16i8 MQPR:$Qd_src), (v8i16 (ARMvshruImm (v8i16 MQPR:$Qm), imm0_15:$…
4981 (v16i8 (MVE_VQSHRNthu16 (v16i8 MQPR:$Qd_src), (v8i16 MQPR:$Qm), imm0_15:$imm))>;
4987 !con(iops_extra, (ins MQPR:$Qm)), "$Qd, $Qm",
5011 (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm), (i32 half))),
5012 (v8f16 (Inst (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm)))>;
5014 (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm), (i32 half),
5016 (v8f16 (Inst (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm),
5019 def : Pat<(v8f16 (MVEvcvtn (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm), (i32 half))),
5020 (v8f16 (Inst (v8f16 MQPR:$Qd_src), (v4f32 MQPR:$Qm)))>;
5029 def : Pat<(v4f32 (int_arm_mve_vcvt_widen (v8f16 MQPR:$Qm), (i32 half))),
5030 (v4f32 (Inst (v8f16 MQPR:$Qm)))>;
5032 (v4f32 MQPR:$inactive), (v8f16 MQPR:$Qm), (i32 half),
5034 (v4f32 (Inst (v8f16 MQPR:$Qm), ARMVCCThen,
5037 def : Pat<(v4f32 (MVEvcvtl (v8f16 MQPR:$Qm), (i32 half))),
5038 (v4f32 (Inst (v8f16 MQPR:$Qm)))>;
5050 (ins MQPR:$Qn, MQPR:$Qm, complexrotateopodd:$rot),
5051 "$Qd, $Qn, $Qm, $rot", vpred_r, cstr, size, []> {
5072 imm:$rot, (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm))),
5073 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
5078 (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
5080 (VTI.Vec (Inst (VTI.Vec MQPR:$Qn), (VTI.Vec MQPR:$Qm),
5098 !con((ins MQPR:$Qn, MQPR:$Qm), carryin),
5099 "$Qd, $Qn, $Qm", vpred_r, "", 0b10, pattern> {
5125 (ins MQPR:$Qn, MQPR:$Qm), "$Qd, $Qn, $Qm",
5148 def : Pat<(VTI.DblVec (int_arm_mve_vqdmull (VTI.Vec MQPR:$Qm),
5150 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn)))>;
5153 (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
5156 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (VTI.Vec MQPR:$Qn),
5224 def : Pat<(VTI.Vec !con((unpred_op (VTI.Vec MQPR:$Qm),
5227 (VTI.Vec (inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val)))>;
5229 def : Pat<(VTI.Vec !con((pred_op (VTI.Vec MQPR:$Qm),
5234 (VTI.Vec (inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val),
5329 def : Pat<(VTI.DblVec (int_arm_mve_vqdmull (VTI.Vec MQPR:$Qm),
5332 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val)))>;
5335 (VTI.Vec MQPR:$Qm),
5340 (VTI.DblVec (Inst (VTI.Vec MQPR:$Qm), (i32 rGPR:$val),
5377 … def : Pat<(VTI.Vec (shift_op (add_op (VTI.Vec MQPR:$Qm), (VTI.Vec (ARMvdup rGPR:$Rn))), (i32 1))),
5378 (Inst MQPR:$Qm, rGPR:$Rn)>;
5471 def : Pat<(v4i32 (ARMvshlu (v4i32 MQPR:$Qm), (v4i32 (ARMvdup rGPR:$Rm)))),
5472 (v4i32 (MVE_VSHL_qru32 (v4i32 MQPR:$Qm), rGPR:$Rm))>;
5473 def : Pat<(v8i16 (ARMvshlu (v8i16 MQPR:$Qm), (v8i16 (ARMvdup rGPR:$Rm)))),
5474 (v8i16 (MVE_VSHL_qru16 (v8i16 MQPR:$Qm), rGPR:$Rm))>;
5475 def : Pat<(v16i8 (ARMvshlu (v16i8 MQPR:$Qm), (v16i8 (ARMvdup rGPR:$Rm)))),
5476 (v16i8 (MVE_VSHL_qru8 (v16i8 MQPR:$Qm), rGPR:$Rm))>;
5478 def : Pat<(v4i32 (ARMvshls (v4i32 MQPR:$Qm), (v4i32 (ARMvdup rGPR:$Rm)))),
5479 (v4i32 (MVE_VSHL_qrs32 (v4i32 MQPR:$Qm), rGPR:$Rm))>;
5480 def : Pat<(v8i16 (ARMvshls (v8i16 MQPR:$Qm), (v8i16 (ARMvdup rGPR:$Rm)))),
5481 (v8i16 (MVE_VSHL_qrs16 (v8i16 MQPR:$Qm), rGPR:$Rm))>;
5482 def : Pat<(v16i8 (ARMvshls (v16i8 MQPR:$Qm), (v16i8 (ARMvdup rGPR:$Rm)))),
5483 (v16i8 (MVE_VSHL_qrs8 (v16i8 MQPR:$Qm), rGPR:$Rm))>;
6326 // [Rn,Qm], i.e. a single GPR as the common base address, plus a
6337 // in Qm by the size of the loaded memory (i.e. to treat them as array
6341 // [Rn,Qm,UXTW #2] or similar.
6465 // [Qm,#imm], i.e. a vector containing a full base address for each
6611 : MVE_VPT<suffix, size, iops, "$fc, $Qn, $Qm"> {
6612 bits<4> Qm;
6616 let Inst{5} = Qm{3};
6617 let Inst{3-1} = Qm{2-0};
6623 (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_i:$fc)> {
6634 (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_u:$fc)> {
6645 (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_s:$fc)> {
6724 : MVE_VPTf<suffix, size, (ins vpt_mask:$Mk, MQPR:$Qn, MQPR:$Qm, pred_basic_fp:$fc),
6725 "$fc, $Qn, $Qm"> {
6727 bits<4> Qm;
6730 let Inst{5} = Qm{3};
6731 let Inst{3-1} = Qm{2-0};
6769 def MVE_VPSEL : MVE_p<(outs MQPR:$Qd), (ins MQPR:$Qn, MQPR:$Qm), NoItinerary,
6770 "vpsel", "", "$Qd, $Qn, $Qm", vpred_n, "", 0b00, []> {
6773 bits<4> Qm;
6786 let Inst{5} = Qm{3};
6788 let Inst{3-1} = Qm{2-0};
6794 def : MVEInstAlias<"vpsel${vp}." # suffix # "\t$Qd, $Qn, $Qm",
6795 (MVE_VPSEL MQPR:$Qd, MQPR:$Qn, MQPR:$Qm, vpred_n:$vp)>;