Lines Matching refs:Rm

359   let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
365 let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
524 bits<4> Rm;
527 let Inst{3-0} = Rm;
534 bits<4> Rm;
537 let Inst{3-0} = Rm;
544 bits<4> Rm;
547 let Inst{3-0} = Rm;
583 bits<4> Rm;
587 let Inst{3-0} = Rm;
596 bits<4> Rm;
600 let Inst{3-0} = Rm;
610 bits<4> Rm;
614 let Inst{3-0} = Rm;
622 bits<4> Rm;
626 let Inst{3-0} = Rm;
634 bits<4> Rm;
638 let Inst{3-0} = Rm;
676 bits<4> Rm;
682 let Inst{3-0} = Rm;
687 : T2I<(outs rGPR:$RdLo, rGPR:$RdHi), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL64,
688 opc, "\t$RdLo, $RdHi, $Rn, $Rm", pattern>,
693 bits<4> Rm;
701 let Inst{3-0} = Rm;
705 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi), IIC_iMAC64,
706 opc, "\t$RdLo, $RdHi, $Rn, $Rm", []>,
712 bits<4> Rm;
720 let Inst{3-0} = Rm;
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))]>,
784 def : t2InstAlias<!strconcat(opc, "${s}${p}", wide, " $Rdn, $Rm"),
786 rGPR:$Rm, 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,
816 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rdn, $Rm"),
817 (!cast<Instruction>(NAME#"rr") rGPR:$Rdn, rGPR:$Rdn, rGPR:$Rm, pred:$p,
841 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
842 opc, "\t$Rd, $Rn, $Rm",
881 def rr : t2PseudoInst<(outs rGPR:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm, pred:$p),
884 rGPR:$Rm))]>,
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))]>,
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))]>,
1069 (outs rGPR:$Rd), (ins rGPR:$Rm, ty:$imm), IIC_iMOVsi,
1070 opc, ".w\t$Rd, $Rm, $imm",
1071 [(set rGPR:$Rd, (opnode rGPR:$Rm, (i32 ty:$imm)))]>,
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))]>,
1096 def : t2InstAlias<!strconcat(opc, "${s}${p}", ".w $Rdn, $Rm"),
1097 (!cast<Instruction>(NAME#"rr") rGPR:$Rdn, rGPR:$Rdn, rGPR:$Rm, 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,
1112 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rdn, $Rm"),
1113 (!cast<Instruction>(NAME#"rr") rGPR:$Rdn, rGPR:$Rdn, rGPR:$Rm, pred:$p,
1138 (outs), (ins LHSGPR:$Rn, rGPR:$Rm), iir,
1139 opc, ".w\t$Rn, $Rm",
1140 [(opnode LHSGPR:$Rn, rGPR:$Rm)]>, Sched<[WriteCMP]> {
1234 let Inst{3-0} = addr{5-2}; // Rm
1323 let Inst{3-0} = addr{5-2}; // Rm
1347 (ins rGPR:$Rm, rot_imm:$rot),
1348 opc, ".w\t$Rd, $Rm$rot", []>,
1356 (ins rGPR:$Rm, rot_imm:$rot),
1357 opc, "\t$Rd, $Rm$rot", []>,
1365 (ins rGPR:$Rn, rGPR:$Rm, rot_imm:$rot),
1366 IIC_iEXTAsr, opc, "\t$Rd, $Rn, $Rm$rot", []>,
1889 let Inst{3-0} = addr{5-2}; // Rm
2129 def t2MOVr : T2sTwoReg<(outs GPRnopc:$Rd), (ins GPRnopc:$Rm), IIC_iMOVr,
2130 "mov", ".w\t$Rd, $Rm", []>, Sched<[WriteALU]> {
2139 def : t2InstAlias<"mov${p}.w $Rd, $Rm", (t2MOVr GPRnopc:$Rd, GPRnopc:$Rm,
2141 def : t2InstAlias<"movs${p}.w $Rd, $Rm", (t2MOVr GPRnopc:$Rd, GPRnopc:$Rm,
2143 def : t2InstAlias<"movs${p} $Rd, $Rm", (t2MOVr GPRnopc:$Rd, GPRnopc:$Rm,
2256 (sext_inreg (rotr rGPR:$Rm, rot_imm:$rot), i8)),
2257 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2259 (sext_inreg (rotr rGPR:$Rm, rot_imm:$rot), i16)),
2260 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2263 def : Thumb2DSPPat<(int_arm_sxtab16 rGPR:$Rn, rGPR:$Rm),
2264 (t2SXTAB16 rGPR:$Rn, rGPR:$Rm, 0)>;
2267 def : Thumb2DSPPat<(int_arm_sxtab16 rGPR:$Rn, (rotr rGPR:$Rm, rot_imm:$rot)),
2268 (t2SXTAB16 rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2275 (srl rGPR:$Rm, rot_imm:$rot), i8)),
2276 (t2SXTAB rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2278 (srl rGPR:$Rm, imm8_or_16:$rot), i16)),
2279 (t2SXTAH rGPR:$Rn, rGPR:$Rm, rot_imm:$rot)>;
2281 (rotr rGPR:$Rm, (i32 24)), i16)),
2282 (t2SXTAH rGPR:$Rn, rGPR:$Rm, (i32 3))>;
2284 (or (srl rGPR:$Rm, (i32 24)),
2285 (shl rGPR:$Rm, (i32 8))), i16)),
2286 (t2SXTAH rGPR:$Rn, rGPR:$Rm, (i32 3))>;
2295 def : Thumb2DSPPat<(and (rotr rGPR:$Rm, rot_imm:$rot), 0x000000FF),
2296 (t2UXTB rGPR:$Rm, rot_imm:$rot)>;
2297 def : Thumb2DSPPat<(and (rotr rGPR:$Rm, rot_imm:$rot), 0x0000FFFF),
2298 (t2UXTH rGPR:$Rm, rot_imm:$rot)>;
2299 def : Thumb2DSPPat<(and (rotr rGPR:$Rm, rot_imm:$rot), 0x00FF00FF),
2300 (t2UXTB16 rGPR:$Rm, rot_imm:$rot)>;
2302 def : Thumb2DSPPat<(int_arm_uxtb16 rGPR:$Rm),
2303 (t2UXTB16 rGPR:$Rm, 0)>;
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)>;
2364 def : T2Pat<(ARMsubs GPRnopc:$Rn, rGPR:$Rm), (t2SUBSrr $Rn, $Rm)>;
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))]>,
2476 bits<4> Rm;
2480 let Inst{3-0} = Rm;
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))]>,
2704 def : t2InstAlias<"lsl${s}${p} $Rd, $Rm, #0",
2705 (t2MOVr GPRnopc:$Rd, GPRnopc:$Rm, pred:$p, cc_out:$s)>;
2706 def : t2InstAlias<"lsl${s}${p}.w $Rd, $Rm, #0",
2707 (t2MOVr GPRnopc:$Rd, GPRnopc:$Rm, pred:$p, cc_out:$s)>;
2714 def t2RRX : T2sTwoReg<(outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iMOVsi,
2715 "rrx", "\t$Rd, $Rm",
2716 [(set rGPR:$Rd, (ARMrrx rGPR:$Rm))]>, Sched<[WriteALU]> {
2730 (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iMOVsi,
2731 "lsrs", ".w\t$Rd, $Rm, #1",
2732 [(set rGPR:$Rd, (ARMsrl_flag rGPR:$Rm))]>,
2745 (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iMOVsi,
2746 "asrs", ".w\t$Rd, $Rm, #1",
2747 [(set rGPR:$Rd, (ARMsra_flag rGPR:$Rm))]>,
2874 def : t2InstAlias<"orn${s}${p}.w $Rd, $Rn, $Rm",
2875 (t2ORNrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
2900 def r : T2sTwoReg<(outs rGPR:$Rd), (ins rGPR:$Rm), iir,
2901 opc, ".w\t$Rd, $Rm",
2902 [(set rGPR:$Rd, (opnode rGPR:$Rm))]>, Sched<[WriteALU]> {
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),
2989 rGPR:$Rm)))]>;
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>,
3024 rGPR:$Rm))]>;
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)>;
3125 (sext_bottom_16 rGPR:$Rm))),
3126 (t2SMLABB rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3128 (sext_top_16 rGPR:$Rm))),
3129 (t2SMLABT rGPR:$Rn, rGPR:$Rm, rGPR:$Ra)>;
3131 sext_16_node:$Rm)),
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;
3265 def t2CLZ : T2I_misc<0b11, 0b00, (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iUNAr,
3266 "clz", "\t$Rd, $Rm", [(set rGPR:$Rd, (ctlz rGPR:$Rm))]>,
3269 def t2RBIT : T2I_misc<0b01, 0b10, (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iUNAr,
3270 "rbit", "\t$Rd, $Rm",
3271 [(set rGPR:$Rd, (bitreverse rGPR:$Rm))]>,
3274 def t2REV : T2I_misc<0b01, 0b00, (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iUNAr,
3275 "rev", ".w\t$Rd, $Rm", [(set rGPR:$Rd, (bswap rGPR:$Rm))]>,
3278 def t2REV16 : T2I_misc<0b01, 0b01, (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iUNAr,
3279 "rev16", ".w\t$Rd, $Rm",
3280 [(set rGPR:$Rd, (rotr (bswap rGPR:$Rm), (i32 16)))]>,
3286 def t2REVSH : T2I_misc<0b01, 0b11, (outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iUNAr,
3287 "revsh", ".w\t$Rd, $Rm",
3288 [(set rGPR:$Rd, (sra (bswap rGPR:$Rm), (i32 16)))]>,
3291 def : T2Pat<(or (sra (shl rGPR:$Rm, (i32 24)), (i32 16)),
3292 (and (srl rGPR:$Rm, (i32 8)), 0xFF)),
3293 (t2REVSH rGPR:$Rm)>;
3296 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_lsl_amt:$sh),
3297 IIC_iBITsi, "pkhbt", "\t$Rd, $Rn, $Rm$sh",
3299 (and (shl rGPR:$Rm, pkh_lsl_amt:$sh),
3325 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_asr_amt:$sh),
3326 IIC_iBITsi, "pkhtb", "\t$Rd, $Rn, $Rm$sh",
3328 (and (sra rGPR:$Rm, pkh_asr_amt:$sh),
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))]>,
3415 (outs), (ins GPRnopc:$Rn, rGPR:$Rm), IIC_iCMPr,
3416 "cmn", ".w\t$Rn, $Rm",
3418 GPRnopc:$Rn, rGPR:$Rm)]>, Sched<[WriteCMP, ReadALU, ReadALU]> {
3469 (ins rGPR:$false, rGPR:$Rm, cmovpred:$p),
3471 [(set rGPR:$Rd, (ARMcmov rGPR:$false, rGPR:$Rm,
3506 (ins rGPR:$false, rGPR:$Rm, i32imm:$imm, cmovpred:$p),
3509 (opnode rGPR:$Rm, (i32 ty:$imm)),
3902 bits<4> Rm;
3907 let Inst{3-0} = Rm;
3915 bits<4> Rm;
3920 let Inst{3-0} = Rm;
3983 // Rm = Inst{19-16}
4763 def : T2Pat<(and rGPR:$Rm, 0x000000FF), (t2UXTB rGPR:$Rm, 0)>,
4765 def : T2Pat<(and rGPR:$Rm, 0x0000FFFF), (t2UXTH rGPR:$Rm, 0)>,
4767 def : T2Pat<(and rGPR:$Rm, 0x00FF00FF), (t2UXTB16 rGPR:$Rm, 0)>,
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)>;
4848 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $Rm",
4849 (t2SBCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4860 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $Rm",
4861 (t2ADDrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4872 def : t2InstAlias<"add${s}${p} $Rdn, $Rm",
4873 (t2ADDrr GPRnopc:$Rdn, GPRnopc:$Rdn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4907 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $Rm",
4908 (t2SUBrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4919 def : t2InstAlias<"sub${s}${p}.w $Rdn, $Rm",
4920 (t2SUBrr GPRnopc:$Rdn, GPRnopc:$Rdn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4921 def : t2InstAlias<"sub${s}${p} $Rdn, $Rm",
4922 (t2SUBrr GPRnopc:$Rdn, GPRnopc:$Rdn, rGPR:$Rm, pred:$p, cc_out:$s)>;
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)>;
5064 def : t2InstAlias<"mvn${s}${p} $Rd, $Rm",
5065 (t2MVNr rGPR:$Rd, rGPR:$Rm, pred:$p, cc_out:$s)>;
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>,
5109 def : t2InstAlias<"rev${p} $Rd, $Rm", (t2REV rGPR:$Rd, rGPR:$Rm, pred:$p)>;
5110 def : t2InstAlias<"rev16${p} $Rd, $Rm", (t2REV16 rGPR:$Rd, rGPR:$Rm, pred:$p)>;
5111 def : t2InstAlias<"revsh${p} $Rd, $Rm", (t2REVSH rGPR:$Rd, rGPR:$Rm, pred:$p)>;
5120 def : t2InstAlias<"rsb${s}${p} $Rdn, $Rm",
5121 (t2RSBrr rGPR:$Rdn, rGPR:$Rdn, rGPR:$Rm, pred:$p, cc_out:$s)>;
5125 def : t2InstAlias<"rsb${s}${p}.w $Rdn, $Rm",
5126 (t2RSBrr rGPR:$Rdn, rGPR:$Rdn, rGPR:$Rm, 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)>;
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>,
5169 def : InstAlias<"sxtb16${p} $Rd, $Rm",
5170 (t2SXTB16 rGPR:$Rd, rGPR:$Rm, 0, pred:$p), 0>,
5173 def : t2InstAlias<"sxtb${p} $Rd, $Rm",
5174 (t2SXTB rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5175 def : t2InstAlias<"sxth${p} $Rd, $Rm",
5176 (t2SXTH rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5177 def : t2InstAlias<"sxtb${p}.w $Rd, $Rm",
5178 (t2SXTB rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5179 def : t2InstAlias<"sxth${p}.w $Rd, $Rm",
5180 (t2SXTH rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
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>,
5191 def : InstAlias<"uxtb16${p} $Rd, $Rm",
5192 (t2UXTB16 rGPR:$Rd, rGPR:$Rm, 0, pred:$p), 0>,
5195 def : t2InstAlias<"uxtb${p} $Rd, $Rm",
5196 (t2UXTB rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5197 def : t2InstAlias<"uxth${p} $Rd, $Rm",
5198 (t2UXTH rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5199 def : t2InstAlias<"uxtb${p}.w $Rd, $Rm",
5200 (t2UXTB rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5201 def : t2InstAlias<"uxth${p}.w $Rd, $Rm",
5202 (t2UXTH rGPR:$Rd, rGPR:$Rm, 0, pred:$p)>;
5205 def : t2InstAlias<"uxtb${p} $Rd, $Rm$rot",
5206 (t2UXTB rGPR:$Rd, rGPR:$Rm, rot_imm:$rot, pred:$p)>;
5207 def : InstAlias<"uxtb16${p} $Rd, $Rm$rot",
5208 (t2UXTB16 rGPR:$Rd, rGPR:$Rm, rot_imm:$rot, pred:$p), 0>,
5210 def : t2InstAlias<"uxth${p} $Rd, $Rm$rot",
5211 (t2UXTH rGPR:$Rd, rGPR:$Rm, rot_imm:$rot, pred:$p)>;
5213 def : t2InstAlias<"sxtb${p} $Rd, $Rm$rot",
5214 (t2SXTB rGPR:$Rd, rGPR:$Rm, rot_imm:$rot, pred:$p)>;
5215 def : InstAlias<"sxtb16${p} $Rd, $Rm$rot",
5216 (t2SXTB16 rGPR:$Rd, rGPR:$Rm, rot_imm:$rot, pred:$p), 0>,
5218 def : t2InstAlias<"sxth${p} $Rd, $Rm$rot",
5219 (t2SXTH rGPR:$Rd, rGPR:$Rm, rot_imm:$rot, pred:$p)>;
5287 def : t2InstAlias<"mul${p} $Rn, $Rm",
5288 (t2MUL rGPR:$Rn, rGPR:$Rm, rGPR:$Rn, pred:$p)>;
5291 def : t2InstAlias<"neg${s}${p} $Rd, $Rm",
5292 (t2RSBri rGPR:$Rd, rGPR:$Rm, 0, pred:$p, cc_out:$s)>;
5547 t2PseudoInst<(outs GPRlr:$Rm), (ins GPRlr:$Rn, imm0_7:$size),
5587 t2PseudoInst<(outs GPRlr:$Rm), (ins GPRlr:$tc, brtarget:$target),
5597 : V8_1MI<(outs rGPR:$Rd), (ins GPRwithZRnosp:$Rn, GPRwithZRnosp:$Rm, pred_noal:$fcond),
5598 AddrModeNone, NoItinerary, iname, "$Rd, $Rn, $Rm, $fcond", "", pattern> {
5600 bits<4> Rm;
5609 let Inst{3-0} = Rm{3-0};
5680 (ins pred:$p, GPRnopc:$Rn, GPRnopc:$Rm),
5681 AddrModeNone, NoItinerary, "pacg${p}", "$Rd, $Rn, $Rm", "", []> {
5684 bits<4> Rm;
5690 let Inst{3-0} = Rm;
5696 AddrModeNone, NoItinerary, asm, "$Ra, $Rn, $Rm", "", []> {
5699 bits<4> Rm;
5705 let Inst{3-0} = Rm;
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),