• Home
  • Raw
  • Download

Lines Matching refs:GPR64

333 def LOADgot : Pseudo<(outs GPR64:$dst), (ins i64imm:$addr),
334 [(set GPR64:$dst, (AArch64LOADgot tglobaladdr:$addr))]>,
340 : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low),
341 [(set GPR64:$dst, (AArch64addlow (AArch64adrp tglobaladdr:$hi),
345 : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low),
346 [(set GPR64:$dst, (AArch64addlow (AArch64adrp tjumptable:$hi),
350 : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low),
351 [(set GPR64:$dst, (AArch64addlow (AArch64adrp tconstpool:$hi),
355 : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low),
356 [(set GPR64:$dst, (AArch64addlow (AArch64adrp tblockaddress:$hi),
360 : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low),
361 [(set GPR64:$dst, (AArch64addlow (AArch64adrp tglobaltlsaddr:$hi),
365 : Pseudo<(outs GPR64:$dst), (ins i64imm:$hi, i64imm:$low),
366 [(set GPR64:$dst, (AArch64addlow (AArch64adrp texternalsym:$hi),
450 def : InstAlias<"movk $dst, $imm", (MOVKXi GPR64:$dst, imm0_65535:$imm, 0)>;
452 def : InstAlias<"movn $dst, $imm", (MOVNXi GPR64:$dst, imm0_65535:$imm, 0)>;
454 def : InstAlias<"movz $dst, $imm", (MOVZXi GPR64:$dst, imm0_65535:$imm, 0)>;
457 def : InstAlias<"movz $Rd, $sym", (MOVZXi GPR64:$Rd, movz_symbol_g3:$sym, 48)>;
458 def : InstAlias<"movz $Rd, $sym", (MOVZXi GPR64:$Rd, movz_symbol_g2:$sym, 32)>;
459 def : InstAlias<"movz $Rd, $sym", (MOVZXi GPR64:$Rd, movz_symbol_g1:$sym, 16)>;
460 def : InstAlias<"movz $Rd, $sym", (MOVZXi GPR64:$Rd, movz_symbol_g0:$sym, 0)>;
462 def : InstAlias<"movn $Rd, $sym", (MOVNXi GPR64:$Rd, movz_symbol_g3:$sym, 48)>;
463 def : InstAlias<"movn $Rd, $sym", (MOVNXi GPR64:$Rd, movz_symbol_g2:$sym, 32)>;
464 def : InstAlias<"movn $Rd, $sym", (MOVNXi GPR64:$Rd, movz_symbol_g1:$sym, 16)>;
465 def : InstAlias<"movn $Rd, $sym", (MOVNXi GPR64:$Rd, movz_symbol_g0:$sym, 0)>;
467 def : InstAlias<"movk $Rd, $sym", (MOVKXi GPR64:$Rd, movk_symbol_g3:$sym, 48)>;
468 def : InstAlias<"movk $Rd, $sym", (MOVKXi GPR64:$Rd, movk_symbol_g2:$sym, 32)>;
469 def : InstAlias<"movk $Rd, $sym", (MOVKXi GPR64:$Rd, movk_symbol_g1:$sym, 16)>;
470 def : InstAlias<"movk $Rd, $sym", (MOVKXi GPR64:$Rd, movk_symbol_g0:$sym, 0)>;
502 defm : movw_mov_alias<"MOVZ", MOVZXi, GPR64, 64, 0>;
503 defm : movw_mov_alias<"MOVZ", MOVZXi, GPR64, 64, 16>;
504 defm : movw_mov_alias<"MOVZ", MOVZXi, GPR64, 64, 32>;
505 defm : movw_mov_alias<"MOVZ", MOVZXi, GPR64, 64, 48>;
510 defm : movw_mov_alias<"MOVN", MOVNXi, GPR64, 64, 0>;
511 defm : movw_mov_alias<"MOVN", MOVNXi, GPR64, 64, 16>;
512 defm : movw_mov_alias<"MOVN", MOVNXi, GPR64, 64, 32>;
513 defm : movw_mov_alias<"MOVN", MOVNXi, GPR64, 64, 48>;
526 : Pseudo<(outs GPR64:$dst), (ins i64imm:$src),
527 [(set GPR64:$dst, imm:$src)]>,
609 def : InstAlias<"ngc $dst, $src", (SBCXr GPR64:$dst, XZR, GPR64:$src)>;
611 def : InstAlias<"ngcs $dst, $src", (SBCSXr GPR64:$dst, XZR, GPR64:$src)>;
636 def : Pat<(sub GPR64:$Rn, GPR64:$Rm),
637 (SUBSXrr GPR64:$Rn, GPR64:$Rm)>;
640 def : Pat<(sub GPR64:$Rn, arith_shifted_reg64:$Rm),
641 (SUBSXrs GPR64:$Rn, arith_shifted_reg64:$Rm)>;
655 def : Pat<(add GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
656 (SUBSXri GPR64:$Rn, neg_addsub_shifted_imm64:$imm)>;
659 def : Pat<(sub GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
660 (ADDXri GPR64:$Rn, neg_addsub_shifted_imm64:$imm)>;
669 def : Pat<(AArch64add_flag GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
670 (SUBSXri GPR64:$Rn, neg_addsub_shifted_imm64:$imm)>;
673 def : Pat<(AArch64sub_flag GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
674 (ADDSXri GPR64:$Rn, neg_addsub_shifted_imm64:$imm)>;
678 def : InstAlias<"neg $dst, $src", (SUBXrs GPR64:$dst, XZR, GPR64:$src, 0), 3>;
682 (SUBXrs GPR64:$dst, XZR, GPR64:$src, arith_shift64:$shift), 2>;
685 def : InstAlias<"negs $dst, $src", (SUBSXrs GPR64:$dst, XZR, GPR64:$src, 0), 3>;
689 (SUBSXrs GPR64:$dst, XZR, GPR64:$src, arith_shift64:$shift), 2>;
697 def : Pat<(int_aarch64_udiv GPR64:$Rn, GPR64:$Rm), (UDIVXr $Rn, $Rm)>;
699 def : Pat<(int_aarch64_sdiv GPR64:$Rn, GPR64:$Rm), (SDIVXr $Rn, $Rm)>;
708 def : ShiftAlias<"asrv", ASRVXr, GPR64>;
710 def : ShiftAlias<"lslv", LSLVXr, GPR64>;
712 def : ShiftAlias<"lsrv", LSRVXr, GPR64>;
714 def : ShiftAlias<"rorv", RORVXr, GPR64>;
723 def : Pat<(i64 (mul GPR64:$Rn, GPR64:$Rm)),
724 (MADDXrrr GPR64:$Rn, GPR64:$Rm, XZR)>;
728 def : Pat<(i64 (ineg (mul GPR64:$Rn, GPR64:$Rm))),
729 (MSUBXrrr GPR64:$Rn, GPR64:$Rm, XZR)>;
732 def : Pat<(i64 (mul (ineg GPR64:$Rn), GPR64:$Rm)),
733 (MSUBXrrr GPR64:$Rn, GPR64:$Rm, XZR)>;
756 def : Pat<(i64 (mul (sext_inreg GPR64:$Rn, i32), (s64imm_32bit:$C))),
757 (SMADDLrrr (i32 (EXTRACT_SUBREG GPR64:$Rn, sub_32)),
764 def : Pat<(i64 (ineg (mul (sext_inreg GPR64:$Rn, i32), (s64imm_32bit:$C)))),
765 (SMSUBLrrr (i32 (EXTRACT_SUBREG GPR64:$Rn, sub_32)),
768 def : Pat<(i64 (add (mul (sext GPR32:$Rn), (s64imm_32bit:$C)), GPR64:$Ra)),
769 (SMADDLrrr GPR32:$Rn, (MOVi32imm (trunc_imm imm:$C)), GPR64:$Ra)>;
770 def : Pat<(i64 (add (mul (zext GPR32:$Rn), (i64imm_32bit:$C)), GPR64:$Ra)),
771 (UMADDLrrr GPR32:$Rn, (MOVi32imm (trunc_imm imm:$C)), GPR64:$Ra)>;
772 def : Pat<(i64 (add (mul (sext_inreg GPR64:$Rn, i32), (s64imm_32bit:$C)),
773 GPR64:$Ra)),
774 (SMADDLrrr (i32 (EXTRACT_SUBREG GPR64:$Rn, sub_32)),
775 (MOVi32imm (trunc_imm imm:$C)), GPR64:$Ra)>;
777 def : Pat<(i64 (sub GPR64:$Ra, (mul (sext GPR32:$Rn), (s64imm_32bit:$C)))),
778 (SMSUBLrrr GPR32:$Rn, (MOVi32imm (trunc_imm imm:$C)), GPR64:$Ra)>;
779 def : Pat<(i64 (sub GPR64:$Ra, (mul (zext GPR32:$Rn), (i64imm_32bit:$C)))),
780 (UMSUBLrrr GPR32:$Rn, (MOVi32imm (trunc_imm imm:$C)), GPR64:$Ra)>;
781 def : Pat<(i64 (sub GPR64:$Ra, (mul (sext_inreg GPR64:$Rn, i32),
783 (SMSUBLrrr (i32 (EXTRACT_SUBREG GPR64:$Rn, sub_32)),
784 (MOVi32imm (trunc_imm imm:$C)), GPR64:$Ra)>;
804 def CRC32Xrr : BaseCRC32<1, 0b11, 0, GPR64, int_aarch64_crc32x, "crc32x">;
809 def CRC32CXrr : BaseCRC32<1, 0b11, 1, GPR64, int_aarch64_crc32cx, "crc32cx">;
914 def : InstAlias<"mov $dst, $src", (ORRXrs GPR64:$dst, XZR, GPR64:$src, 0), 2>;
917 def : InstAlias<"mvn $Xd, $Xm", (ORNXrs GPR64:$Xd, XZR, GPR64:$Xm, 0), 3>;
922 (ORNXrs GPR64:$Xd, XZR, GPR64:$Xm, logical_shift64:$sh), 2>;
927 (ANDSXri XZR, GPR64:$src1, logical_imm64:$src2), 2>;
932 (ANDSXrs XZR, GPR64:$src1, GPR64:$src2, 0), 3>;
937 (ANDSXrs XZR, GPR64:$src1, GPR64:$src2, logical_shift64:$sh), 2>;
941 def : Pat<(not GPR64:$Xm), (ORNXrr XZR, GPR64:$Xm)>;
953 def : Pat<(int_aarch64_rbit GPR64:$Rn), (RBITXr $Rn)>;
961 def : Pat<(cttz GPR64:$Rn),
962 (CLZXr (RBITXr GPR64:$Rn))>;
966 def : Pat<(ctlz (or (shl (xor (sra GPR64:$Rn, (i64 63)), GPR64:$Rn), (i64 1)),
968 (CLSXr GPR64:$Rn)>;
978 def : InstAlias<"rev64 $Rd, $Rn", (REVXr GPR64:$Rd, GPR64:$Rn), 0>;
983 def : Pat<(bswap (rotr GPR64:$Rn, (i64 32))), (REV32Xr GPR64:$Rn)>;
993 (EXTRXrri GPR64:$dst, GPR64:$src, GPR64:$src, imm0_63:$shift)>;
997 def : Pat<(rotr GPR64:$Rn, (i64 imm0_63:$imm)),
998 (EXTRXrri GPR64:$Rn, GPR64:$Rn, imm0_63:$imm)>;
1067 def : Pat<(shl GPR64:$Rn, (i64 imm0_63:$imm)),
1068 (UBFMXri GPR64:$Rn, (i64 (i64shift_a imm0_63:$imm)),
1074 def : Pat<(sra GPR64:$Rn, (i64 imm0_63:$imm)),
1075 (SBFMXri GPR64:$Rn, imm0_63:$imm, 63)>;
1081 (SBFMXri GPR64:$dst, GPR64:$src, imm0_63:$shift, 63)>;
1083 def : InstAlias<"sxtb $dst, $src", (SBFMXri GPR64:$dst, GPR64:$src, 0, 7)>;
1085 def : InstAlias<"sxth $dst, $src", (SBFMXri GPR64:$dst, GPR64:$src, 0, 15)>;
1086 def : InstAlias<"sxtw $dst, $src", (SBFMXri GPR64:$dst, GPR64:$src, 0, 31)>;
1090 def : Pat<(srl GPR64:$Rn, (i64 imm0_63:$imm)),
1091 (UBFMXri GPR64:$Rn, imm0_63:$imm, 63)>;
1096 (UBFMXri GPR64:$dst, GPR64:$src, imm0_63:$shift, 63)>;
1098 def : InstAlias<"uxtb $dst, $src", (UBFMXri GPR64:$dst, GPR64:$src, 0, 7)>;
1100 def : InstAlias<"uxth $dst, $src", (UBFMXri GPR64:$dst, GPR64:$src, 0, 15)>;
1101 def : InstAlias<"uxtw $dst, $src", (UBFMXri GPR64:$dst, GPR64:$src, 0, 31)>;
1121 def : Pat<(AArch64csinv GPR64:$tval, GPR64:$fval, (i32 imm:$cc), NZCV),
1122 (CSINVXr GPR64:$tval, GPR64:$fval, (i32 imm:$cc))>;
1125 def : Pat<(AArch64csneg GPR64:$tval, GPR64:$fval, (i32 imm:$cc), NZCV),
1126 (CSNEGXr GPR64:$tval, GPR64:$fval, (i32 imm:$cc))>;
1129 def : Pat<(AArch64csinc GPR64:$tval, GPR64:$fval, (i32 imm:$cc), NZCV),
1130 (CSINCXr GPR64:$tval, GPR64:$fval, (i32 imm:$cc))>;
1142 def : Pat<(AArch64csel GPR64:$tval, (i64 -1), (i32 imm:$cc), NZCV),
1143 (CSINVXr GPR64:$tval, XZR, (i32 imm:$cc))>;
1146 def : Pat<(AArch64csel (i64 -1), GPR64:$fval, (i32 imm:$cc), NZCV),
1147 (CSINVXr GPR64:$fval, XZR, (i32 (inv_cond_XFORM imm:$cc)))>;
1155 (CSINCXr GPR64:$dst, XZR, XZR, inv_ccode:$cc)>;
1160 (CSINVXr GPR64:$dst, XZR, XZR, inv_ccode:$cc)>;
1165 (CSINCXr GPR64:$dst, GPR64:$src, GPR64:$src, inv_ccode:$cc)>;
1170 (CSINVXr GPR64:$dst, GPR64:$src, GPR64:$src, inv_ccode:$cc)>;
1175 (CSNEGXr GPR64:$dst, GPR64:$src, GPR64:$src, inv_ccode:$cc)>;
1186 [(set GPR64:$Xd, (AArch64adrp tglobaladdr:$label))]>;
1207 def BLR : BranchReg<0b0001, "blr", [(AArch64call GPR64:$Rn)]>;
1211 def BR : BranchReg<0b0000, "br", [(brind GPR64:$Rn)]>;
1295 defm LDPX : LoadPairOffset<0b10, 0, GPR64, simm7s8, "ldp">;
1300 defm LDPSW : LoadPairOffset<0b01, 0, GPR64, simm7s4, "ldpsw">;
1304 def LDPXpre : LoadPairPreIdx<0b10, 0, GPR64, simm7s8, "ldp">;
1309 def LDPSWpre : LoadPairPreIdx<0b01, 0, GPR64, simm7s4, "ldpsw">;
1313 def LDPXpost : LoadPairPostIdx<0b10, 0, GPR64, simm7s8, "ldp">;
1318 def LDPSWpost : LoadPairPostIdx<0b01, 0, GPR64, simm7s4, "ldpsw">;
1323 defm LDNPX : LoadPairNoAlloc<0b10, 0, GPR64, simm7s8, "ldnp">;
1336 defm LDRX : Load64RO<0b11, 0, 0b01, GPR64, "ldr", i64, load>;
1347 defm LDRSHX : Load16RO<0b01, 0, 0b10, GPR64, "ldrsh", i64, sextloadi16>;
1351 defm LDRSBX : Load8RO<0b00, 0, 0b10, GPR64, "ldrsb", i64, sextloadi8>;
1354 defm LDRSW : Load32RO<0b10, 0, 0b10, GPR64, "ldrsw", i64, sextloadi32>;
1374 (loadop (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$offset))))),
1376 (LOADX GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$offset),
1407 (load (ro_Xindexed64 GPR64sp:$Rn, GPR64:$Rm,
1409 (LDRDroX GPR64sp:$Rn, GPR64:$Rm, ro_Xextend64:$extend)>;
1419 def : Pat<(VecTy (load (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend))),
1420 (LOADX GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)>;
1457 def : Pat<(i64 (loadop (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend))),
1459 (INSTX GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend),
1487 def : Pat<(i32 (loadop (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend))),
1488 (INSTX GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)>;
1505 defm LDRX : LoadUI<0b11, 0, 0b01, GPR64, uimm12s8, "ldr",
1506 [(set GPR64:$Rt,
1644 defm LDRSHX : LoadUI<0b01, 0, 0b10, GPR64, uimm12s2, "ldrsh",
1645 [(set GPR64:$Rt,
1654 defm LDRSBX : LoadUI<0b00, 0, 0b10, GPR64, uimm12s1, "ldrsb",
1655 [(set GPR64:$Rt,
1660 defm LDRSW : LoadUI<0b10, 0, 0b10, GPR64, uimm12s4, "ldrsw",
1661 [(set GPR64:$Rt,
1680 def LDRXl : LoadLiteral<0b01, 0, GPR64, "ldr">;
1686 def LDRSWl : LoadLiteral<0b10, 0, GPR64, "ldrsw">;
1694 defm LDURX : LoadUnscaled<0b11, 0, 0b01, GPR64, "ldur",
1695 [(set GPR64:$Rt,
1829 (LDURXi GPR64:$Rt, GPR64sp:$Rn, simm9_offset_fb64:$offset), 0>;
1855 : LoadUnscaled<0b01, 0, 0b10, GPR64, "ldursh",
1856 [(set GPR64:$Rt,
1865 : LoadUnscaled<0b00, 0, 0b10, GPR64, "ldursb",
1866 [(set GPR64:$Rt,
1871 : LoadUnscaled<0b10, 0, 0b10, GPR64, "ldursw",
1872 [(set GPR64:$Rt,
1883 (LDURSBXi GPR64:$Rt, GPR64sp:$Rn, simm9_offset_fb8:$offset), 0>;
1887 (LDURSHXi GPR64:$Rt, GPR64sp:$Rn, simm9_offset_fb16:$offset), 0>;
1889 (LDURSWi GPR64:$Rt, GPR64sp:$Rn, simm9_offset_fb32:$offset), 0>;
1898 defm LDTRX : LoadUnprivileged<0b11, 0, 0b01, GPR64, "ldtr">;
1906 defm LDTRSHX : LoadUnprivileged<0b01, 0, 0b10, GPR64, "ldtrsh">;
1910 defm LDTRSBX : LoadUnprivileged<0b00, 0, 0b10, GPR64, "ldtrsb">;
1913 defm LDTRSW : LoadUnprivileged<0b10, 0, 0b10, GPR64, "ldtrsw">;
1918 def LDRXpre : LoadPreIdx<0b11, 0, 0b01, GPR64, "ldr">;
1927 def LDRSHXpre : LoadPreIdx<0b01, 0, 0b10, GPR64, "ldrsh">;
1931 def LDRSBXpre : LoadPreIdx<0b00, 0, 0b10, GPR64, "ldrsb">;
1938 def LDRSWpre : LoadPreIdx<0b10, 0, 0b10, GPR64, "ldrsw">;
1943 def LDRXpost : LoadPostIdx<0b11, 0, 0b01, GPR64, "ldr">;
1952 def LDRSHXpost : LoadPostIdx<0b01, 0, 0b10, GPR64, "ldrsh">;
1956 def LDRSBXpost : LoadPostIdx<0b00, 0, 0b10, GPR64, "ldrsb">;
1963 def LDRSWpost : LoadPostIdx<0b10, 0, 0b10, GPR64, "ldrsw">;
1972 defm STPX : StorePairOffset<0b10, 0, GPR64, simm7s8, "stp">;
1979 def STPXpre : StorePairPreIdx<0b10, 0, GPR64, simm7s8, "stp">;
1986 def STPXpost : StorePairPostIdx<0b10, 0, GPR64, simm7s8, "stp">;
1993 defm STNPX : StorePairNoAlloc<0b10, 0, GPR64, simm7s8, "stnp">;
2005 defm STRX : Store64RO<0b11, 0, 0b00, GPR64, "str", i64, store>;
2018 def : Pat<(storeop GPR64:$Rt,
2020 (STRW (EXTRACT_SUBREG GPR64:$Rt, sub_32),
2023 def : Pat<(storeop GPR64:$Rt,
2024 (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)),
2025 (STRX (EXTRACT_SUBREG GPR64:$Rt, sub_32),
2026 GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)>;
2043 (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)),
2044 (STRX FPR:$Rt, GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)>;
2086 (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)),
2088 GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend)>;
2103 defm STRX : StoreUI<0b11, 0, 0b00, GPR64, uimm12s8, "str",
2104 [(store GPR64:$Rt,
2189 def : Pat<(truncstorei32 GPR64:$Rt,
2191 (STRWui (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$Rn, uimm12s4:$offset)>;
2192 def : Pat<(truncstorei16 GPR64:$Rt,
2194 (STRHHui (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$Rn, uimm12s2:$offset)>;
2195 def : Pat<(truncstorei8 GPR64:$Rt, (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset)),
2196 (STRBBui (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$Rn, uimm12s1:$offset)>;
2202 defm STURX : StoreUnscaled<0b11, 0, 0b00, GPR64, "stur",
2203 [(store GPR64:$Rt,
2284 def : Pat<(truncstorei32 GPR64:$Rt, (am_unscaled32 GPR64sp:$Rn, simm9:$offset)),
2285 (STURWi (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$Rn, simm9:$offset)>;
2286 def : Pat<(truncstorei16 GPR64:$Rt, (am_unscaled16 GPR64sp:$Rn, simm9:$offset)),
2287 (STURHHi (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$Rn, simm9:$offset)>;
2288 def : Pat<(truncstorei8 GPR64:$Rt, (am_unscaled8 GPR64sp:$Rn, simm9:$offset)),
2289 (STURBBi (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$Rn, simm9:$offset)>;
2294 (STURXi GPR64:$Rt, GPR64sp:$Rn, simm9_offset_fb64:$offset), 0>;
2316 defm STTRX : StoreUnprivileged<0b11, 0, 0b00, GPR64, "sttr">;
2324 def STRXpre : StorePreIdx<0b11, 0, 0b00, GPR64, "str", pre_store, i64>;
2335 def : Pat<(pre_truncsti32 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2336 (STRWpre (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$addr,
2338 def : Pat<(pre_truncsti16 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2339 (STRHHpre (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$addr,
2341 def : Pat<(pre_truncsti8 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2342 (STRBBpre (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$addr,
2378 def STRXpost : StorePostIdx<0b11, 0, 0b00, GPR64, "str", post_store, i64>;
2389 def : Pat<(post_truncsti32 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2390 (STRWpost (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$addr,
2392 def : Pat<(post_truncsti16 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2393 (STRHHpost (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$addr,
2395 def : Pat<(post_truncsti8 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2396 (STRBBpost (EXTRACT_SUBREG GPR64:$Rt, sub_32), GPR64sp:$addr,
2434 def LDARX : LoadAcquire <0b11, 1, 1, 0, 1, GPR64, "ldar">;
2439 def LDAXRX : LoadExclusive <0b11, 0, 1, 0, 1, GPR64, "ldaxr">;
2444 def LDXRX : LoadExclusive <0b11, 0, 1, 0, 0, GPR64, "ldxr">;
2449 def STLRX : StoreRelease <0b11, 1, 0, 0, 1, GPR64, "stlr">;
2454 def STLXRX : StoreExclusive<0b11, 0, 0, 0, 1, GPR64, "stlxr">;
2459 def STXRX : StoreExclusive<0b11, 0, 0, 0, 0, GPR64, "stxr">;
2464 def LDAXPX : LoadExclusivePair<0b11, 0, 1, 1, 1, GPR64, "ldaxp">;
2467 def LDXPX : LoadExclusivePair<0b11, 0, 1, 1, 0, GPR64, "ldxp">;
2470 def STLXPX : StoreExclusivePair<0b11, 0, 0, 1, 1, GPR64, "stlxp">;
2473 def STXPX : StoreExclusivePair<0b11, 0, 0, 1, 0, GPR64, "stxp">;
2478 def LDLARX : LoadAcquire <0b11, 1, 1, 0, 0, GPR64, "ldlar">;
2484 def STLLRX : StoreRelease <0b11, 1, 0, 0, 0, GPR64, "stllr">;
3458 (loadop (ro.Xpat GPR64sp:$Rn, GPR64:$Rm,
3461 (LDRX GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend),
3806 def DUPv2i64gpr : SIMDDupFromMain<1, {?,1,0,0,0}, ".2d", v2i64, V128, GPR64>;
4950 def : SExtLoadi8CVTf32Pat<(ro8.Xpat GPR64sp:$Rn, GPR64:$Rm, ro8.Xext:$ext),
4951 (LDRBroX GPR64sp:$Rn, GPR64:$Rm, ro8.Xext:$ext)>;
4970 def : SExtLoadi16CVTf32Pat<(ro16.Xpat GPR64sp:$Rn, GPR64:$Rm, ro16.Xext:$ext),
4971 (LDRHroX GPR64sp:$Rn, GPR64:$Rm, ro16.Xext:$ext)>;
5004 def : SExtLoadi16CVTf64Pat<(ro16.Xpat GPR64sp:$Rn, GPR64:$Rm, ro16.Xext:$ext),
5005 (LDRHroX GPR64sp:$Rn, GPR64:$Rm, ro16.Xext:$ext)>;
5023 def : SExtLoadi32CVTf64Pat<(ro32.Xpat GPR64sp:$Rn, GPR64:$Rm, ro32.Xext:$ext),
5024 (LDRSroX GPR64sp:$Rn, GPR64:$Rm, ro32.Xext:$ext)>;
5212 GPR64sp:$Rn, GPR64:$Rm),
5236 GPR64sp:$Rn, GPR64:$Rm),
5325 def : Pat<(i64 (sext_inreg GPR64:$src, i32)), (SBFMXri GPR64:$src, 0, 31)>;
5326 def : Pat<(i64 (sext_inreg GPR64:$src, i16)), (SBFMXri GPR64:$src, 0, 15)>;
5327 def : Pat<(i64 (sext_inreg GPR64:$src, i8)), (SBFMXri GPR64:$src, 0, 7)>;
5328 def : Pat<(i64 (sext_inreg GPR64:$src, i1)), (SBFMXri GPR64:$src, 0, 0)>;
5336 def : Pat<(shl (sext_inreg GPR64:$Rn, i8), (i64 imm0_63:$imm)),
5337 (SBFMXri GPR64:$Rn, (i64 (i64shift_a imm0_63:$imm)),
5343 def : Pat<(shl (sext_inreg GPR64:$Rn, i16), (i64 imm0_63:$imm)),
5344 (SBFMXri GPR64:$Rn, (i64 (i64shift_a imm0_63:$imm)),
5361 def : Pat<(sra (sext_inreg GPR64:$Rn, i8), (i64 imm0_7:$imm)),
5362 (SBFMXri GPR64:$Rn, (i64 imm0_7:$imm), 7)>;
5366 def : Pat<(sra (sext_inreg GPR64:$Rn, i16), (i64 imm0_15:$imm)),
5367 (SBFMXri GPR64:$Rn, (i64 imm0_15:$imm), 15)>;
5511 def : Pat<(v8i8 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5512 def : Pat<(v4i16 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5513 def : Pat<(v2i32 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5514 def : Pat<(v4f16 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5515 def : Pat<(v2f32 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5518 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5520 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5522 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5524 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5526 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5528 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5531 def : Pat<(v8i8 (bitconvert GPR64:$Xn)),
5532 (REV64v8i8 (COPY_TO_REGCLASS GPR64:$Xn, FPR64))>;
5533 def : Pat<(v4i16 (bitconvert GPR64:$Xn)),
5534 (REV64v4i16 (COPY_TO_REGCLASS GPR64:$Xn, FPR64))>;
5535 def : Pat<(v2i32 (bitconvert GPR64:$Xn)),
5536 (REV64v2i32 (COPY_TO_REGCLASS GPR64:$Xn, FPR64))>;
5537 def : Pat<(v4f16 (bitconvert GPR64:$Xn)),
5538 (REV64v4i16 (COPY_TO_REGCLASS GPR64:$Xn, FPR64))>;
5539 def : Pat<(v2f32 (bitconvert GPR64:$Xn)),
5540 (REV64v2i32 (COPY_TO_REGCLASS GPR64:$Xn, FPR64))>;
5543 (REV64v8i8 (COPY_TO_REGCLASS V64:$Vn, GPR64))>;
5545 (REV64v4i16 (COPY_TO_REGCLASS V64:$Vn, GPR64))>;
5547 (REV64v2i32 (COPY_TO_REGCLASS V64:$Vn, GPR64))>;
5549 (REV64v4i16 (COPY_TO_REGCLASS V64:$Vn, GPR64))>;
5551 (REV64v2i32 (COPY_TO_REGCLASS V64:$Vn, GPR64))>;
5553 def : Pat<(v1i64 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5554 def : Pat<(v1f64 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5556 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
5557 def : Pat<(v1i64 (scalar_to_vector GPR64:$Xn)),
5558 (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5559 def : Pat<(v1f64 (scalar_to_vector GPR64:$Xn)),
5560 (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5567 def : Pat<(f64 (bitconvert (i64 GPR64:$Xn))),
5568 (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5570 (COPY_TO_REGCLASS FPR64:$Xn, GPR64)>;
5572 (COPY_TO_REGCLASS V64:$Vn, GPR64)>;
6081 def : Pat<(nontemporalstore GPR64:$Rt,
6083 (STNPWi (EXTRACT_SUBREG GPR64:$Rt, sub_32),
6084 (EXTRACT_SUBREG (UBFMXri GPR64:$Rt, 32, 63), sub_32),