• Home
  • Raw
  • Download

Lines Matching refs:V128

2720                (v8i16 (add (sub (zext (extract_high_v16i8 V128:$opA)),
2721 (zext (extract_high_v16i8 V128:$opB))),
2723 (UABDLv16i8_v8i16 V128:$opA, V128:$opB)>;
2730 (v4i32 (add (sub (zext (extract_high_v8i16 V128:$opA)),
2731 (zext (extract_high_v8i16 V128:$opB))),
2733 (UABDLv8i16_v4i32 V128:$opA, V128:$opB)>;
2740 (v2i64 (add (sub (zext (extract_high_v4i32 V128:$opA)),
2741 (zext (extract_high_v4i32 V128:$opB))),
2743 (UABDLv4i32_v2i64 V128:$opA, V128:$opB)>;
2755 def : Pat<(xor (v16i8 (AArch64vashr V128:$src, (i32 7))),
2756 (v16i8 (add V128:$src, (AArch64vashr V128:$src, (i32 7))))),
2757 (ABSv16i8 V128:$src)>;
2758 def : Pat<(xor (v8i16 (AArch64vashr V128:$src, (i32 15))),
2759 (v8i16 (add V128:$src, (AArch64vashr V128:$src, (i32 15))))),
2760 (ABSv8i16 V128:$src)>;
2761 def : Pat<(xor (v4i32 (AArch64vashr V128:$src, (i32 31))),
2762 (v4i32 (add V128:$src, (AArch64vashr V128:$src, (i32 31))))),
2763 (ABSv4i32 V128:$src)>;
2764 def : Pat<(xor (v2i64 (AArch64vashr V128:$src, (i32 63))),
2765 (v2i64 (add V128:$src, (AArch64vashr V128:$src, (i32 63))))),
2766 (ABSv2i64 V128:$src)>;
2788 def : Pat<(v4f32 (int_aarch64_neon_vcvthf2fp (extract_subvector (v8i16 V128:$Rn),
2790 (FCVTLv8i16 V128:$Rn)>;
2792 def : Pat<(v2f64 (fextend (v2f32 (extract_subvector (v4f32 V128:$Rn),
2794 (FCVTLv4i32 V128:$Rn)>;
2797 def : Pat<(v4f32 (fextend (v4f16 (extract_subvector (v8f16 V128:$Rn),
2799 (FCVTLv8i16 V128:$Rn)>;
2806 def : Pat<(v4i16 (int_aarch64_neon_vcvtfp2hf (v4f32 V128:$Rn))),
2807 (FCVTNv4i16 V128:$Rn)>;
2809 (v4i16 (int_aarch64_neon_vcvtfp2hf (v4f32 V128:$Rn)))),
2810 (FCVTNv8i16 (INSERT_SUBREG (IMPLICIT_DEF), V64:$Rd, dsub), V128:$Rn)>;
2811 def : Pat<(v2f32 (fround (v2f64 V128:$Rn))), (FCVTNv2i32 V128:$Rn)>;
2812 def : Pat<(v4f16 (fround (v4f32 V128:$Rn))), (FCVTNv4i16 V128:$Rn)>;
2813 def : Pat<(concat_vectors V64:$Rd, (v2f32 (fround (v2f64 V128:$Rn)))),
2814 (FCVTNv4i32 (INSERT_SUBREG (IMPLICIT_DEF), V64:$Rd, dsub), V128:$Rn)>;
2852 (NOTv16i8 V128:$Vd, V128:$Vn)>;
2855 def : Pat<(AArch64neg (v16i8 V128:$Rn)), (NEGv16i8 V128:$Rn)>;
2857 def : Pat<(AArch64neg (v8i16 V128:$Rn)), (NEGv8i16 V128:$Rn)>;
2859 def : Pat<(AArch64neg (v4i32 V128:$Rn)), (NEGv4i32 V128:$Rn)>;
2860 def : Pat<(AArch64neg (v2i64 V128:$Rn)), (NEGv2i64 V128:$Rn)>;
2863 def : Pat<(AArch64not (v16i8 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2865 def : Pat<(AArch64not (v8i16 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2868 def : Pat<(AArch64not (v4i32 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2869 def : Pat<(AArch64not (v2i64 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2872 def : Pat<(vnot (v8i16 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2874 def : Pat<(vnot (v4i32 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2875 def : Pat<(vnot (v2i64 V128:$Rn)), (NOTv16i8 V128:$Rn)>;
2904 def : Pat<(v8f16 (AArch64rev32 V128:$Rn)), (REV32v8i16 V128:$Rn)>;
2905 def : Pat<(v8f16 (AArch64rev64 V128:$Rn)), (REV64v8i16 V128:$Rn)>;
2907 def : Pat<(v4f32 (AArch64rev64 V128:$Rn)), (REV64v4i32 V128:$Rn)>;
2915 def : Pat<(AArch64vshl (v8i16 (ext (extract_high_v16i8 V128:$Rn))), (i32 8)),
2916 (SHLLv16i8 V128:$Rn)>;
2919 def : Pat<(AArch64vshl (v4i32 (ext (extract_high_v8i16 V128:$Rn))), (i32 16)),
2920 (SHLLv8i16 V128:$Rn)>;
2923 def : Pat<(AArch64vshl (v2i64 (ext (extract_high_v4i32 V128:$Rn))), (i32 32)),
2924 (SHLLv4i32 V128:$Rn)>;
2973 def : Pat<(v4f32 (fma (fneg V128:$Rn), V128:$Rm, V128:$Rd)),
2974 (FMLSv4f32 V128:$Rd, V128:$Rn, V128:$Rm)>;
2976 def : Pat<(v2f64 (fma (fneg V128:$Rn), V128:$Rm, V128:$Rd)),
2977 (FMLSv2f64 V128:$Rd, V128:$Rn, V128:$Rm)>;
3052 def : Pat<(AArch64bsl (v16i8 V128:$Rd), V128:$Rn, V128:$Rm),
3053 (BSLv16i8 V128:$Rd, V128:$Rn, V128:$Rm)>;
3054 def : Pat<(AArch64bsl (v8i16 V128:$Rd), V128:$Rn, V128:$Rm),
3055 (BSLv16i8 V128:$Rd, V128:$Rn, V128:$Rm)>;
3056 def : Pat<(AArch64bsl (v4i32 V128:$Rd), V128:$Rn, V128:$Rm),
3057 (BSLv16i8 V128:$Rd, V128:$Rn, V128:$Rm)>;
3058 def : Pat<(AArch64bsl (v2i64 V128:$Rd), V128:$Rn, V128:$Rm),
3059 (BSLv16i8 V128:$Rd, V128:$Rn, V128:$Rm)>;
3062 (ORRv16i8 V128:$dst, V128:$src, V128:$src), 1>;
3064 (ORRv16i8 V128:$dst, V128:$src, V128:$src), 0>;
3066 (ORRv16i8 V128:$dst, V128:$src, V128:$src), 0>;
3068 (ORRv16i8 V128:$dst, V128:$src, V128:$src), 0>;
3084 (CMHSv16i8 V128:$dst, V128:$src2, V128:$src1), 0>;
3090 (CMHSv8i16 V128:$dst, V128:$src2, V128:$src1), 0>;
3096 (CMHSv4i32 V128:$dst, V128:$src2, V128:$src1), 0>;
3099 (CMHSv2i64 V128:$dst, V128:$src2, V128:$src1), 0>;
3106 (CMHIv16i8 V128:$dst, V128:$src2, V128:$src1), 0>;
3112 (CMHIv8i16 V128:$dst, V128:$src2, V128:$src1), 0>;
3118 (CMHIv4i32 V128:$dst, V128:$src2, V128:$src1), 0>;
3121 (CMHIv2i64 V128:$dst, V128:$src2, V128:$src1), 0>;
3128 (CMGEv16i8 V128:$dst, V128:$src2, V128:$src1), 0>;
3134 (CMGEv8i16 V128:$dst, V128:$src2, V128:$src1), 0>;
3140 (CMGEv4i32 V128:$dst, V128:$src2, V128:$src1), 0>;
3143 (CMGEv2i64 V128:$dst, V128:$src2, V128:$src1), 0>;
3150 (CMGTv16i8 V128:$dst, V128:$src2, V128:$src1), 0>;
3156 (CMGTv8i16 V128:$dst, V128:$src2, V128:$src1), 0>;
3162 (CMGTv4i32 V128:$dst, V128:$src2, V128:$src1), 0>;
3165 (CMGTv2i64 V128:$dst, V128:$src2, V128:$src1), 0>;
3173 (FCMGEv8f16 V128:$dst, V128:$src2, V128:$src1), 0>;
3180 (FCMGEv4f32 V128:$dst, V128:$src2, V128:$src1), 0>;
3183 (FCMGEv2f64 V128:$dst, V128:$src2, V128:$src1), 0>;
3191 (FCMGTv8f16 V128:$dst, V128:$src2, V128:$src1), 0>;
3198 (FCMGTv4f32 V128:$dst, V128:$src2, V128:$src1), 0>;
3201 (FCMGTv2f64 V128:$dst, V128:$src2, V128:$src1), 0>;
3209 (FACGEv8f16 V128:$dst, V128:$src2, V128:$src1), 0>;
3216 (FACGEv4f32 V128:$dst, V128:$src2, V128:$src1), 0>;
3219 (FACGEv2f64 V128:$dst, V128:$src2, V128:$src1), 0>;
3227 (FACGTv8f16 V128:$dst, V128:$src2, V128:$src1), 0>;
3234 (FACGTv4f32 V128:$dst, V128:$src2, V128:$src1), 0>;
3237 (FACGTv2f64 V128:$dst, V128:$src2, V128:$src1), 0>;
3596 def : Pat<(v8i16 (opnode (v8i16 V128:$Rd), (v8i8 V64:$Rn), (v8i8 V64:$Rm))),
3597 (INST8B V128:$Rd, V64:$Rn, V64:$Rm)>;
3598 def : Pat<(v4i32 (opnode (v4i32 V128:$Rd), (v4i16 V64:$Rn), (v4i16 V64:$Rm))),
3599 (INST4H V128:$Rd, V64:$Rn, V64:$Rm)>;
3600 def : Pat<(v2i64 (opnode (v2i64 V128:$Rd), (v2i32 V64:$Rn), (v2i32 V64:$Rm))),
3601 (INST2S V128:$Rd, V64:$Rn, V64:$Rm)>;
3620 def : Pat<(int_aarch64_neon_pmull64 (extractelt (v2i64 V128:$Rn), (i64 1)),
3621 (extractelt (v2i64 V128:$Rm), (i64 1))),
3622 (PMULLv2i64 V128:$Rn, V128:$Rm)>;
3628 def : Pat<(v8i8 (trunc (v8i16 (AArch64vlshr (add V128:$Rn, V128:$Rm), (i32 8))))),
3629 (ADDHNv8i16_v8i8 V128:$Rn, V128:$Rm)>;
3630 def : Pat<(v4i16 (trunc (v4i32 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3632 (ADDHNv4i32_v4i16 V128:$Rn, V128:$Rm)>;
3633 def : Pat<(v2i32 (trunc (v2i64 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3635 (ADDHNv2i64_v2i32 V128:$Rn, V128:$Rm)>;
3637 (trunc (v8i16 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3640 V128:$Rn, V128:$Rm)>;
3642 (trunc (v4i32 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3645 V128:$Rn, V128:$Rm)>;
3647 (trunc (v2i64 (AArch64vlshr (add V128:$Rn, V128:$Rm),
3650 V128:$Rn, V128:$Rm)>;
3653 def : Pat<(v8i8 (trunc (v8i16 (AArch64vlshr (sub V128:$Rn, V128:$Rm), (i32 8))))),
3654 (SUBHNv8i16_v8i8 V128:$Rn, V128:$Rm)>;
3655 def : Pat<(v4i16 (trunc (v4i32 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3657 (SUBHNv4i32_v4i16 V128:$Rn, V128:$Rm)>;
3658 def : Pat<(v2i32 (trunc (v2i64 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3660 (SUBHNv2i64_v2i32 V128:$Rn, V128:$Rm)>;
3662 (trunc (v8i16 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3665 V128:$Rn, V128:$Rm)>;
3667 (trunc (v4i32 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3670 V128:$Rn, V128:$Rm)>;
3672 (trunc (v2i64 (AArch64vlshr (sub V128:$Rn, V128:$Rm),
3675 V128:$Rn, V128:$Rm)>;
3685 def : Pat<(v8i16 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3686 (EXTv16i8 V128:$Rn, V128:$Rm, imm:$imm)>;
3691 def : Pat<(v4i32 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3692 (EXTv16i8 V128:$Rn, V128:$Rm, imm:$imm)>;
3693 def : Pat<(v4f32 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3694 (EXTv16i8 V128:$Rn, V128:$Rm, imm:$imm)>;
3695 def : Pat<(v2i64 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3696 (EXTv16i8 V128:$Rn, V128:$Rm, imm:$imm)>;
3697 def : Pat<(v2f64 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3698 (EXTv16i8 V128:$Rn, V128:$Rm, imm:$imm)>;
3701 def : Pat<(v8f16 (AArch64ext V128:$Rn, V128:$Rm, (i32 imm:$imm))),
3702 (EXTv16i8 V128:$Rn, V128:$Rm, imm:$imm)>;
3706 def : Pat<(v8i8 (extract_subvector V128:$Rn, (i64 8))),
3707 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3708 def : Pat<(v4i16 (extract_subvector V128:$Rn, (i64 4))),
3709 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3710 def : Pat<(v2i32 (extract_subvector V128:$Rn, (i64 2))),
3711 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3712 def : Pat<(v1i64 (extract_subvector V128:$Rn, (i64 1))),
3713 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3714 def : Pat<(v4f16 (extract_subvector V128:$Rn, (i64 4))),
3715 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3716 def : Pat<(v2f32 (extract_subvector V128:$Rn, (i64 2))),
3717 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3718 def : Pat<(v1f64 (extract_subvector V128:$Rn, (i64 1))),
3719 (EXTRACT_SUBREG (EXTv16i8 V128:$Rn, V128:$Rn, 8), dsub)>;
3742 def : Pat<(v16i8 (int_aarch64_neon_tbl1 (v16i8 V128:$Ri), (v16i8 V128:$Rn))),
3743 (TBLv16i8One V128:$Ri, V128:$Rn)>;
3748 def : Pat<(v16i8 (int_aarch64_neon_tbx1 (v16i8 V128:$Rd),
3749 (v16i8 V128:$Ri), (v16i8 V128:$Rn))),
3750 (TBXv16i8One V128:$Rd, V128:$Ri, V128:$Rn)>;
3769 def : Pat<(v2i64 (AArch64saddv V128:$Rn)),
3770 (INSERT_SUBREG (v2i64 (IMPLICIT_DEF)), (ADDPv2i64p V128:$Rn), dsub)>;
3771 def : Pat<(v2i64 (AArch64uaddv V128:$Rn)),
3772 (INSERT_SUBREG (v2i64 (IMPLICIT_DEF)), (ADDPv2i64p V128:$Rn), dsub)>;
3775 def : Pat<(f32 (int_aarch64_neon_faddv (v4f32 V128:$Rn))),
3776 (FADDPv2i32p (EXTRACT_SUBREG (FADDPv4f32 V128:$Rn, V128:$Rn), dsub))>;
3777 def : Pat<(f64 (int_aarch64_neon_faddv (v2f64 V128:$Rn))),
3778 (FADDPv2i64p V128:$Rn)>;
3781 def : Pat<(f64 (int_aarch64_neon_fmaxnmv (v2f64 V128:$Rn))),
3782 (FMAXNMPv2i64p V128:$Rn)>;
3785 def : Pat<(f64 (int_aarch64_neon_fmaxv (v2f64 V128:$Rn))),
3786 (FMAXPv2i64p V128:$Rn)>;
3789 def : Pat<(f64 (int_aarch64_neon_fminnmv (v2f64 V128:$Rn))),
3790 (FMINNMPv2i64p V128:$Rn)>;
3793 def : Pat<(f64 (int_aarch64_neon_fminv (v2f64 V128:$Rn))),
3794 (FMINPv2i64p V128:$Rn)>;
3801 def DUPv16i8gpr : SIMDDupFromMain<1, {?,?,?,?,1}, ".16b", v16i8, V128, GPR32>;
3803 def DUPv8i16gpr : SIMDDupFromMain<1, {?,?,?,1,0}, ".8h", v8i16, V128, GPR32>;
3805 def DUPv4i32gpr : SIMDDupFromMain<1, {?,?,1,0,0}, ".4s", v4i32, V128, GPR32>;
3806 def DUPv2i64gpr : SIMDDupFromMain<1, {?,1,0,0,0}, ".2d", v2i64, V128, GPR64>;
3810 def DUPv4i32lane : SIMDDup32FromElement<1, ".4s", v4i32, V128>;
3812 def DUPv8i16lane : SIMDDup16FromElement<1, ".8h", v8i16, V128>;
3814 def DUPv16i8lane : SIMDDup8FromElement <1, ".16b", v16i8, V128>;
3837 def : Pat<(v4f16 (AArch64duplane16 (v8f16 V128:$Rn), VectorIndexH:$imm)),
3838 (DUPv4i16lane V128:$Rn, VectorIndexH:$imm)>;
3839 def : Pat<(v8f16 (AArch64duplane16 (v8f16 V128:$Rn), VectorIndexH:$imm)),
3840 (DUPv8i16lane V128:$Rn, VectorIndexH:$imm)>;
3842 def : Pat<(v2f32 (AArch64duplane32 (v4f32 V128:$Rn), VectorIndexS:$imm)),
3843 (DUPv2i32lane V128:$Rn, VectorIndexS:$imm)>;
3844 def : Pat<(v4f32 (AArch64duplane32 (v4f32 V128:$Rn), VectorIndexS:$imm)),
3845 (DUPv4i32lane V128:$Rn, VectorIndexS:$imm)>;
3846 def : Pat<(v2f64 (AArch64duplane64 (v2f64 V128:$Rn), VectorIndexD:$imm)),
3847 (DUPv2i64lane V128:$Rn, VectorIndexD:$imm)>;
3865 def : Pat<(ResVT (AArch64dup (ScalVT (vector_extract (Src128VT V128:$Rn),
3867 (DUP V128:$Rn, (IdxXFORM imm:$idx))>;
3884 def : Pat<(ResVT (AArch64dup (i32 (trunc (extractelt (v2i64 V128:$Rn),
3886 (DUP V128:$Rn, (IdxXFORM imm:$idx))>;
3905 def : Pat<(sext_inreg (vector_extract (v16i8 V128:$Rn), VectorIndexB:$idx), i8),
3906 (i32 (SMOVvi8to32 V128:$Rn, VectorIndexB:$idx))>;
3907 def : Pat<(sext_inreg (vector_extract (v16i8 V128:$Rn), VectorIndexB:$idx), i8),
3908 (i64 (SMOVvi8to64 V128:$Rn, VectorIndexB:$idx))>;
3909 def : Pat<(sext_inreg (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),i16),
3910 (i32 (SMOVvi16to32 V128:$Rn, VectorIndexH:$idx))>;
3911 def : Pat<(sext_inreg (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),i16),
3912 (i64 (SMOVvi16to64 V128:$Rn, VectorIndexH:$idx))>;
3913 def : Pat<(sext_inreg (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),i16),
3914 (i32 (SMOVvi16to32 V128:$Rn, VectorIndexH:$idx))>;
3915 def : Pat<(sext (i32 (vector_extract (v4i32 V128:$Rn), VectorIndexS:$idx))),
3916 (i64 (SMOVvi32to64 V128:$Rn, VectorIndexS:$idx))>;
3918 def : Pat<(sext_inreg (i64 (anyext (i32 (vector_extract (v16i8 V128:$Rn),
3920 (i64 (SMOVvi8to64 V128:$Rn, VectorIndexB:$idx))>;
3921 def : Pat<(sext_inreg (i64 (anyext (i32 (vector_extract (v8i16 V128:$Rn),
3923 (i64 (SMOVvi16to64 V128:$Rn, VectorIndexH:$idx))>;
3929 def : Pat<(and (vector_extract (v16i8 V128:$Rn), VectorIndexB:$idx),
3931 (i32 (UMOVvi8 V128:$Rn, VectorIndexB:$idx))>;
3932 def : Pat<(and (vector_extract (v8i16 V128:$Rn), VectorIndexH:$idx),
3934 (i32 (UMOVvi16 V128:$Rn, VectorIndexH:$idx))>;
3984 def : Pat<(v8f16 (vector_insert (v8f16 V128:$Rn),
3987 V128:$Rn, VectorIndexH:$imm,
4000 def : Pat<(v4f32 (vector_insert (v4f32 V128:$Rn),
4003 V128:$Rn, VectorIndexS:$imm,
4006 def : Pat<(v2f64 (vector_insert (v2f64 V128:$Rn),
4009 V128:$Rn, VectorIndexD:$imm,
4018 (v16i8 V128:$Vd), VectorIndexB:$idx, (v16i8 V128:$Vs),
4021 V128:$Vd, VectorIndexB:$idx, V128:$Vs, VectorIndexB:$idx2)
4024 (v8i16 V128:$Vd), VectorIndexH:$idx, (v8i16 V128:$Vs),
4027 V128:$Vd, VectorIndexH:$idx, V128:$Vs, VectorIndexH:$idx2)
4030 (v4i32 V128:$Vd), VectorIndexS:$idx, (v4i32 V128:$Vs),
4033 V128:$Vd, VectorIndexS:$idx, V128:$Vs, VectorIndexS:$idx2)
4036 (v2i64 V128:$Vd), VectorIndexD:$idx, (v2i64 V128:$Vs),
4039 V128:$Vd, VectorIndexD:$idx, V128:$Vs, VectorIndexD:$idx2)
4044 def : Pat<(VT128 (vector_insert V128:$src,
4045 (VTScal (vector_extract (VT128 V128:$Rn), imm:$Immn)),
4047 (INS V128:$src, imm:$Immd, V128:$Rn, imm:$Immn)>;
4049 def : Pat<(VT128 (vector_insert V128:$src,
4052 (INS V128:$src, imm:$Immd,
4056 (VTScal (vector_extract (VT128 V128:$Rn), imm:$Immn)),
4059 imm:$Immd, V128:$Rn, imm:$Immn),
4079 def : Pat<(vector_extract (v2f64 V128:$Rn), 0),
4080 (f64 (EXTRACT_SUBREG V128:$Rn, dsub))>;
4081 def : Pat<(vector_extract (v4f32 V128:$Rn), 0),
4082 (f32 (EXTRACT_SUBREG V128:$Rn, ssub))>;
4083 def : Pat<(vector_extract (v8f16 V128:$Rn), 0),
4084 (f16 (EXTRACT_SUBREG V128:$Rn, hsub))>;
4086 def : Pat<(vector_extract (v2f64 V128:$Rn), VectorIndexD:$idx),
4087 (f64 (CPYi64 V128:$Rn, VectorIndexD:$idx))>;
4088 def : Pat<(vector_extract (v4f32 V128:$Rn), VectorIndexS:$idx),
4089 (f32 (CPYi32 V128:$Rn, VectorIndexS:$idx))>;
4090 def : Pat<(vector_extract (v8f16 V128:$Rn), VectorIndexH:$idx),
4091 (f16 (CPYi16 V128:$Rn, VectorIndexH:$idx))>;
4147 def : Pat<(v16i8 (opNode V128:$Rn)),
4149 (!cast<Instruction>(!strconcat(baseOpc, "v16i8v")) V128:$Rn), bsub)>;
4153 def : Pat<(v8i16 (opNode V128:$Rn)),
4155 (!cast<Instruction>(!strconcat(baseOpc, "v8i16v")) V128:$Rn), hsub)>;
4156 def : Pat<(v4i32 (opNode V128:$Rn)),
4158 (!cast<Instruction>(!strconcat(baseOpc, "v4i32v")) V128:$Rn), ssub)>;
4167 def : Pat<(i32 (vector_extract (v16i8 (opNode V128:$Rn)), (i64 0))),
4169 (!cast<Instruction>(!strconcat(baseOpc, "v16i8v")) V128:$Rn),
4176 def : Pat<(i32 (vector_extract (v8i16 (opNode V128:$Rn)), (i64 0))),
4178 (!cast<Instruction>(!strconcat(baseOpc, "v8i16v")) V128:$Rn),
4180 def : Pat<(i32 (vector_extract (v4i32 (opNode V128:$Rn)), (i64 0))),
4182 (!cast<Instruction>(!strconcat(baseOpc, "v4i32v")) V128:$Rn),
4199 (opNode (v16i8 V128:$Rn)), (i64 0))), i8)),
4202 (!cast<Instruction>(!strconcat(baseOpc, "v16i8v")) V128:$Rn), bsub),
4211 (opNode (v8i16 V128:$Rn)), (i64 0))), i16)),
4214 (!cast<Instruction>(!strconcat(baseOpc, "v8i16v")) V128:$Rn), hsub),
4229 def : Pat<(i32 (and (i32 (vector_extract (opNode (v16i8 V128:$Rn)), (i64 0))),
4233 (!cast<Instruction>(!strconcat(baseOpc, "v16i8v")) V128:$Rn), bsub),
4241 def : Pat<(i32 (and (i32 (vector_extract (opNode (v8i16 V128:$Rn)), (i64 0))),
4245 (!cast<Instruction>(!strconcat(baseOpc, "v8i16v")) V128:$Rn), hsub),
4281 def : Pat<(i32 (intOp (v16i8 V128:$Rn))),
4284 (!cast<Instruction>(!strconcat(baseOpc, "v16i8v")) V128:$Rn), hsub),
4292 def : Pat<(i32 (intOp (v8i16 V128:$Rn))),
4295 (!cast<Instruction>(!strconcat(baseOpc, "v8i16v")) V128:$Rn), ssub),
4298 def : Pat<(i64 (intOp (v4i32 V128:$Rn))),
4301 (!cast<Instruction>(!strconcat(baseOpc, "v4i32v")) V128:$Rn), dsub),
4312 def : Pat<(i32 (intOp (v16i8 V128:$Rn))),
4315 (!cast<Instruction>(!strconcat(baseOpc, "v16i8v")) V128:$Rn), hsub),
4323 def : Pat<(i32 (intOp (v8i16 V128:$Rn))),
4326 (!cast<Instruction>(!strconcat(baseOpc, "v8i16v")) V128:$Rn), ssub),
4329 def : Pat<(i64 (intOp (v4i32 V128:$Rn))),
4332 (!cast<Instruction>(!strconcat(baseOpc, "v4i32v")) V128:$Rn), dsub),
4362 def : InstAlias<"bic $Vd.8h, $imm", (BICv8i16 V128:$Vd, imm0_255:$imm, 0)>;
4364 def : InstAlias<"bic $Vd.4s, $imm", (BICv4i32 V128:$Vd, imm0_255:$imm, 0)>;
4367 def : InstAlias<"bic.8h $Vd, $imm", (BICv8i16 V128:$Vd, imm0_255:$imm, 0), 0>;
4369 def : InstAlias<"bic.4s $Vd, $imm", (BICv4i32 V128:$Vd, imm0_255:$imm, 0), 0>;
4372 def : InstAlias<"orr $Vd.8h, $imm", (ORRv8i16 V128:$Vd, imm0_255:$imm, 0)>;
4374 def : InstAlias<"orr $Vd.4s, $imm", (ORRv4i32 V128:$Vd, imm0_255:$imm, 0)>;
4377 def : InstAlias<"orr.8h $Vd, $imm", (ORRv8i16 V128:$Vd, imm0_255:$imm, 0), 0>;
4379 def : InstAlias<"orr.4s $Vd, $imm", (ORRv4i32 V128:$Vd, imm0_255:$imm, 0), 0>;
4382 def FMOVv2f64_ns : SIMDModifiedImmVectorNoShift<1, 1, 0, 0b1111, V128, fpimm8,
4384 [(set (v2f64 V128:$Rd), (AArch64fmov imm0_255:$imm8))]>;
4388 def FMOVv4f32_ns : SIMDModifiedImmVectorNoShift<1, 0, 0, 0b1111, V128, fpimm8,
4390 [(set (v4f32 V128:$Rd), (AArch64fmov imm0_255:$imm8))]>;
4395 def FMOVv8f16_ns : SIMDModifiedImmVectorNoShift<1, 0, 1, 0b1111, V128, fpimm8,
4397 [(set (v8f16 V128:$Rd), (AArch64fmov imm0_255:$imm8))]>;
4426 def MOVIv2d_ns : SIMDModifiedImmVectorNoShift<1, 1, 0, 0b1110, V128,
4429 [(set (v2i64 V128:$Rd), (AArch64movi_edit imm0_255:$imm8))]>;
4448 def : InstAlias<"movi $Vd.8h, $imm", (MOVIv8i16 V128:$Vd, imm0_255:$imm, 0), 0>;
4450 def : InstAlias<"movi $Vd.4s, $imm", (MOVIv4i32 V128:$Vd, imm0_255:$imm, 0), 0>;
4453 def : InstAlias<"movi.8h $Vd, $imm", (MOVIv8i16 V128:$Vd, imm0_255:$imm, 0), 0>;
4455 def : InstAlias<"movi.4s $Vd, $imm", (MOVIv4i32 V128:$Vd, imm0_255:$imm, 0), 0>;
4470 def MOVIv4s_msl : SIMDModifiedImmMoveMSL<1, 0, {1,1,0,?}, V128, "movi", ".4s",
4471 [(set (v4i32 V128:$Rd),
4478 def MOVIv16b_ns : SIMDModifiedImmVectorNoShift<1, 0, 0, 0b1110, V128, imm0_255,
4480 [(set (v16i8 V128:$Rd), (AArch64movi imm0_255:$imm8))]>;
4488 def : InstAlias<"mvni $Vd.8h, $imm", (MVNIv8i16 V128:$Vd, imm0_255:$imm, 0), 0>;
4490 def : InstAlias<"mvni $Vd.4s, $imm", (MVNIv4i32 V128:$Vd, imm0_255:$imm, 0), 0>;
4493 def : InstAlias<"mvni.8h $Vd, $imm", (MVNIv8i16 V128:$Vd, imm0_255:$imm, 0), 0>;
4495 def : InstAlias<"mvni.4s $Vd, $imm", (MVNIv4i32 V128:$Vd, imm0_255:$imm, 0), 0>;
4510 def MVNIv4s_msl : SIMDModifiedImmMoveMSL<1, 1, {1,1,0,?}, V128, "mvni", ".4s",
4511 [(set (v4i32 V128:$Rd),
4546 (AArch64duplane32 (v4f32 (fneg V128:$Rm)),
4548 (FMLSv2i32_indexed V64:$Rd, V64:$Rn, V128:$Rm, VectorIndexS:$idx)>;
4565 def : Pat<(v4f32 (OpNode (v4f32 V128:$Rd), (v4f32 V128:$Rn),
4566 (AArch64duplane32 (v4f32 (fneg V128:$Rm)),
4568 (FMLSv4i32_indexed V128:$Rd, V128:$Rn, V128:$Rm,
4570 def : Pat<(v4f32 (OpNode (v4f32 V128:$Rd), (v4f32 V128:$Rn),
4576 (FMLSv4i32_indexed V128:$Rd, V128:$Rn,
4579 def : Pat<(v4f32 (OpNode (v4f32 V128:$Rd), (v4f32 V128:$Rn),
4581 (FMLSv4i32_indexed V128:$Rd, V128:$Rn,
4586 def : Pat<(v2f64 (OpNode (v2f64 V128:$Rd), (v2f64 V128:$Rn),
4587 (AArch64duplane64 (v2f64 (fneg V128:$Rm)),
4590 V128:$Rd, V128:$Rn, V128:$Rm, VectorIndexS:$idx)>;
4591 def : Pat<(v2f64 (OpNode (v2f64 V128:$Rd), (v2f64 V128:$Rn),
4593 (FMLSv2i64_indexed V128:$Rd, V128:$Rn,
4598 (vector_extract (v4f32 (fneg V128:$Rm)),
4601 V128:$Rm, VectorIndexS:$idx)>;
4612 (vector_extract (v2f64 (fneg V128:$Rm)),
4615 V128:$Rm, VectorIndexS:$idx)>;
4630 def : Pat<(v4f32 (fmul V128:$Rn, (AArch64dup (f32 FPR32:$Rm)))),
4631 (FMULv4i32_indexed V128:$Rn,
4634 def : Pat<(v2f64 (fmul V128:$Rn, (AArch64dup (f64 FPR64:$Rm)))),
4635 (FMULv2i64_indexed V128:$Rn,
4671 (vector_extract (v4i32 V128:$Vm),
4673 (SQDMULLv1i64_indexed FPR32:$Rn, V128:$Vm, VectorIndexS:$idx)>;
4809 def : Pat<(v8i8 (trunc (AArch64vlshr (v8i16 V128:$Rn), vecshiftR16Narrow:$imm))),
4810 (SHRNv8i8_shift V128:$Rn, vecshiftR16Narrow:$imm)>;
4811 def : Pat<(v4i16 (trunc (AArch64vlshr (v4i32 V128:$Rn), vecshiftR32Narrow:$imm))),
4812 (SHRNv4i16_shift V128:$Rn, vecshiftR32Narrow:$imm)>;
4813 def : Pat<(v2i32 (trunc (AArch64vlshr (v2i64 V128:$Rn), vecshiftR64Narrow:$imm))),
4814 (SHRNv2i32_shift V128:$Rn, vecshiftR64Narrow:$imm)>;
4817 (trunc (AArch64vlshr (v8i16 V128:$Rn),
4820 V128:$Rn, vecshiftR16Narrow:$imm)>;
4822 (trunc (AArch64vlshr (v4i32 V128:$Rn),
4825 V128:$Rn, vecshiftR32Narrow:$imm)>;
4827 (trunc (AArch64vlshr (v2i64 V128:$Rn),
4830 V128:$Rn, vecshiftR32Narrow:$imm)>;
4844 def : Pat<(v8i16 (anyext (v8i8 (extract_subvector V128:$Rn, (i64 8)) ))),
4845 (USHLLv16i8_shift V128:$Rn, (i32 0))>;
4846 def : Pat<(v8i16 (zext (v8i8 (extract_subvector V128:$Rn, (i64 8)) ))),
4847 (USHLLv16i8_shift V128:$Rn, (i32 0))>;
4848 def : Pat<(v8i16 (sext (v8i8 (extract_subvector V128:$Rn, (i64 8)) ))),
4849 (SSHLLv16i8_shift V128:$Rn, (i32 0))>;
4850 def : Pat<(v4i32 (anyext (v4i16 (extract_subvector V128:$Rn, (i64 4)) ))),
4851 (USHLLv8i16_shift V128:$Rn, (i32 0))>;
4852 def : Pat<(v4i32 (zext (v4i16 (extract_subvector V128:$Rn, (i64 4)) ))),
4853 (USHLLv8i16_shift V128:$Rn, (i32 0))>;
4854 def : Pat<(v4i32 (sext (v4i16 (extract_subvector V128:$Rn, (i64 4)) ))),
4855 (SSHLLv8i16_shift V128:$Rn, (i32 0))>;
4856 def : Pat<(v2i64 (anyext (v2i32 (extract_subvector V128:$Rn, (i64 2)) ))),
4857 (USHLLv4i32_shift V128:$Rn, (i32 0))>;
4858 def : Pat<(v2i64 (zext (v2i32 (extract_subvector V128:$Rn, (i64 2)) ))),
4859 (USHLLv4i32_shift V128:$Rn, (i32 0))>;
4860 def : Pat<(v2i64 (sext (v2i32 (extract_subvector V128:$Rn, (i64 2)) ))),
4861 (SSHLLv4i32_shift V128:$Rn, (i32 0))>;
4865 (SSHLLv8i8_shift V128:$dst, V64:$src1, 0)>;
4867 (SSHLLv8i8_shift V128:$dst, V64:$src1, 0)>;
4869 (SSHLLv4i16_shift V128:$dst, V64:$src1, 0)>;
4871 (SSHLLv4i16_shift V128:$dst, V64:$src1, 0)>;
4873 (SSHLLv2i32_shift V128:$dst, V64:$src1, 0)>;
4875 (SSHLLv2i32_shift V128:$dst, V64:$src1, 0)>;
4879 (SSHLLv16i8_shift V128:$dst, V128:$src1, 0)>;
4881 (SSHLLv16i8_shift V128:$dst, V128:$src1, 0)>;
4883 (SSHLLv8i16_shift V128:$dst, V128:$src1, 0)>;
4885 (SSHLLv8i16_shift V128:$dst, V128:$src1, 0)>;
4887 (SSHLLv4i32_shift V128:$dst, V128:$src1, 0)>;
4889 (SSHLLv4i32_shift V128:$dst, V128:$src1, 0)>;
4893 (USHLLv8i8_shift V128:$dst, V64:$src1, 0)>;
4895 (USHLLv8i8_shift V128:$dst, V64:$src1, 0)>;
4897 (USHLLv4i16_shift V128:$dst, V64:$src1, 0)>;
4899 (USHLLv4i16_shift V128:$dst, V64:$src1, 0)>;
4901 (USHLLv2i32_shift V128:$dst, V64:$src1, 0)>;
4903 (USHLLv2i32_shift V128:$dst, V64:$src1, 0)>;
4907 (USHLLv16i8_shift V128:$dst, V128:$src1, 0)>;
4909 (USHLLv16i8_shift V128:$dst, V128:$src1, 0)>;
4911 (USHLLv8i16_shift V128:$dst, V128:$src1, 0)>;
4913 (USHLLv8i16_shift V128:$dst, V128:$src1, 0)>;
4915 (USHLLv4i32_shift V128:$dst, V128:$src1, 0)>;
4917 (USHLLv4i32_shift V128:$dst, V128:$src1, 0)>;
5984 def : Pat<(v4i16 (extract_subvector V128:$Rn, (i64 0))),
5985 (EXTRACT_SUBREG V128:$Rn, dsub)>;
5986 def : Pat<(v8i8 (extract_subvector V128:$Rn, (i64 0))),
5987 (EXTRACT_SUBREG V128:$Rn, dsub)>;
5988 def : Pat<(v2f32 (extract_subvector V128:$Rn, (i64 0))),
5989 (EXTRACT_SUBREG V128:$Rn, dsub)>;
5990 def : Pat<(v4f16 (extract_subvector V128:$Rn, (i64 0))),
5991 (EXTRACT_SUBREG V128:$Rn, dsub)>;
5992 def : Pat<(v2i32 (extract_subvector V128:$Rn, (i64 0))),
5993 (EXTRACT_SUBREG V128:$Rn, dsub)>;
5994 def : Pat<(v1i64 (extract_subvector V128:$Rn, (i64 0))),
5995 (EXTRACT_SUBREG V128:$Rn, dsub)>;
5996 def : Pat<(v1f64 (extract_subvector V128:$Rn, (i64 0))),
5997 (EXTRACT_SUBREG V128:$Rn, dsub)>;