Lines Matching refs:Rn
281 let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
287 let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
312 bits<4> Rn;
324 bits<4> Rn;
327 let Inst{19-16} = Rn;
363 bits<4> Rn;
366 let Inst{19-16} = Rn;
396 bits<4> Rn;
399 let Inst{19-16} = Rn;
408 bits<4> Rn;
412 let Inst{19-16} = Rn;
422 bits<4> Rn;
426 let Inst{19-16} = Rn;
462 bits<4> Rn;
466 let Inst{19-16} = Rn;
474 bits<4> Rn;
478 let Inst{19-16} = Rn;
486 bits<4> Rn;
490 let Inst{19-16} = Rn;
498 bits<4> Rn;
502 let Inst{19-16} = Rn;
513 bits<4> Rn;
517 let Inst{19-16} = Rn;
528 bits<4> Rn;
532 let Inst{19-16} = Rn;
544 bits<4> Rn;
549 let Inst{19-16} = Rn;
561 bits<4> Rn;
566 let Inst{19-16} = Rn;
583 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm), iii,
584 opc, "\t$Rd, $Rn, $imm",
585 [(set rGPR:$Rd, (opnode rGPR:$Rn, t2_so_imm:$imm))]>,
593 def rr : T2sThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), iir,
594 opc, !strconcat(wide, "\t$Rd, $Rn, $Rm"),
595 [(set rGPR:$Rd, (opnode rGPR:$Rn, rGPR:$Rm))]>,
607 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm), iis,
608 opc, !strconcat(wide, "\t$Rd, $Rn, $ShiftedRm"),
609 [(set rGPR:$Rd, (opnode rGPR:$Rn, t2_so_reg:$ShiftedRm))]>,
638 def : t2InstAlias<!strconcat(opc, "${s}${p}.w", " $Rd, $Rn, $imm"),
639 (!cast<Instruction>(NAME#"ri") rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p,
642 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
643 (!cast<Instruction>(NAME#"rr") rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p,
645 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $shift"),
646 (!cast<Instruction>(NAME#"rs") rGPR:$Rd, rGPR:$Rn, t2_so_reg:$shift,
667 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm), IIC_iALUi,
668 opc, ".w\t$Rd, $Rn, $imm",
669 [(set rGPR:$Rd, (opnode t2_so_imm:$imm, rGPR:$Rn))]>,
678 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
679 opc, "\t$Rd, $Rn, $Rm",
691 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm),
692 IIC_iALUsir, opc, "\t$Rd, $Rn, $ShiftedRm",
693 [(set rGPR:$Rd, (opnode t2_so_reg:$ShiftedRm, rGPR:$Rn))]>,
712 (ins GPRnopc:$Rn, t2_so_imm:$imm, pred:$p),
714 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
718 def rr : t2PseudoInst<(outs rGPR:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm, pred:$p),
720 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
727 (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm, pred:$p),
729 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
741 (ins rGPR:$Rn, t2_so_imm:$imm, pred:$p),
744 rGPR:$Rn))]>,
748 (ins rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p),
751 rGPR:$Rn))]>,
765 (outs GPRnopc:$Rd), (ins GPRnopc:$Rn, t2_so_imm:$imm), IIC_iALUi,
766 opc, ".w\t$Rd, $Rn, $imm",
767 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, t2_so_imm:$imm))]>,
778 (outs GPRnopc:$Rd), (ins GPR:$Rn, imm0_4095:$imm), IIC_iALUi,
779 !strconcat(opc, "w"), "\t$Rd, $Rn, $imm",
780 [(set GPRnopc:$Rd, (opnode GPR:$Rn, imm0_4095:$imm))]>,
783 bits<4> Rn;
790 let Inst{19-16} = Rn;
797 def rr : T2sThreeReg<(outs GPRnopc:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm),
798 IIC_iALUr, opc, ".w\t$Rd, $Rn, $Rm",
799 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, rGPR:$Rm))]>,
812 (outs GPRnopc:$Rd), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm),
813 IIC_iALUsi, opc, ".w\t$Rd, $Rn, $ShiftedRm",
814 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, t2_so_reg:$ShiftedRm))]>,
830 def ri : T2sTwoRegImm<(outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm),
831 IIC_iALUi, opc, "\t$Rd, $Rn, $imm",
832 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, t2_so_imm:$imm, CPSR))]>,
840 def rr : T2sThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
841 opc, ".w\t$Rd, $Rn, $Rm",
842 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, rGPR:$Rm, CPSR))]>,
854 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm),
855 IIC_iALUsi, opc, ".w\t$Rd, $Rn, $ShiftedRm",
856 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, t2_so_reg:$ShiftedRm, CPSR))]>,
876 let Inst{19-16} = 0b1111; // Rn
881 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMOVsr,
882 opc, ".w\t$Rd, $Rn, $Rm",
883 [(set rGPR:$Rd, (opnode rGPR:$Rn, rGPR:$Rm))]>,
901 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $imm"),
902 (!cast<Instruction>(NAME#"ri") rGPR:$Rd, rGPR:$Rn, ty:$imm, pred:$p,
904 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
905 (!cast<Instruction>(NAME#"rr") rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p,
926 (outs), (ins GPRnopc:$Rn, t2_so_imm:$imm), iii,
927 opc, ".w\t$Rn, $imm",
928 [(opnode GPRnopc:$Rn, t2_so_imm:$imm)]>, Sched<[WriteCMP]> {
938 (outs), (ins GPRnopc:$Rn, rGPR:$Rm), iir,
939 opc, ".w\t$Rn, $Rm",
940 [(opnode GPRnopc:$Rn, rGPR:$Rm)]>, Sched<[WriteCMP]> {
952 (outs), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm), iis,
953 opc, ".w\t$Rn, $ShiftedRm",
954 [(opnode GPRnopc:$Rn, t2_so_reg:$ShiftedRm)]>,
967 def : t2InstAlias<!strconcat(opc, "${p}", " $Rn, $imm"),
968 (!cast<Instruction>(NAME#"ri") GPRnopc:$Rn, t2_so_imm:$imm, pred:$p)>;
969 def : t2InstAlias<!strconcat(opc, "${p}", " $Rn, $shift"),
970 (!cast<Instruction>(NAME#"rs") GPRnopc:$Rn, t2_so_reg:$shift, pred:$p)>;
987 let Inst{19-16} = addr{16-13}; // Rn
1004 let Inst{19-16} = addr{12-9}; // Rn
1030 let Inst{19-16} = addr{9-6}; // Rn
1048 let Inst{19-16} = 0b1111; // Rn
1078 let Inst{19-16} = addr{16-13}; // Rn
1098 let Inst{19-16} = addr{12-9}; // Rn
1115 let Inst{19-16} = addr{9-6}; // Rn
1131 let Inst{19-16} = 0b1111; // Rn
1149 let Inst{19-16} = 0b1111; // Rn
1165 let Inst{19-16} = 0b1111; // Rn
1175 (ins rGPR:$Rn, rGPR:$Rm, rot_imm:$rot),
1176 IIC_iEXTAsr, opc, "\t$Rd, $Rn, $Rm$rot",
1177 [(set rGPR:$Rd, (opnode rGPR:$Rn, (rotr rGPR:$Rm,rot_imm:$rot)))]>,
1189 : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm,rot_imm:$rot),
1190 IIC_iEXTAsr, opc, "\t$Rd, $Rn, $Rm$rot", []>,
1232 let Inst{19-16} = 0b1111; // Rn
1339 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1341 "ldr", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1349 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1351 "ldrb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1359 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1361 "ldrh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1370 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1372 "ldrsb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1381 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1383 "ldrsh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1477 (ins GPRnopc:$Rt, addr_offset_none:$Rn,
1480 "str", "\t$Rt, $Rn$offset",
1481 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1483 (post_store GPRnopc:$Rt, addr_offset_none:$Rn,
1487 (ins rGPR:$Rt, addr_offset_none:$Rn,
1490 "strh", "\t$Rt, $Rn$offset",
1491 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1493 (post_truncsti16 rGPR:$Rt, addr_offset_none:$Rn,
1497 (ins rGPR:$Rt, addr_offset_none:$Rn,
1500 "strb", "\t$Rt, $Rn$offset",
1501 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1503 (post_truncsti8 rGPR:$Rt, addr_offset_none:$Rn,
1512 Constraints = "$Rn = $Rn_wb,@earlyclobber $Rn_wb" in {
1514 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1517 (pre_store rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>;
1519 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1522 (pre_truncsti8 rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>;
1524 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1527 (pre_truncsti16 rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>;
1630 let Inst{19-16} = addr{16-13}; // Rn
1650 let Inst{19-16} = addr{12-9}; // Rn
1670 let Inst{19-16} = addr{9-6}; // Rn
1711 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1712 itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
1713 bits<4> Rn;
1722 let Inst{19-16} = Rn;
1726 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1727 itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
1728 bits<4> Rn;
1737 let Inst{19-16} = Rn;
1741 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1742 itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
1743 bits<4> Rn;
1752 let Inst{19-16} = Rn;
1756 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1757 itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
1758 bits<4> Rn;
1767 let Inst{19-16} = Rn;
1780 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1781 itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
1782 bits<4> Rn;
1791 let Inst{19-16} = Rn;
1798 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1799 itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
1800 bits<4> Rn;
1809 let Inst{19-16} = Rn;
1816 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1817 itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
1818 bits<4> Rn;
1827 let Inst{19-16} = Rn;
1834 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1835 itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
1836 bits<4> Rn;
1845 let Inst{19-16} = Rn;
1870 let Inst{19-16} = 0b1111; // Rn
1890 let Inst{19-16} = 0b1111; // Rn
1985 def : Pat<(add rGPR:$Rn, (sext_inreg (srl rGPR:$Rm, rot_imm:$rot), i8)),
1986 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>,
1988 def : Pat<(add rGPR:$Rn, (sext_inreg (srl rGPR:$Rm, imm8_or_16:$rot), i16)),
1989 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>,
2019 def : Pat<(add rGPR:$Rn, (and (srl rGPR:$Rm, rot_imm:$rot), 0xFF)),
2020 (t2UXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>,
2022 def : Pat<(add rGPR:$Rn, (and (srl rGPR:$Rm, imm8_or_16:$rot), 0xFFFF)),
2023 (t2UXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>,
2104 def t2SEL : T2ThreeReg<(outs GPR:$Rd), (ins GPR:$Rn, GPR:$Rm),
2105 NoItinerary, "sel", "\t$Rd, $Rn, $Rm", []>,
2120 dag iops = (ins rGPR:$Rn, rGPR:$Rm),
2121 string asm = "\t$Rd, $Rn, $Rm">
2131 bits<4> Rn;
2135 let Inst{19-16} = Rn;
2142 [(set rGPR:$Rd, (int_arm_qadd rGPR:$Rn, rGPR:$Rm))],
2143 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2148 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2150 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2153 [(set rGPR:$Rd, (int_arm_qsub rGPR:$Rn, rGPR:$Rm))],
2154 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2219 (ins rGPR:$Rn, rGPR:$Rm),
2220 NoItinerary, "usad8", "\t$Rd, $Rn, $Rm", []>,
2225 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), NoItinerary,
2226 "usada8", "\t$Rd, $Rn, $Rm, $Ra", []>,
2234 bits<4> Rn;
2239 let Inst{19-16} = Rn;
2248 (ins imm1_32:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2249 NoItinerary, "ssat", "\t$Rd, $sat_imm, $Rn$sh", []> {
2258 (outs rGPR:$Rd), (ins imm1_16:$sat_imm, rGPR:$Rn), NoItinerary,
2259 "ssat16", "\t$Rd, $sat_imm, $Rn", []>,
2273 (ins imm0_31:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2274 NoItinerary, "usat", "\t$Rd, $sat_imm, $Rn$sh", []> {
2281 def t2USAT16: T2SatI<(outs rGPR:$Rd), (ins imm0_15:$sat_imm, rGPR:$Rn),
2283 "usat16", "\t$Rd, $sat_imm, $Rn", []>,
2321 let Inst{19-16} = 0b1111; // Rn
2337 let Inst{19-16} = 0b1111; // Rn
2352 let Inst{19-16} = 0b1111; // Rn
2394 bits<4> Rn;
2396 let Inst{19-16} = Rn;
2407 let Inst{19-16} = 0b1111; // Rn
2417 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2418 IIC_iUNAsi, "sbfx", "\t$Rd, $Rn, $lsb, $msb", []> {
2426 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2427 IIC_iUNAsi, "ubfx", "\t$Rd, $Rn, $lsb, $msb", []> {
2450 (ins rGPR:$src, rGPR:$Rn, bf_inv_mask_imm:$imm),
2451 IIC_iBITi, "bfi", "\t$Rd, $Rn, $imm",
2452 [(set rGPR:$Rd, (ARMbfi rGPR:$src, rGPR:$Rn,
2488 let Inst{19-16} = 0b1111; // Rn
2498 let Inst{19-16} = 0b1111; // Rn
2511 let Inst{19-16} = 0b1111; // Rn
2548 def t2MUL: T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2549 "mul", "\t$Rd, $Rn, $Rm",
2550 [(set rGPR:$Rd, (mul rGPR:$Rn, rGPR:$Rm))]> {
2559 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2560 "mla", "\t$Rd, $Rn, $Rm, $Ra",
2561 [(set rGPR:$Rd, (add (mul rGPR:$Rn, rGPR:$Rm), rGPR:$Ra))]>,
2570 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2571 "mls", "\t$Rd, $Rn, $Rm, $Ra",
2572 [(set rGPR:$Rd, (sub rGPR:$Ra, (mul rGPR:$Rn, rGPR:$Rm)))]>,
2585 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL64,
2586 "smull", "\t$RdLo, $RdHi, $Rn, $Rm", []>;
2590 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL64,
2591 "umull", "\t$RdLo, $RdHi, $Rn, $Rm", []>;
2597 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi), IIC_iMAC64,
2598 "smlal", "\t$RdLo, $RdHi, $Rn, $Rm", []>,
2603 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi), IIC_iMAC64,
2604 "umlal", "\t$RdLo, $RdHi, $Rn, $Rm", []>,
2609 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMAC64,
2610 "umaal", "\t$RdLo, $RdHi, $Rn, $Rm", []>,
2617 def t2SMMUL : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2618 "smmul", "\t$Rd, $Rn, $Rm",
2619 [(set rGPR:$Rd, (mulhs rGPR:$Rn, rGPR:$Rm))]>,
2628 def t2SMMULR : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2629 "smmulr", "\t$Rd, $Rn, $Rm", []>,
2639 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2640 "smmla", "\t$Rd, $Rn, $Rm, $Ra",
2641 [(set rGPR:$Rd, (add (mulhs rGPR:$Rm, rGPR:$Rn), rGPR:$Ra))]>,
2650 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2651 "smmlar", "\t$Rd, $Rn, $Rm, $Ra", []>,
2660 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2661 "smmls", "\t$Rd, $Rn, $Rm, $Ra",
2662 [(set rGPR:$Rd, (sub rGPR:$Ra, (mulhs rGPR:$Rn, rGPR:$Rm)))]>,
2671 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2672 "smmlsr", "\t$Rd, $Rn, $Rm, $Ra", []>,
2681 def BB : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2682 !strconcat(opc, "bb"), "\t$Rd, $Rn, $Rm",
2683 [(set rGPR:$Rd, (opnode (sext_inreg rGPR:$Rn, i16),
2694 def BT : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2695 !strconcat(opc, "bt"), "\t$Rd, $Rn, $Rm",
2696 [(set rGPR:$Rd, (opnode (sext_inreg rGPR:$Rn, i16),
2707 def TB : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2708 !strconcat(opc, "tb"), "\t$Rd, $Rn, $Rm",
2709 [(set rGPR:$Rd, (opnode (sra rGPR:$Rn, (i32 16)),
2720 def TT : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2721 !strconcat(opc, "tt"), "\t$Rd, $Rn, $Rm",
2722 [(set rGPR:$Rd, (opnode (sra rGPR:$Rn, (i32 16)),
2733 def WB : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2734 !strconcat(opc, "wb"), "\t$Rd, $Rn, $Rm",
2745 def WT : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2746 !strconcat(opc, "wt"), "\t$Rd, $Rn, $Rm",
2761 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2762 !strconcat(opc, "bb"), "\t$Rd, $Rn, $Rm, $Ra",
2764 (opnode (sext_inreg rGPR:$Rn, i16),
2775 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2776 !strconcat(opc, "bt"), "\t$Rd, $Rn, $Rm, $Ra",
2777 [(set rGPR:$Rd, (add rGPR:$Ra, (opnode (sext_inreg rGPR:$Rn, i16),
2788 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2789 !strconcat(opc, "tb"), "\t$Rd, $Rn, $Rm, $Ra",
2790 [(set rGPR:$Rd, (add rGPR:$Ra, (opnode (sra rGPR:$Rn, (i32 16)),
2801 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2802 !strconcat(opc, "tt"), "\t$Rd, $Rn, $Rm, $Ra",
2803 [(set rGPR:$Rd, (add rGPR:$Ra, (opnode (sra rGPR:$Rn, (i32 16)),
2814 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2815 !strconcat(opc, "wb"), "\t$Rd, $Rn, $Rm, $Ra",
2826 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2827 !strconcat(opc, "wt"), "\t$Rd, $Rn, $Rm, $Ra",
2843 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlalbb", "\t$Ra, $Rd, $Rn, $Rm",
2847 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlalbt", "\t$Ra, $Rd, $Rn, $Rm",
2851 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlaltb", "\t$Ra, $Rd, $Rn, $Rm",
2855 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlaltt", "\t$Ra, $Rd, $Rn, $Rm",
2861 0, 0b010, 0b0000, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2862 IIC_iMAC32, "smuad", "\t$Rd, $Rn, $Rm", []>,
2867 0, 0b010, 0b0001, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2868 IIC_iMAC32, "smuadx", "\t$Rd, $Rn, $Rm", []>,
2873 0, 0b100, 0b0000, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2874 IIC_iMAC32, "smusd", "\t$Rd, $Rn, $Rm", []>,
2879 0, 0b100, 0b0001, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2880 IIC_iMAC32, "smusdx", "\t$Rd, $Rn, $Rm", []>,
2886 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smlad",
2887 "\t$Rd, $Rn, $Rm, $Ra", []>,
2891 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smladx",
2892 "\t$Rd, $Rn, $Rm, $Ra", []>,
2895 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smlsd",
2896 "\t$Rd, $Rn, $Rm, $Ra", []>,
2899 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smlsdx",
2900 "\t$Rd, $Rn, $Rm, $Ra", []>,
2903 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMAC64, "smlald",
2904 "\t$Ra, $Rd, $Rn, $Rm", []>,
2907 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlaldx",
2908 "\t$Ra, $Rd, $Rn, $Rm", []>,
2911 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlsld",
2912 "\t$Ra, $Rd, $Rn, $Rm", []>,
2915 (ins rGPR:$Rm,rGPR:$Rn), IIC_iMAC64, "smlsldx",
2916 "\t$Ra, $Rd, $Rn, $Rm", []>,
2923 def t2SDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iDIV,
2924 "sdiv", "\t$Rd, $Rn, $Rm",
2925 [(set rGPR:$Rd, (sdiv rGPR:$Rn, rGPR:$Rm))]>,
2934 def t2UDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iDIV,
2935 "udiv", "\t$Rd, $Rn, $Rm",
2936 [(set rGPR:$Rd, (udiv rGPR:$Rn, rGPR:$Rm))]>,
2958 let Rn{3-0} = Rm;
2989 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_lsl_amt:$sh),
2990 IIC_iBITsi, "pkhbt", "\t$Rd, $Rn, $Rm$sh",
2991 [(set rGPR:$Rd, (or (and rGPR:$Rn, 0xFFFF),
3018 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_asr_amt:$sh),
3019 IIC_iBITsi, "pkhtb", "\t$Rd, $Rn, $Rm$sh",
3020 [(set rGPR:$Rd, (or (and rGPR:$Rn, 0xFFFF0000),
3060 : T2ThreeRegNoP<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), NoItinerary,
3061 !strconcat("crc32", suffix, "\t$Rd, $Rn, $Rm"),
3062 [(set rGPR:$Rd, (builtin rGPR:$Rn, rGPR:$Rm))]>,
3096 (outs), (ins GPRnopc:$Rn, t2_so_imm:$imm), IIC_iCMPi,
3097 "cmn", ".w\t$Rn, $imm",
3098 [(ARMcmn GPRnopc:$Rn, (ineg t2_so_imm:$imm))]>,
3109 (outs), (ins GPRnopc:$Rn, rGPR:$Rm), IIC_iCMPr,
3110 "cmn", ".w\t$Rn, $Rm",
3112 GPRnopc:$Rn, rGPR:$Rm)]>, Sched<[WriteCMP, ReadALU, ReadALU]> {
3124 (outs), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm), IIC_iCMPsi,
3125 "cmn", ".w\t$Rn, $ShiftedRm",
3127 GPRnopc:$Rn, t2_so_reg:$ShiftedRm)]>,
3140 def : t2InstAlias<"cmn${p} $Rn, $imm",
3141 (t2CMNri GPRnopc:$Rn, t2_so_imm:$imm, pred:$p)>;
3142 def : t2InstAlias<"cmn${p} $Rn, $shift",
3143 (t2CMNzrs GPRnopc:$Rn, t2_so_reg:$shift, pred:$p)>;
3512 def t2LDMIA_RET: t2PseudoExpand<(outs GPR:$wb), (ins GPR:$Rn, pred:$p,
3515 (t2LDMIA_UPD GPR:$wb, GPR:$Rn, pred:$p, reglist:$regs)>,
3516 RegConstraint<"$Rn = $wb">;
3555 bits<4> Rn;
3558 let Inst{19-16} = Rn;
3568 bits<4> Rn;
3571 let Inst{19-16} = Rn;
3650 def tCBZ : T1I<(outs), (ins tGPR:$Rn, t_cbtarget:$target), IIC_Br,
3651 "cbz\t$Rn, $target", []>,
3656 bits<3> Rn;
3659 let Inst{2-0} = Rn;
3662 def tCBNZ : T1I<(outs), (ins tGPR:$Rn, t_cbtarget:$target), IIC_Br,
3663 "cbnz\t$Rn, $target", []>,
3668 bits<3> Rn;
3671 let Inst{2-0} = Rn;
3802 bits<4> Rn;
3803 let Inst{19-16} = Rn;
3808 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn!",
3811 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn",
3814 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn!",
3817 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn",
4066 def t2MSR_AR : T2I<(outs), (ins msr_mask:$mask, rGPR:$Rn),
4067 NoItinerary, "msr", "\t$mask, $Rn", []>,
4070 bits<4> Rn;
4073 let Inst{19-16} = Rn;
4081 def t2MSRbanked : T2I<(outs), (ins banked_reg:$banked, rGPR:$Rn),
4082 NoItinerary, "msr", "\t$banked, $Rn", []>,
4085 bits<4> Rn;
4089 let Inst{19-16} = Rn;
4101 def t2MSR_M : T2I<(outs), (ins msr_mask:$SYSm, rGPR:$Rn),
4102 NoItinerary, "msr", "\t$SYSm, $Rn", []>,
4105 bits<4> Rn;
4108 let Inst{19-16} = Rn;
4321 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0x00FF)),
4322 (t2UXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
4324 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0xFFFF)),
4325 (t2UXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
4333 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i8)),
4334 (t2SXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
4336 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i16)),
4337 (t2SXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
4393 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $Rm",
4394 (t2ADCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4395 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $ShiftedRm",
4396 (t2ADCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
4400 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $Rm",
4401 (t2SBCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4402 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $ShiftedRm",
4403 (t2SBCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
4407 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4408 (t2ADDri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p,
4410 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4411 (t2ADDri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4412 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $Rm",
4413 (t2ADDrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4414 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $ShiftedRm",
4415 (t2ADDrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4429 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4430 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4432 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4433 (t2SUBri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4440 def : t2InstAlias<"add${s}${p}.w $Rd, $Rn, $imm",
4441 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4443 def : t2InstAlias<"addw${p} $Rd, $Rn, $imm",
4444 (t2SUBri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4453 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $imm",
4454 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4455 def : t2InstAlias<"sub${p} $Rd, $Rn, $imm",
4456 (t2SUBri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4457 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $Rm",
4458 (t2SUBrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4459 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $ShiftedRm",
4460 (t2SUBrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4476 def : t2InstAlias<"cmn${p} $Rn, $Rm",
4477 (t2CMNzrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4478 def : t2InstAlias<"teq${p} $Rn, $Rm",
4479 (t2TEQrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4480 def : t2InstAlias<"tst${p} $Rn, $Rm",
4481 (t2TSTrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4533 def : InstAlias<"pkhbt${p} $Rd, $Rn, $Rm",
4534 (t2PKHBT rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4536 def : InstAlias<"pkhtb${p} $Rd, $Rn, $Rm",
4537 (t2PKHBT rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4547 def : t2InstAlias<"stm${p} $Rn, $regs",
4548 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
4549 def : t2InstAlias<"stm${p} $Rn!, $regs",
4550 (t2STMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4553 def : t2InstAlias<"ldm${p} $Rn, $regs",
4554 (t2LDMIA GPR:$Rn, pred:$p, reglist:$regs)>;
4555 def : t2InstAlias<"ldm${p} $Rn!, $regs",
4556 (t2LDMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4559 def : t2InstAlias<"stmdb${p}.w $Rn, $regs",
4560 (t2STMDB GPR:$Rn, pred:$p, reglist:$regs)>;
4561 def : t2InstAlias<"stmdb${p}.w $Rn!, $regs",
4562 (t2STMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4565 def : t2InstAlias<"ldmdb${p}.w $Rn, $regs",
4566 (t2LDMDB GPR:$Rn, pred:$p, reglist:$regs)>;
4567 def : t2InstAlias<"ldmdb${p}.w $Rn!, $regs",
4568 (t2LDMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4578 def : t2InstAlias<"rsb${s}${p} $Rd, $Rn, $imm",
4579 (t2RSBri rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4589 def : t2InstAlias<"ssat${p} $Rd, $sat_imm, $Rn",
4590 (t2SSAT rGPR:$Rd, imm1_32:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
4591 def : t2InstAlias<"usat${p} $Rd, $sat_imm, $Rn",
4592 (t2USAT rGPR:$Rd, imm0_31:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
4595 def : t2InstAlias<"stm${p} $Rn, $regs",
4596 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
4615 def : InstAlias<"sxtab${p} $Rd, $Rn, $Rm",
4616 (t2SXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4618 def : InstAlias<"sxtah${p} $Rd, $Rn, $Rm",
4619 (t2SXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4621 def : InstAlias<"sxtab16${p} $Rd, $Rn, $Rm",
4622 (t2SXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4637 def : InstAlias<"uxtab${p} $Rd, $Rn, $Rm",
4638 (t2UXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4640 def : InstAlias<"uxtah${p} $Rd, $Rn, $Rm",
4641 (t2UXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4643 def : InstAlias<"uxtab16${p} $Rd, $Rn, $Rm",
4644 (t2UXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4684 def : t2InstAlias<"bic${s}${p} $Rd, $Rn, $imm",
4685 (t2ANDri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
4690 def : t2InstAlias<"and${s}${p} $Rd, $Rn, $imm",
4691 (t2BICri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
4697 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4698 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm,
4711 def : t2InstAlias<"mul${p} $Rn, $Rm",
4712 (t2MUL rGPR:$Rn, rGPR:$Rm, rGPR:$Rn, pred:$p)>;