Lines Matching refs:Rn

359   let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
365 let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
459 bits<4> Rn;
471 bits<4> Rn;
474 let Inst{19-16} = Rn;
510 bits<4> Rn;
513 let Inst{19-16} = Rn;
543 bits<4> Rn;
546 let Inst{19-16} = Rn;
555 bits<4> Rn;
559 let Inst{19-16} = Rn;
569 bits<4> Rn;
573 let Inst{19-16} = Rn;
609 bits<4> Rn;
613 let Inst{19-16} = Rn;
621 bits<4> Rn;
625 let Inst{19-16} = Rn;
633 bits<4> Rn;
637 let Inst{19-16} = Rn;
645 bits<4> Rn;
649 let Inst{19-16} = Rn;
660 bits<4> Rn;
664 let Inst{19-16} = Rn;
675 bits<4> Rn;
679 let Inst{19-16} = Rn;
687 : T2I<(outs rGPR:$RdLo, rGPR:$RdHi), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL64,
688 opc, "\t$RdLo, $RdHi, $Rn, $Rm", pattern>,
692 bits<4> Rn;
697 let Inst{19-16} = Rn;
705 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi), IIC_iMAC64,
706 opc, "\t$RdLo, $RdHi, $Rn, $Rm", []>,
711 bits<4> Rn;
716 let Inst{19-16} = Rn;
733 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm), iii,
734 opc, "\t$Rd, $Rn, $imm",
735 [(set rGPR:$Rd, (opnode rGPR:$Rn, t2_so_imm:$imm))]>,
743 def rr : T2sThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), iir,
744 opc, !strconcat(wide, "\t$Rd, $Rn, $Rm"),
745 [(set rGPR:$Rd, (opnode rGPR:$Rn, rGPR:$Rm))]>,
768 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm), iis,
769 opc, !strconcat(wide, "\t$Rd, $Rn, $ShiftedRm"),
770 [(set rGPR:$Rd, (opnode rGPR:$Rn, t2_so_reg:$ShiftedRm))]>,
801 def : t2InstAlias<!strconcat(opc, "${s}${p}.w", " $Rd, $Rn, $imm"),
802 (!cast<Instruction>(NAME#"ri") rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p,
805 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
806 (!cast<Instruction>(NAME#"rr") rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p,
808 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $shift"),
809 (!cast<Instruction>(NAME#"rs") rGPR:$Rd, rGPR:$Rn, t2_so_reg:$shift,
830 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm), IIC_iALUi,
831 opc, ".w\t$Rd, $Rn, $imm",
832 [(set rGPR:$Rd, (opnode t2_so_imm:$imm, rGPR:$Rn))]>,
841 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
842 opc, "\t$Rd, $Rn, $Rm",
854 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm),
855 IIC_iALUsir, opc, "\t$Rd, $Rn, $ShiftedRm",
856 [(set rGPR:$Rd, (opnode t2_so_reg:$ShiftedRm, rGPR:$Rn))]>,
875 (ins GPRnopc:$Rn, t2_so_imm:$imm, pred:$p),
877 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
881 def rr : t2PseudoInst<(outs rGPR:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm, pred:$p),
883 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
890 (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm, pred:$p),
892 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
904 (ins rGPR:$Rn, t2_so_imm:$imm, pred:$p),
907 rGPR:$Rn))]>,
911 (ins rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p),
914 rGPR:$Rn))]>,
928 (outs GPRsp:$Rd), (ins GPRsp:$Rn, t2_so_imm:$imm), IIC_iALUi,
929 opc, ".w\t$Rd, $Rn, $imm",
932 let Rn = 13;
944 (outs rGPR:$Rd), (ins GPRnopc:$Rn, t2_so_imm:$imm), IIC_iALUi,
945 opc, ".w\t$Rd, $Rn, $imm",
946 [(set rGPR:$Rd, (opnode GPRnopc:$Rn, t2_so_imm:$imm))]>,
957 (outs rGPR:$Rd), (ins GPR:$Rn, imm0_4095:$imm), IIC_iALUi,
958 !strconcat(opc, "w"), "\t$Rd, $Rn, $imm",
959 [(set rGPR:$Rd, (opnode GPR:$Rn, imm0_4095:$imm))]>,
962 bits<4> Rn;
969 let Inst{19-16} = Rn;
976 (outs GPRsp:$Rd), (ins GPRsp:$Rn, imm0_4095:$imm), IIC_iALUi,
977 !strconcat(opc, "w"), "\t$Rd, $Rn, $imm",
981 bits<4> Rn = 13;
988 let Inst{19-16} = Rn;
996 def rr : T2sThreeReg<(outs GPRnopc:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm),
997 IIC_iALUr, opc, ".w\t$Rd, $Rn, $Rm",
998 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, rGPR:$Rm))]>,
1011 (outs GPRnopc:$Rd), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm),
1012 IIC_iALUsi, opc, ".w\t$Rd, $Rn, $ShiftedRm",
1013 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, t2_so_reg:$ShiftedRm))]>,
1029 def ri : T2sTwoRegImm<(outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm),
1030 IIC_iALUi, opc, "\t$Rd, $Rn, $imm",
1031 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, t2_so_imm:$imm, CPSR))]>,
1039 def rr : T2sThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
1040 opc, ".w\t$Rd, $Rn, $Rm",
1041 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, rGPR:$Rm, CPSR))]>,
1053 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm),
1054 IIC_iALUsi, opc, ".w\t$Rd, $Rn, $ShiftedRm",
1055 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, t2_so_reg:$ShiftedRm, CPSR))]>,
1075 let Inst{19-16} = 0b1111; // Rn
1081 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMOVsr,
1082 opc, ".w\t$Rd, $Rn, $Rm",
1083 [(set rGPR:$Rd, (opnode rGPR:$Rn, rGPR:$Rm))]>,
1101 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $imm"),
1102 (!cast<Instruction>(NAME#"ri") rGPR:$Rd, rGPR:$Rn, ty:$imm, pred:$p,
1104 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
1105 (!cast<Instruction>(NAME#"rr") rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p,
1126 (outs), (ins LHSGPR:$Rn, t2_so_imm:$imm), iii,
1127 opc, ".w\t$Rn, $imm",
1128 [(opnode LHSGPR:$Rn, t2_so_imm:$imm)]>, Sched<[WriteCMP]> {
1138 (outs), (ins LHSGPR:$Rn, rGPR:$Rm), iir,
1139 opc, ".w\t$Rn, $Rm",
1140 [(opnode LHSGPR:$Rn, rGPR:$Rm)]>, Sched<[WriteCMP]> {
1152 (outs), (ins LHSGPR:$Rn, t2_so_reg:$ShiftedRm), iis,
1153 opc, ".w\t$Rn, $ShiftedRm",
1154 [(opnode LHSGPR:$Rn, t2_so_reg:$ShiftedRm)]>,
1167 def : t2InstAlias<!strconcat(opc, "${p}", " $Rn, $imm"),
1168 (!cast<Instruction>(NAME#"ri") LHSGPR:$Rn, t2_so_imm:$imm, pred:$p)>;
1169 def : t2InstAlias<!strconcat(opc, "${p}", " $Rn, $shift"),
1170 (!cast<Instruction>(NAME#"rs") LHSGPR:$Rn, t2_so_reg:$shift, pred:$p)>;
1188 let Inst{19-16} = addr{16-13}; // Rn
1206 let Inst{19-16} = addr{12-9}; // Rn
1233 let Inst{19-16} = addr{9-6}; // Rn
1252 let Inst{19-16} = 0b1111; // Rn
1283 let Inst{19-16} = addr{16-13}; // Rn
1304 let Inst{19-16} = addr{12-9}; // Rn
1322 let Inst{19-16} = addr{9-6}; // Rn
1338 let Inst{19-16} = 0b1111; // Rn
1365 (ins rGPR:$Rn, rGPR:$Rm, rot_imm:$rot),
1366 IIC_iEXTAsr, opc, "\t$Rd, $Rn, $Rm$rot", []>,
1409 let Inst{19-16} = 0b1111; // Rn
1518 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1520 "ldr", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>,
1530 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1532 "ldrb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>,
1542 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1544 "ldrh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>,
1554 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1556 "ldrsb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>,
1566 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1568 "ldrsh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>,
1574 // "$Rn = $Rn_wb" on POST or "$addr.base = $Rn_wb" on PRE.
1577 def t2LDR_POST_imm : t2AsmPseudo<"ldr${p}.w $Rt, $Rn, $imm",
1578 (ins GPR:$Rt, addr_offset_none:$Rn, t2am_imm8_offset:$imm, pred:$p)>;
1678 (ins GPRnopc:$Rt, addr_offset_none:$Rn,
1681 "str", "\t$Rt, $Rn$offset",
1682 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1684 (post_store GPRnopc:$Rt, addr_offset_none:$Rn,
1689 (ins rGPR:$Rt, addr_offset_none:$Rn,
1692 "strh", "\t$Rt, $Rn$offset",
1693 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1695 (post_truncsti16 rGPR:$Rt, addr_offset_none:$Rn,
1700 (ins rGPR:$Rt, addr_offset_none:$Rn,
1703 "strb", "\t$Rt, $Rn$offset",
1704 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1706 (post_truncsti8 rGPR:$Rt, addr_offset_none:$Rn,
1716 Constraints = "$Rn = $Rn_wb,@earlyclobber $Rn_wb" in {
1718 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1721 (pre_store rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>,
1724 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1727 (pre_truncsti8 rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>,
1730 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1733 (pre_truncsti16 rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>,
1739 // "$Rn = $Rn_wb,@earlyclobber $Rn_wb" on POST or
1743 def t2STR_POST_imm : t2AsmPseudo<"str${p}.w $Rt, $Rn, $imm",
1744 (ins GPR:$Rt, addr_offset_none:$Rn, t2am_imm8_offset:$imm, pred:$p)>;
1848 let Inst{19-16} = addr{16-13}; // Rn
1868 let Inst{19-16} = addr{12-9}; // Rn
1888 let Inst{19-16} = addr{9-6}; // Rn
1975 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1976 itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
1977 bits<4> Rn;
1986 let Inst{19-16} = Rn;
1990 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1991 itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
1992 bits<4> Rn;
2001 let Inst{19-16} = Rn;
2005 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2006 itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
2007 bits<4> Rn;
2016 let Inst{19-16} = Rn;
2020 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2021 itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
2022 bits<4> Rn;
2031 let Inst{19-16} = Rn;
2044 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2045 itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
2046 bits<4> Rn;
2055 let Inst{19-16} = Rn;
2062 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2063 itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
2064 bits<4> Rn;
2073 let Inst{19-16} = Rn;
2080 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2081 itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
2082 bits<4> Rn;
2091 let Inst{19-16} = Rn;
2098 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2099 itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
2100 bits<4> Rn;
2109 let Inst{19-16} = Rn;
2134 let Inst{19-16} = 0b1111; // Rn
2155 let Inst{19-16} = 0b1111; // Rn
2251 def : T2Pat<(sext_inreg (rotr rGPR:$Rn, rot_imm:$rot), i8),
2252 (t2SXTB rGPR:$Rn, rot_imm:$rot)>;
2253 def : T2Pat<(sext_inreg (rotr rGPR:$Rn, rot_imm:$rot), i16),
2254 (t2SXTH rGPR:$Rn, rot_imm:$rot)>;
2255 def : Thumb2DSPPat<(add rGPR:$Rn,
2257 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2258 def : Thumb2DSPPat<(add rGPR:$Rn,
2260 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2261 def : Thumb2DSPPat<(int_arm_sxtb16 rGPR:$Rn),
2262 (t2SXTB16 rGPR:$Rn, 0)>;
2263 def : Thumb2DSPPat<(int_arm_sxtab16 rGPR:$Rn, rGPR:$Rm),
2264 (t2SXTAB16 rGPR:$Rn, rGPR:$Rm, 0)>;
2265 def : Thumb2DSPPat<(int_arm_sxtb16 (rotr rGPR:$Rn, rot_imm:$rot)),
2266 (t2SXTB16 rGPR:$Rn, rot_imm:$rot)>;
2267 def : Thumb2DSPPat<(int_arm_sxtab16 rGPR:$Rn, (rotr rGPR:$Rm, rot_imm:$rot)),
2268 (t2SXTAB16 rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2274 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2276 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2277 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2279 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2280 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2282 (t2SXTAH rGPR:$Rn, rGPR:$Rm, (i32 3))>;
2283 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2286 (t2SXTAH rGPR:$Rn, rGPR:$Rm, (i32 3))>;
2304 def : Thumb2DSPPat<(int_arm_uxtb16 (rotr rGPR:$Rn, rot_imm:$rot)),
2305 (t2UXTB16 rGPR:$Rn, rot_imm:$rot)>;
2322 def : Thumb2DSPPat<(add rGPR:$Rn, (and (rotr rGPR:$Rm, rot_imm:$rot),
2324 (t2UXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2325 def : Thumb2DSPPat<(add rGPR:$Rn, (and (rotr rGPR:$Rm, rot_imm:$rot),
2327 (t2UXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2328 def : Thumb2DSPPat<(add rGPR:$Rn, (and (srl rGPR:$Rm, rot_imm:$rot),
2330 (t2UXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2331 def : Thumb2DSPPat<(add rGPR:$Rn, (and (srl rGPR:$Rm, imm8_or_16:$rot),
2333 (t2UXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2334 def : Thumb2DSPPat<(int_arm_uxtab16 rGPR:$Rn, rGPR:$Rm),
2335 (t2UXTAB16 rGPR:$Rn, rGPR:$Rm, 0)>;
2336 def : Thumb2DSPPat<(int_arm_uxtab16 rGPR:$Rn, (rotr rGPR:$Rm, rot_imm:$rot)),
2337 (t2UXTAB16 rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2362 def : T2Pat<(ARMsubs GPRnopc:$Rn, t2_so_imm:$imm),
2363 (t2SUBSri $Rn, t2_so_imm:$imm)>;
2364 def : T2Pat<(ARMsubs GPRnopc:$Rn, rGPR:$Rm), (t2SUBSrr $Rn, $Rm)>;
2365 def : T2Pat<(ARMsubs GPRnopc:$Rn, t2_so_reg:$ShiftedRm),
2366 (t2SUBSrs $Rn, t2_so_reg:$ShiftedRm)>;
2382 def : t2InstSubst<"subw${p} $Rd, $Rn, $imm",
2383 (t2ADDri12 rGPR:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
2394 def : t2InstSubst<"subw${p} $Rd, $Rn, $imm",
2395 (t2ADDspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095_neg:$imm, pred:$p)>;
2449 def t2SEL : T2ThreeReg<(outs GPR:$Rd), (ins GPR:$Rn, GPR:$Rm),
2450 NoItinerary, "sel", "\t$Rd, $Rn, $Rm",
2451 [(set GPR:$Rd, (int_arm_sel GPR:$Rn, GPR:$Rm))]>,
2475 bits<4> Rn;
2479 let Inst{19-16} = Rn;
2486 [(set rGPR:$Rd, (intrinsic rGPR:$Rn, rGPR:$Rm))],
2487 (ins rGPR:$Rn, rGPR:$Rm), "\t$Rd, $Rn, $Rm">;
2491 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2511 def : Thumb2DSPPat<(int_arm_qadd rGPR:$Rm, rGPR:$Rn),
2512 (t2QADD rGPR:$Rm, rGPR:$Rn)>;
2513 def : Thumb2DSPPat<(int_arm_qsub rGPR:$Rm, rGPR:$Rn),
2514 (t2QSUB rGPR:$Rm, rGPR:$Rn)>;
2515 def : Thumb2DSPPat<(int_arm_qadd rGPR:$Rm, (int_arm_qadd rGPR:$Rn, rGPR:$Rn)),
2516 (t2QDADD rGPR:$Rm, rGPR:$Rn)>;
2517 def : Thumb2DSPPat<(int_arm_qsub rGPR:$Rm, (int_arm_qadd rGPR:$Rn, rGPR:$Rn)),
2518 (t2QDSUB rGPR:$Rm, rGPR:$Rn)>;
2520 def : Thumb2DSPPat<(saddsat rGPR:$Rm, rGPR:$Rn),
2521 (t2QADD rGPR:$Rm, rGPR:$Rn)>;
2522 def : Thumb2DSPPat<(ssubsat rGPR:$Rm, rGPR:$Rn),
2523 (t2QSUB rGPR:$Rm, rGPR:$Rn)>;
2524 def : Thumb2DSPPat<(saddsat rGPR:$Rm, (saddsat rGPR:$Rn, rGPR:$Rn)),
2525 (t2QDADD rGPR:$Rm, rGPR:$Rn)>;
2526 def : Thumb2DSPPat<(ssubsat rGPR:$Rm, (saddsat rGPR:$Rn, rGPR:$Rn)),
2527 (t2QDSUB rGPR:$Rm, rGPR:$Rn)>;
2529 def : Thumb2DSPPat<(ARMqadd8b rGPR:$Rm, rGPR:$Rn),
2530 (t2QADD8 rGPR:$Rm, rGPR:$Rn)>;
2531 def : Thumb2DSPPat<(ARMqsub8b rGPR:$Rm, rGPR:$Rn),
2532 (t2QSUB8 rGPR:$Rm, rGPR:$Rn)>;
2533 def : Thumb2DSPPat<(ARMqadd16b rGPR:$Rm, rGPR:$Rn),
2534 (t2QADD16 rGPR:$Rm, rGPR:$Rn)>;
2535 def : Thumb2DSPPat<(ARMqsub16b rGPR:$Rm, rGPR:$Rn),
2536 (t2QSUB16 rGPR:$Rm, rGPR:$Rn)>;
2538 def : Thumb2DSPPat<(ARMuqadd8b rGPR:$Rm, rGPR:$Rn),
2539 (t2UQADD8 rGPR:$Rm, rGPR:$Rn)>;
2540 def : Thumb2DSPPat<(ARMuqsub8b rGPR:$Rm, rGPR:$Rn),
2541 (t2UQSUB8 rGPR:$Rm, rGPR:$Rn)>;
2542 def : Thumb2DSPPat<(ARMuqadd16b rGPR:$Rm, rGPR:$Rn),
2543 (t2UQADD16 rGPR:$Rm, rGPR:$Rn)>;
2544 def : Thumb2DSPPat<(ARMuqsub16b rGPR:$Rm, rGPR:$Rn),
2545 (t2UQSUB16 rGPR:$Rm, rGPR:$Rn)>;
2602 (ins rGPR:$Rn, rGPR:$Rm),
2603 NoItinerary, "usad8", "\t$Rd, $Rn, $Rm",
2604 [(set rGPR:$Rd, (int_arm_usad8 rGPR:$Rn, rGPR:$Rm))]>,
2609 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), NoItinerary,
2610 "usada8", "\t$Rd, $Rn, $Rm, $Ra",
2611 [(set rGPR:$Rd, (int_arm_usada8 rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>,
2618 bits<4> Rn;
2625 let Inst{19-16} = Rn;
2634 def t2SSAT: T2SatI<(ins imm1_32:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2635 "ssat", "\t$Rd, $sat_imm, $Rn$sh">,
2641 def t2SSAT16: T2SatI<(ins imm1_16:$sat_imm, rGPR:$Rn),
2642 "ssat16", "\t$Rd, $sat_imm, $Rn">,
2649 def t2USAT: T2SatI<(ins imm0_31:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2650 "usat", "\t$Rd, $sat_imm, $Rn$sh">,
2655 def t2USAT16: T2SatI<(ins imm0_15:$sat_imm, rGPR:$Rn),
2656 "usat16", "\t$Rd, $sat_imm, $Rn">,
2663 def : T2Pat<(ARMssat GPRnopc:$Rn, imm0_31:$imm),
2664 (t2SSAT imm0_31:$imm, GPRnopc:$Rn, 0)>;
2665 def : T2Pat<(ARMusat GPRnopc:$Rn, imm0_31:$imm),
2666 (t2USAT imm0_31:$imm, GPRnopc:$Rn, 0)>;
2685 def : T2Pat<(ARMssat (sra GPRnopc:$Rn, asr_imm:$shft), imm0_31:$pos),
2686 (t2SSAT imm0_31:$pos, GPRnopc:$Rn, asr_imm:$shft)>;
2689 def : T2Pat<(ARMusat (sra GPRnopc:$Rn, asr_imm:$shft), imm0_31:$pos),
2690 (t2USAT imm0_31:$pos, GPRnopc:$Rn, asr_imm:$shft)>;
2720 let Inst{19-16} = 0b1111; // Rn
2738 let Inst{19-16} = 0b1111; // Rn
2753 let Inst{19-16} = 0b1111; // Rn
2792 bits<4> Rn;
2794 let Inst{19-16} = Rn;
2805 let Inst{19-16} = 0b1111; // Rn
2815 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2816 IIC_iUNAsi, "sbfx", "\t$Rd, $Rn, $lsb, $msb", []>, Sched<[WriteALU]> {
2826 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2827 IIC_iUNAsi, "ubfx", "\t$Rd, $Rn, $lsb, $msb", []>, Sched<[WriteALU]> {
2852 (ins rGPR:$src, rGPR:$Rn, bf_inv_mask_imm:$imm),
2853 IIC_iBITi, "bfi", "\t$Rd, $Rn, $imm",
2854 [(set rGPR:$Rd, (ARMbfi rGPR:$src, rGPR:$Rn,
2872 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $imm",
2873 (t2ORNri rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
2874 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $Rm",
2875 (t2ORNrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
2876 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $ShiftedRm",
2877 (t2ORNrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p, cc_out:$s)>;
2896 let Inst{19-16} = 0b1111; // Rn
2906 let Inst{19-16} = 0b1111; // Rn
2919 let Inst{19-16} = 0b1111; // Rn
2949 def : T2Pat<(or AddLikeOrOp:$Rn, t2_so_imm:$imm),
2950 (t2ADDri rGPR:$Rn, t2_so_imm:$imm)>;
2952 def : T2Pat<(or AddLikeOrOp:$Rn, imm0_4095:$Rm),
2953 (t2ADDri12 rGPR:$Rn, imm0_4095:$Rm)>;
2955 def : T2Pat<(or AddLikeOrOp:$Rn, non_imm32:$Rm),
2956 (t2ADDrr $Rn, $Rm)>;
2962 def t2MUL: T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2963 "mul", "\t$Rd, $Rn, $Rm",
2964 [(set rGPR:$Rd, (mul rGPR:$Rn, rGPR:$Rm))]>,
2974 : T2FourReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2975 opc, "\t$Rd, $Rn, $Rm, $Ra", pattern>,
2985 [(set rGPR:$Rd, (add (mul rGPR:$Rn, rGPR:$Rm),
2988 [(set rGPR:$Rd, (sub rGPR:$Ra, (mul rGPR:$Rn,
2996 (smullohi rGPR:$Rn, rGPR:$Rm))]>;
2999 (umullohi rGPR:$Rn, rGPR:$Rm))]>;
3013 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
3014 opc, "\t$Rd, $Rn, $Rm", pattern>,
3023 def t2SMMUL : T2SMMUL<0b0000, "smmul", [(set rGPR:$Rd, (mulhs rGPR:$Rn,
3027 [(set rGPR:$Rd, (ARMsmmlar rGPR:$Rn, rGPR:$Rm, (i32 0)))]>;
3031 : T2FourReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
3032 opc, "\t$Rd, $Rn, $Rm, $Ra", pattern>,
3042 [(set rGPR:$Rd, (add (mulhs rGPR:$Rm, rGPR:$Rn), rGPR:$Ra))]>;
3044 [(set rGPR:$Rd, (ARMsmmlar rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>;
3047 [(set rGPR:$Rd, (ARMsmmlsr rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>;
3051 : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16, opc,
3052 "\t$Rd, $Rn, $Rm", pattern>,
3064 [(set rGPR:$Rd, (bb_mul rGPR:$Rn, rGPR:$Rm))]>;
3066 [(set rGPR:$Rd, (bt_mul rGPR:$Rn, rGPR:$Rm))]>;
3068 [(set rGPR:$Rd, (tb_mul rGPR:$Rn, rGPR:$Rm))]>;
3070 [(set rGPR:$Rd, (tt_mul rGPR:$Rn, rGPR:$Rm))]>;
3072 [(set rGPR:$Rd, (ARMsmulwb rGPR:$Rn, rGPR:$Rm))]>;
3074 [(set rGPR:$Rd, (ARMsmulwt rGPR:$Rn, rGPR:$Rm))]>;
3076 def : Thumb2DSPPat<(mul sext_16_node:$Rn, (sext_bottom_16 rGPR:$Rm)),
3077 (t2SMULBB rGPR:$Rn, rGPR:$Rm)>;
3078 def : Thumb2DSPPat<(mul sext_16_node:$Rn, (sext_top_16 rGPR:$Rm)),
3079 (t2SMULBT rGPR:$Rn, rGPR:$Rm)>;
3080 def : Thumb2DSPPat<(mul (sext_top_16 rGPR:$Rn), sext_16_node:$Rm),
3081 (t2SMULTB rGPR:$Rn, rGPR:$Rm)>;
3083 def : Thumb2DSPPat<(int_arm_smulbb rGPR:$Rn, rGPR:$Rm),
3084 (t2SMULBB rGPR:$Rn, rGPR:$Rm)>;
3085 def : Thumb2DSPPat<(int_arm_smulbt rGPR:$Rn, rGPR:$Rm),
3086 (t2SMULBT rGPR:$Rn, rGPR:$Rm)>;
3087 def : Thumb2DSPPat<(int_arm_smultb rGPR:$Rn, rGPR:$Rm),
3088 (t2SMULTB rGPR:$Rn, rGPR:$Rm)>;
3089 def : Thumb2DSPPat<(int_arm_smultt rGPR:$Rn, rGPR:$Rm),
3090 (t2SMULTT rGPR:$Rn, rGPR:$Rm)>;
3091 def : Thumb2DSPPat<(int_arm_smulwb rGPR:$Rn, rGPR:$Rm),
3092 (t2SMULWB rGPR:$Rn, rGPR:$Rm)>;
3093 def : Thumb2DSPPat<(int_arm_smulwt rGPR:$Rn, rGPR:$Rm),
3094 (t2SMULWT rGPR:$Rn, rGPR:$Rm)>;
3098 : T2FourReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMUL16,
3099 opc, "\t$Rd, $Rn, $Rm, $Ra", pattern>,
3110 [(set rGPR:$Rd, (add rGPR:$Ra, (bb_mul rGPR:$Rn, rGPR:$Rm)))]>;
3112 [(set rGPR:$Rd, (add rGPR:$Ra, (bt_mul rGPR:$Rn, rGPR:$Rm)))]>;
3114 [(set rGPR:$Rd, (add rGPR:$Ra, (tb_mul rGPR:$Rn, rGPR:$Rm)))]>;
3116 [(set rGPR:$Rd, (add rGPR:$Ra, (tt_mul rGPR:$Rn, rGPR:$Rm)))]>;
3118 [(set rGPR:$Rd, (add rGPR:$Ra, (ARMsmulwb rGPR:$Rn, rGPR:$Rm)))]>;
3120 [(set rGPR:$Rd, (add rGPR:$Ra, (ARMsmulwt rGPR:$Rn, rGPR:$Rm)))]>;
3122 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul sext_16_node:$Rn, sext_16_node:$Rm)),
3123 (t2SMLABB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3124 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul sext_16_node:$Rn,
3126 (t2SMLABB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3127 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul sext_16_node:$Rn,
3129 (t2SMLABT rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3130 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul (sext_top_16 rGPR:$Rn),
3132 (t2SMLATB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3157 def : Thumb2DSPPat<(ARMsmlalbb GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3158 (t2SMLALBB $Rn, $Rm, $RLo, $RHi)>;
3159 def : Thumb2DSPPat<(ARMsmlalbt GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3160 (t2SMLALBT $Rn, $Rm, $RLo, $RHi)>;
3161 def : Thumb2DSPPat<(ARMsmlaltb GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3162 (t2SMLALTB $Rn, $Rm, $RLo, $RHi)>;
3163 def : Thumb2DSPPat<(ARMsmlaltt GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3164 (t2SMLALTT $Rn, $Rm, $RLo, $RHi)>;
3170 (ins rGPR:$Rn, rGPR:$Rm),
3171 IIC_iMAC32, opc, "\t$Rd, $Rn, $Rm",
3172 [(set rGPR:$Rd, (intrinsic rGPR:$Rn, rGPR:$Rm))]>,
3188 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra),
3189 IIC_iMAC32, opc, "\t$Rd, $Rn, $Rm, $Ra",
3190 [(set rGPR:$Rd, (intrinsic rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>,
3201 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3202 IIC_iMAC64, opc, "\t$Ra, $Rd, $Rn, $Rm", []>,
3212 def : Thumb2DSPPat<(ARMSmlald rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3213 (t2SMLALD rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3214 def : Thumb2DSPPat<(ARMSmlaldx rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3215 (t2SMLALDX rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3216 def : Thumb2DSPPat<(ARMSmlsld rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3217 (t2SMLSLD rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3218 def : Thumb2DSPPat<(ARMSmlsldx rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3219 (t2SMLSLDX rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3225 def t2SDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iDIV,
3226 "sdiv", "\t$Rd, $Rn, $Rm",
3227 [(set rGPR:$Rd, (sdiv rGPR:$Rn, rGPR:$Rm))]>,
3237 def t2UDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iDIV,
3238 "udiv", "\t$Rd, $Rn, $Rm",
3239 [(set rGPR:$Rd, (udiv rGPR:$Rn, rGPR:$Rm))]>,
3262 let Rn{3-0} = Rm;
3283 def : T2Pat<(srl (bswap top16Zero:$Rn), (i32 16)),
3284 (t2REV16 rGPR:$Rn)>;
3296 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_lsl_amt:$sh),
3297 IIC_iBITsi, "pkhbt", "\t$Rd, $Rn, $Rm$sh",
3298 [(set rGPR:$Rd, (or (and rGPR:$Rn, 0xFFFF),
3325 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_asr_amt:$sh),
3326 IIC_iBITsi, "pkhtb", "\t$Rd, $Rn, $Rm$sh",
3327 [(set rGPR:$Rd, (or (and rGPR:$Rn, 0xFFFF0000),
3367 : T2ThreeRegNoP<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), NoItinerary,
3368 !strconcat("crc32", suffix, "\t$Rd, $Rn, $Rm"),
3369 [(set rGPR:$Rd, (builtin rGPR:$Rn, rGPR:$Rm))]>,
3402 (outs), (ins GPRnopc:$Rn, t2_so_imm:$imm), IIC_iCMPi,
3403 "cmn", ".w\t$Rn, $imm",
3404 [(ARMcmn GPRnopc:$Rn, (ineg t2_so_imm:$imm))]>,
3415 (outs), (ins GPRnopc:$Rn, rGPR:$Rm), IIC_iCMPr,
3416 "cmn", ".w\t$Rn, $Rm",
3418 GPRnopc:$Rn, rGPR:$Rm)]>, Sched<[WriteCMP, ReadALU, ReadALU]> {
3430 (outs), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm), IIC_iCMPsi,
3431 "cmn", ".w\t$Rn, $ShiftedRm",
3433 GPRnopc:$Rn, t2_so_reg:$ShiftedRm)]>,
3446 def : t2InstAlias<"cmn${p} $Rn, $imm",
3447 (t2CMNri GPRnopc:$Rn, t2_so_imm:$imm, pred:$p)>;
3448 def : t2InstAlias<"cmn${p} $Rn, $shift",
3449 (t2CMNzrs GPRnopc:$Rn, t2_so_reg:$shift, pred:$p)>;
3854 def t2LDMIA_RET: t2PseudoExpand<(outs GPR:$wb), (ins GPR:$Rn, pred:$p,
3857 (t2LDMIA_UPD GPR:$wb, GPR:$Rn, pred:$p, reglist:$regs)>,
3858 RegConstraint<"$Rn = $wb">;
3901 bits<4> Rn;
3904 let Inst{19-16} = Rn;
3914 bits<4> Rn;
3917 let Inst{19-16} = Rn;
3999 def tCBZ : T1I<(outs), (ins tGPR:$Rn, thumb_cb_target:$target), IIC_Br,
4000 "cbz\t$Rn, $target", []>,
4005 bits<3> Rn;
4008 let Inst{2-0} = Rn;
4011 def tCBNZ : T1I<(outs), (ins tGPR:$Rn, thumb_cb_target:$target), IIC_Br,
4012 "cbnz\t$Rn, $target", []>,
4017 bits<3> Rn;
4020 let Inst{2-0} = Rn;
4169 bits<4> Rn;
4170 let Inst{19-16} = Rn;
4175 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn!",
4178 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn",
4181 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn!",
4184 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn",
4465 def t2MSR_AR : T2I<(outs), (ins msr_mask:$mask, rGPR:$Rn),
4466 NoItinerary, "msr", "\t$mask, $Rn", []>,
4469 bits<4> Rn;
4472 let Inst{19-16} = Rn;
4480 def t2MSRbanked : T2I<(outs), (ins banked_reg:$banked, rGPR:$Rn),
4481 NoItinerary, "msr", "\t$banked, $Rn", []>,
4484 bits<4> Rn;
4488 let Inst{19-16} = Rn;
4501 def t2MSR_M : T2I<(outs), (ins msr_mask:$SYSm, rGPR:$Rn),
4502 NoItinerary, "msr", "\t$SYSm, $Rn", []>,
4505 bits<4> Rn;
4508 let Inst{19-16} = Rn;
4729 : T2I<(outs rGPR:$Rt), (ins GPRnopc:$Rn), NoItinerary, asm, "\t$Rt, $Rn",
4731 bits<4> Rn;
4735 let Inst{19-16} = Rn;
4745 [(set rGPR:$Rt, (int_arm_cmse_tt GPRnopc:$Rn))]>,
4748 [(set rGPR:$Rt, (int_arm_cmse_ttt GPRnopc:$Rn))]>,
4751 [(set rGPR:$Rt, (int_arm_cmse_tta GPRnopc:$Rn))]>,
4754 [(set rGPR:$Rt, (int_arm_cmse_ttat GPRnopc:$Rn))]>,
4769 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0x00FF)),
4770 (t2UXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
4772 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0xFFFF)),
4773 (t2UXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
4781 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i8)),
4782 (t2SXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
4784 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i16)),
4785 (t2SXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
4841 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $Rm",
4842 (t2ADCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4843 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $ShiftedRm",
4844 (t2ADCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
4848 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $Rm",
4849 (t2SBCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4850 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $ShiftedRm",
4851 (t2SBCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
4855 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4856 (t2ADDri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p,
4858 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4859 (t2ADDri12 rGPR:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4860 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $Rm",
4861 (t2ADDrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4862 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $ShiftedRm",
4863 (t2ADDrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4879 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
4880 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4882 def : t2InstSubst<"add${p} $Rd, $Rn, $imm",
4883 (t2SUBri12 rGPR:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4890 def : t2InstSubst<"add${s}${p}.w $Rd, $Rn, $imm",
4891 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4893 def : t2InstSubst<"addw${p} $Rd, $Rn, $imm",
4894 (t2SUBri12 rGPR:$Rd, rGPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4903 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $imm",
4904 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4905 def : t2InstAlias<"sub${p} $Rd, $Rn, $imm",
4906 (t2SUBri12 rGPR:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4907 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $Rm",
4908 (t2SUBrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4909 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $ShiftedRm",
4910 (t2SUBrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4929 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4930 (t2ADDspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm:$imm, pred:$p,
4932 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4933 (t2ADDspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095:$imm, pred:$p)>;
4948 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
4949 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm_neg:$imm, pred:$p,
4951 def : t2InstSubst<"add${p} $Rd, $Rn, $imm",
4952 (t2SUBspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4959 def : t2InstSubst<"add${s}${p}.w $Rd, $Rn, $imm",
4960 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm_neg:$imm, pred:$p,
4962 def : t2InstSubst<"addw${p} $Rd, $Rn, $imm",
4963 (t2SUBspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4972 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $imm",
4973 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4974 def : t2InstAlias<"sub${p} $Rd, $Rn, $imm",
4975 (t2SUBspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095:$imm, pred:$p)>;
4987 def : t2InstAlias<"cmn${p} $Rn, $Rm",
4988 (t2CMNzrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4989 def : t2InstAlias<"teq${p} $Rn, $Rm",
4990 (t2TEQrr rGPR:$Rn, rGPR:$Rm, pred:$p)>;
4991 def : t2InstAlias<"tst${p} $Rn, $Rm",
4992 (t2TSTrr rGPR:$Rn, rGPR:$Rm, pred:$p)>;
5071 def : InstAlias<"pkhbt${p} $Rd, $Rn, $Rm",
5072 (t2PKHBT rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5074 def : InstAlias<"pkhtb${p} $Rd, $Rn, $Rm",
5075 (t2PKHBT rGPR:$Rd, rGPR:$Rm, rGPR:$Rn, 0, pred:$p), 0>,
5085 def : t2InstAlias<"stm${p} $Rn, $regs",
5086 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
5087 def : t2InstAlias<"stm${p} $Rn!, $regs",
5088 (t2STMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5091 def : t2InstAlias<"ldm${p} $Rn, $regs",
5092 (t2LDMIA GPR:$Rn, pred:$p, reglist:$regs)>;
5093 def : t2InstAlias<"ldm${p} $Rn!, $regs",
5094 (t2LDMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5097 def : t2InstAlias<"stmdb${p}.w $Rn, $regs",
5098 (t2STMDB GPR:$Rn, pred:$p, reglist:$regs)>;
5099 def : t2InstAlias<"stmdb${p}.w $Rn!, $regs",
5100 (t2STMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5103 def : t2InstAlias<"ldmdb${p}.w $Rn, $regs",
5104 (t2LDMDB GPR:$Rn, pred:$p, reglist:$regs)>;
5105 def : t2InstAlias<"ldmdb${p}.w $Rn!, $regs",
5106 (t2LDMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5116 def : t2InstAlias<"rsb${s}${p} $Rd, $Rn, $imm",
5117 (t2RSBri rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
5127 def : t2InstAlias<"rsb${s}${p}.w $Rd, $Rn, $Rm",
5128 (t2RSBrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
5129 def : t2InstAlias<"rsb${s}${p}.w $Rd, $Rn, $ShiftedRm",
5130 (t2RSBrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p,
5134 def : t2InstAlias<"ssat${p} $Rd, $sat_imm, $Rn",
5135 (t2SSAT rGPR:$Rd, imm1_32:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
5136 def : t2InstAlias<"usat${p} $Rd, $sat_imm, $Rn",
5137 (t2USAT rGPR:$Rd, imm0_31:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
5140 def : t2InstAlias<"stm${p} $Rn, $regs",
5141 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
5160 def : InstAlias<"sxtab${p} $Rd, $Rn, $Rm",
5161 (t2SXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5163 def : InstAlias<"sxtah${p} $Rd, $Rn, $Rm",
5164 (t2SXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5166 def : InstAlias<"sxtab16${p} $Rd, $Rn, $Rm",
5167 (t2SXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5182 def : InstAlias<"uxtab${p} $Rd, $Rn, $Rm",
5183 (t2UXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5185 def : InstAlias<"uxtah${p} $Rd, $Rn, $Rm",
5186 (t2UXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5188 def : InstAlias<"uxtab16${p} $Rd, $Rn, $Rm",
5189 (t2UXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5229 def : t2InstSubst<"bic${s}${p} $Rd, $Rn, $imm",
5230 (t2ANDri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5235 def : t2InstSubst<"bic${s}${p}.w $Rd, $Rn, $imm",
5236 (t2ANDri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5241 def : t2InstSubst<"and${s}${p} $Rd, $Rn, $imm",
5242 (t2BICri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5247 def : t2InstSubst<"and${s}${p}.w $Rd, $Rn, $imm",
5248 (t2BICri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5254 def : t2InstSubst<"orn${s}${p} $Rd, $Rn, $imm",
5255 (t2ORRri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5260 def : t2InstSubst<"orr${s}${p} $Rd, $Rn, $imm",
5261 (t2ORNri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5267 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
5268 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm,
5270 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
5271 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm_neg:$imm,
5287 def : t2InstAlias<"mul${p} $Rn, $Rm",
5288 (t2MUL rGPR:$Rn, rGPR:$Rm, rGPR:$Rn, pred:$p)>;
5427 def t2BFr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5428 !strconcat("bfx", "${p}"), "$b_label, $Rn"> {
5430 bits<4> Rn;
5434 let Inst{19-16} = Rn{3-0};
5450 def t2BFLr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5451 !strconcat("bflx", "${p}"), "$b_label, $Rn"> {
5453 bits<4> Rn;
5457 let Inst{19-16} = Rn{3-0};
5472 (ins rGPR:$Rn, wlslabel_u11:$label),
5473 "wls", "$LR, $Rn, $label"> {
5474 bits<4> Rn;
5477 let Inst{19-16} = Rn{3-0};
5486 def t2DLS : t2LOL<(outs GPRlr:$LR), (ins rGPR:$Rn),
5487 "dls", "$LR, $Rn"> {
5488 bits<4> Rn;
5490 let Inst{19-16} = Rn{3-0};
5547 t2PseudoInst<(outs GPRlr:$Rm), (ins GPRlr:$Rn, imm0_7:$size),
5597 : V8_1MI<(outs rGPR:$Rd), (ins GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rm, pred_noal:$fcond),
5598 AddrModeNone, NoItinerary, iname, "$Rd, $Rn, $Rm, $fcond", "", pattern> {
5601 bits<4> Rn;
5605 let Inst{19-16} = Rn{3-0};
5666 def : InstAlias<"cinc\t$Rd, $Rn, $fcond",
5667 (t2CSINC rGPR:$Rd, GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rn, pred_noal_inv:$fcond)>;
5669 def : InstAlias<"cinv\t$Rd, $Rn, $fcond",
5670 (t2CSINV rGPR:$Rd, GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rn, pred_noal_inv:$fcond)>;
5672 def : InstAlias<"cneg\t$Rd, $Rn, $fcond",
5673 (t2CSNEG rGPR:$Rd, GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rn, pred_noal_inv:$fcond)>;
5680 (ins pred:$p, GPRnopc:$Rn, GPRnopc:$Rm),
5681 AddrModeNone, NoItinerary, "pacg${p}", "$Rd, $Rn, $Rm", "", []> {
5683 bits<4> Rn;
5686 let Inst{19-16} = Rn;
5696 AddrModeNone, NoItinerary, asm, "$Ra, $Rn, $Rm", "", []> {
5698 bits<4> Rn;
5701 let Inst{19-16} = Rn;
5709 def t2AUTG : PACBTIAut<(ins pred:$p, GPRnosp:$Ra, GPRnopc:$Rn, GPRnopc:$Rm),
5713 def t2BXAUT : PACBTIAut<(ins pred:$p, GPRnosp:$Ra, rGPR:$Rn, GPRnopc:$Rm),