Lines Matching refs:Rn
264 let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
270 let MIOperandInfo = (ops GPR:$Rn, rGPR:$Rm);
295 bits<4> Rn;
307 bits<4> Rn;
310 let Inst{19-16} = Rn;
346 bits<4> Rn;
349 let Inst{19-16} = Rn;
379 bits<4> Rn;
382 let Inst{19-16} = Rn;
391 bits<4> Rn;
395 let Inst{19-16} = Rn;
405 bits<4> Rn;
409 let Inst{19-16} = Rn;
445 bits<4> Rn;
449 let Inst{19-16} = Rn;
457 bits<4> Rn;
461 let Inst{19-16} = Rn;
469 bits<4> Rn;
473 let Inst{19-16} = Rn;
484 bits<4> Rn;
488 let Inst{19-16} = Rn;
499 bits<4> Rn;
503 let Inst{19-16} = Rn;
515 bits<4> Rn;
520 let Inst{19-16} = Rn;
532 bits<4> Rn;
537 let Inst{19-16} = Rn;
554 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm), iii,
555 opc, "\t$Rd, $Rn, $imm",
556 [(set rGPR:$Rd, (opnode rGPR:$Rn, t2_so_imm:$imm))]> {
563 def rr : T2sThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), iir,
564 opc, !strconcat(wide, "\t$Rd, $Rn, $Rm"),
565 [(set rGPR:$Rd, (opnode rGPR:$Rn, rGPR:$Rm))]> {
576 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm), iis,
577 opc, !strconcat(wide, "\t$Rd, $Rn, $ShiftedRm"),
578 [(set rGPR:$Rd, (opnode rGPR:$Rn, t2_so_reg:$ShiftedRm))]> {
606 def : t2InstAlias<!strconcat(opc, "${s}${p}.w", " $Rd, $Rn, $imm"),
607 (!cast<Instruction>(NAME#"ri") rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p,
610 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
611 (!cast<Instruction>(NAME#"rr") rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p,
613 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $shift"),
614 (!cast<Instruction>(NAME#"rs") rGPR:$Rd, rGPR:$Rn, t2_so_reg:$shift,
635 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm), IIC_iALUi,
636 opc, ".w\t$Rd, $Rn, $imm",
637 [(set rGPR:$Rd, (opnode t2_so_imm:$imm, rGPR:$Rn))]> {
645 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
646 opc, "\t$Rd, $Rn, $Rm",
657 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm),
658 IIC_iALUsir, opc, "\t$Rd, $Rn, $ShiftedRm",
659 [(set rGPR:$Rd, (opnode t2_so_reg:$ShiftedRm, rGPR:$Rn))]> {
677 (ins GPRnopc:$Rn, t2_so_imm:$imm, pred:$p),
679 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
682 def rr : t2PseudoInst<(outs rGPR:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm, pred:$p),
684 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
690 (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm, pred:$p),
692 [(set rGPR:$Rd, CPSR, (opnode GPRnopc:$Rn,
703 (ins rGPR:$Rn, t2_so_imm:$imm, pred:$p),
706 rGPR:$Rn))]>;
709 (ins rGPR:$Rn, t2_so_reg:$ShiftedRm, pred:$p),
712 rGPR:$Rn))]>;
725 (outs GPRnopc:$Rd), (ins GPRnopc:$Rn, t2_so_imm:$imm), IIC_iALUi,
726 opc, ".w\t$Rd, $Rn, $imm",
727 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, t2_so_imm:$imm))]> {
737 (outs GPRnopc:$Rd), (ins GPR:$Rn, imm0_4095:$imm), IIC_iALUi,
738 !strconcat(opc, "w"), "\t$Rd, $Rn, $imm",
739 [(set GPRnopc:$Rd, (opnode GPR:$Rn, imm0_4095:$imm))]> {
741 bits<4> Rn;
748 let Inst{19-16} = Rn;
755 def rr : T2sThreeReg<(outs GPRnopc:$Rd), (ins GPRnopc:$Rn, rGPR:$Rm),
756 IIC_iALUr, opc, ".w\t$Rd, $Rn, $Rm",
757 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, rGPR:$Rm))]> {
769 (outs GPRnopc:$Rd), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm),
770 IIC_iALUsi, opc, ".w\t$Rd, $Rn, $ShiftedRm",
771 [(set GPRnopc:$Rd, (opnode GPRnopc:$Rn, t2_so_reg:$ShiftedRm))]> {
786 def ri : T2sTwoRegImm<(outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_imm:$imm),
787 IIC_iALUi, opc, "\t$Rd, $Rn, $imm",
788 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, t2_so_imm:$imm, CPSR))]>,
796 def rr : T2sThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUr,
797 opc, ".w\t$Rd, $Rn, $Rm",
798 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, rGPR:$Rm, CPSR))]>,
810 (outs rGPR:$Rd), (ins rGPR:$Rn, t2_so_reg:$ShiftedRm),
811 IIC_iALUsi, opc, ".w\t$Rd, $Rn, $ShiftedRm",
812 [(set rGPR:$Rd, CPSR, (opnode rGPR:$Rn, t2_so_reg:$ShiftedRm, CPSR))]>,
831 let Inst{19-16} = 0b1111; // Rn
836 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMOVsr,
837 opc, ".w\t$Rd, $Rn, $Rm",
838 [(set rGPR:$Rd, (opnode rGPR:$Rn, rGPR:$Rm))]> {
855 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $imm"),
856 (!cast<Instruction>(NAME#"ri") rGPR:$Rd, rGPR:$Rn, ty:$imm, pred:$p,
858 def : t2InstAlias<!strconcat(opc, "${s}${p}", " $Rd, $Rn, $Rm"),
859 (!cast<Instruction>(NAME#"rr") rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p,
880 (outs), (ins GPRnopc:$Rn, t2_so_imm:$imm), iii,
881 opc, ".w\t$Rn, $imm",
882 [(opnode GPRnopc:$Rn, t2_so_imm:$imm)]> {
892 (outs), (ins GPRnopc:$Rn, rGPR:$Rm), iir,
893 opc, ".w\t$Rn, $Rm",
894 [(opnode GPRnopc:$Rn, rGPR:$Rm)]> {
906 (outs), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm), iis,
907 opc, ".w\t$Rn, $ShiftedRm",
908 [(opnode GPRnopc:$Rn, t2_so_reg:$ShiftedRm)]> {
920 def : t2InstAlias<!strconcat(opc, "${p}", " $Rn, $imm"),
921 (!cast<Instruction>(NAME#"ri") GPRnopc:$Rn, t2_so_imm:$imm, pred:$p)>;
922 def : t2InstAlias<!strconcat(opc, "${p}", " $Rn, $shift"),
923 (!cast<Instruction>(NAME#"rs") GPRnopc:$Rn, t2_so_reg:$shift, pred:$p)>;
940 let Inst{19-16} = addr{16-13}; // Rn
955 let Inst{19-16} = addr{12-9}; // Rn
979 let Inst{19-16} = addr{9-6}; // Rn
998 let Inst{19-16} = 0b1111; // Rn
1023 let Inst{19-16} = addr{16-13}; // Rn
1043 let Inst{19-16} = addr{12-9}; // Rn
1060 let Inst{19-16} = addr{9-6}; // Rn
1076 let Inst{19-16} = 0b1111; // Rn
1094 let Inst{19-16} = 0b1111; // Rn
1110 let Inst{19-16} = 0b1111; // Rn
1120 (ins rGPR:$Rn, rGPR:$Rm, rot_imm:$rot),
1121 IIC_iEXTAsr, opc, "\t$Rd, $Rn, $Rm$rot",
1122 [(set rGPR:$Rd, (opnode rGPR:$Rn, (rotr rGPR:$Rm,rot_imm:$rot)))]>,
1134 : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm,rot_imm:$rot),
1135 IIC_iEXTAsr, opc, "\t$Rd, $Rn, $Rm$rot", []> {
1175 let Inst{19-16} = 0b1111; // Rn
1285 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1287 "ldr", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1297 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1299 "ldrb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1309 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1311 "ldrh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1321 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1323 "ldrsb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1333 (ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
1335 "ldrsh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
1406 (ins GPRnopc:$Rt, addr_offset_none:$Rn,
1409 "str", "\t$Rt, $Rn$offset",
1410 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1412 (post_store GPRnopc:$Rt, addr_offset_none:$Rn,
1416 (ins rGPR:$Rt, addr_offset_none:$Rn,
1419 "strh", "\t$Rt, $Rn$offset",
1420 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1422 (post_truncsti16 rGPR:$Rt, addr_offset_none:$Rn,
1426 (ins rGPR:$Rt, addr_offset_none:$Rn,
1429 "strb", "\t$Rt, $Rn$offset",
1430 "$Rn = $Rn_wb,@earlyclobber $Rn_wb",
1432 (post_truncsti8 rGPR:$Rt, addr_offset_none:$Rn,
1441 Constraints = "$Rn = $Rn_wb,@earlyclobber $Rn_wb" in {
1443 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1446 (pre_store rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>;
1448 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1451 (pre_truncsti8 rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>;
1453 (ins rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset, pred:$p),
1456 (pre_truncsti16 rGPR:$Rt, GPRnopc:$Rn, t2am_imm8_offset:$offset))]>;
1532 let Inst{19-16} = addr{16-13}; // Rn
1550 let Inst{19-16} = addr{12-9}; // Rn
1567 let Inst{19-16} = addr{9-6}; // Rn
1576 // the 'pci' case (Rn == 15).
1590 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1591 itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
1592 bits<4> Rn;
1601 let Inst{19-16} = Rn;
1605 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1606 itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
1607 bits<4> Rn;
1616 let Inst{19-16} = Rn;
1620 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1621 itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
1622 bits<4> Rn;
1631 let Inst{19-16} = Rn;
1635 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1636 itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
1637 bits<4> Rn;
1646 let Inst{19-16} = Rn;
1659 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1660 itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
1661 bits<4> Rn;
1670 let Inst{19-16} = Rn;
1677 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1678 itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
1679 bits<4> Rn;
1688 let Inst{19-16} = Rn;
1695 T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1696 itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
1697 bits<4> Rn;
1706 let Inst{19-16} = Rn;
1713 T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
1714 itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
1715 bits<4> Rn;
1724 let Inst{19-16} = Rn;
1749 let Inst{19-16} = 0b1111; // Rn
1769 let Inst{19-16} = 0b1111; // Rn
1960 def t2SEL : T2ThreeReg<(outs GPR:$Rd), (ins GPR:$Rn, GPR:$Rm),
1961 NoItinerary, "sel", "\t$Rd, $Rn, $Rm", []>,
1976 dag iops = (ins rGPR:$Rn, rGPR:$Rm),
1977 string asm = "\t$Rd, $Rn, $Rm">
1987 bits<4> Rn;
1991 let Inst{19-16} = Rn;
1998 [(set rGPR:$Rd, (int_arm_qadd rGPR:$Rn, rGPR:$Rm))],
1999 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2004 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2006 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2009 [(set rGPR:$Rd, (int_arm_qsub rGPR:$Rn, rGPR:$Rm))],
2010 (ins rGPR:$Rm, rGPR:$Rn), "\t$Rd, $Rm, $Rn">;
2075 (ins rGPR:$Rn, rGPR:$Rm),
2076 NoItinerary, "usad8", "\t$Rd, $Rn, $Rm", []>,
2081 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), NoItinerary,
2082 "usada8", "\t$Rd, $Rn, $Rm, $Ra", []>,
2090 bits<4> Rn;
2095 let Inst{19-16} = Rn;
2104 (ins imm1_32:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2105 NoItinerary, "ssat", "\t$Rd, $sat_imm, $Rn$sh", []> {
2114 (outs rGPR:$Rd), (ins imm1_16:$sat_imm, rGPR:$Rn), NoItinerary,
2115 "ssat16", "\t$Rd, $sat_imm, $Rn", []>,
2129 (ins imm0_31:$sat_imm, rGPR:$Rn, t2_shift_imm:$sh),
2130 NoItinerary, "usat", "\t$Rd, $sat_imm, $Rn$sh", []> {
2137 def t2USAT16: T2SatI<(outs rGPR:$Rd), (ins imm0_15:$sat_imm, rGPR:$Rn),
2139 "usat16", "\t$Rd, $sat_imm, $Rn", []>,
2177 let Inst{19-16} = 0b1111; // Rn
2192 let Inst{19-16} = 0b1111; // Rn
2206 let Inst{19-16} = 0b1111; // Rn
2248 bits<4> Rn;
2250 let Inst{19-16} = Rn;
2261 let Inst{19-16} = 0b1111; // Rn
2271 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2272 IIC_iUNAsi, "sbfx", "\t$Rd, $Rn, $lsb, $msb", []> {
2280 (outs rGPR:$Rd), (ins rGPR:$Rn, imm0_31:$lsb, imm1_32:$msb),
2281 IIC_iUNAsi, "ubfx", "\t$Rd, $Rn, $lsb, $msb", []> {
2291 (ins rGPR:$src, rGPR:$Rn, bf_inv_mask_imm:$imm),
2292 IIC_iBITi, "bfi", "\t$Rd, $Rn, $imm",
2293 [(set rGPR:$Rd, (ARMbfi rGPR:$src, rGPR:$Rn,
2327 let Inst{19-16} = 0b1111; // Rn
2337 let Inst{19-16} = 0b1111; // Rn
2349 let Inst{19-16} = 0b1111; // Rn
2386 def t2MUL: T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2387 "mul", "\t$Rd, $Rn, $Rm",
2388 [(set rGPR:$Rd, (mul rGPR:$Rn, rGPR:$Rm))]> {
2397 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2398 "mla", "\t$Rd, $Rn, $Rm, $Ra",
2399 [(set rGPR:$Rd, (add (mul rGPR:$Rn, rGPR:$Rm), rGPR:$Ra))]> {
2407 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2408 "mls", "\t$Rd, $Rn, $Rm, $Ra",
2409 [(set rGPR:$Rd, (sub rGPR:$Ra, (mul rGPR:$Rn, rGPR:$Rm)))]> {
2421 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL64,
2422 "smull", "\t$RdLo, $RdHi, $Rn, $Rm", []>;
2426 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL64,
2427 "umull", "\t$RdLo, $RdHi, $Rn, $Rm", []>;
2433 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi), IIC_iMAC64,
2434 "smlal", "\t$RdLo, $RdHi, $Rn, $Rm", []>,
2439 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$RLo, rGPR:$RHi), IIC_iMAC64,
2440 "umlal", "\t$RdLo, $RdHi, $Rn, $Rm", []>,
2445 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMAC64,
2446 "umaal", "\t$RdLo, $RdHi, $Rn, $Rm", []>,
2453 def t2SMMUL : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2454 "smmul", "\t$Rd, $Rn, $Rm",
2455 [(set rGPR:$Rd, (mulhs rGPR:$Rn, rGPR:$Rm))]>,
2464 def t2SMMULR : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL32,
2465 "smmulr", "\t$Rd, $Rn, $Rm", []>,
2475 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2476 "smmla", "\t$Rd, $Rn, $Rm, $Ra",
2477 [(set rGPR:$Rd, (add (mulhs rGPR:$Rm, rGPR:$Rn), rGPR:$Ra))]>,
2486 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2487 "smmlar", "\t$Rd, $Rn, $Rm, $Ra", []>,
2496 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2497 "smmls", "\t$Rd, $Rn, $Rm, $Ra",
2498 [(set rGPR:$Rd, (sub rGPR:$Ra, (mulhs rGPR:$Rn, rGPR:$Rm)))]>,
2507 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32,
2508 "smmlsr", "\t$Rd, $Rn, $Rm, $Ra", []>,
2517 def BB : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2518 !strconcat(opc, "bb"), "\t$Rd, $Rn, $Rm",
2519 [(set rGPR:$Rd, (opnode (sext_inreg rGPR:$Rn, i16),
2530 def BT : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2531 !strconcat(opc, "bt"), "\t$Rd, $Rn, $Rm",
2532 [(set rGPR:$Rd, (opnode (sext_inreg rGPR:$Rn, i16),
2543 def TB : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2544 !strconcat(opc, "tb"), "\t$Rd, $Rn, $Rm",
2545 [(set rGPR:$Rd, (opnode (sra rGPR:$Rn, (i32 16)),
2556 def TT : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2557 !strconcat(opc, "tt"), "\t$Rd, $Rn, $Rm",
2558 [(set rGPR:$Rd, (opnode (sra rGPR:$Rn, (i32 16)),
2569 def WB : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2570 !strconcat(opc, "wb"), "\t$Rd, $Rn, $Rm",
2571 [(set rGPR:$Rd, (sra (opnode rGPR:$Rn,
2582 def WT : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iMUL16,
2583 !strconcat(opc, "wt"), "\t$Rd, $Rn, $Rm",
2584 [(set rGPR:$Rd, (sra (opnode rGPR:$Rn,
2599 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2600 !strconcat(opc, "bb"), "\t$Rd, $Rn, $Rm, $Ra",
2602 (opnode (sext_inreg rGPR:$Rn, i16),
2613 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2614 !strconcat(opc, "bt"), "\t$Rd, $Rn, $Rm, $Ra",
2615 [(set rGPR:$Rd, (add rGPR:$Ra, (opnode (sext_inreg rGPR:$Rn, i16),
2626 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2627 !strconcat(opc, "tb"), "\t$Rd, $Rn, $Rm, $Ra",
2628 [(set rGPR:$Rd, (add rGPR:$Ra, (opnode (sra rGPR:$Rn, (i32 16)),
2639 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2640 !strconcat(opc, "tt"), "\t$Rd, $Rn, $Rm, $Ra",
2641 [(set rGPR:$Rd, (add rGPR:$Ra, (opnode (sra rGPR:$Rn, (i32 16)),
2652 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2653 !strconcat(opc, "wb"), "\t$Rd, $Rn, $Rm, $Ra",
2654 [(set rGPR:$Rd, (add rGPR:$Ra, (sra (opnode rGPR:$Rn,
2665 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC16,
2666 !strconcat(opc, "wt"), "\t$Rd, $Rn, $Rm, $Ra",
2667 [(set rGPR:$Rd, (add rGPR:$Ra, (sra (opnode rGPR:$Rn,
2683 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlalbb", "\t$Ra, $Rd, $Rn, $Rm",
2687 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlalbt", "\t$Ra, $Rd, $Rn, $Rm",
2691 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlaltb", "\t$Ra, $Rd, $Rn, $Rm",
2695 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlaltt", "\t$Ra, $Rd, $Rn, $Rm",
2701 0, 0b010, 0b0000, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2702 IIC_iMAC32, "smuad", "\t$Rd, $Rn, $Rm", []>,
2707 0, 0b010, 0b0001, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2708 IIC_iMAC32, "smuadx", "\t$Rd, $Rn, $Rm", []>,
2713 0, 0b100, 0b0000, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2714 IIC_iMAC32, "smusd", "\t$Rd, $Rn, $Rm", []>,
2719 0, 0b100, 0b0001, (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm),
2720 IIC_iMAC32, "smusdx", "\t$Rd, $Rn, $Rm", []>,
2726 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smlad",
2727 "\t$Rd, $Rn, $Rm, $Ra", []>,
2731 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smladx",
2732 "\t$Rd, $Rn, $Rm, $Ra", []>,
2735 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smlsd",
2736 "\t$Rd, $Rn, $Rm, $Ra", []>,
2739 (ins rGPR:$Rn, rGPR:$Rm, rGPR:$Ra), IIC_iMAC32, "smlsdx",
2740 "\t$Rd, $Rn, $Rm, $Ra", []>,
2743 (ins rGPR:$Rn, rGPR:$Rm), IIC_iMAC64, "smlald",
2744 "\t$Ra, $Rd, $Rn, $Rm", []>,
2747 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlaldx",
2748 "\t$Ra, $Rd, $Rn, $Rm", []>,
2751 (ins rGPR:$Rn,rGPR:$Rm), IIC_iMAC64, "smlsld",
2752 "\t$Ra, $Rd, $Rn, $Rm", []>,
2755 (ins rGPR:$Rm,rGPR:$Rn), IIC_iMAC64, "smlsldx",
2756 "\t$Ra, $Rd, $Rn, $Rm", []>,
2763 def t2SDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUi,
2764 "sdiv", "\t$Rd, $Rn, $Rm",
2765 [(set rGPR:$Rd, (sdiv rGPR:$Rn, rGPR:$Rm))]>,
2774 def t2UDIV : T2ThreeReg<(outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm), IIC_iALUi,
2775 "udiv", "\t$Rd, $Rn, $Rm",
2776 [(set rGPR:$Rd, (udiv rGPR:$Rn, rGPR:$Rm))]>,
2798 let Rn{3-0} = Rm;
2824 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_lsl_amt:$sh),
2825 IIC_iBITsi, "pkhbt", "\t$Rd, $Rn, $Rm$sh",
2826 [(set rGPR:$Rd, (or (and rGPR:$Rn, 0xFFFF),
2852 (outs rGPR:$Rd), (ins rGPR:$Rn, rGPR:$Rm, pkh_asr_amt:$sh),
2853 IIC_iBITsi, "pkhtb", "\t$Rd, $Rn, $Rm$sh",
2854 [(set rGPR:$Rd, (or (and rGPR:$Rn, 0xFFFF0000),
2896 (outs), (ins GPRnopc:$Rn, t2_so_imm:$imm), IIC_iCMPi,
2897 "cmn", ".w\t$Rn, $imm",
2898 [(ARMcmn GPRnopc:$Rn, (ineg t2_so_imm:$imm))]> {
2908 (outs), (ins GPRnopc:$Rn, rGPR:$Rm), IIC_iCMPr,
2909 "cmn", ".w\t$Rn, $Rm",
2911 GPRnopc:$Rn, rGPR:$Rm)]> {
2923 (outs), (ins GPRnopc:$Rn, t2_so_reg:$ShiftedRm), IIC_iCMPsi,
2924 "cmn", ".w\t$Rn, $ShiftedRm",
2926 GPRnopc:$Rn, t2_so_reg:$ShiftedRm)]> {
2938 def : t2InstAlias<"cmn${p} $Rn, $imm",
2939 (t2CMNri GPRnopc:$Rn, t2_so_imm:$imm, pred:$p)>;
2940 def : t2InstAlias<"cmn${p} $Rn, $shift",
2941 (t2CMNzrs GPRnopc:$Rn, t2_so_reg:$shift, pred:$p)>;
3013 let Inst{19-16} = 0b1111; // Rn
3024 let Inst{19-16} = 0b1111; // Rn
3231 def t2LDMIA_RET: t2PseudoExpand<(outs GPR:$wb), (ins GPR:$Rn, pred:$p,
3234 (t2LDMIA_UPD GPR:$wb, GPR:$Rn, pred:$p, reglist:$regs)>,
3235 RegConstraint<"$Rn = $wb">;
3270 bits<4> Rn;
3273 let Inst{19-16} = Rn;
3283 bits<4> Rn;
3286 let Inst{19-16} = Rn;
3376 def tCBZ : T1I<(outs), (ins tGPR:$Rn, t_cbtarget:$target), IIC_Br,
3377 "cbz\t$Rn, $target", []>,
3382 bits<3> Rn;
3385 let Inst{2-0} = Rn;
3388 def tCBNZ : T1I<(outs), (ins tGPR:$Rn, t_cbtarget:$target), IIC_Br,
3389 "cbnz\t$Rn, $target", []>,
3394 bits<3> Rn;
3397 let Inst{2-0} = Rn;
3499 bits<4> Rn;
3500 let Inst{19-16} = Rn;
3505 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn!",
3508 (outs), (ins GPR:$Rn), NoItinerary, "rfedb", "\t$Rn",
3511 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn!",
3514 (outs), (ins GPR:$Rn), NoItinerary, "rfeia", "\t$Rn",
3716 def t2MSR_AR : T2I<(outs), (ins msr_mask:$mask, rGPR:$Rn),
3717 NoItinerary, "msr", "\t$mask, $Rn", []>,
3720 bits<4> Rn;
3723 let Inst{19-16} = Rn;
3732 def t2MSR_M : T2I<(outs), (ins msr_mask:$SYSm, rGPR:$Rn),
3733 NoItinerary, "msr", "\t$SYSm, $Rn", []>,
3736 bits<4> Rn;
3739 let Inst{19-16} = Rn;
3912 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0x00FF)),
3913 (t2UXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
3915 def : T2Pat<(add rGPR:$Rn, (and rGPR:$Rm, 0xFFFF)),
3916 (t2UXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
3924 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i8)),
3925 (t2SXTAB rGPR:$Rn, rGPR:$Rm, 0)>,
3927 def : T2Pat<(add rGPR:$Rn, (sext_inreg rGPR:$Rm, i16)),
3928 (t2SXTAH rGPR:$Rn, rGPR:$Rm, 0)>,
3975 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $Rm",
3976 (t2ADCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
3977 def : t2InstAlias<"adc${s}${p} $Rd, $Rn, $ShiftedRm",
3978 (t2ADCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
3982 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $Rm",
3983 (t2SBCrr rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
3984 def : t2InstAlias<"sbc${s}${p} $Rd, $Rn, $ShiftedRm",
3985 (t2SBCrs rGPR:$Rd, rGPR:$Rn, t2_so_reg:$ShiftedRm,
3989 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
3990 (t2ADDri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
3991 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
3992 (t2ADDri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
3993 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $Rm",
3994 (t2ADDrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
3995 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $ShiftedRm",
3996 (t2ADDrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4010 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4011 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4013 def : t2InstAlias<"add${p} $Rd, $Rn, $imm",
4014 (t2SUBri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4021 def : t2InstAlias<"add${s}${p}.w $Rd, $Rn, $imm",
4022 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm, pred:$p,
4024 def : t2InstAlias<"addw${p} $Rd, $Rn, $imm",
4025 (t2SUBri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095_neg:$imm, pred:$p)>;
4034 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $imm",
4035 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4036 def : t2InstAlias<"sub${p} $Rd, $Rn, $imm",
4037 (t2SUBri12 GPRnopc:$Rd, GPR:$Rn, imm0_4095:$imm, pred:$p)>;
4038 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $Rm",
4039 (t2SUBrr GPRnopc:$Rd, GPRnopc:$Rn, rGPR:$Rm, pred:$p, cc_out:$s)>;
4040 def : t2InstAlias<"sub${s}${p} $Rd, $Rn, $ShiftedRm",
4041 (t2SUBrs GPRnopc:$Rd, GPRnopc:$Rn, t2_so_reg:$ShiftedRm,
4057 def : t2InstAlias<"cmn${p} $Rn, $Rm",
4058 (t2CMNzrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4059 def : t2InstAlias<"teq${p} $Rn, $Rm",
4060 (t2TEQrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4061 def : t2InstAlias<"tst${p} $Rn, $Rm",
4062 (t2TSTrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>;
4114 def : InstAlias<"pkhbt${p} $Rd, $Rn, $Rm",
4115 (t2PKHBT rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4117 def : InstAlias<"pkhtb${p} $Rd, $Rn, $Rm",
4118 (t2PKHBT rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>,
4128 def : t2InstAlias<"stm${p} $Rn, $regs",
4129 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
4130 def : t2InstAlias<"stm${p} $Rn!, $regs",
4131 (t2STMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4134 def : t2InstAlias<"ldm${p} $Rn, $regs",
4135 (t2LDMIA GPR:$Rn, pred:$p, reglist:$regs)>;
4136 def : t2InstAlias<"ldm${p} $Rn!, $regs",
4137 (t2LDMIA_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4140 def : t2InstAlias<"stmdb${p}.w $Rn, $regs",
4141 (t2STMDB GPR:$Rn, pred:$p, reglist:$regs)>;
4142 def : t2InstAlias<"stmdb${p}.w $Rn!, $regs",
4143 (t2STMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4146 def : t2InstAlias<"ldmdb${p}.w $Rn, $regs",
4147 (t2LDMDB GPR:$Rn, pred:$p, reglist:$regs)>;
4148 def : t2InstAlias<"ldmdb${p}.w $Rn!, $regs",
4149 (t2LDMDB_UPD GPR:$Rn, pred:$p, reglist:$regs)>;
4159 def : t2InstAlias<"rsb${s}${p} $Rd, $Rn, $imm",
4160 (t2RSBri rGPR:$Rd, rGPR:$Rn, t2_so_imm:$imm, pred:$p, cc_out:$s)>;
4170 def : t2InstAlias<"ssat${p} $Rd, $sat_imm, $Rn",
4171 (t2SSAT rGPR:$Rd, imm1_32:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
4172 def : t2InstAlias<"usat${p} $Rd, $sat_imm, $Rn",
4173 (t2USAT rGPR:$Rd, imm0_31:$sat_imm, rGPR:$Rn, 0, pred:$p)>;
4176 def : t2InstAlias<"stm${p} $Rn, $regs",
4177 (t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
4196 def : t2InstAlias<"sxtab${p} $Rd, $Rn, $Rm",
4197 (t2SXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>;
4198 def : t2InstAlias<"sxtah${p} $Rd, $Rn, $Rm",
4199 (t2SXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>;
4200 def : t2InstAlias<"sxtab16${p} $Rd, $Rn, $Rm",
4201 (t2SXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>;
4214 def : t2InstAlias<"uxtab${p} $Rd, $Rn, $Rm",
4215 (t2UXTAB rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>;
4216 def : t2InstAlias<"uxtah${p} $Rd, $Rn, $Rm",
4217 (t2UXTAH rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>;
4218 def : t2InstAlias<"uxtab16${p} $Rd, $Rn, $Rm",
4219 (t2UXTAB16 rGPR:$Rd, rGPR:$Rn, rGPR:$Rm, 0, pred:$p)>;
4255 def : t2InstAlias<"bic${s}${p} $Rd, $Rn, $imm",
4256 (t2ANDri rGPR:$Rd, rGPR:$Rn, so_imm_not:$imm,
4261 def : t2InstAlias<"and${s}${p} $Rd, $Rn, $imm",
4262 (t2BICri rGPR:$Rd, rGPR:$Rn, so_imm_not:$imm,
4268 def : t2InstAlias<"add${s}${p} $Rd, $Rn, $imm",
4269 (t2SUBri GPRnopc:$Rd, GPRnopc:$Rn, t2_so_imm_neg:$imm,
4282 def : t2InstAlias<"mul${p} $Rn, $Rm",
4283 (t2MUL rGPR:$Rn, rGPR:$Rm, rGPR:$Rn, pred:$p)>;