Lines Matching refs:Pat

366 def : Pat<(AArch64LOADgot tglobaltlsaddr:$addr),
369 def : Pat<(AArch64LOADgot texternalsym:$addr),
372 def : Pat<(AArch64LOADgot tconstpool:$addr),
417 def : Pat<(AArch64threadpointer), (MRS 0xde82)>;
421 def : Pat<(readcyclecounter), (MRS 0xdce8)>;
535 def : Pat<(i64 i64imm_32bit:$src),
550 def : Pat<(f32 fpimm:$in),
552 def : Pat<(f64 fpimm:$in),
558 def : Pat<(AArch64WrapperLarge tglobaladdr:$g3, tglobaladdr:$g2,
565 def : Pat<(AArch64WrapperLarge tblockaddress:$g3, tblockaddress:$g2,
572 def : Pat<(AArch64WrapperLarge tconstpool:$g3, tconstpool:$g2,
579 def : Pat<(AArch64WrapperLarge tjumptable:$g3, tjumptable:$g2,
617 def : Pat<(sub GPR32sp:$Rn, addsub_shifted_imm32:$imm),
619 def : Pat<(sub GPR64sp:$Rn, addsub_shifted_imm64:$imm),
621 def : Pat<(sub GPR32:$Rn, GPR32:$Rm),
623 def : Pat<(sub GPR64:$Rn, GPR64:$Rm),
625 def : Pat<(sub GPR32:$Rn, arith_shifted_reg32:$Rm),
627 def : Pat<(sub GPR64:$Rn, arith_shifted_reg64:$Rm),
630 def : Pat<(sub GPR32sp:$R2, arith_extended_reg32<i32>:$R3),
632 def : Pat<(sub GPR64sp:$R2, arith_extended_reg32to64<i64>:$R3),
640 def : Pat<(add GPR32:$Rn, neg_addsub_shifted_imm32:$imm),
642 def : Pat<(add GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
644 def : Pat<(sub GPR32:$Rn, neg_addsub_shifted_imm32:$imm),
646 def : Pat<(sub GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
654 def : Pat<(AArch64add_flag GPR32:$Rn, neg_addsub_shifted_imm32:$imm),
656 def : Pat<(AArch64add_flag GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
658 def : Pat<(AArch64sub_flag GPR32:$Rn, neg_addsub_shifted_imm32:$imm),
660 def : Pat<(AArch64sub_flag GPR64:$Rn, neg_addsub_shifted_imm64:$imm),
707 def : Pat<(i32 (mul GPR32:$Rn, GPR32:$Rm)),
709 def : Pat<(i64 (mul GPR64:$Rn, GPR64:$Rm)),
712 def : Pat<(i32 (ineg (mul GPR32:$Rn, GPR32:$Rm))),
714 def : Pat<(i64 (ineg (mul GPR64:$Rn, GPR64:$Rm))),
716 def : Pat<(i32 (mul (ineg GPR32:$Rn), GPR32:$Rm)),
718 def : Pat<(i64 (mul (ineg GPR64:$Rn), GPR64:$Rm)),
728 def : Pat<(i64 (mul (sext GPR32:$Rn), (sext GPR32:$Rm))),
730 def : Pat<(i64 (mul (zext GPR32:$Rn), (zext GPR32:$Rm))),
733 def : Pat<(i64 (ineg (mul (sext GPR32:$Rn), (sext GPR32:$Rm)))),
735 def : Pat<(i64 (ineg (mul (zext GPR32:$Rn), (zext GPR32:$Rm)))),
892 def : Pat<(not GPR32:$Wm), (ORNWrr WZR, GPR32:$Wm)>;
893 def : Pat<(not GPR64:$Xm), (ORNXrr XZR, GPR64:$Xm)>;
904 def : Pat<(int_aarch64_rbit GPR32:$Rn), (RBITWr $Rn)>;
905 def : Pat<(int_aarch64_rbit GPR64:$Rn), (RBITXr $Rn)>;
911 def : Pat<(cttz GPR32:$Rn),
913 def : Pat<(cttz GPR64:$Rn),
915 def : Pat<(ctlz (or (shl (xor (sra GPR32:$Rn, (i64 31)), GPR32:$Rn), (i64 1)),
918 def : Pat<(ctlz (or (shl (xor (sra GPR64:$Rn, (i64 63)), GPR64:$Rn), (i64 1)),
934 def : Pat<(bswap (rotr GPR32:$Rn, (i64 16))), (REV16Wr GPR32:$Rn)>;
935 def : Pat<(bswap (rotr GPR64:$Rn, (i64 32))), (REV32Xr GPR64:$Rn)>;
947 def : Pat<(rotr GPR32:$Rn, (i64 imm0_31:$imm)),
949 def : Pat<(rotr GPR64:$Rn, (i64 imm0_63:$imm)),
1016 def : Pat<(shl GPR32:$Rn, (i64 imm0_31:$imm)),
1019 def : Pat<(shl GPR64:$Rn, (i64 imm0_63:$imm)),
1024 def : Pat<(sra GPR32:$Rn, (i64 imm0_31:$imm)),
1026 def : Pat<(sra GPR64:$Rn, (i64 imm0_63:$imm)),
1040 def : Pat<(srl GPR32:$Rn, (i64 imm0_31:$imm)),
1042 def : Pat<(srl GPR64:$Rn, (i64 imm0_63:$imm)),
1071 def : Pat<(AArch64csinv GPR32:$tval, GPR32:$fval, (i32 imm:$cc), NZCV),
1073 def : Pat<(AArch64csinv GPR64:$tval, GPR64:$fval, (i32 imm:$cc), NZCV),
1075 def : Pat<(AArch64csneg GPR32:$tval, GPR32:$fval, (i32 imm:$cc), NZCV),
1077 def : Pat<(AArch64csneg GPR64:$tval, GPR64:$fval, (i32 imm:$cc), NZCV),
1079 def : Pat<(AArch64csinc GPR32:$tval, GPR32:$fval, (i32 imm:$cc), NZCV),
1081 def : Pat<(AArch64csinc GPR64:$tval, GPR64:$fval, (i32 imm:$cc), NZCV),
1084 def : Pat<(AArch64csel (i32 0), (i32 1), (i32 imm:$cc), NZCV),
1086 def : Pat<(AArch64csel (i64 0), (i64 1), (i32 imm:$cc), NZCV),
1088 def : Pat<(AArch64csel (i32 0), (i32 -1), (i32 imm:$cc), NZCV),
1090 def : Pat<(AArch64csel (i64 0), (i64 -1), (i32 imm:$cc), NZCV),
1134 def : Pat<(AArch64adrp tconstpool:$cp), (ADRP tconstpool:$cp)>;
1135 def : Pat<(AArch64adrp tblockaddress:$cp), (ADRP tblockaddress:$cp)>;
1182 def : Pat<(AArch64tlsdesc_callseq texternalsym:$sym),
1212 def : Pat<(AArch64call texternalsym:$func), (BL texternalsym:$func)>;
1309 def : Pat<(VecTy (scalar_to_vector (ScalTy
1315 def : Pat<(VecTy (scalar_to_vector (ScalTy
1343 def : Pat <(v1i64 (scalar_to_vector (i64
1348 def : Pat <(v1i64 (scalar_to_vector (i64
1358 def : Pat<(VecTy (load (ro.Wpat GPR64sp:$Rn, GPR32:$Rm, ro.Wext:$extend))),
1361 def : Pat<(VecTy (load (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend))),
1394 def : Pat<(i64 (loadop (ro.Wpat GPR64sp:$Rn, GPR32:$Rm, ro.Wext:$extend))),
1399 def : Pat<(i64 (loadop (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend))),
1426 def : Pat<(i32 (loadop (ro.Wpat GPR64sp:$Rn, GPR32:$Rm, ro.Wext:$extend))),
1429 def : Pat<(i32 (loadop (ro.Xpat GPR64sp:$Rn, GPR64:$Rm, ro.Xext:$extend))),
1473 def : Pat <(v8i8 (scalar_to_vector (i32
1477 def : Pat <(v16i8 (scalar_to_vector (i32
1481 def : Pat <(v4i16 (scalar_to_vector (i32
1485 def : Pat <(v8i16 (scalar_to_vector (i32
1489 def : Pat <(v2i32 (scalar_to_vector (i32
1493 def : Pat <(v4i32 (scalar_to_vector (i32
1497 def : Pat <(v1i64 (scalar_to_vector (i64
1500 def : Pat <(v2i64 (scalar_to_vector (i64
1508 def : Pat<(v2f32 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1510 def : Pat<(v8i8 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1512 def : Pat<(v4i16 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1514 def : Pat<(v2i32 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1516 def : Pat<(v4f16 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1519 def : Pat<(v1f64 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1521 def : Pat<(v1i64 (load (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))),
1527 def : Pat<(v4f32 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1529 def : Pat<(v2f64 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1531 def : Pat<(v16i8 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1533 def : Pat<(v8i16 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1535 def : Pat<(v4i32 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1537 def : Pat<(v2i64 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1539 def : Pat<(v8f16 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1542 def : Pat<(f128 (load (am_indexed128 GPR64sp:$Rn, uimm12s16:$offset))),
1554 def : Pat<(i64 (zextloadi8 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1556 def : Pat<(i64 (zextloadi16 (am_indexed16 GPR64sp:$Rn, uimm12s2:$offset))),
1560 def : Pat<(i32 (zextloadi1 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1562 def : Pat<(i64 (zextloadi1 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1566 def : Pat<(i32 (extloadi16 (am_indexed16 GPR64sp:$Rn, uimm12s2:$offset))),
1568 def : Pat<(i32 (extloadi8 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1570 def : Pat<(i32 (extloadi1 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1572 def : Pat<(i64 (extloadi32 (am_indexed32 GPR64sp:$Rn, uimm12s4:$offset))),
1574 def : Pat<(i64 (extloadi16 (am_indexed16 GPR64sp:$Rn, uimm12s2:$offset))),
1576 def : Pat<(i64 (extloadi8 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1578 def : Pat<(i64 (extloadi1 (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset))),
1608 def : Pat<(i64 (zextloadi32 (am_indexed32 GPR64sp:$Rn, uimm12s4:$offset))),
1669 def : Pat<(v2f32 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1671 def : Pat<(v2i32 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1673 def : Pat<(v4i16 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1675 def : Pat<(v8i8 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1677 def : Pat<(v4f16 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1680 def : Pat<(v1f64 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1682 def : Pat<(v1i64 (load (am_unscaled64 GPR64sp:$Rn, simm9:$offset))),
1687 def : Pat<(v2f64 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1689 def : Pat<(v2i64 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1691 def : Pat<(v4f32 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1693 def : Pat<(v4i32 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1695 def : Pat<(v8i16 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1697 def : Pat<(v16i8 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1699 def : Pat<(v8f16 (load (am_unscaled128 GPR64sp:$Rn, simm9:$offset))),
1704 def : Pat<(i32 (extloadi16 (am_unscaled16 GPR64sp:$Rn, simm9:$offset))),
1706 def : Pat<(i32 (extloadi8 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1708 def : Pat<(i32 (extloadi1 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1710 def : Pat<(i64 (extloadi32 (am_unscaled32 GPR64sp:$Rn, simm9:$offset))),
1712 def : Pat<(i64 (extloadi16 (am_unscaled16 GPR64sp:$Rn, simm9:$offset))),
1714 def : Pat<(i64 (extloadi8 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1716 def : Pat<(i64 (extloadi1 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1719 def : Pat<(i32 (zextloadi16 (am_unscaled16 GPR64sp:$Rn, simm9:$offset))),
1721 def : Pat<(i32 (zextloadi8 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1723 def : Pat<(i32 (zextloadi1 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1725 def : Pat<(i64 (zextloadi32 (am_unscaled32 GPR64sp:$Rn, simm9:$offset))),
1727 def : Pat<(i64 (zextloadi16 (am_unscaled16 GPR64sp:$Rn, simm9:$offset))),
1729 def : Pat<(i64 (zextloadi8 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1731 def : Pat<(i64 (zextloadi1 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1786 def : Pat<(i64 (zextloadi8 (am_unscaled8 GPR64sp:$Rn, simm9:$offset))),
1788 def : Pat<(i64 (zextloadi16 (am_unscaled16 GPR64sp:$Rn, simm9:$offset))),
1960 def : Pat<(storeop GPR64:$Rt,
1965 def : Pat<(storeop GPR64:$Rt,
1980 def : Pat<(store (VecTy FPR:$Rt),
1984 def : Pat<(store (VecTy FPR:$Rt),
2022 def : Pat<(storeop (STy (vector_extract (VecTy VecListOne128:$Vt), 0)),
2027 def : Pat<(storeop (STy (vector_extract (VecTy VecListOne128:$Vt), 0)),
2078 def : Pat<(store (v2f32 FPR64:$Rt),
2081 def : Pat<(store (v8i8 FPR64:$Rt),
2084 def : Pat<(store (v4i16 FPR64:$Rt),
2087 def : Pat<(store (v2i32 FPR64:$Rt),
2090 def : Pat<(store (v4f16 FPR64:$Rt),
2094 def : Pat<(store (v1f64 FPR64:$Rt),
2097 def : Pat<(store (v1i64 FPR64:$Rt),
2104 def : Pat<(store (v4f32 FPR128:$Rt),
2107 def : Pat<(store (v2f64 FPR128:$Rt),
2110 def : Pat<(store (v16i8 FPR128:$Rt),
2113 def : Pat<(store (v8i16 FPR128:$Rt),
2116 def : Pat<(store (v4i32 FPR128:$Rt),
2119 def : Pat<(store (v2i64 FPR128:$Rt),
2122 def : Pat<(store (v8f16 FPR128:$Rt),
2126 def : Pat<(store (f128 FPR128:$Rt),
2131 def : Pat<(truncstorei32 GPR64:$Rt,
2134 def : Pat<(truncstorei16 GPR64:$Rt,
2137 def : Pat<(truncstorei8 GPR64:$Rt, (am_indexed8 GPR64sp:$Rn, uimm12s1:$offset)),
2175 def : Pat<(store (v2f32 FPR64:$Rt),
2178 def : Pat<(store (v8i8 FPR64:$Rt),
2181 def : Pat<(store (v4i16 FPR64:$Rt),
2184 def : Pat<(store (v2i32 FPR64:$Rt),
2187 def : Pat<(store (v4f16 FPR64:$Rt),
2191 def : Pat<(store (v1f64 FPR64:$Rt), (am_unscaled64 GPR64sp:$Rn, simm9:$offset)),
2193 def : Pat<(store (v1i64 FPR64:$Rt), (am_unscaled64 GPR64sp:$Rn, simm9:$offset)),
2199 def : Pat<(store (v4f32 FPR128:$Rt),
2202 def : Pat<(store (v2f64 FPR128:$Rt),
2205 def : Pat<(store (v16i8 FPR128:$Rt),
2208 def : Pat<(store (v8i16 FPR128:$Rt),
2211 def : Pat<(store (v4i32 FPR128:$Rt),
2214 def : Pat<(store (v2i64 FPR128:$Rt),
2217 def : Pat<(store (v2f64 FPR128:$Rt),
2220 def : Pat<(store (v8f16 FPR128:$Rt),
2226 def : Pat<(truncstorei32 GPR64:$Rt, (am_unscaled32 GPR64sp:$Rn, simm9:$offset)),
2228 def : Pat<(truncstorei16 GPR64:$Rt, (am_unscaled16 GPR64sp:$Rn, simm9:$offset)),
2230 def : Pat<(truncstorei8 GPR64:$Rt, (am_unscaled8 GPR64sp:$Rn, simm9:$offset)),
2277 def : Pat<(pre_truncsti32 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2280 def : Pat<(pre_truncsti16 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2283 def : Pat<(pre_truncsti8 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2287 def : Pat<(pre_store (v8i8 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2289 def : Pat<(pre_store (v4i16 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2291 def : Pat<(pre_store (v2i32 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2293 def : Pat<(pre_store (v2f32 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2295 def : Pat<(pre_store (v1i64 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2297 def : Pat<(pre_store (v1f64 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2299 def : Pat<(pre_store (v4f16 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2302 def : Pat<(pre_store (v16i8 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2304 def : Pat<(pre_store (v8i16 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2306 def : Pat<(pre_store (v4i32 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2308 def : Pat<(pre_store (v4f32 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2310 def : Pat<(pre_store (v2i64 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2312 def : Pat<(pre_store (v2f64 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2314 def : Pat<(pre_store (v8f16 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2331 def : Pat<(post_truncsti32 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2334 def : Pat<(post_truncsti16 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2337 def : Pat<(post_truncsti8 GPR64:$Rt, GPR64sp:$addr, simm9:$off),
2341 def : Pat<(post_store (v8i8 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2343 def : Pat<(post_store (v4i16 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2345 def : Pat<(post_store (v2i32 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2347 def : Pat<(post_store (v2f32 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2349 def : Pat<(post_store (v1i64 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2351 def : Pat<(post_store (v1f64 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2353 def : Pat<(post_store (v4f16 FPR64:$Rt), GPR64sp:$addr, simm9:$off),
2356 def : Pat<(post_store (v16i8 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2358 def : Pat<(post_store (v8i16 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2360 def : Pat<(post_store (v4i32 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2362 def : Pat<(post_store (v4f32 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2364 def : Pat<(post_store (v2i64 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2366 def : Pat<(post_store (v2f64 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2368 def : Pat<(post_store (v8f16 FPR128:$Rt), GPR64sp:$addr, simm9:$off),
2455 def : Pat<(i32 (to_int (round f32:$Rn))),
2457 def : Pat<(i64 (to_int (round f32:$Rn))),
2459 def : Pat<(i32 (to_int (round f64:$Rn))),
2461 def : Pat<(i64 (to_int (round f64:$Rn))),
2516 def : Pat<(v1f64 (int_aarch64_neon_frintn (v1f64 FPR64:$Rn))),
2544 def : Pat<(v1f64 (fmaxnan (v1f64 FPR64:$Rn), (v1f64 FPR64:$Rm))),
2546 def : Pat<(v1f64 (fminnan (v1f64 FPR64:$Rn), (v1f64 FPR64:$Rm))),
2548 def : Pat<(v1f64 (fmaxnum (v1f64 FPR64:$Rn), (v1f64 FPR64:$Rm))),
2550 def : Pat<(v1f64 (fminnum (v1f64 FPR64:$Rn), (v1f64 FPR64:$Rm))),
2570 def : Pat<(f32 (fma (fneg FPR32:$Rn), FPR32:$Rm, FPR32:$Ra)),
2573 def : Pat<(f64 (fma (fneg FPR64:$Rn), FPR64:$Rm, FPR64:$Ra)),
2578 def : Pat<(f32 (fma (fneg FPR32:$Rn), FPR32:$Rm, (fneg FPR32:$Ra))),
2581 def : Pat<(f64 (fma (fneg FPR64:$Rn), FPR64:$Rm, (fneg FPR64:$Ra))),
2584 def : Pat<(f32 (fma FPR32:$Rn, (fneg FPR32:$Rm), (fneg FPR32:$Ra))),
2587 def : Pat<(f64 (fma FPR64:$Rn, (fneg FPR64:$Rm), (fneg FPR64:$Ra))),
2638 def : Pat<(xor (v8i16 (AArch64vashr v8i16:$src, (i32 15))),
2643 def : Pat<(xor (v8i16 (AArch64vashr v8i16:$src, (i32 15))),
2648 def : Pat<(xor (v4i32 (AArch64vashr v4i32:$src, (i32 31))),
2653 def : Pat<(xor (v4i32 (AArch64vashr v4i32:$src, (i32 31))),
2658 def : Pat<(xor (v2i64 (AArch64vashr v2i64:$src, (i32 63))),
2663 def : Pat<(xor (v2i64 (AArch64vashr v2i64:$src, (i32 63))),
2670 def : Pat<(xor (v8i8 (AArch64vashr V64:$src, (i32 7))),
2673 def : Pat<(xor (v4i16 (AArch64vashr V64:$src, (i32 15))),
2676 def : Pat<(xor (v2i32 (AArch64vashr V64:$src, (i32 31))),
2679 def : Pat<(xor (v16i8 (AArch64vashr V128:$src, (i32 7))),
2682 def : Pat<(xor (v8i16 (AArch64vashr V128:$src, (i32 15))),
2685 def : Pat<(xor (v4i32 (AArch64vashr V128:$src, (i32 31))),
2688 def : Pat<(xor (v2i64 (AArch64vashr V128:$src, (i32 63))),
2710 def : Pat<(v4f32 (int_aarch64_neon_vcvthf2fp (v4i16 V64:$Rn))),
2712 def : Pat<(v4f32 (int_aarch64_neon_vcvthf2fp (extract_subvector (v8i16 V128:$Rn),
2715 def : Pat<(v2f64 (fextend (v2f32 V64:$Rn))), (FCVTLv2i32 V64:$Rn)>;
2716 def : Pat<(v2f64 (fextend (v2f32 (extract_subvector (v4f32 V128:$Rn),
2720 def : Pat<(v4f32 (fextend (v4f16 V64:$Rn))), (FCVTLv4i16 V64:$Rn)>;
2721 def : Pat<(v4f32 (fextend (v4f16 (extract_subvector (v8f16 V128:$Rn),
2730 def : Pat<(v4i16 (int_aarch64_neon_vcvtfp2hf (v4f32 V128:$Rn))),
2732 def : Pat<(concat_vectors V64:$Rd,
2735 def : Pat<(v2f32 (fround (v2f64 V128:$Rn))), (FCVTNv2i32 V128:$Rn)>;
2736 def : Pat<(v4f16 (fround (v4f32 V128:$Rn))), (FCVTNv4i16 V128:$Rn)>;
2737 def : Pat<(concat_vectors V64:$Rd, (v2f32 (fround (v2f64 V128:$Rn)))),
2771 def : Pat<(AArch64neg (v8i8 V64:$Rn)), (NEGv8i8 V64:$Rn)>;
2772 def : Pat<(AArch64neg (v16i8 V128:$Rn)), (NEGv16i8 V128:$Rn)>;
2773 def : Pat<(AArch64neg (v4i16 V64:$Rn)), (NEGv4i16 V64:$Rn)>;
2774 def : Pat<(AArch64neg (v8i16 V128:$Rn)), (NEGv8i16 V128:$Rn)>;
2775 def : Pat<(AArch64neg (v2i32 V64:$Rn)), (NEGv2i32 V64:$Rn)>;
2776 def : Pat<(AArch64neg (v4i32 V128:$Rn)), (NEGv4i32 V128:$Rn)>;
2777 def : Pat<(AArch64neg (v2i64 V128:$Rn)), (NEGv2i64 V128:$Rn)>;
2779 def : Pat<(AArch64not (v8i8 V64:$Rn)), (NOTv8i8 V64:$Rn)>;
2780 def : Pat<(AArch64not (v16i8 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2781 def : Pat<(AArch64not (v4i16 V64:$Rn)), (NOTv8i8 V64:$Rn)>;
2782 def : Pat<(AArch64not (v8i16 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2783 def : Pat<(AArch64not (v2i32 V64:$Rn)), (NOTv8i8 V64:$Rn)>;
2784 def : Pat<(AArch64not (v1i64 V64:$Rn)), (NOTv8i8 V64:$Rn)>;
2785 def : Pat<(AArch64not (v4i32 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2786 def : Pat<(AArch64not (v2i64 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2788 def : Pat<(vnot (v4i16 V64:$Rn)), (NOTv8i8 V64:$Rn)>;
2789 def : Pat<(vnot (v8i16 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2790 def : Pat<(vnot (v2i32 V64:$Rn)), (NOTv8i8 V64:$Rn)>;
2791 def : Pat<(vnot (v4i32 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2792 def : Pat<(vnot (v2i64 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2819 def : Pat<(v4f16 (AArch64rev32 V64:$Rn)), (REV32v4i16 V64:$Rn)>;
2820 def : Pat<(v4f16 (AArch64rev64 V64:$Rn)), (REV64v4i16 V64:$Rn)>;
2821 def : Pat<(v8f16 (AArch64rev32 V128:$Rn)), (REV32v8i16 V128:$Rn)>;
2822 def : Pat<(v8f16 (AArch64rev64 V128:$Rn)), (REV64v8i16 V128:$Rn)>;
2823 def : Pat<(v2f32 (AArch64rev64 V64:$Rn)), (REV64v2i32 V64:$Rn)>;
2824 def : Pat<(v4f32 (AArch64rev64 V128:$Rn)), (REV64v4i32 V128:$Rn)>;
2830 def : Pat<(AArch64vshl (v8i16 (ext (v8i8 V64:$Rn))), (i32 8)),
2832 def : Pat<(AArch64vshl (v8i16 (ext (extract_high_v16i8 V128:$Rn))), (i32 8)),
2834 def : Pat<(AArch64vshl (v4i32 (ext (v4i16 V64:$Rn))), (i32 16)),
2836 def : Pat<(AArch64vshl (v4i32 (ext (extract_high_v8i16 V128:$Rn))), (i32 16)),
2838 def : Pat<(AArch64vshl (v2i64 (ext (v2i32 V64:$Rn))), (i32 32)),
2840 def : Pat<(AArch64vshl (v2i64 (ext (extract_high_v4i32 V128:$Rn))), (i32 32)),
2887 def : Pat<(v2f32 (fma (fneg V64:$Rn), V64:$Rm, V64:$Rd)),
2890 def : Pat<(v4f32 (fma (fneg V128:$Rn), V128:$Rm, V128:$Rd)),
2893 def : Pat<(v2f64 (fma (fneg V128:$Rn), V128:$Rm, V128:$Rd)),
2960 def : Pat<(AArch64bsl (v8i8 V64:$Rd), V64:$Rn, V64:$Rm),
2962 def : Pat<(AArch64bsl (v4i16 V64:$Rd), V64:$Rn, V64:$Rm),
2964 def : Pat<(AArch64bsl (v2i32 V64:$Rd), V64:$Rn, V64:$Rm),
2966 def : Pat<(AArch64bsl (v1i64 V64:$Rd), V64:$Rn, V64:$Rm),
2969 def : Pat<(AArch64bsl (v16i8 V128:$Rd), V128:$Rn, V128:$Rm),
2971 def : Pat<(AArch64bsl (v8i16 V128:$Rd), V128:$Rn, V128:$Rm),
2973 def : Pat<(AArch64bsl (v4i32 V128:$Rd), V128:$Rn, V128:$Rm),
2975 def : Pat<(AArch64bsl (v2i64 V128:$Rd), V128:$Rn, V128:$Rm),
3168 def : Pat<(v1f64 (int_aarch64_neon_fabd (v1f64 FPR64:$Rn), (v1f64 FPR64:$Rm))),
3198 def : Pat<(i32 (int_aarch64_neon_sqadd
3203 def : Pat<(i32 (int_aarch64_neon_sqsub
3243 def : Pat<(i64 (int_aarch64_neon_sqadd (i64 FPR64:$Rd),
3247 def : Pat<(i64 (int_aarch64_neon_sqsub (i64 FPR64:$Rd),
3295 def : Pat<(AArch64neg (v1i64 V64:$Rn)), (NEGv1i64 V64:$Rn)>;
3297 def : Pat<(v1i64 (int_aarch64_neon_fcvtas (v1f64 FPR64:$Rn))),
3299 def : Pat<(v1i64 (int_aarch64_neon_fcvtau (v1f64 FPR64:$Rn))),
3301 def : Pat<(v1i64 (int_aarch64_neon_fcvtms (v1f64 FPR64:$Rn))),
3303 def : Pat<(v1i64 (int_aarch64_neon_fcvtmu (v1f64 FPR64:$Rn))),
3305 def : Pat<(v1i64 (int_aarch64_neon_fcvtns (v1f64 FPR64:$Rn))),
3307 def : Pat<(v1i64 (int_aarch64_neon_fcvtnu (v1f64 FPR64:$Rn))),
3309 def : Pat<(v1i64 (int_aarch64_neon_fcvtps (v1f64 FPR64:$Rn))),
3311 def : Pat<(v1i64 (int_aarch64_neon_fcvtpu (v1f64 FPR64:$Rn))),
3314 def : Pat<(f32 (int_aarch64_neon_frecpe (f32 FPR32:$Rn))),
3316 def : Pat<(f64 (int_aarch64_neon_frecpe (f64 FPR64:$Rn))),
3318 def : Pat<(v1f64 (int_aarch64_neon_frecpe (v1f64 FPR64:$Rn))),
3321 def : Pat<(f32 (int_aarch64_neon_frecpx (f32 FPR32:$Rn))),
3323 def : Pat<(f64 (int_aarch64_neon_frecpx (f64 FPR64:$Rn))),
3326 def : Pat<(f32 (int_aarch64_neon_frsqrte (f32 FPR32:$Rn))),
3328 def : Pat<(f64 (int_aarch64_neon_frsqrte (f64 FPR64:$Rn))),
3330 def : Pat<(v1f64 (int_aarch64_neon_frsqrte (v1f64 FPR64:$Rn))),
3341 def : Pat<(DstTy (uint_to_fp (SrcTy
3348 def : Pat<(DstTy (uint_to_fp (SrcTy
3358 def : Pat <(f32 (uint_to_fp (i32
3362 def : Pat <(f32 (uint_to_fp (i32
3369 def : Pat <(f32 (uint_to_fp (i32
3373 def : Pat <(f32 (uint_to_fp (i32
3387 def : Pat <(f64 (uint_to_fp (i32
3391 def : Pat <(f64 (uint_to_fp (i32
3398 def : Pat <(f64 (uint_to_fp (i32
3402 def : Pat <(f64 (uint_to_fp (i32
3409 def : Pat <(f64 (uint_to_fp (i32
3413 def : Pat <(f64 (uint_to_fp (i32
3471 def : Pat<(v8i16 (opnode (v8i8 V64:$Rn), (v8i8 V64:$Rm))),
3473 def : Pat<(v4i32 (opnode (v4i16 V64:$Rn), (v4i16 V64:$Rm))),
3475 def : Pat<(v2i64 (opnode (v2i32 V64:$Rn), (v2i32 V64:$Rm))),
3487 def : Pat<(v8i16 (opnode (v8i16 V128:$Rd), (v8i8 V64:$Rn), (v8i8 V64:$Rm))),
3489 def : Pat<(v4i32 (opnode (v4i32 V128:$Rd), (v4i16 V64:$Rn), (v4i16 V64:$Rm))),
3491 def : Pat<(v2i64 (opnode (v2i64 V128:$Rd), (v2i32 V64:$Rn), (v2i32 V64:$Rm))),
3509 def : Pat<(int_aarch64_neon_pmull64 V64:$Rn, V64:$Rm),
3511 def : Pat<(int_aarch64_neon_pmull64 (extractelt (v2i64 V128:$Rn), (i64 1)),
3519 def : Pat<(v8i8 (trunc (v8i16 (AArch64vlshr (add V128:$Rn, V128:$Rm), (i32 8))))),
3521 def : Pat<(v4i16 (trunc (v4i32 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3524 def : Pat<(v2i32 (trunc (v2i64 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3527 def : Pat<(concat_vectors (v8i8 V64:$Rd),
3532 def : Pat<(concat_vectors (v4i16 V64:$Rd),
3537 def : Pat<(concat_vectors (v2i32 V64:$Rd),
3544 def : Pat<(v8i8 (trunc (v8i16 (AArch64vlshr (sub V128:$Rn, V128:$Rm), (i32 8))))),
3546 def : Pat<(v4i16 (trunc (v4i32 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3549 def : Pat<(v2i32 (trunc (v2i64 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3552 def : Pat<(concat_vectors (v8i8 V64:$Rd),
3557 def : Pat<(concat_vectors (v4i16 V64:$Rd),
3562 def : Pat<(concat_vectors (v2i32 V64:$Rd),
3574 def : Pat<(v4i16 (AArch64ext V64:$Rn, V64:$Rm, (i32 imm:$imm))),
3576 def : Pat<(v8i16 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3578 def : Pat<(v2i32 (AArch64ext V64:$Rn, V64:$Rm, (i32 imm:$imm))),
3580 def : Pat<(v2f32 (AArch64ext V64:$Rn, V64:$Rm, (i32 imm:$imm))),
3582 def : Pat<(v4i32 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3584 def : Pat<(v4f32 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3586 def : Pat<(v2i64 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3588 def : Pat<(v2f64 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3590 def : Pat<(v4f16 (AArch64ext V64:$Rn, V64:$Rm, (i32 imm:$imm))),
3592 def : Pat<(v8f16 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3597 def : Pat<(v8i8 (extract_subvector V128:$Rn, (i64 8))),
3599 def : Pat<(v4i16 (extract_subvector V128:$Rn, (i64 4))),
3601 def : Pat<(v2i32 (extract_subvector V128:$Rn, (i64 2))),
3603 def : Pat<(v1i64 (extract_subvector V128:$Rn, (i64 1))),
3605 def : Pat<(v4f16 (extract_subvector V128:$Rn, (i64 4))),
3607 def : Pat<(v2f32 (extract_subvector V128:$Rn, (i64 2))),
3609 def : Pat<(v1f64 (extract_subvector V128:$Rn, (i64 1))),
3631 def : Pat<(v8i8 (int_aarch64_neon_tbl1 (v16i8 VecListOne128:$Rn), (v8i8 V64:$Ri))),
3633 def : Pat<(v16i8 (int_aarch64_neon_tbl1 (v16i8 V128:$Ri), (v16i8 V128:$Rn))),
3636 def : Pat<(v8i8 (int_aarch64_neon_tbx1 (v8i8 V64:$Rd),
3639 def : Pat<(v16i8 (int_aarch64_neon_tbx1 (v16i8 V128:$Rd),
3660 def : Pat<(v2i64 (AArch64saddv V128:$Rn)),
3662 def : Pat<(v2i64 (AArch64uaddv V128:$Rn)),
3664 def : Pat<(f32 (int_aarch64_neon_faddv (v2f32 V64:$Rn))),
3666 def : Pat<(f32 (int_aarch64_neon_faddv (v4f32 V128:$Rn))),
3668 def : Pat<(f64 (int_aarch64_neon_faddv (v2f64 V128:$Rn))),
3670 def : Pat<(f32 (int_aarch64_neon_fmaxnmv (v2f32 V64:$Rn))),
3672 def : Pat<(f64 (int_aarch64_neon_fmaxnmv (v2f64 V128:$Rn))),
3674 def : Pat<(f32 (int_aarch64_neon_fmaxv (v2f32 V64:$Rn))),
3676 def : Pat<(f64 (int_aarch64_neon_fmaxv (v2f64 V128:$Rn))),
3678 def : Pat<(f32 (int_aarch64_neon_fminnmv (v2f32 V64:$Rn))),
3680 def : Pat<(f64 (int_aarch64_neon_fminnmv (v2f64 V128:$Rn))),
3682 def : Pat<(f32 (int_aarch64_neon_fminv (v2f32 V64:$Rn))),
3684 def : Pat<(f64 (int_aarch64_neon_fminv (v2f64 V128:$Rn))),
3707 def : Pat<(v2f32 (AArch64dup (f32 FPR32:$Rn))),
3711 def : Pat<(v4f32 (AArch64dup (f32 FPR32:$Rn))),
3715 def : Pat<(v2f64 (AArch64dup (f64 FPR64:$Rn))),
3719 def : Pat<(v4f16 (AArch64dup (f16 FPR16:$Rn))),
3723 def : Pat<(v8f16 (AArch64dup (f16 FPR16:$Rn))),
3728 def : Pat<(v4f16 (AArch64duplane16 (v8f16 V128:$Rn), VectorIndexH:$imm)),
3730 def : Pat<(v8f16 (AArch64duplane16 (v8f16 V128:$Rn), VectorIndexH:$imm)),
3733 def : Pat<(v2f32 (AArch64duplane32 (v4f32 V128:$Rn), VectorIndexS:$imm)),
3735 def : Pat<(v4f32 (AArch64duplane32 (v4f32 V128:$Rn), VectorIndexS:$imm)),
3737 def : Pat<(v2f64 (AArch64duplane64 (v2f64 V128:$Rn), VectorIndexD:$imm)),
3756 def : Pat<(ResVT (AArch64dup (ScalVT (vector_extract (Src128VT V128:$Rn),
3760 def : Pat<(ResVT (AArch64dup (ScalVT (vector_extract (Src64VT V64:$Rn),
3775 def : Pat<(ResVT (AArch64dup (i32 (trunc (extractelt (v2i64 V128:$Rn),
3779 def : Pat<(ResVT (AArch64dup (i32 (trunc (extractelt (v1i64 V64:$Rn),
3796 def : Pat<(sext_inreg (vector_extract (v16i8 V128:$Rn), VectorIndexB:$idx), i8),
3798 def : Pat<(sext_inreg (vector_extract (v16i8 V128:$Rn), VectorIndexB:$idx), i8),
3800 def : Pat<(sext_inreg (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),i16),
3802 def : Pat<(sext_inreg (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),i16),
3804 def : Pat<(sext_inreg (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),i16),
3806 def : Pat<(sext (i32 (vector_extract (v4i32 V128:$Rn), VectorIndexS:$idx))),
3809 def : Pat<(sext_inreg (i64 (anyext (i32 (vector_extract (v16i8 V128:$Rn),
3812 def : Pat<(sext_inreg (i64 (anyext (i32 (vector_extract (v8i16 V128:$Rn),
3820 def : Pat<(and (vector_extract (v16i8 V128:$Rn), VectorIndexB:$idx),
3823 def : Pat<(and (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),
3829 def : Pat<(v16i8 (scalar_to_vector GPR32:$Rn)),
3832 def : Pat<(v8i8 (scalar_to_vector GPR32:$Rn)),
3836 def : Pat<(v8i16 (scalar_to_vector GPR32:$Rn)),
3839 def : Pat<(v4i16 (scalar_to_vector GPR32:$Rn)),
3843 def : Pat<(v2i32 (scalar_to_vector (i32 FPR32:$Rn))),
3846 def : Pat<(v4i32 (scalar_to_vector (i32 FPR32:$Rn))),
3849 def : Pat<(v2i64 (scalar_to_vector (i64 FPR64:$Rn))),
3853 def : Pat<(v4f16 (scalar_to_vector (f16 FPR16:$Rn))),
3855 def : Pat<(v8f16 (scalar_to_vector (f16 FPR16:$Rn))),
3858 def : Pat<(v4f32 (scalar_to_vector (f32 FPR32:$Rn))),
3860 def : Pat<(v2f32 (scalar_to_vector (f32 FPR32:$Rn))),
3862 def : Pat<(v2f64 (scalar_to_vector (f64 FPR64:$Rn))),
3865 def : Pat<(v4f16 (vector_insert (v4f16 V64:$Rn),
3875 def : Pat<(v8f16 (vector_insert (v8f16 V128:$Rn),
3882 def : Pat<(v2f32 (vector_insert (v2f32 V64:$Rn),
3891 def : Pat<(v4f32 (vector_insert (v4f32 V128:$Rn),
3897 def : Pat<(v2f64 (vector_insert (v2f64 V128:$Rn),
3908 def : Pat<(v16i8 (int_aarch64_neon_vcopy_lane
3914 def : Pat<(v8i16 (int_aarch64_neon_vcopy_lane
3920 def : Pat<(v4i32 (int_aarch64_neon_vcopy_lane
3926 def : Pat<(v2i64 (int_aarch64_neon_vcopy_lane
3935 def : Pat<(VT128 (vector_insert V128:$src,
3940 def : Pat<(VT128 (vector_insert V128:$src,
3946 def : Pat<(VT64 (vector_insert V64:$src,
3953 def : Pat<(VT64 (vector_insert V64:$src,
3970 def : Pat<(vector_extract (v2f64 V128:$Rn), 0),
3972 def : Pat<(vector_extract (v4f32 V128:$Rn), 0),
3974 def : Pat<(vector_extract (v8f16 V128:$Rn), 0),
3977 def : Pat<(vector_extract (v2f64 V128:$Rn), VectorIndexD:$idx),
3979 def : Pat<(vector_extract (v4f32 V128:$Rn), VectorIndexS:$idx),
3981 def : Pat<(vector_extract (v8f16 V128:$Rn), VectorIndexH:$idx),
3988 : Pat<(DstTy (concat_vectors (SrcTy V64:$Rd), V64:$Rn)),
4002 : Pat<(DstTy (concat_vectors (SrcTy V64:$Rn), undef)),
4035 def : Pat<(v8i8 (opNode V64:$Rn)),
4038 def : Pat<(v16i8 (opNode V128:$Rn)),
4041 def : Pat<(v4i16 (opNode V64:$Rn)),
4044 def : Pat<(v8i16 (opNode V128:$Rn)),
4047 def : Pat<(v4i32 (opNode V128:$Rn)),
4053 def : Pat<(i32 (vector_extract (insert_subvector undef, (v8i8 (opNode V64:$Rn)),
4058 def : Pat<(i32 (vector_extract (v16i8 (opNode V128:$Rn)), (i64 0))),
4062 def : Pat<(i32 (vector_extract (insert_subvector undef,
4067 def : Pat<(i32 (vector_extract (v8i16 (opNode V128:$Rn)), (i64 0))),
4071 def : Pat<(i32 (vector_extract (v4i32 (opNode V128:$Rn)), (i64 0))),
4083 def : Pat<(i32 (sext_inreg (i32 (vector_extract (insert_subvector undef,
4089 def : Pat<(i32 (sext_inreg (i32 (vector_extract
4095 def : Pat<(i32 (sext_inreg (i32 (vector_extract (insert_subvector undef,
4101 def : Pat<(i32 (sext_inreg (i32 (vector_extract
4114 def : Pat<(i32 (and (i32 (vector_extract (insert_subvector undef,
4120 def : Pat<(i32 (and (i32 (vector_extract (opNode (v16i8 V128:$Rn)), (i64 0))),
4126 def : Pat<(i32 (and (i32 (vector_extract (insert_subvector undef,
4132 def : Pat<(i32 (and (i32 (vector_extract (opNode (v8i16 V128:$Rn)), (i64 0))),
4142 def : Pat<(v2i32 (AArch64saddv (v2i32 V64:$Rn))),
4147 def : Pat<(v2i32 (AArch64uaddv (v2i32 V64:$Rn))),
4151 def : Pat<(v2i32 (AArch64smaxv (v2i32 V64:$Rn))),
4155 def : Pat<(v2i32 (AArch64sminv (v2i32 V64:$Rn))),
4159 def : Pat<(v2i32 (AArch64umaxv (v2i32 V64:$Rn))),
4163 def : Pat<(v2i32 (AArch64uminv (v2i32 V64:$Rn))),
4167 def : Pat<(i32 (intOp (v8i8 V64:$Rn))),
4172 def : Pat<(i32 (intOp (v16i8 V128:$Rn))),
4178 def : Pat<(i32 (intOp (v4i16 V64:$Rn))),
4183 def : Pat<(i32 (intOp (v8i16 V128:$Rn))),
4189 def : Pat<(i64 (intOp (v4i32 V128:$Rn))),
4198 def : Pat<(i32 (intOp (v8i8 V64:$Rn))),
4203 def : Pat<(i32 (intOp (v16i8 V128:$Rn))),
4209 def : Pat<(i32 (intOp (v4i16 V64:$Rn))),
4214 def : Pat<(i32 (intOp (v8i16 V128:$Rn))),
4220 def : Pat<(i64 (intOp (v4i32 V128:$Rn))),
4231 def : Pat<(i64 (int_aarch64_neon_saddlv (v2i32 V64:$Rn))),
4237 def : Pat<(i64 (int_aarch64_neon_uaddlv (v2i32 V64:$Rn))),
4299 def : Pat<(f64 (AArch64movi_edit imm0_255:$shift)),
4302 def : Pat<(v1i64 immAllZerosV), (MOVID (i32 0))>;
4303 def : Pat<(v2i32 immAllZerosV), (MOVID (i32 0))>;
4304 def : Pat<(v4i16 immAllZerosV), (MOVID (i32 0))>;
4305 def : Pat<(v8i8 immAllZerosV), (MOVID (i32 0))>;
4307 def : Pat<(v1i64 immAllOnesV), (MOVID (i32 255))>;
4308 def : Pat<(v2i32 immAllOnesV), (MOVID (i32 255))>;
4309 def : Pat<(v4i16 immAllOnesV), (MOVID (i32 255))>;
4310 def : Pat<(v8i8 immAllOnesV), (MOVID (i32 255))>;
4326 def : Pat<(f32 fpimm0),
4329 def : Pat<(f64 fpimm0),
4334 def : Pat<(v2i64 immAllZerosV), (MOVIv2d_ns (i32 0))>;
4335 def : Pat<(v4i32 immAllZerosV), (MOVIv2d_ns (i32 0))>;
4336 def : Pat<(v8i16 immAllZerosV), (MOVIv2d_ns (i32 0))>;
4337 def : Pat<(v16i8 immAllZerosV), (MOVIv2d_ns (i32 0))>;
4339 def : Pat<(v2i64 immAllOnesV), (MOVIv2d_ns (i32 255))>;
4340 def : Pat<(v4i32 immAllOnesV), (MOVIv2d_ns (i32 255))>;
4341 def : Pat<(v8i16 immAllOnesV), (MOVIv2d_ns (i32 255))>;
4342 def : Pat<(v16i8 immAllOnesV), (MOVIv2d_ns (i32 255))>;
4344 def : Pat<(v2f64 (AArch64dup (f64 fpimm0))), (MOVIv2d_ns (i32 0))>;
4345 def : Pat<(v4f32 (AArch64dup (f32 fpimm0))), (MOVIv2d_ns (i32 0))>;
4360 def : Pat<(v2i32 (AArch64movi_shift imm0_255:$imm8, (i32 imm:$shift))),
4362 def : Pat<(v4i32 (AArch64movi_shift imm0_255:$imm8, (i32 imm:$shift))),
4364 def : Pat<(v4i16 (AArch64movi_shift imm0_255:$imm8, (i32 imm:$shift))),
4366 def : Pat<(v8i16 (AArch64movi_shift imm0_255:$imm8, (i32 imm:$shift))),
4400 def : Pat<(v2i32 (AArch64mvni_shift imm0_255:$imm8, (i32 imm:$shift))),
4402 def : Pat<(v4i32 (AArch64mvni_shift imm0_255:$imm8, (i32 imm:$shift))),
4404 def : Pat<(v4i16 (AArch64mvni_shift imm0_255:$imm8, (i32 imm:$shift))),
4406 def : Pat<(v8i16 (AArch64mvni_shift imm0_255:$imm8, (i32 imm:$shift))),
4448 def : Pat<(v2f32 (OpNode (v2f32 V64:$Rd), (v2f32 V64:$Rn),
4452 def : Pat<(v2f32 (OpNode (v2f32 V64:$Rd), (v2f32 V64:$Rn),
4461 def : Pat<(v2f32 (OpNode (v2f32 V64:$Rd), (v2f32 V64:$Rn),
4468 def : Pat<(v4f32 (OpNode (v4f32 V128:$Rd), (v4f32 V128:$Rn),
4473 def : Pat<(v4f32 (OpNode (v4f32 V128:$Rd), (v4f32 V128:$Rn),
4482 def : Pat<(v4f32 (OpNode (v4f32 V128:$Rd), (v4f32 V128:$Rn),
4489 def : Pat<(v2f64 (OpNode (v2f64 V128:$Rd), (v2f64 V128:$Rn),
4494 def : Pat<(v2f64 (OpNode (v2f64 V128:$Rd), (v2f64 V128:$Rn),
4500 def : Pat<(f32 (OpNode (f32 FPR32:$Rd), (f32 FPR32:$Rn),
4505 def : Pat<(f32 (OpNode (f32 FPR32:$Rd), (f32 FPR32:$Rn),
4514 def : Pat<(f64 (OpNode (f64 FPR64:$Rd), (f64 FPR64:$Rn),
4529 def : Pat<(v2f32 (fmul V64:$Rn, (AArch64dup (f32 FPR32:$Rm)))),
4533 def : Pat<(v4f32 (fmul V128:$Rn, (AArch64dup (f32 FPR32:$Rm)))),
4537 def : Pat<(v2f64 (fmul V128:$Rn, (AArch64dup (f64 FPR64:$Rm)))),
4573 def : Pat<(int_aarch64_neon_sqdmulls_scalar (i32 FPR32:$Rn),
4588 def : Pat<(int_aarch64_neon_vcvtfp2fxs FPR32:$Rn, vecshiftR32:$imm),
4590 def : Pat<(int_aarch64_neon_vcvtfp2fxu FPR32:$Rn, vecshiftR32:$imm),
4592 def : Pat<(i64 (int_aarch64_neon_vcvtfp2fxs (f64 FPR64:$Rn), vecshiftR64:$imm)),
4594 def : Pat<(i64 (int_aarch64_neon_vcvtfp2fxu (f64 FPR64:$Rn), vecshiftR64:$imm)),
4596 def : Pat<(v1i64 (int_aarch64_neon_vcvtfp2fxs (v1f64 FPR64:$Rn),
4599 def : Pat<(v1i64 (int_aarch64_neon_vcvtfp2fxu (v1f64 FPR64:$Rn),
4602 def : Pat<(int_aarch64_neon_vcvtfxs2fp FPR32:$Rn, vecshiftR32:$imm),
4604 def : Pat<(int_aarch64_neon_vcvtfxu2fp FPR32:$Rn, vecshiftR32:$imm),
4606 def : Pat<(f64 (int_aarch64_neon_vcvtfxs2fp (i64 FPR64:$Rn), vecshiftR64:$imm)),
4608 def : Pat<(f64 (int_aarch64_neon_vcvtfxu2fp (i64 FPR64:$Rn), vecshiftR64:$imm)),
4610 def : Pat<(v1f64 (int_aarch64_neon_vcvtfxs2fp (v1i64 FPR64:$Rn),
4613 def : Pat<(v1f64 (int_aarch64_neon_vcvtfxu2fp (v1i64 FPR64:$Rn),
4665 def : Pat<(v1i64 (int_aarch64_neon_vsli (v1i64 FPR64:$Rd), (v1i64 FPR64:$Rn),
4679 def : Pat<(v1i64 (int_aarch64_neon_vsri (v1i64 FPR64:$Rd), (v1i64 FPR64:$Rn),
4712 def : Pat<(v8i8 (trunc (AArch64vlshr (v8i16 V128:$Rn), vecshiftR16Narrow:$imm))),
4714 def : Pat<(v4i16 (trunc (AArch64vlshr (v4i32 V128:$Rn), vecshiftR32Narrow:$imm))),
4716 def : Pat<(v2i32 (trunc (AArch64vlshr (v2i64 V128:$Rn), vecshiftR64Narrow:$imm))),
4719 def : Pat<(v16i8 (concat_vectors (v8i8 V64:$Rd),
4724 def : Pat<(v8i16 (concat_vectors (v4i16 V64:$Rd),
4729 def : Pat<(v4i32 (concat_vectors (v2i32 V64:$Rd),
4737 def : Pat<(v8i16 (sext (v8i8 V64:$Rn))), (SSHLLv8i8_shift V64:$Rn, (i32 0))>;
4738 def : Pat<(v8i16 (zext (v8i8 V64:$Rn))), (USHLLv8i8_shift V64:$Rn, (i32 0))>;
4739 def : Pat<(v8i16 (anyext (v8i8 V64:$Rn))), (USHLLv8i8_shift V64:$Rn, (i32 0))>;
4740 def : Pat<(v4i32 (sext (v4i16 V64:$Rn))), (SSHLLv4i16_shift V64:$Rn, (i32 0))>;
4741 def : Pat<(v4i32 (zext (v4i16 V64:$Rn))), (USHLLv4i16_shift V64:$Rn, (i32 0))>;
4742 def : Pat<(v4i32 (anyext (v4i16 V64:$Rn))), (USHLLv4i16_shift V64:$Rn, (i32 0))>;
4743 def : Pat<(v2i64 (sext (v2i32 V64:$Rn))), (SSHLLv2i32_shift V64:$Rn, (i32 0))>;
4744 def : Pat<(v2i64 (zext (v2i32 V64:$Rn))), (USHLLv2i32_shift V64:$Rn, (i32 0))>;
4745 def : Pat<(v2i64 (anyext (v2i32 V64:$Rn))), (USHLLv2i32_shift V64:$Rn, (i32 0))>;
4747 def : Pat<(v8i16 (anyext (v8i8 (extract_subvector V128:$Rn, (i64 8)) ))),
4749 def : Pat<(v8i16 (zext (v8i8 (extract_subvector V128:$Rn, (i64 8)) ))),
4751 def : Pat<(v8i16 (sext (v8i8 (extract_subvector V128:$Rn, (i64 8)) ))),
4753 def : Pat<(v4i32 (anyext (v4i16 (extract_subvector V128:$Rn, (i64 4)) ))),
4755 def : Pat<(v4i32 (zext (v4i16 (extract_subvector V128:$Rn, (i64 4)) ))),
4757 def : Pat<(v4i32 (sext (v4i16 (extract_subvector V128:$Rn, (i64 4)) ))),
4759 def : Pat<(v2i64 (anyext (v2i32 (extract_subvector V128:$Rn, (i64 2)) ))),
4761 def : Pat<(v2i64 (zext (v2i32 (extract_subvector V128:$Rn, (i64 2)) ))),
4763 def : Pat<(v2i64 (sext (v2i32 (extract_subvector V128:$Rn, (i64 2)) ))),
4836 : Pat<(f32 (sint_to_fp (i32 (sextloadi8 addrmode)))),
4861 : Pat<(f32 (sint_to_fp (i32 (sextloadi16 addrmode)))),
4889 : Pat <(f64 (sint_to_fp (i32 (sextloadi16 addrmode)))),
4913 : Pat <(f64 (sint_to_fp (i32 (load addrmode)))),
4949 : Pat<(ty (load GPR64sp:$Rn)), (INST GPR64sp:$Rn)>;
4961 : Pat<(store ty:$Vt, GPR64sp:$Rn),
5000 def : Pat<(v8i8 (AArch64dup (i32 (extloadi8 GPR64sp:$Rn)))),
5002 def : Pat<(v16i8 (AArch64dup (i32 (extloadi8 GPR64sp:$Rn)))),
5004 def : Pat<(v4i16 (AArch64dup (i32 (extloadi16 GPR64sp:$Rn)))),
5006 def : Pat<(v8i16 (AArch64dup (i32 (extloadi16 GPR64sp:$Rn)))),
5008 def : Pat<(v2i32 (AArch64dup (i32 (load GPR64sp:$Rn)))),
5010 def : Pat<(v4i32 (AArch64dup (i32 (load GPR64sp:$Rn)))),
5012 def : Pat<(v2i64 (AArch64dup (i64 (load GPR64sp:$Rn)))),
5014 def : Pat<(v1i64 (AArch64dup (i64 (load GPR64sp:$Rn)))),
5017 def : Pat<(v2f32 (AArch64dup (f32 (load GPR64sp:$Rn)))),
5019 def : Pat<(v4f32 (AArch64dup (f32 (load GPR64sp:$Rn)))),
5021 def : Pat<(v2f64 (AArch64dup (f64 (load GPR64sp:$Rn)))),
5023 def : Pat<(v1f64 (AArch64dup (f64 (load GPR64sp:$Rn)))),
5025 def : Pat<(v4f16 (AArch64dup (f16 (load GPR64sp:$Rn)))),
5027 def : Pat<(v8f16 (AArch64dup (f16 (load GPR64sp:$Rn)))),
5032 : Pat<(vector_insert (VTy VecListOne128:$Rd),
5046 : Pat<(vector_insert (VTy VecListOne64:$Rd),
5074 : Pat<(scalar_store
5090 : Pat<(scalar_store
5105 def : Pat<(scalar_store
5111 def : Pat<(scalar_store
5130 def : Pat<(scalar_store
5135 def : Pat<(scalar_store
5210 def : Pat<(i64 (zext def32:$src)), (SUBREG_TO_REG (i64 0), GPR32:$src, sub_32)>;
5214 def : Pat<(i64 (anyext GPR32:$src)),
5219 def : Pat<(i64 (zext GPR32:$src)),
5224 def : Pat<(i64 (sext GPR32:$src)),
5226 def : Pat<(i64 (sext_inreg GPR64:$src, i32)), (SBFMXri GPR64:$src, 0, 31)>;
5227 def : Pat<(i64 (sext_inreg GPR64:$src, i16)), (SBFMXri GPR64:$src, 0, 15)>;
5228 def : Pat<(i64 (sext_inreg GPR64:$src, i8)), (SBFMXri GPR64:$src, 0, 7)>;
5229 def : Pat<(i64 (sext_inreg GPR64:$src, i1)), (SBFMXri GPR64:$src, 0, 0)>;
5230 def : Pat<(i32 (sext_inreg GPR32:$src, i16)), (SBFMWri GPR32:$src, 0, 15)>;
5231 def : Pat<(i32 (sext_inreg GPR32:$src, i8)), (SBFMWri GPR32:$src, 0, 7)>;
5232 def : Pat<(i32 (sext_inreg GPR32:$src, i1)), (SBFMWri GPR32:$src, 0, 0)>;
5234 def : Pat<(shl (sext_inreg GPR32:$Rn, i8), (i64 imm0_31:$imm)),
5237 def : Pat<(shl (sext_inreg GPR64:$Rn, i8), (i64 imm0_63:$imm)),
5241 def : Pat<(shl (sext_inreg GPR32:$Rn, i16), (i64 imm0_31:$imm)),
5244 def : Pat<(shl (sext_inreg GPR64:$Rn, i16), (i64 imm0_63:$imm)),
5248 def : Pat<(shl (i64 (sext GPR32:$Rn)), (i64 imm0_63:$imm)),
5260 def : Pat<(sra (sext_inreg GPR32:$Rn, i8), (i64 imm0_7:$imm)),
5262 def : Pat<(sra (sext_inreg GPR64:$Rn, i8), (i64 imm0_7:$imm)),
5265 def : Pat<(sra (sext_inreg GPR32:$Rn, i16), (i64 imm0_15:$imm)),
5267 def : Pat<(sra (sext_inreg GPR64:$Rn, i16), (i64 imm0_15:$imm)),
5270 def : Pat<(sra (i64 (sext GPR32:$Rn)), (i64 imm0_31:$imm)),
5276 def : Pat<(i32 (trunc GPR64sp:$src)),
5280 def : Pat<(trap), (BRK 1)>;
5329 def : Pat<(v8i8 (AArch64NvCast (v2i32 FPR64:$src))), (v8i8 FPR64:$src)>;
5330 def : Pat<(v4i16 (AArch64NvCast (v2i32 FPR64:$src))), (v4i16 FPR64:$src)>;
5331 def : Pat<(v4f16 (AArch64NvCast (v2i32 FPR64:$src))), (v4f16 FPR64:$src)>;
5332 def : Pat<(v2i32 (AArch64NvCast (v2i32 FPR64:$src))), (v2i32 FPR64:$src)>;
5333 def : Pat<(v2f32 (AArch64NvCast (v2i32 FPR64:$src))), (v2f32 FPR64:$src)>;
5334 def : Pat<(v1i64 (AArch64NvCast (v2i32 FPR64:$src))), (v1i64 FPR64:$src)>;
5336 def : Pat<(v8i8 (AArch64NvCast (v4i16 FPR64:$src))), (v8i8 FPR64:$src)>;
5337 def : Pat<(v4i16 (AArch64NvCast (v4i16 FPR64:$src))), (v4i16 FPR64:$src)>;
5338 def : Pat<(v4f16 (AArch64NvCast (v4i16 FPR64:$src))), (v4f16 FPR64:$src)>;
5339 def : Pat<(v2i32 (AArch64NvCast (v4i16 FPR64:$src))), (v2i32 FPR64:$src)>;
5340 def : Pat<(v1i64 (AArch64NvCast (v4i16 FPR64:$src))), (v1i64 FPR64:$src)>;
5342 def : Pat<(v8i8 (AArch64NvCast (v8i8 FPR64:$src))), (v8i8 FPR64:$src)>;
5343 def : Pat<(v4i16 (AArch64NvCast (v8i8 FPR64:$src))), (v4i16 FPR64:$src)>;
5344 def : Pat<(v4f16 (AArch64NvCast (v8i8 FPR64:$src))), (v4f16 FPR64:$src)>;
5345 def : Pat<(v2i32 (AArch64NvCast (v8i8 FPR64:$src))), (v2i32 FPR64:$src)>;
5346 def : Pat<(v1i64 (AArch64NvCast (v8i8 FPR64:$src))), (v1i64 FPR64:$src)>;
5348 def : Pat<(v8i8 (AArch64NvCast (f64 FPR64:$src))), (v8i8 FPR64:$src)>;
5349 def : Pat<(v4i16 (AArch64NvCast (f64 FPR64:$src))), (v4i16 FPR64:$src)>;
5350 def : Pat<(v4f16 (AArch64NvCast (f64 FPR64:$src))), (v4f16 FPR64:$src)>;
5351 def : Pat<(v2i32 (AArch64NvCast (f64 FPR64:$src))), (v2i32 FPR64:$src)>;
5352 def : Pat<(v2f32 (AArch64NvCast (f64 FPR64:$src))), (v2f32 FPR64:$src)>;
5353 def : Pat<(v1i64 (AArch64NvCast (f64 FPR64:$src))), (v1i64 FPR64:$src)>;
5354 def : Pat<(v1f64 (AArch64NvCast (f64 FPR64:$src))), (v1f64 FPR64:$src)>;
5356 def : Pat<(v8i8 (AArch64NvCast (v2f32 FPR64:$src))), (v8i8 FPR64:$src)>;
5357 def : Pat<(v4i16 (AArch64NvCast (v2f32 FPR64:$src))), (v4i16 FPR64:$src)>;
5358 def : Pat<(v2i32 (AArch64NvCast (v2f32 FPR64:$src))), (v2i32 FPR64:$src)>;
5359 def : Pat<(v2f32 (AArch64NvCast (v2f32 FPR64:$src))), (v2f32 FPR64:$src)>;
5360 def : Pat<(v1i64 (AArch64NvCast (v2f32 FPR64:$src))), (v1i64 FPR64:$src)>;
5363 def : Pat<(v16i8 (AArch64NvCast (v4i32 FPR128:$src))), (v16i8 FPR128:$src)>;
5364 def : Pat<(v8i16 (AArch64NvCast (v4i32 FPR128:$src))), (v8i16 FPR128:$src)>;
5365 def : Pat<(v8f16 (AArch64NvCast (v4i32 FPR128:$src))), (v8f16 FPR128:$src)>;
5366 def : Pat<(v4i32 (AArch64NvCast (v4i32 FPR128:$src))), (v4i32 FPR128:$src)>;
5367 def : Pat<(v4f32 (AArch64NvCast (v4i32 FPR128:$src))), (v4f32 FPR128:$src)>;
5368 def : Pat<(v2i64 (AArch64NvCast (v4i32 FPR128:$src))), (v2i64 FPR128:$src)>;
5369 def : Pat<(v2f64 (AArch64NvCast (v4i32 FPR128:$src))), (v2f64 FPR128:$src)>;
5371 def : Pat<(v16i8 (AArch64NvCast (v8i16 FPR128:$src))), (v16i8 FPR128:$src)>;
5372 def : Pat<(v8i16 (AArch64NvCast (v8i16 FPR128:$src))), (v8i16 FPR128:$src)>;
5373 def : Pat<(v8f16 (AArch64NvCast (v8i16 FPR128:$src))), (v8f16 FPR128:$src)>;
5374 def : Pat<(v4i32 (AArch64NvCast (v8i16 FPR128:$src))), (v4i32 FPR128:$src)>;
5375 def : Pat<(v2i64 (AArch64NvCast (v8i16 FPR128:$src))), (v2i64 FPR128:$src)>;
5376 def : Pat<(v4f32 (AArch64NvCast (v8i16 FPR128:$src))), (v4f32 FPR128:$src)>;
5377 def : Pat<(v2f64 (AArch64NvCast (v8i16 FPR128:$src))), (v2f64 FPR128:$src)>;
5379 def : Pat<(v16i8 (AArch64NvCast (v16i8 FPR128:$src))), (v16i8 FPR128:$src)>;
5380 def : Pat<(v8i16 (AArch64NvCast (v16i8 FPR128:$src))), (v8i16 FPR128:$src)>;
5381 def : Pat<(v8f16 (AArch64NvCast (v16i8 FPR128:$src))), (v8f16 FPR128:$src)>;
5382 def : Pat<(v4i32 (AArch64NvCast (v16i8 FPR128:$src))), (v4i32 FPR128:$src)>;
5383 def : Pat<(v2i64 (AArch64NvCast (v16i8 FPR128:$src))), (v2i64 FPR128:$src)>;
5384 def : Pat<(v4f32 (AArch64NvCast (v16i8 FPR128:$src))), (v4f32 FPR128:$src)>;
5385 def : Pat<(v2f64 (AArch64NvCast (v16i8 FPR128:$src))), (v2f64 FPR128:$src)>;
5387 def : Pat<(v16i8 (AArch64NvCast (v2i64 FPR128:$src))), (v16i8 FPR128:$src)>;
5388 def : Pat<(v8i16 (AArch64NvCast (v2i64 FPR128:$src))), (v8i16 FPR128:$src)>;
5389 def : Pat<(v8f16 (AArch64NvCast (v2i64 FPR128:$src))), (v8f16 FPR128:$src)>;
5390 def : Pat<(v4i32 (AArch64NvCast (v2i64 FPR128:$src))), (v4i32 FPR128:$src)>;
5391 def : Pat<(v2i64 (AArch64NvCast (v2i64 FPR128:$src))), (v2i64 FPR128:$src)>;
5392 def : Pat<(v4f32 (AArch64NvCast (v2i64 FPR128:$src))), (v4f32 FPR128:$src)>;
5393 def : Pat<(v2f64 (AArch64NvCast (v2i64 FPR128:$src))), (v2f64 FPR128:$src)>;
5395 def : Pat<(v16i8 (AArch64NvCast (v4f32 FPR128:$src))), (v16i8 FPR128:$src)>;
5396 def : Pat<(v8i16 (AArch64NvCast (v4f32 FPR128:$src))), (v8i16 FPR128:$src)>;
5397 def : Pat<(v4i32 (AArch64NvCast (v4f32 FPR128:$src))), (v4i32 FPR128:$src)>;
5398 def : Pat<(v4f32 (AArch64NvCast (v4f32 FPR128:$src))), (v4f32 FPR128:$src)>;
5399 def : Pat<(v2i64 (AArch64NvCast (v4f32 FPR128:$src))), (v2i64 FPR128:$src)>;
5400 def : Pat<(v8f16 (AArch64NvCast (v4f32 FPR128:$src))), (v8f16 FPR128:$src)>;
5401 def : Pat<(v2f64 (AArch64NvCast (v4f32 FPR128:$src))), (v2f64 FPR128:$src)>;
5403 def : Pat<(v16i8 (AArch64NvCast (v2f64 FPR128:$src))), (v16i8 FPR128:$src)>;
5404 def : Pat<(v8i16 (AArch64NvCast (v2f64 FPR128:$src))), (v8i16 FPR128:$src)>;
5405 def : Pat<(v4i32 (AArch64NvCast (v2f64 FPR128:$src))), (v4i32 FPR128:$src)>;
5406 def : Pat<(v2i64 (AArch64NvCast (v2f64 FPR128:$src))), (v2i64 FPR128:$src)>;
5407 def : Pat<(v2f64 (AArch64NvCast (v2f64 FPR128:$src))), (v2f64 FPR128:$src)>;
5408 def : Pat<(v8f16 (AArch64NvCast (v2f64 FPR128:$src))), (v8f16 FPR128:$src)>;
5409 def : Pat<(v4f32 (AArch64NvCast (v2f64 FPR128:$src))), (v4f32 FPR128:$src)>;
5412 def : Pat<(v8i8 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5413 def : Pat<(v4i16 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5414 def : Pat<(v2i32 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5415 def : Pat<(v4f16 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5416 def : Pat<(v2f32 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5418 def : Pat<(i64 (bitconvert (v8i8 V64:$Vn))),
5420 def : Pat<(i64 (bitconvert (v4i16 V64:$Vn))),
5422 def : Pat<(i64 (bitconvert (v2i32 V64:$Vn))),
5424 def : Pat<(i64 (bitconvert (v4f16 V64:$Vn))),
5426 def : Pat<(i64 (bitconvert (v2f32 V64:$Vn))),
5428 def : Pat<(i64 (bitconvert (v1f64 V64:$Vn))),
5432 def : Pat<(v8i8 (bitconvert GPR64:$Xn)),
5434 def : Pat<(v4i16 (bitconvert GPR64:$Xn)),
5436 def : Pat<(v2i32 (bitconvert GPR64:$Xn)),
5438 def : Pat<(v4f16 (bitconvert GPR64:$Xn)),
5440 def : Pat<(v2f32 (bitconvert GPR64:$Xn)),
5443 def : Pat<(i64 (bitconvert (v8i8 V64:$Vn))),
5445 def : Pat<(i64 (bitconvert (v4i16 V64:$Vn))),
5447 def : Pat<(i64 (bitconvert (v2i32 V64:$Vn))),
5449 def : Pat<(i64 (bitconvert (v4f16 V64:$Vn))),
5451 def : Pat<(i64 (bitconvert (v2f32 V64:$Vn))),
5454 def : Pat<(v1i64 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5455 def : Pat<(v1f64 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS GPR64:$Xn, FPR64)>;
5456 def : Pat<(i64 (bitconvert (v1i64 V64:$Vn))),
5458 def : Pat<(v1i64 (scalar_to_vector GPR64:$Xn)),
5460 def : Pat<(v1f64 (scalar_to_vector GPR64:$Xn)),
5462 def : Pat<(v1f64 (scalar_to_vector (f64 FPR64:$Xn))), (v1f64 FPR64:$Xn)>;
5464 def : Pat<(f32 (bitconvert (i32 GPR32:$Xn))),
5466 def : Pat<(i32 (bitconvert (f32 FPR32:$Xn))),
5468 def : Pat<(f64 (bitconvert (i64 GPR64:$Xn))),
5470 def : Pat<(i64 (bitconvert (f64 FPR64:$Xn))),
5472 def : Pat<(i64 (bitconvert (v1f64 V64:$Vn))),
5476 def : Pat<(v1i64 (bitconvert (v2i32 FPR64:$src))), (v1i64 FPR64:$src)>;
5477 def : Pat<(v1i64 (bitconvert (v4i16 FPR64:$src))), (v1i64 FPR64:$src)>;
5478 def : Pat<(v1i64 (bitconvert (v8i8 FPR64:$src))), (v1i64 FPR64:$src)>;
5479 def : Pat<(v1i64 (bitconvert (v4f16 FPR64:$src))), (v1i64 FPR64:$src)>;
5480 def : Pat<(v1i64 (bitconvert (v2f32 FPR64:$src))), (v1i64 FPR64:$src)>;
5483 def : Pat<(v1i64 (bitconvert (v2i32 FPR64:$src))),
5485 def : Pat<(v1i64 (bitconvert (v4i16 FPR64:$src))),
5487 def : Pat<(v1i64 (bitconvert (v8i8 FPR64:$src))),
5489 def : Pat<(v1i64 (bitconvert (v4f16 FPR64:$src))),
5491 def : Pat<(v1i64 (bitconvert (v2f32 FPR64:$src))),
5494 def : Pat<(v1i64 (bitconvert (v1f64 FPR64:$src))), (v1i64 FPR64:$src)>;
5495 def : Pat<(v1i64 (bitconvert (f64 FPR64:$src))), (v1i64 FPR64:$src)>;
5498 def : Pat<(v2i32 (bitconvert (v1i64 FPR64:$src))), (v2i32 FPR64:$src)>;
5499 def : Pat<(v2i32 (bitconvert (v4i16 FPR64:$src))), (v2i32 FPR64:$src)>;
5500 def : Pat<(v2i32 (bitconvert (v8i8 FPR64:$src))), (v2i32 FPR64:$src)>;
5501 def : Pat<(v2i32 (bitconvert (f64 FPR64:$src))), (v2i32 FPR64:$src)>;
5502 def : Pat<(v2i32 (bitconvert (v1f64 FPR64:$src))), (v2i32 FPR64:$src)>;
5503 def : Pat<(v2i32 (bitconvert (v4f16 FPR64:$src))), (v2i32 FPR64:$src)>;
5506 def : Pat<(v2i32 (bitconvert (v1i64 FPR64:$src))),
5508 def : Pat<(v2i32 (bitconvert (v4i16 FPR64:$src))),
5510 def : Pat<(v2i32 (bitconvert (v8i8 FPR64:$src))),
5512 def : Pat<(v2i32 (bitconvert (f64 FPR64:$src))),
5514 def : Pat<(v2i32 (bitconvert (v1f64 FPR64:$src))),
5516 def : Pat<(v2i32 (bitconvert (v4f16 FPR64:$src))),
5519 def : Pat<(v2i32 (bitconvert (v2f32 FPR64:$src))), (v2i32 FPR64:$src)>;
5522 def : Pat<(v4i16 (bitconvert (v1i64 FPR64:$src))), (v4i16 FPR64:$src)>;
5523 def : Pat<(v4i16 (bitconvert (v2i32 FPR64:$src))), (v4i16 FPR64:$src)>;
5524 def : Pat<(v4i16 (bitconvert (v8i8 FPR64:$src))), (v4i16 FPR64:$src)>;
5525 def : Pat<(v4i16 (bitconvert (f64 FPR64:$src))), (v4i16 FPR64:$src)>;
5526 def : Pat<(v4i16 (bitconvert (v4f16 FPR64:$src))), (v4i16 FPR64:$src)>;
5527 def : Pat<(v4i16 (bitconvert (v2f32 FPR64:$src))), (v4i16 FPR64:$src)>;
5528 def : Pat<(v4i16 (bitconvert (v1f64 FPR64:$src))), (v4i16 FPR64:$src)>;
5531 def : Pat<(v4i16 (bitconvert (v1i64 FPR64:$src))),
5533 def : Pat<(v4i16 (bitconvert (v2i32 FPR64:$src))),
5535 def : Pat<(v4i16 (bitconvert (v8i8 FPR64:$src))),
5537 def : Pat<(v4i16 (bitconvert (f64 FPR64:$src))),
5539 def : Pat<(v4i16 (bitconvert (v4f16 FPR64:$src))),
5541 def : Pat<(v4i16 (bitconvert (v2f32 FPR64:$src))),
5543 def : Pat<(v4i16 (bitconvert (v1f64 FPR64:$src))),
5548 def : Pat<(v4f16 (bitconvert (v1i64 FPR64:$src))), (v4f16 FPR64:$src)>;
5549 def : Pat<(v4f16 (bitconvert (v2i32 FPR64:$src))), (v4f16 FPR64:$src)>;
5550 def : Pat<(v4f16 (bitconvert (v4i16 FPR64:$src))), (v4f16 FPR64:$src)>;
5551 def : Pat<(v4f16 (bitconvert (v8i8 FPR64:$src))), (v4f16 FPR64:$src)>;
5552 def : Pat<(v4f16 (bitconvert (f64 FPR64:$src))), (v4f16 FPR64:$src)>;
5553 def : Pat<(v4f16 (bitconvert (v2f32 FPR64:$src))), (v4f16 FPR64:$src)>;
5554 def : Pat<(v4f16 (bitconvert (v1f64 FPR64:$src))), (v4f16 FPR64:$src)>;
5557 def : Pat<(v4f16 (bitconvert (v1i64 FPR64:$src))),
5559 def : Pat<(v4f16 (bitconvert (v2i32 FPR64:$src))),
5561 def : Pat<(v4f16 (bitconvert (v4i16 FPR64:$src))),
5563 def : Pat<(v4f16 (bitconvert (v8i8 FPR64:$src))),
5565 def : Pat<(v4f16 (bitconvert (f64 FPR64:$src))),
5567 def : Pat<(v4f16 (bitconvert (v2f32 FPR64:$src))),
5569 def : Pat<(v4f16 (bitconvert (v1f64 FPR64:$src))),
5576 def : Pat<(v8i8 (bitconvert (v1i64 FPR64:$src))), (v8i8 FPR64:$src)>;
5577 def : Pat<(v8i8 (bitconvert (v2i32 FPR64:$src))), (v8i8 FPR64:$src)>;
5578 def : Pat<(v8i8 (bitconvert (v4i16 FPR64:$src))), (v8i8 FPR64:$src)>;
5579 def : Pat<(v8i8 (bitconvert (f64 FPR64:$src))), (v8i8 FPR64:$src)>;
5580 def : Pat<(v8i8 (bitconvert (v2f32 FPR64:$src))), (v8i8 FPR64:$src)>;
5581 def : Pat<(v8i8 (bitconvert (v1f64 FPR64:$src))), (v8i8 FPR64:$src)>;
5582 def : Pat<(v8i8 (bitconvert (v4f16 FPR64:$src))), (v8i8 FPR64:$src)>;
5585 def : Pat<(v8i8 (bitconvert (v1i64 FPR64:$src))),
5587 def : Pat<(v8i8 (bitconvert (v2i32 FPR64:$src))),
5589 def : Pat<(v8i8 (bitconvert (v4i16 FPR64:$src))),
5591 def : Pat<(v8i8 (bitconvert (f64 FPR64:$src))),
5593 def : Pat<(v8i8 (bitconvert (v2f32 FPR64:$src))),
5595 def : Pat<(v8i8 (bitconvert (v1f64 FPR64:$src))),
5597 def : Pat<(v8i8 (bitconvert (v4f16 FPR64:$src))),
5602 def : Pat<(f64 (bitconvert (v2i32 FPR64:$src))), (f64 FPR64:$src)>;
5603 def : Pat<(f64 (bitconvert (v4i16 FPR64:$src))), (f64 FPR64:$src)>;
5604 def : Pat<(f64 (bitconvert (v2f32 FPR64:$src))), (f64 FPR64:$src)>;
5605 def : Pat<(f64 (bitconvert (v8i8 FPR64:$src))), (f64 FPR64:$src)>;
5606 def : Pat<(f64 (bitconvert (v4f16 FPR64:$src))), (f64 FPR64:$src)>;
5609 def : Pat<(f64 (bitconvert (v2i32 FPR64:$src))),
5611 def : Pat<(f64 (bitconvert (v4i16 FPR64:$src))),
5613 def : Pat<(f64 (bitconvert (v2f32 FPR64:$src))),
5615 def : Pat<(f64 (bitconvert (v8i8 FPR64:$src))),
5617 def : Pat<(f64 (bitconvert (v4f16 FPR64:$src))),
5620 def : Pat<(f64 (bitconvert (v1i64 FPR64:$src))), (f64 FPR64:$src)>;
5621 def : Pat<(f64 (bitconvert (v1f64 FPR64:$src))), (f64 FPR64:$src)>;
5624 def : Pat<(v1f64 (bitconvert (v2i32 FPR64:$src))), (v1f64 FPR64:$src)>;
5625 def : Pat<(v1f64 (bitconvert (v4i16 FPR64:$src))), (v1f64 FPR64:$src)>;
5626 def : Pat<(v1f64 (bitconvert (v8i8 FPR64:$src))), (v1f64 FPR64:$src)>;
5627 def : Pat<(v1f64 (bitconvert (v2f32 FPR64:$src))), (v1f64 FPR64:$src)>;
5628 def : Pat<(v1f64 (bitconvert (v4f16 FPR64:$src))), (v1f64 FPR64:$src)>;
5631 def : Pat<(v1f64 (bitconvert (v2i32 FPR64:$src))),
5633 def : Pat<(v1f64 (bitconvert (v4i16 FPR64:$src))),
5635 def : Pat<(v1f64 (bitconvert (v8i8 FPR64:$src))),
5637 def : Pat<(v1f64 (bitconvert (v2f32 FPR64:$src))),
5639 def : Pat<(v1f64 (bitconvert (v4f16 FPR64:$src))),
5642 def : Pat<(v1f64 (bitconvert (v1i64 FPR64:$src))), (v1f64 FPR64:$src)>;
5643 def : Pat<(v1f64 (bitconvert (f64 FPR64:$src))), (v1f64 FPR64:$src)>;
5646 def : Pat<(v2f32 (bitconvert (v1i64 FPR64:$src))), (v2f32 FPR64:$src)>;
5647 def : Pat<(v2f32 (bitconvert (v4i16 FPR64:$src))), (v2f32 FPR64:$src)>;
5648 def : Pat<(v2f32 (bitconvert (v8i8 FPR64:$src))), (v2f32 FPR64:$src)>;
5649 def : Pat<(v2f32 (bitconvert (v1f64 FPR64:$src))), (v2f32 FPR64:$src)>;
5650 def : Pat<(v2f32 (bitconvert (f64 FPR64:$src))), (v2f32 FPR64:$src)>;
5651 def : Pat<(v2f32 (bitconvert (v4f16 FPR64:$src))), (v2f32 FPR64:$src)>;
5654 def : Pat<(v2f32 (bitconvert (v1i64 FPR64:$src))),
5656 def : Pat<(v2f32 (bitconvert (v4i16 FPR64:$src))),
5658 def : Pat<(v2f32 (bitconvert (v8i8 FPR64:$src))),
5660 def : Pat<(v2f32 (bitconvert (v1f64 FPR64:$src))),
5662 def : Pat<(v2f32 (bitconvert (f64 FPR64:$src))),
5664 def : Pat<(v2f32 (bitconvert (v4f16 FPR64:$src))),
5667 def : Pat<(v2f32 (bitconvert (v2i32 FPR64:$src))), (v2f32 FPR64:$src)>;
5670 def : Pat<(f128 (bitconvert (v2i64 FPR128:$src))), (f128 FPR128:$src)>;
5671 def : Pat<(f128 (bitconvert (v4i32 FPR128:$src))), (f128 FPR128:$src)>;
5672 def : Pat<(f128 (bitconvert (v8i16 FPR128:$src))), (f128 FPR128:$src)>;
5673 def : Pat<(f128 (bitconvert (v2f64 FPR128:$src))), (f128 FPR128:$src)>;
5674 def : Pat<(f128 (bitconvert (v4f32 FPR128:$src))), (f128 FPR128:$src)>;
5675 def : Pat<(f128 (bitconvert (v8f16 FPR128:$src))), (f128 FPR128:$src)>;
5676 def : Pat<(f128 (bitconvert (v16i8 FPR128:$src))), (f128 FPR128:$src)>;
5679 def : Pat<(f128 (bitconvert (v2i64 FPR128:$src))),
5681 def : Pat<(f128 (bitconvert (v4i32 FPR128:$src))),
5684 def : Pat<(f128 (bitconvert (v8i16 FPR128:$src))),
5687 def : Pat<(f128 (bitconvert (v8f16 FPR128:$src))),
5690 def : Pat<(f128 (bitconvert (v2f64 FPR128:$src))),
5692 def : Pat<(f128 (bitconvert (v4f32 FPR128:$src))),
5695 def : Pat<(f128 (bitconvert (v16i8 FPR128:$src))),
5701 def : Pat<(v2f64 (bitconvert (f128 FPR128:$src))), (v2f64 FPR128:$src)>;
5702 def : Pat<(v2f64 (bitconvert (v4i32 FPR128:$src))), (v2f64 FPR128:$src)>;
5703 def : Pat<(v2f64 (bitconvert (v8i16 FPR128:$src))), (v2f64 FPR128:$src)>;
5704 def : Pat<(v2f64 (bitconvert (v8f16 FPR128:$src))), (v2f64 FPR128:$src)>;
5705 def : Pat<(v2f64 (bitconvert (v16i8 FPR128:$src))), (v2f64 FPR128:$src)>;
5706 def : Pat<(v2f64 (bitconvert (v4f32 FPR128:$src))), (v2f64 FPR128:$src)>;
5709 def : Pat<(v2f64 (bitconvert (f128 FPR128:$src))),
5712 def : Pat<(v2f64 (bitconvert (v4i32 FPR128:$src))),
5714 def : Pat<(v2f64 (bitconvert (v8i16 FPR128:$src))),
5716 def : Pat<(v2f64 (bitconvert (v8f16 FPR128:$src))),
5718 def : Pat<(v2f64 (bitconvert (v16i8 FPR128:$src))),
5720 def : Pat<(v2f64 (bitconvert (v4f32 FPR128:$src))),
5723 def : Pat<(v2f64 (bitconvert (v2i64 FPR128:$src))), (v2f64 FPR128:$src)>;
5726 def : Pat<(v4f32 (bitconvert (f128 FPR128:$src))), (v4f32 FPR128:$src)>;
5727 def : Pat<(v4f32 (bitconvert (v8i16 FPR128:$src))), (v4f32 FPR128:$src)>;
5728 def : Pat<(v4f32 (bitconvert (v8f16 FPR128:$src))), (v4f32 FPR128:$src)>;
5729 def : Pat<(v4f32 (bitconvert (v16i8 FPR128:$src))), (v4f32 FPR128:$src)>;
5730 def : Pat<(v4f32 (bitconvert (v2i64 FPR128:$src))), (v4f32 FPR128:$src)>;
5731 def : Pat<(v4f32 (bitconvert (v2f64 FPR128:$src))), (v4f32 FPR128:$src)>;
5734 def : Pat<(v4f32 (bitconvert (f128 FPR128:$src))),
5737 def : Pat<(v4f32 (bitconvert (v8i16 FPR128:$src))),
5739 def : Pat<(v4f32 (bitconvert (v8f16 FPR128:$src))),
5741 def : Pat<(v4f32 (bitconvert (v16i8 FPR128:$src))),
5743 def : Pat<(v4f32 (bitconvert (v2i64 FPR128:$src))),
5745 def : Pat<(v4f32 (bitconvert (v2f64 FPR128:$src))),
5748 def : Pat<(v4f32 (bitconvert (v4i32 FPR128:$src))), (v4f32 FPR128:$src)>;
5751 def : Pat<(v2i64 (bitconvert (f128 FPR128:$src))), (v2i64 FPR128:$src)>;
5752 def : Pat<(v2i64 (bitconvert (v4i32 FPR128:$src))), (v2i64 FPR128:$src)>;
5753 def : Pat<(v2i64 (bitconvert (v8i16 FPR128:$src))), (v2i64 FPR128:$src)>;
5754 def : Pat<(v2i64 (bitconvert (v16i8 FPR128:$src))), (v2i64 FPR128:$src)>;
5755 def : Pat<(v2i64 (bitconvert (v4f32 FPR128:$src))), (v2i64 FPR128:$src)>;
5756 def : Pat<(v2i64 (bitconvert (v8f16 FPR128:$src))), (v2i64 FPR128:$src)>;
5759 def : Pat<(v2i64 (bitconvert (f128 FPR128:$src))),
5762 def : Pat<(v2i64 (bitconvert (v4i32 FPR128:$src))),
5764 def : Pat<(v2i64 (bitconvert (v8i16 FPR128:$src))),
5766 def : Pat<(v2i64 (bitconvert (v16i8 FPR128:$src))),
5768 def : Pat<(v2i64 (bitconvert (v4f32 FPR128:$src))),
5770 def : Pat<(v2i64 (bitconvert (v8f16 FPR128:$src))),
5773 def : Pat<(v2i64 (bitconvert (v2f64 FPR128:$src))), (v2i64 FPR128:$src)>;
5776 def : Pat<(v4i32 (bitconvert (f128 FPR128:$src))), (v4i32 FPR128:$src)>;
5777 def : Pat<(v4i32 (bitconvert (v2i64 FPR128:$src))), (v4i32 FPR128:$src)>;
5778 def : Pat<(v4i32 (bitconvert (v8i16 FPR128:$src))), (v4i32 FPR128:$src)>;
5779 def : Pat<(v4i32 (bitconvert (v16i8 FPR128:$src))), (v4i32 FPR128:$src)>;
5780 def : Pat<(v4i32 (bitconvert (v2f64 FPR128:$src))), (v4i32 FPR128:$src)>;
5781 def : Pat<(v4i32 (bitconvert (v8f16 FPR128:$src))), (v4i32 FPR128:$src)>;
5784 def : Pat<(v4i32 (bitconvert (f128 FPR128:$src))),
5788 def : Pat<(v4i32 (bitconvert (v2i64 FPR128:$src))),
5790 def : Pat<(v4i32 (bitconvert (v8i16 FPR128:$src))),
5792 def : Pat<(v4i32 (bitconvert (v16i8 FPR128:$src))),
5794 def : Pat<(v4i32 (bitconvert (v2f64 FPR128:$src))),
5796 def : Pat<(v4i32 (bitconvert (v8f16 FPR128:$src))),
5799 def : Pat<(v4i32 (bitconvert (v4f32 FPR128:$src))), (v4i32 FPR128:$src)>;
5802 def : Pat<(v8i16 (bitconvert (f128 FPR128:$src))), (v8i16 FPR128:$src)>;
5803 def : Pat<(v8i16 (bitconvert (v2i64 FPR128:$src))), (v8i16 FPR128:$src)>;
5804 def : Pat<(v8i16 (bitconvert (v4i32 FPR128:$src))), (v8i16 FPR128:$src)>;
5805 def : Pat<(v8i16 (bitconvert (v16i8 FPR128:$src))), (v8i16 FPR128:$src)>;
5806 def : Pat<(v8i16 (bitconvert (v2f64 FPR128:$src))), (v8i16 FPR128:$src)>;
5807 def : Pat<(v8i16 (bitconvert (v4f32 FPR128:$src))), (v8i16 FPR128:$src)>;
5808 def : Pat<(v8i16 (bitconvert (v8f16 FPR128:$src))), (v8i16 FPR128:$src)>;
5811 def : Pat<(v8i16 (bitconvert (f128 FPR128:$src))),
5815 def : Pat<(v8i16 (bitconvert (v2i64 FPR128:$src))),
5817 def : Pat<(v8i16 (bitconvert (v4i32 FPR128:$src))),
5819 def : Pat<(v8i16 (bitconvert (v16i8 FPR128:$src))),
5821 def : Pat<(v8i16 (bitconvert (v2f64 FPR128:$src))),
5823 def : Pat<(v8i16 (bitconvert (v4f32 FPR128:$src))),
5825 def : Pat<(v8i16 (bitconvert (v8f16 FPR128:$src))),
5830 def : Pat<(v8f16 (bitconvert (f128 FPR128:$src))), (v8f16 FPR128:$src)>;
5831 def : Pat<(v8f16 (bitconvert (v2i64 FPR128:$src))), (v8f16 FPR128:$src)>;
5832 def : Pat<(v8f16 (bitconvert (v4i32 FPR128:$src))), (v8f16 FPR128:$src)>;
5833 def : Pat<(v8f16 (bitconvert (v8i16 FPR128:$src))), (v8f16 FPR128:$src)>;
5834 def : Pat<(v8f16 (bitconvert (v16i8 FPR128:$src))), (v8f16 FPR128:$src)>;
5835 def : Pat<(v8f16 (bitconvert (v2f64 FPR128:$src))), (v8f16 FPR128:$src)>;
5836 def : Pat<(v8f16 (bitconvert (v4f32 FPR128:$src))), (v8f16 FPR128:$src)>;
5839 def : Pat<(v8f16 (bitconvert (f128 FPR128:$src))),
5843 def : Pat<(v8f16 (bitconvert (v2i64 FPR128:$src))),
5845 def : Pat<(v8f16 (bitconvert (v4i32 FPR128:$src))),
5847 def : Pat<(v8f16 (bitconvert (v8i16 FPR128:$src))),
5849 def : Pat<(v8f16 (bitconvert (v16i8 FPR128:$src))),
5851 def : Pat<(v8f16 (bitconvert (v2f64 FPR128:$src))),
5853 def : Pat<(v8f16 (bitconvert (v4f32 FPR128:$src))),
5858 def : Pat<(v16i8 (bitconvert (f128 FPR128:$src))), (v16i8 FPR128:$src)>;
5859 def : Pat<(v16i8 (bitconvert (v2i64 FPR128:$src))), (v16i8 FPR128:$src)>;
5860 def : Pat<(v16i8 (bitconvert (v4i32 FPR128:$src))), (v16i8 FPR128:$src)>;
5861 def : Pat<(v16i8 (bitconvert (v8i16 FPR128:$src))), (v16i8 FPR128:$src)>;
5862 def : Pat<(v16i8 (bitconvert (v2f64 FPR128:$src))), (v16i8 FPR128:$src)>;
5863 def : Pat<(v16i8 (bitconvert (v4f32 FPR128:$src))), (v16i8 FPR128:$src)>;
5864 def : Pat<(v16i8 (bitconvert (v8f16 FPR128:$src))), (v16i8 FPR128:$src)>;
5867 def : Pat<(v16i8 (bitconvert (f128 FPR128:$src))),
5871 def : Pat<(v16i8 (bitconvert (v2i64 FPR128:$src))),
5873 def : Pat<(v16i8 (bitconvert (v4i32 FPR128:$src))),
5875 def : Pat<(v16i8 (bitconvert (v8i16 FPR128:$src))),
5877 def : Pat<(v16i8 (bitconvert (v2f64 FPR128:$src))),
5879 def : Pat<(v16i8 (bitconvert (v4f32 FPR128:$src))),
5881 def : Pat<(v16i8 (bitconvert (v8f16 FPR128:$src))),
5885 def : Pat<(v4i16 (extract_subvector V128:$Rn, (i64 0))),
5887 def : Pat<(v8i8 (extract_subvector V128:$Rn, (i64 0))),
5889 def : Pat<(v2f32 (extract_subvector V128:$Rn, (i64 0))),
5891 def : Pat<(v4f16 (extract_subvector V128:$Rn, (i64 0))),
5893 def : Pat<(v2i32 (extract_subvector V128:$Rn, (i64 0))),
5895 def : Pat<(v1i64 (extract_subvector V128:$Rn, (i64 0))),
5897 def : Pat<(v1f64 (extract_subvector V128:$Rn, (i64 0))),
5900 def : Pat<(v8i8 (extract_subvector (v16i8 FPR128:$Rn), (i64 1))),
5902 def : Pat<(v4i16 (extract_subvector (v8i16 FPR128:$Rn), (i64 1))),
5904 def : Pat<(v2i32 (extract_subvector (v4i32 FPR128:$Rn), (i64 1))),
5906 def : Pat<(v1i64 (extract_subvector (v2i64 FPR128:$Rn), (i64 1))),
5911 def : Pat<(insert_subvector undef, (v1i64 FPR64:$src), (i32 0)),
5913 def : Pat<(insert_subvector undef, (v1f64 FPR64:$src), (i32 0)),
5915 def : Pat<(insert_subvector undef, (v2i32 FPR64:$src), (i32 0)),
5917 def : Pat<(insert_subvector undef, (v2f32 FPR64:$src), (i32 0)),
5919 def : Pat<(insert_subvector undef, (v4i16 FPR64:$src), (i32 0)),
5921 def : Pat<(insert_subvector undef, (v4f16 FPR64:$src), (i32 0)),
5923 def : Pat<(insert_subvector undef, (v8i8 FPR64:$src), (i32 0)),
5928 def : Pat<(i64 (add (vector_extract (v2i64 FPR128:$Rn), (i64 0)),
5931 def : Pat<(f64 (fadd (vector_extract (v2f64 FPR128:$Rn), (i64 0)),
5937 def : Pat<(fadd (vector_extract (v4f32 FPR128:$Rn), (i64 0)),
5942 def : Pat<(i64 (int_aarch64_neon_sshl (i64 FPR64:$Rn), (i64 FPR64:$Rm))),
5944 def : Pat<(i64 (int_aarch64_neon_ushl (i64 FPR64:$Rn), (i64 FPR64:$Rm))),
5946 def : Pat<(i64 (int_aarch64_neon_srshl (i64 FPR64:$Rn), (i64 FPR64:$Rm))),
5948 def : Pat<(i64 (int_aarch64_neon_urshl (i64 FPR64:$Rn), (i64 FPR64:$Rm))),
5957 Pat<(nontemporalstore (VT FPR128:$Rt),
5969 Pat<(nontemporalstore (VT FPR64:$Rt),
5982 def : Pat<(nontemporalstore GPR64:$Rt,
5997 def : Pat<(AArch64tcret tcGPR64:$dst, (i32 timm:$FPDiff)),
5999 def : Pat<(AArch64tcret tglobaladdr:$dst, (i32 timm:$FPDiff)),
6001 def : Pat<(AArch64tcret texternalsym:$dst, (i32 timm:$FPDiff)),