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
2247 def : T2Pat<(sext_inreg (rotr rGPR:$Rn, rot_imm:$rot), i8),
2248 (t2SXTB rGPR:$Rn, rot_imm:$rot)>;
2249 def : T2Pat<(sext_inreg (rotr rGPR:$Rn, rot_imm:$rot), i16),
2250 (t2SXTH rGPR:$Rn, rot_imm:$rot)>;
2251 def : Thumb2DSPPat<(add rGPR:$Rn,
2253 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2254 def : Thumb2DSPPat<(add rGPR:$Rn,
2256 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2257 def : Thumb2DSPPat<(int_arm_sxtb16 rGPR:$Rn),
2258 (t2SXTB16 rGPR:$Rn, 0)>;
2259 def : Thumb2DSPPat<(int_arm_sxtab16 rGPR:$Rn, rGPR:$Rm),
2260 (t2SXTAB16 rGPR:$Rn, rGPR:$Rm, 0)>;
2261 def : Thumb2DSPPat<(int_arm_sxtb16 (rotr rGPR:$Rn, rot_imm:$rot)),
2262 (t2SXTB16 rGPR:$Rn, rot_imm:$rot)>;
2263 def : Thumb2DSPPat<(int_arm_sxtab16 rGPR:$Rn, (rotr rGPR:$Rm, rot_imm:$rot)),
2264 (t2SXTAB16 rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2270 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2272 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2273 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2275 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2276 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2278 (t2SXTAH rGPR:$Rn, rGPR:$Rm, (i32 3))>;
2279 def : Thumb2DSPPat<(add rGPR:$Rn, (sext_inreg
2282 (t2SXTAH rGPR:$Rn, rGPR:$Rm, (i32 3))>;
2300 def : Thumb2DSPPat<(int_arm_uxtb16 (rotr rGPR:$Rn, rot_imm:$rot)),
2301 (t2UXTB16 rGPR:$Rn, rot_imm:$rot)>;
2318 def : Thumb2DSPPat<(add rGPR:$Rn, (and (rotr rGPR:$Rm, rot_imm:$rot),
2320 (t2UXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2321 def : Thumb2DSPPat<(add rGPR:$Rn, (and (rotr rGPR:$Rm, rot_imm:$rot),
2323 (t2UXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2324 def : Thumb2DSPPat<(add rGPR:$Rn, (and (srl rGPR:$Rm, rot_imm:$rot),
2326 (t2UXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2327 def : Thumb2DSPPat<(add rGPR:$Rn, (and (srl rGPR:$Rm, imm8_or_16:$rot),
2329 (t2UXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2330 def : Thumb2DSPPat<(int_arm_uxtab16 rGPR:$Rn, rGPR:$Rm),
2331 (t2UXTAB16 rGPR:$Rn, rGPR:$Rm, 0)>;
2332 def : Thumb2DSPPat<(int_arm_uxtab16 rGPR:$Rn, (rotr rGPR:$Rm, rot_imm:$rot)),
2333 (t2UXTAB16 rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2358 def : T2Pat<(ARMsubs GPRnopc:$Rn, t2_so_imm:$imm),
2359 (t2SUBSri $Rn, t2_so_imm:$imm)>;
2360 def : T2Pat<(ARMsubs GPRnopc:$Rn, rGPR:$Rm), (t2SUBSrr $Rn, $Rm)>;
2361 def : T2Pat<(ARMsubs GPRnopc:$Rn, t2_so_reg:$ShiftedRm),
2362 (t2SUBSrs $Rn, t2_so_reg:$ShiftedRm)>;
2378 def : t2InstSubst<"subw${p} $Rd, $Rn, $imm",
2379 (t2ADDri12 rGPR:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
2390 def : t2InstSubst<"subw${p} $Rd, $Rn, $imm",
2391 (t2ADDspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095_neg:$imm, pred:$p)>;
2445 def t2SEL : T2ThreeReg<(outs GPR:$Rd), (ins GPR:$Rn, GPR:$Rm),
2446 NoItinerary, "sel", "\t$Rd, $Rn, $Rm",
2447 [(set GPR:$Rd, (int_arm_sel GPR:$Rn, GPR:$Rm))]>,
2471 bits<4> Rn;
2475 let Inst{19-16} = Rn;
2482 [(set rGPR:$Rd, (intrinsic rGPR:$Rn, rGPR:$Rm))],
2483 (ins rGPR:$Rn, rGPR:$Rm), "\t$Rd, $Rn, $Rm">;
2487 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2507 def : Thumb2DSPPat<(int_arm_qadd rGPR:$Rm, rGPR:$Rn),
2508 (t2QADD rGPR:$Rm, rGPR:$Rn)>;
2509 def : Thumb2DSPPat<(int_arm_qsub rGPR:$Rm, rGPR:$Rn),
2510 (t2QSUB rGPR:$Rm, rGPR:$Rn)>;
2511 def : Thumb2DSPPat<(int_arm_qadd rGPR:$Rm, (int_arm_qadd rGPR:$Rn, rGPR:$Rn)),
2512 (t2QDADD rGPR:$Rm, rGPR:$Rn)>;
2513 def : Thumb2DSPPat<(int_arm_qsub rGPR:$Rm, (int_arm_qadd rGPR:$Rn, rGPR:$Rn)),
2514 (t2QDSUB rGPR:$Rm, rGPR:$Rn)>;
2516 def : Thumb2DSPPat<(saddsat rGPR:$Rm, rGPR:$Rn),
2517 (t2QADD rGPR:$Rm, rGPR:$Rn)>;
2518 def : Thumb2DSPPat<(ssubsat rGPR:$Rm, rGPR:$Rn),
2519 (t2QSUB rGPR:$Rm, rGPR:$Rn)>;
2520 def : Thumb2DSPPat<(saddsat rGPR:$Rm, (saddsat rGPR:$Rn, rGPR:$Rn)),
2521 (t2QDADD rGPR:$Rm, rGPR:$Rn)>;
2522 def : Thumb2DSPPat<(ssubsat rGPR:$Rm, (saddsat rGPR:$Rn, rGPR:$Rn)),
2523 (t2QDSUB rGPR:$Rm, rGPR:$Rn)>;
2525 def : Thumb2DSPPat<(ARMqadd8b rGPR:$Rm, rGPR:$Rn),
2526 (t2QADD8 rGPR:$Rm, rGPR:$Rn)>;
2527 def : Thumb2DSPPat<(ARMqsub8b rGPR:$Rm, rGPR:$Rn),
2528 (t2QSUB8 rGPR:$Rm, rGPR:$Rn)>;
2529 def : Thumb2DSPPat<(ARMqadd16b rGPR:$Rm, rGPR:$Rn),
2530 (t2QADD16 rGPR:$Rm, rGPR:$Rn)>;
2531 def : Thumb2DSPPat<(ARMqsub16b rGPR:$Rm, rGPR:$Rn),
2532 (t2QSUB16 rGPR:$Rm, rGPR:$Rn)>;
2534 def : Thumb2DSPPat<(ARMuqadd8b rGPR:$Rm, rGPR:$Rn),
2535 (t2UQADD8 rGPR:$Rm, rGPR:$Rn)>;
2536 def : Thumb2DSPPat<(ARMuqsub8b rGPR:$Rm, rGPR:$Rn),
2537 (t2UQSUB8 rGPR:$Rm, rGPR:$Rn)>;
2538 def : Thumb2DSPPat<(ARMuqadd16b rGPR:$Rm, rGPR:$Rn),
2539 (t2UQADD16 rGPR:$Rm, rGPR:$Rn)>;
2540 def : Thumb2DSPPat<(ARMuqsub16b rGPR:$Rm, rGPR:$Rn),
2541 (t2UQSUB16 rGPR:$Rm, rGPR:$Rn)>;
2598 (ins rGPR:$Rn, rGPR:$Rm),
2599 NoItinerary, "usad8", "\t$Rd, $Rn, $Rm",
2600 [(set rGPR:$Rd, (int_arm_usad8 rGPR:$Rn, rGPR:$Rm))]>,
2605 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), NoItinerary,
2606 "usada8", "\t$Rd, $Rn, $Rm, $Ra",
2607 [(set rGPR:$Rd, (int_arm_usada8 rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>,
2614 bits<4> Rn;
2621 let Inst{19-16} = Rn;
2630 def t2SSAT: T2SatI<(ins imm1_32:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2631 "ssat", "\t$Rd, $sat_imm, $Rn$sh">,
2637 def t2SSAT16: T2SatI<(ins imm1_16:$sat_imm, rGPR:$Rn),
2638 "ssat16", "\t$Rd, $sat_imm, $Rn">,
2645 def t2USAT: T2SatI<(ins imm0_31:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2646 "usat", "\t$Rd, $sat_imm, $Rn$sh">,
2651 def t2USAT16: T2SatI<(ins imm0_15:$sat_imm, rGPR:$Rn),
2652 "usat16", "\t$Rd, $sat_imm, $Rn">,
2659 def : T2Pat<(ARMssat GPRnopc:$Rn, imm0_31:$imm),
2660 (t2SSAT imm0_31:$imm, GPRnopc:$Rn, 0)>;
2661 def : T2Pat<(ARMusat GPRnopc:$Rn, imm0_31:$imm),
2662 (t2USAT imm0_31:$imm, GPRnopc:$Rn, 0)>;
2681 def : T2Pat<(ARMssat (sra GPRnopc:$Rn, asr_imm:$shft), imm0_31:$pos),
2682 (t2SSAT imm0_31:$pos, GPRnopc:$Rn, asr_imm:$shft)>;
2685 def : T2Pat<(ARMusat (sra GPRnopc:$Rn, asr_imm:$shft), imm0_31:$pos),
2686 (t2USAT imm0_31:$pos, GPRnopc:$Rn, asr_imm:$shft)>;
2716 let Inst{19-16} = 0b1111; // Rn
2734 let Inst{19-16} = 0b1111; // Rn
2749 let Inst{19-16} = 0b1111; // Rn
2788 bits<4> Rn;
2790 let Inst{19-16} = Rn;
2801 let Inst{19-16} = 0b1111; // Rn
2811 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2812 IIC_iUNAsi, "sbfx", "\t$Rd, $Rn, $lsb, $msb", []>, Sched<[WriteALU]> {
2822 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2823 IIC_iUNAsi, "ubfx", "\t$Rd, $Rn, $lsb, $msb", []>, Sched<[WriteALU]> {
2848 (ins rGPR:$src, rGPR:$Rn, bf_inv_mask_imm:$imm),
2849 IIC_iBITi, "bfi", "\t$Rd, $Rn, $imm",
2850 [(set rGPR:$Rd, (ARMbfi rGPR:$src, rGPR:$Rn,
2868 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $imm",
2869 (t2ORNri rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
2870 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $Rm",
2871 (t2ORNrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
2872 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $ShiftedRm",
2873 (t2ORNrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p, cc_out:$s)>;
2892 let Inst{19-16} = 0b1111; // Rn
2902 let Inst{19-16} = 0b1111; // Rn
2915 let Inst{19-16} = 0b1111; // Rn
2952 def : T2Pat<(or AddLikeOrOp:$Rn, t2_so_imm:$imm),
2953 (t2ADDri rGPR:$Rn, t2_so_imm:$imm)>;
2955 def : T2Pat<(or AddLikeOrOp:$Rn, imm0_4095:$Rm),
2956 (t2ADDri12 rGPR:$Rn, imm0_4095:$Rm)>;
2958 def : T2Pat<(or AddLikeOrOp:$Rn, non_imm32:$Rm),
2959 (t2ADDrr $Rn, $Rm)>;
2965 def t2MUL: T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2966 "mul", "\t$Rd, $Rn, $Rm",
2967 [(set rGPR:$Rd, (mul rGPR:$Rn, rGPR:$Rm))]>,
2977 : T2FourReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2978 opc, "\t$Rd, $Rn, $Rm, $Ra", pattern>,
2988 [(set rGPR:$Rd, (add (mul rGPR:$Rn, rGPR:$Rm),
2991 [(set rGPR:$Rd, (sub rGPR:$Ra, (mul rGPR:$Rn,
2999 (smullohi rGPR:$Rn, rGPR:$Rm))]>;
3002 (umullohi rGPR:$Rn, rGPR:$Rm))]>;
3016 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
3017 opc, "\t$Rd, $Rn, $Rm", pattern>,
3026 def t2SMMUL : T2SMMUL<0b0000, "smmul", [(set rGPR:$Rd, (mulhs rGPR:$Rn,
3030 [(set rGPR:$Rd, (ARMsmmlar rGPR:$Rn, rGPR:$Rm, (i32 0)))]>;
3034 : T2FourReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
3035 opc, "\t$Rd, $Rn, $Rm, $Ra", pattern>,
3045 [(set rGPR:$Rd, (add (mulhs rGPR:$Rm, rGPR:$Rn), rGPR:$Ra))]>;
3047 [(set rGPR:$Rd, (ARMsmmlar rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>;
3050 [(set rGPR:$Rd, (ARMsmmlsr rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>;
3054 : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16, opc,
3055 "\t$Rd, $Rn, $Rm", pattern>,
3067 [(set rGPR:$Rd, (bb_mul rGPR:$Rn, rGPR:$Rm))]>;
3069 [(set rGPR:$Rd, (bt_mul rGPR:$Rn, rGPR:$Rm))]>;
3071 [(set rGPR:$Rd, (tb_mul rGPR:$Rn, rGPR:$Rm))]>;
3073 [(set rGPR:$Rd, (tt_mul rGPR:$Rn, rGPR:$Rm))]>;
3075 [(set rGPR:$Rd, (ARMsmulwb rGPR:$Rn, rGPR:$Rm))]>;
3077 [(set rGPR:$Rd, (ARMsmulwt rGPR:$Rn, rGPR:$Rm))]>;
3079 def : Thumb2DSPPat<(mul sext_16_node:$Rn, (sext_bottom_16 rGPR:$Rm)),
3080 (t2SMULBB rGPR:$Rn, rGPR:$Rm)>;
3081 def : Thumb2DSPPat<(mul sext_16_node:$Rn, (sext_top_16 rGPR:$Rm)),
3082 (t2SMULBT rGPR:$Rn, rGPR:$Rm)>;
3083 def : Thumb2DSPPat<(mul (sext_top_16 rGPR:$Rn), sext_16_node:$Rm),
3084 (t2SMULTB rGPR:$Rn, rGPR:$Rm)>;
3086 def : Thumb2DSPPat<(int_arm_smulbb rGPR:$Rn, rGPR:$Rm),
3087 (t2SMULBB rGPR:$Rn, rGPR:$Rm)>;
3088 def : Thumb2DSPPat<(int_arm_smulbt rGPR:$Rn, rGPR:$Rm),
3089 (t2SMULBT rGPR:$Rn, rGPR:$Rm)>;
3090 def : Thumb2DSPPat<(int_arm_smultb rGPR:$Rn, rGPR:$Rm),
3091 (t2SMULTB rGPR:$Rn, rGPR:$Rm)>;
3092 def : Thumb2DSPPat<(int_arm_smultt rGPR:$Rn, rGPR:$Rm),
3093 (t2SMULTT rGPR:$Rn, rGPR:$Rm)>;
3094 def : Thumb2DSPPat<(int_arm_smulwb rGPR:$Rn, rGPR:$Rm),
3095 (t2SMULWB rGPR:$Rn, rGPR:$Rm)>;
3096 def : Thumb2DSPPat<(int_arm_smulwt rGPR:$Rn, rGPR:$Rm),
3097 (t2SMULWT rGPR:$Rn, rGPR:$Rm)>;
3101 : T2FourReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMUL16,
3102 opc, "\t$Rd, $Rn, $Rm, $Ra", pattern>,
3113 [(set rGPR:$Rd, (add rGPR:$Ra, (bb_mul rGPR:$Rn, rGPR:$Rm)))]>;
3115 [(set rGPR:$Rd, (add rGPR:$Ra, (bt_mul rGPR:$Rn, rGPR:$Rm)))]>;
3117 [(set rGPR:$Rd, (add rGPR:$Ra, (tb_mul rGPR:$Rn, rGPR:$Rm)))]>;
3119 [(set rGPR:$Rd, (add rGPR:$Ra, (tt_mul rGPR:$Rn, rGPR:$Rm)))]>;
3121 [(set rGPR:$Rd, (add rGPR:$Ra, (ARMsmulwb rGPR:$Rn, rGPR:$Rm)))]>;
3123 [(set rGPR:$Rd, (add rGPR:$Ra, (ARMsmulwt rGPR:$Rn, rGPR:$Rm)))]>;
3125 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul sext_16_node:$Rn, sext_16_node:$Rm)),
3126 (t2SMLABB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3127 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul sext_16_node:$Rn,
3129 (t2SMLABB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3130 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul sext_16_node:$Rn,
3132 (t2SMLABT rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3133 def : Thumb2DSPMulPat<(add rGPR:$Ra, (mul (sext_top_16 rGPR:$Rn),
3135 (t2SMLATB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3160 def : Thumb2DSPPat<(ARMsmlalbb GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3161 (t2SMLALBB $Rn, $Rm, $RLo, $RHi)>;
3162 def : Thumb2DSPPat<(ARMsmlalbt GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3163 (t2SMLALBT $Rn, $Rm, $RLo, $RHi)>;
3164 def : Thumb2DSPPat<(ARMsmlaltb GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3165 (t2SMLALTB $Rn, $Rm, $RLo, $RHi)>;
3166 def : Thumb2DSPPat<(ARMsmlaltt GPR:$Rn, GPR:$Rm, GPR:$RLo, GPR:$RHi),
3167 (t2SMLALTT $Rn, $Rm, $RLo, $RHi)>;
3173 (ins rGPR:$Rn, rGPR:$Rm),
3174 IIC_iMAC32, opc, "\t$Rd, $Rn, $Rm",
3175 [(set rGPR:$Rd, (intrinsic rGPR:$Rn, rGPR:$Rm))]>,
3191 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra),
3192 IIC_iMAC32, opc, "\t$Rd, $Rn, $Rm, $Ra",
3193 [(set rGPR:$Rd, (intrinsic rGPR:$Rn, rGPR:$Rm, rGPR:$Ra))]>,
3204 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3205 IIC_iMAC64, opc, "\t$Ra, $Rd, $Rn, $Rm", []>,
3215 def : Thumb2DSPPat<(ARMSmlald rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3216 (t2SMLALD rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3217 def : Thumb2DSPPat<(ARMSmlaldx rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3218 (t2SMLALDX rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3219 def : Thumb2DSPPat<(ARMSmlsld rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3220 (t2SMLSLD rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3221 def : Thumb2DSPPat<(ARMSmlsldx rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi),
3222 (t2SMLSLDX rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi)>;
3228 def t2SDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iDIV,
3229 "sdiv", "\t$Rd, $Rn, $Rm",
3230 [(set rGPR:$Rd, (sdiv rGPR:$Rn, rGPR:$Rm))]>,
3240 def t2UDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iDIV,
3241 "udiv", "\t$Rd, $Rn, $Rm",
3242 [(set rGPR:$Rd, (udiv rGPR:$Rn, rGPR:$Rm))]>,
3265 let Rn{3-0} = Rm;
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)>;
3851 def t2LDMIA_RET: t2PseudoExpand<(outs GPR:$wb), (ins GPR:$Rn, pred:$p,
3854 (t2LDMIA_UPD GPR:$wb, GPR:$Rn, pred:$p, reglist:$regs)>,
3855 RegConstraint<"$Rn = $wb">;
3898 bits<4> Rn;
3901 let Inst{19-16} = Rn;
3911 bits<4> Rn;
3914 let Inst{19-16} = Rn;
3996 def tCBZ : T1I<(outs), (ins tGPR:$Rn, thumb_cb_target:$target), IIC_Br,
3997 "cbz\t$Rn, $target", []>,
4002 bits<3> Rn;
4005 let Inst{2-0} = Rn;
4008 def tCBNZ : T1I<(outs), (ins tGPR:$Rn, thumb_cb_target:$target), IIC_Br,
4009 "cbnz\t$Rn, $target", []>,
4014 bits<3> Rn;
4017 let Inst{2-0} = Rn;
4159 bits<4> Rn;
4160 let Inst{19-16} = Rn;
4165 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn!",
4168 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn",
4171 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn!",
4174 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn",
4441 def t2MSR_AR : T2I<(outs), (ins msr_mask:$mask, rGPR:$Rn),
4442 NoItinerary, "msr", "\t$mask, $Rn", []>,
4445 bits<4> Rn;
4448 let Inst{19-16} = Rn;
4456 def t2MSRbanked : T2I<(outs), (ins banked_reg:$banked, rGPR:$Rn),
4457 NoItinerary, "msr", "\t$banked, $Rn", []>,
4460 bits<4> Rn;
4464 let Inst{19-16} = Rn;
4477 def t2MSR_M : T2I<(outs), (ins msr_mask:$SYSm, rGPR:$Rn),
4478 NoItinerary, "msr", "\t$SYSm, $Rn", []>,
4481 bits<4> Rn;
4484 let Inst{19-16} = Rn;
4702 : T2I<(outs rGPR:$Rt), (ins GPRnopc:$Rn), NoItinerary, asm, "\t$Rt, $Rn",
4704 bits<4> Rn;
4708 let Inst{19-16} = Rn;
4718 [(set rGPR:$Rt, (int_arm_cmse_tt GPRnopc:$Rn))]>,
4721 [(set rGPR:$Rt, (int_arm_cmse_ttt GPRnopc:$Rn))]>,
4724 [(set rGPR:$Rt, (int_arm_cmse_tta GPRnopc:$Rn))]>,
4727 [(set rGPR:$Rt, (int_arm_cmse_ttat GPRnopc:$Rn))]>,
4742 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0x00FF)),
4743 (t2UXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
4745 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0xFFFF)),
4746 (t2UXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
4754 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i8)),
4755 (t2SXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
4757 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i16)),
4758 (t2SXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
4814 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $Rm",
4815 (t2ADCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4816 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $ShiftedRm",
4817 (t2ADCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
4821 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $Rm",
4822 (t2SBCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4823 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $ShiftedRm",
4824 (t2SBCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
4828 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4829 (t2ADDri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p,
4831 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4832 (t2ADDri12 rGPR:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4833 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $Rm",
4834 (t2ADDrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4835 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $ShiftedRm",
4836 (t2ADDrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4852 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
4853 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4855 def : t2InstSubst<"add${p} $Rd, $Rn, $imm",
4856 (t2SUBri12 rGPR:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4863 def : t2InstSubst<"add${s}${p}.w $Rd, $Rn, $imm",
4864 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4866 def : t2InstSubst<"addw${p} $Rd, $Rn, $imm",
4867 (t2SUBri12 rGPR:$Rd, rGPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4876 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $imm",
4877 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4878 def : t2InstAlias<"sub${p} $Rd, $Rn, $imm",
4879 (t2SUBri12 rGPR:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4880 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $Rm",
4881 (t2SUBrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4882 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $ShiftedRm",
4883 (t2SUBrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4902 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4903 (t2ADDspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm:$imm, pred:$p,
4905 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4906 (t2ADDspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095:$imm, pred:$p)>;
4921 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
4922 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm_neg:$imm, pred:$p,
4924 def : t2InstSubst<"add${p} $Rd, $Rn, $imm",
4925 (t2SUBspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4932 def : t2InstSubst<"add${s}${p}.w $Rd, $Rn, $imm",
4933 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm_neg:$imm, pred:$p,
4935 def : t2InstSubst<"addw${p} $Rd, $Rn, $imm",
4936 (t2SUBspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4945 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $imm",
4946 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4947 def : t2InstAlias<"sub${p} $Rd, $Rn, $imm",
4948 (t2SUBspImm12 GPRsp:$Rd, GPRsp:$Rn, imm0_4095:$imm, pred:$p)>;
4960 def : t2InstAlias<"cmn${p} $Rn, $Rm",
4961 (t2CMNzrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4962 def : t2InstAlias<"teq${p} $Rn, $Rm",
4963 (t2TEQrr rGPR:$Rn, rGPR:$Rm, pred:$p)>;
4964 def : t2InstAlias<"tst${p} $Rn, $Rm",
4965 (t2TSTrr rGPR:$Rn, rGPR:$Rm, pred:$p)>;
5040 def : InstAlias<"pkhbt${p} $Rd, $Rn, $Rm",
5041 (t2PKHBT rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5043 def : InstAlias<"pkhtb${p} $Rd, $Rn, $Rm",
5044 (t2PKHBT rGPR:$Rd, rGPR:$Rm, rGPR:$Rn, 0, pred:$p), 0>,
5054 def : t2InstAlias<"stm${p} $Rn, $regs",
5055 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
5056 def : t2InstAlias<"stm${p} $Rn!, $regs",
5057 (t2STMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5060 def : t2InstAlias<"ldm${p} $Rn, $regs",
5061 (t2LDMIA GPR:$Rn, pred:$p, reglist:$regs)>;
5062 def : t2InstAlias<"ldm${p} $Rn!, $regs",
5063 (t2LDMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5066 def : t2InstAlias<"stmdb${p}.w $Rn, $regs",
5067 (t2STMDB GPR:$Rn, pred:$p, reglist:$regs)>;
5068 def : t2InstAlias<"stmdb${p}.w $Rn!, $regs",
5069 (t2STMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5072 def : t2InstAlias<"ldmdb${p}.w $Rn, $regs",
5073 (t2LDMDB GPR:$Rn, pred:$p, reglist:$regs)>;
5074 def : t2InstAlias<"ldmdb${p}.w $Rn!, $regs",
5075 (t2LDMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
5085 def : t2InstAlias<"rsb${s}${p} $Rd, $Rn, $imm",
5086 (t2RSBri rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
5096 def : t2InstAlias<"rsb${s}${p}.w $Rd, $Rn, $Rm",
5097 (t2RSBrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
5098 def : t2InstAlias<"rsb${s}${p}.w $Rd, $Rn, $ShiftedRm",
5099 (t2RSBrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p,
5103 def : t2InstAlias<"ssat${p} $Rd, $sat_imm, $Rn",
5104 (t2SSAT rGPR:$Rd, imm1_32:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
5105 def : t2InstAlias<"usat${p} $Rd, $sat_imm, $Rn",
5106 (t2USAT rGPR:$Rd, imm0_31:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
5109 def : t2InstAlias<"stm${p} $Rn, $regs",
5110 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
5129 def : InstAlias<"sxtab${p} $Rd, $Rn, $Rm",
5130 (t2SXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5132 def : InstAlias<"sxtah${p} $Rd, $Rn, $Rm",
5133 (t2SXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5135 def : InstAlias<"sxtab16${p} $Rd, $Rn, $Rm",
5136 (t2SXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5151 def : InstAlias<"uxtab${p} $Rd, $Rn, $Rm",
5152 (t2UXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5154 def : InstAlias<"uxtah${p} $Rd, $Rn, $Rm",
5155 (t2UXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5157 def : InstAlias<"uxtab16${p} $Rd, $Rn, $Rm",
5158 (t2UXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p), 0>,
5198 def : t2InstSubst<"bic${s}${p} $Rd, $Rn, $imm",
5199 (t2ANDri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5204 def : t2InstSubst<"bic${s}${p}.w $Rd, $Rn, $imm",
5205 (t2ANDri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5210 def : t2InstSubst<"and${s}${p} $Rd, $Rn, $imm",
5211 (t2BICri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5216 def : t2InstSubst<"and${s}${p}.w $Rd, $Rn, $imm",
5217 (t2BICri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5223 def : t2InstSubst<"orn${s}${p} $Rd, $Rn, $imm",
5224 (t2ORRri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5229 def : t2InstSubst<"orr${s}${p} $Rd, $Rn, $imm",
5230 (t2ORNri rGPR:$Rd, rGPR:$Rn, t2_so_imm_not:$imm,
5236 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
5237 (t2SUBri rGPR:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm,
5239 def : t2InstSubst<"add${s}${p} $Rd, $Rn, $imm",
5240 (t2SUBspImm GPRsp:$Rd, GPRsp:$Rn, t2_so_imm_neg:$imm,
5256 def : t2InstAlias<"mul${p} $Rn, $Rm",
5257 (t2MUL rGPR:$Rn, rGPR:$Rm, rGPR:$Rn, pred:$p)>;
5396 def t2BFr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5397 !strconcat("bfx", "${p}"), "$b_label, $Rn"> {
5399 bits<4> Rn;
5403 let Inst{19-16} = Rn{3-0};
5419 def t2BFLr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5420 !strconcat("bflx", "${p}"), "$b_label, $Rn"> {
5422 bits<4> Rn;
5426 let Inst{19-16} = Rn{3-0};
5441 (ins rGPR:$Rn, wlslabel_u11:$label),
5442 "wls", "$LR, $Rn, $label"> {
5443 bits<4> Rn;
5446 let Inst{19-16} = Rn{3-0};
5455 def t2DLS : t2LOL<(outs GPRlr:$LR), (ins rGPR:$Rn),
5456 "dls", "$LR, $Rn"> {
5457 bits<4> Rn;
5459 let Inst{19-16} = Rn{3-0};
5516 t2PseudoInst<(outs GPRlr:$Rm), (ins GPRlr:$Rn, imm0_7:$size),
5566 : V8_1MI<(outs rGPR:$Rd), (ins GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rm, pred_noal:$fcond),
5567 AddrModeNone, NoItinerary, iname, "$Rd, $Rn, $Rm, $fcond", "", pattern> {
5570 bits<4> Rn;
5574 let Inst{19-16} = Rn{3-0};
5626 def : InstAlias<"cinc\t$Rd, $Rn, $fcond",
5627 (t2CSINC rGPR:$Rd, GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rn, pred_noal_inv:$fcond)>;
5629 def : InstAlias<"cinv\t$Rd, $Rn, $fcond",
5630 (t2CSINV rGPR:$Rd, GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rn, pred_noal_inv:$fcond)>;
5632 def : InstAlias<"cneg\t$Rd, $Rn, $fcond",
5633 (t2CSNEG rGPR:$Rd, GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rn, pred_noal_inv:$fcond)>;