This patch handles the SVE2p1 instructions that are shared
with SME2.  This includes the consecutive-register forms of
the 2-register and 4-register loads and stores, but not the
strided-register forms.

gcc/
        * config/aarch64/aarch64.h (TARGET_SVE2p1_OR_SME2): New macro.
        * config/aarch64/aarch64-early-ra.cc
        (is_stride_candidate): Require TARGET_STREAMING_SME2
        (early_ra::maybe_convert_to_strided_access): Likewise.
        * config/aarch64/aarch64-sve-builtins-sve2.def: Mark instructions
        that are common to both SVE2p1 and SME2.
        * config/aarch64/aarch64-sve.md
        (@aarch64_<sur>dot_prod_lane<SVE_FULL_SDI:mode><SVE_FULL_BHI:mode>):
        Test TARGET_SVE2p1_OR_SME2 instead of TARGET_STREAMING_SME2.
        (@aarch64_sve_<sve_fp_op>vnx4sf): Move TARGET_SVE_BF16 condition
        into SVE_BFLOAT_TERNARY_LONG.
        (@aarch64_sve_<sve_fp_op>_lanevnx4sf): Likewise
        SVE_BFLOAT_TERNARY_LONG_LANE.
        * config/aarch64/aarch64-sve2.md
        (@aarch64_<LD1_COUNT:optab><mode>): Require TARGET_SVE2p1_OR_SME2
        instead of TARGET_STREAMING_SME2.
        (@aarch64_<ST1_COUNT:optab><mode>): Likewise.
        (@aarch64_sve_ptrue_c<BHSD_BITS>): Likewise.
        (@aarch64_sve_pext<BHSD_BITS>): Likewise.
        (@aarch64_sve_pext<BHSD_BITS>x2): Likewise.
        (@aarch64_sve_cntp_c<BHSD_BITS>): Likewise.
        (@aarch64_sve_fclamp<mode>): Likewise.
        (*aarch64_sve_fclamp<mode>_x): Likewise.
        (<sur>dot_prodvnx4sivnx8hi): Likewise.
        (aarch64_sve_fdotvnx4sfvnx8hf): Likewise.
        (aarch64_fdot_prod_lanevnx4sfvnx8hf): Likewise.
        (@aarch64_sve_while<while_optab_cmp>_b<BHSD_BITS>_x2): Likewise.
        (@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>): Likewise.
        (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>): Move
        TARGET_STREAMING_SME2 condition into SVE_QCVTxN.
        (@aarch64_sve_<sve_int_op><mode>): Likewise
        SVE2_INT_SHIFT_IMM_NARROWxN, but also require TARGET_STREAMING_SME2
        for the 4-register forms.
        * config/aarch64/iterators.md (SVE_BFLOAT_TERNARY_LONG): Require
        TARGET_SVE2p1_OR_SME2 rather than TARGET_STREAMING_SME2 for
        UNSPEC_BFMLSLB and UNSPEC_BFMLSLT.  Require TARGET_SVE_BF16
        for the others.
        (SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
        (SVE2_INT_SHIFT_IMM_NARROWxN): Require TARGET_SVE2p1_OR_SME2 for
        the interleaving forms and TARGET_STREAMING_SME2 for the rest.
        (SVE_QCVTxN): Likewise.

gcc/testsuite/
        * gcc.target/aarch64/sve/clamp_3.c: New test.
        * gcc.target/aarch64/sve/clamp_4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/bfmlslb_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/bfmlslb_lane_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/bfmlslt_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/bfmlslt_lane_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/clamp_f16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/clamp_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/clamp_f64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/cntp_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/cntp_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/cntp_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/cntp_c8.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/dot_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/dot_lane_f32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/dot_lane_s32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/dot_lane_u32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/dot_s32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/dot_u32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_bf16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_bf16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_f16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_f16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_f32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_f32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_f64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_f64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_s8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ld1_u8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_bf16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_bf16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_f16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_f16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_f32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_f32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_s8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c8.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/pext_lane_c8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ptrue_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ptrue_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ptrue_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/ptrue_c8.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/qcvtn_s16_s32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/qcvtn_u16_s32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/qcvtn_u16_u32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/qrshrn_s16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/qrshrn_u16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/qrshrun_u16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_bf16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_bf16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_f16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_f16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_f32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_f32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_f64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_f64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_s8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/st1_u8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_bf16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_bf16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_f16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_f16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_f32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_f32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_f64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_f64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u32_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u64_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x4.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilege_c8.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilele_c8.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c: Likewise.
        * gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c: Likewise.
---
 gcc/config/aarch64/aarch64-early-ra.cc        |   9 +-
 .../aarch64/aarch64-sve-builtins-sve2.def     |  45 ++-
 gcc/config/aarch64/aarch64-sve.md             |  10 +-
 gcc/config/aarch64/aarch64-sve2.md            |  38 +-
 gcc/config/aarch64/aarch64.h                  |   4 +
 gcc/config/aarch64/iterators.md               |  44 ++-
 .../gcc.target/aarch64/sve/clamp_3.c          |  28 ++
 .../gcc.target/aarch64/sve/clamp_4.c          |  22 ++
 .../aarch64/sve2/acle/asm/bfmlslb_f32.c       |  72 ++++
 .../aarch64/sve2/acle/asm/bfmlslb_lane_f32.c  |  91 +++++
 .../aarch64/sve2/acle/asm/bfmlslt_f32.c       |  72 ++++
 .../aarch64/sve2/acle/asm/bfmlslt_lane_f32.c  |  91 +++++
 .../aarch64/sve2/acle/asm/clamp_f16.c         |  49 +++
 .../aarch64/sve2/acle/asm/clamp_f32.c         |  49 +++
 .../aarch64/sve2/acle/asm/clamp_f64.c         |  49 +++
 .../aarch64/sve2/acle/asm/cntp_c16.c          |  46 +++
 .../aarch64/sve2/acle/asm/cntp_c32.c          |  46 +++
 .../aarch64/sve2/acle/asm/cntp_c64.c          |  46 +++
 .../aarch64/sve2/acle/asm/cntp_c8.c           |  46 +++
 .../aarch64/sve2/acle/asm/dot_f32.c           |  51 +++
 .../aarch64/sve2/acle/asm/dot_lane_f32.c      | 100 +++++
 .../aarch64/sve2/acle/asm/dot_lane_s32.c      | 100 +++++
 .../aarch64/sve2/acle/asm/dot_lane_u32.c      | 100 +++++
 .../aarch64/sve2/acle/asm/dot_s32.c           |  51 +++
 .../aarch64/sve2/acle/asm/dot_u32.c           |  51 +++
 .../aarch64/sve2/acle/asm/ld1_bf16_x2.c       | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_bf16_x4.c       | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_f16_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_f16_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_f32_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_f32_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_f64_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_f64_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s16_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s16_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s32_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s32_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s64_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s64_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s8_x2.c         | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_s8_x4.c         | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u16_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u16_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u32_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u32_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u64_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u64_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u8_x2.c         | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ld1_u8_x4.c         | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_bf16_x2.c     | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_bf16_x4.c     | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_f16_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_f16_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_f32_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_f32_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_f64_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_f64_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s16_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s16_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s32_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s32_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s64_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s64_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s8_x2.c       | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_s8_x4.c       | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u16_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u16_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u32_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u32_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u64_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u64_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u8_x2.c       | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/ldnt1_u8_x4.c       | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/pext_lane_c16.c     |  57 +++
 .../aarch64/sve2/acle/asm/pext_lane_c16_x2.c  |  61 +++
 .../aarch64/sve2/acle/asm/pext_lane_c32.c     |  57 +++
 .../aarch64/sve2/acle/asm/pext_lane_c32_x2.c  |  61 +++
 .../aarch64/sve2/acle/asm/pext_lane_c64.c     |  57 +++
 .../aarch64/sve2/acle/asm/pext_lane_c64_x2.c  |  61 +++
 .../aarch64/sve2/acle/asm/pext_lane_c8.c      |  57 +++
 .../aarch64/sve2/acle/asm/pext_lane_c8_x2.c   |  61 +++
 .../aarch64/sve2/acle/asm/ptrue_c16.c         |  48 +++
 .../aarch64/sve2/acle/asm/ptrue_c32.c         |  48 +++
 .../aarch64/sve2/acle/asm/ptrue_c64.c         |  48 +++
 .../aarch64/sve2/acle/asm/ptrue_c8.c          |  48 +++
 .../aarch64/sve2/acle/asm/qcvtn_s16_s32_x2.c  |  57 +++
 .../aarch64/sve2/acle/asm/qcvtn_u16_s32_x2.c  |  57 +++
 .../aarch64/sve2/acle/asm/qcvtn_u16_u32_x2.c  |  57 +++
 .../aarch64/sve2/acle/asm/qrshrn_s16_x2.c     |  57 +++
 .../aarch64/sve2/acle/asm/qrshrn_u16_x2.c     |  57 +++
 .../aarch64/sve2/acle/asm/qrshrun_u16_x2.c    |  57 +++
 .../aarch64/sve2/acle/asm/st1_bf16_x2.c       | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_bf16_x4.c       | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_f16_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_f16_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_f32_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_f32_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_f64_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_f64_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_s16_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_s16_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_s32_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_s32_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_s64_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_s64_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_s8_x2.c         | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_s8_x4.c         | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_u16_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_u16_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_u32_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_u32_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_u64_x2.c        | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_u64_x4.c        | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/st1_u8_x2.c         | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/st1_u8_x4.c         | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_bf16_x2.c     | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_bf16_x4.c     | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_f16_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_f16_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_f32_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_f32_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_f64_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_f64_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s16_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s16_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s32_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s32_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s64_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s64_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s8_x2.c       | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_s8_x4.c       | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u16_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u16_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u32_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u32_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u64_x2.c      | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u64_x4.c      | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u8_x2.c       | 269 +++++++++++++
 .../aarch64/sve2/acle/asm/stnt1_u8_x4.c       | 361 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/whilege_b16_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilege_b32_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilege_b64_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilege_b8_x2.c     | 126 ++++++
 .../aarch64/sve2/acle/asm/whilege_c16.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilege_c32.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilege_c64.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilege_c8.c        | 124 ++++++
 .../aarch64/sve2/acle/asm/whilegt_b16_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilegt_b32_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilegt_b64_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilegt_b8_x2.c     | 126 ++++++
 .../aarch64/sve2/acle/asm/whilegt_c16.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilegt_c32.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilegt_c64.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilegt_c8.c        | 124 ++++++
 .../aarch64/sve2/acle/asm/whilele_b16_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilele_b32_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilele_b64_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilele_b8_x2.c     | 126 ++++++
 .../aarch64/sve2/acle/asm/whilele_c16.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilele_c32.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilele_c64.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilele_c8.c        | 124 ++++++
 .../aarch64/sve2/acle/asm/whilelt_b16_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilelt_b32_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilelt_b64_x2.c    | 126 ++++++
 .../aarch64/sve2/acle/asm/whilelt_b8_x2.c     | 126 ++++++
 .../aarch64/sve2/acle/asm/whilelt_c16.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilelt_c32.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilelt_c64.c       | 124 ++++++
 .../aarch64/sve2/acle/asm/whilelt_c8.c        | 124 ++++++
 171 files changed, 36491 insertions(+), 65 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/clamp_3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/clamp_4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslb_f32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslb_lane_f32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslt_f32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslt_lane_f32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clamp_f16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clamp_f32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clamp_f64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c8.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_f32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_f32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_s32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_u32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_s32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_u32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_bf16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_bf16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f32_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f32_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f64_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s32_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s32_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s64_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_s8_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u32_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u32_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u64_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u8_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_bf16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_bf16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f32_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s32_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s8_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u32_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c64.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/pext_lane_c8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ptrue_c16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ptrue_c32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ptrue_c64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ptrue_c8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qcvtn_s16_s32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qcvtn_u16_s32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qcvtn_u16_u32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrshrn_s16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrshrn_u16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrshrun_u16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_bf16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_bf16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_f16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_f16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_f32_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_f32_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_f64_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_f64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s32_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s32_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s64_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_s8_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u16_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u16_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u32_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u32_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u64_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1_u8_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_bf16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_bf16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_f16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_f16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_f32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_f32_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_f64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_f64_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s32_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u32_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u64_x4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x4.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c

diff --git a/gcc/config/aarch64/aarch64-early-ra.cc 
b/gcc/config/aarch64/aarch64-early-ra.cc
index bbd84686e13..0db8ea24389 100644
--- a/gcc/config/aarch64/aarch64-early-ra.cc
+++ b/gcc/config/aarch64/aarch64-early-ra.cc
@@ -1062,8 +1062,9 @@ is_stride_candidate (rtx_insn *insn)
     return false;
 
   auto stride_type = get_attr_stride_type (insn);
-  return (stride_type == STRIDE_TYPE_LD1_CONSECUTIVE
-         || stride_type == STRIDE_TYPE_ST1_CONSECUTIVE);
+  return (TARGET_STREAMING_SME2
+         && (stride_type == STRIDE_TYPE_LD1_CONSECUTIVE
+             || stride_type == STRIDE_TYPE_ST1_CONSECUTIVE));
 }
 
 // Go through the constraints of INSN, which has already been extracted,
@@ -3213,9 +3214,9 @@ early_ra::maybe_convert_to_strided_access (rtx_insn *insn)
   auto stride_type = get_attr_stride_type (insn);
   rtx pat = PATTERN (insn);
   rtx op;
-  if (stride_type == STRIDE_TYPE_LD1_CONSECUTIVE)
+  if (TARGET_STREAMING_SME2 && stride_type == STRIDE_TYPE_LD1_CONSECUTIVE)
     op = SET_DEST (pat);
-  else if (stride_type == STRIDE_TYPE_ST1_CONSECUTIVE)
+  else if (TARGET_STREAMING_SME2 && stride_type == STRIDE_TYPE_ST1_CONSECUTIVE)
     op = XVECEXP (SET_SRC (pat), 0, 1);
   else
     return false;
diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sve2.def 
b/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
index 5cc32aa8871..9e8aad957d5 100644
--- a/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
+++ b/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
@@ -226,40 +226,53 @@ DEF_SVE_FUNCTION (svpsel_lane, select_pred, 
all_pred_count, none)
 DEF_SVE_FUNCTION (svrevd, unary, all_data, mxz)
 #undef REQUIRED_EXTENSIONS
 
-#define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2)
-DEF_SVE_FUNCTION_GS (svadd, binary_single, all_integer, x24, none)
+#define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p1, AARCH64_FL_SME2)
 DEF_SVE_FUNCTION (svbfmlslb, ternary_bfloat_opt_n, s_float, none)
 DEF_SVE_FUNCTION (svbfmlslb_lane, ternary_bfloat_lane, s_float, none)
 DEF_SVE_FUNCTION (svbfmlslt, ternary_bfloat_opt_n, s_float, none)
 DEF_SVE_FUNCTION (svbfmlslt_lane, ternary_bfloat_lane, s_float, none)
 DEF_SVE_FUNCTION (svclamp, clamp, all_float, none)
-DEF_SVE_FUNCTION_GS (svclamp, clamp, all_arith, x24, none)
 DEF_SVE_FUNCTION (svcntp, count_pred_c, all_count, none)
-DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_h_s_float, x2, none)
-DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_s_s, x24, none)
-DEF_SVE_FUNCTION_GS (svcvtn, unary_convertxn, cvt_h_s_float, x2, none)
 DEF_SVE_FUNCTION (svdot, ternary_qq_opt_n_or_011, s_narrow_fsu, none)
 DEF_SVE_FUNCTION (svdot_lane, ternary_qq_or_011_lane, s_narrow_fsu, none)
 DEF_SVE_FUNCTION_GS (svld1, load, all_data, x24, implicit)
 DEF_SVE_FUNCTION_GS (svldnt1, load, all_data, x24, implicit)
+DEF_SVE_FUNCTION_GS (svpext_lane, extract_pred, all_count, x12, none)
+DEF_SVE_FUNCTION (svptrue, inherent, all_count, none)
+DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x2, x2, none)
+DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x2, x2, none)
+DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x2, x2, none)
+DEF_SVE_FUNCTION_GS (svst1, storexn, all_data, x24, implicit)
+DEF_SVE_FUNCTION_GS (svstnt1, storexn, all_data, x24, implicit)
+DEF_SVE_FUNCTION_GS (svwhilege, compare_scalar, while_x, x2, none)
+DEF_SVE_FUNCTION (svwhilege, compare_scalar_count, while_x_c, none)
+DEF_SVE_FUNCTION_GS (svwhilegt, compare_scalar, while_x, x2, none)
+DEF_SVE_FUNCTION (svwhilegt, compare_scalar_count, while_x_c, none)
+DEF_SVE_FUNCTION_GS (svwhilele, compare_scalar, while_x, x2, none)
+DEF_SVE_FUNCTION (svwhilele, compare_scalar_count, while_x_c, none)
+DEF_SVE_FUNCTION_GS (svwhilelt, compare_scalar, while_x, x2, none)
+DEF_SVE_FUNCTION (svwhilelt, compare_scalar_count, while_x_c, none)
+#undef REQUIRED_EXTENSIONS
+
+#define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2)
+DEF_SVE_FUNCTION_GS (svadd, binary_single, all_integer, x24, none)
+DEF_SVE_FUNCTION_GS (svclamp, clamp, all_arith, x24, none)
+DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_h_s_float, x2, none)
+DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_s_s, x24, none)
+DEF_SVE_FUNCTION_GS (svcvtn, unary_convertxn, cvt_h_s_float, x2, none)
 DEF_SVE_FUNCTION_GS (svmax, binary_opt_single_n, all_arith, x24, none)
 DEF_SVE_FUNCTION_GS (svmaxnm, binary_opt_single_n, all_float, x24, none)
 DEF_SVE_FUNCTION_GS (svmin, binary_opt_single_n, all_arith, x24, none)
 DEF_SVE_FUNCTION_GS (svminnm, binary_opt_single_n, all_float, x24, none)
-DEF_SVE_FUNCTION_GS (svpext_lane, extract_pred, all_count, x12, none)
-DEF_SVE_FUNCTION (svptrue, inherent, all_count, none)
 DEF_SVE_FUNCTION_GS (svqcvt, unary_convertxn, qcvt_x2, x2, none)
 DEF_SVE_FUNCTION_GS (svqcvt, unary_convertxn, qcvt_x4, x4, none)
-DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x2, x2, none)
 DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x4, x4, none)
 DEF_SVE_FUNCTION_GS (svqdmulh, binary_opt_single_n, all_signed, x24, none)
 DEF_SVE_FUNCTION_GS (svqrshr, shift_right_imm_narrowxn, qrshr_x2, x2, none)
 DEF_SVE_FUNCTION_GS (svqrshr, shift_right_imm_narrowxn, qrshr_x4, x4, none)
-DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x2, x2, none)
 DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x4, x4, none)
 DEF_SVE_FUNCTION_GS (svqrshru, shift_right_imm_narrowxn, qrshru_x2, x2, none)
 DEF_SVE_FUNCTION_GS (svqrshru, shift_right_imm_narrowxn, qrshru_x4, x4, none)
-DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x2, x2, none)
 DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x4, x4, none)
 DEF_SVE_FUNCTION_GS (svrinta, unaryxn, s_float, x24, none)
 DEF_SVE_FUNCTION_GS (svrintm, unaryxn, s_float, x24, none)
@@ -267,19 +280,9 @@ DEF_SVE_FUNCTION_GS (svrintn, unaryxn, s_float, x24, none)
 DEF_SVE_FUNCTION_GS (svrintp, unaryxn, s_float, x24, none)
 DEF_SVE_FUNCTION_GS (svrshl, binary_int_opt_single_n, all_integer, x24, none)
 DEF_SVE_FUNCTION_GS (svsel, binaryxn, all_data, x24, implicit)
-DEF_SVE_FUNCTION_GS (svst1, storexn, all_data, x24, implicit)
-DEF_SVE_FUNCTION_GS (svstnt1, storexn, all_data, x24, implicit)
 DEF_SVE_FUNCTION_GS (svunpk, unary_convertxn, bhs_widen, x24, none)
 DEF_SVE_FUNCTION_GS (svuzp, unaryxn, all_data, x24, none)
 DEF_SVE_FUNCTION_GS (svuzpq, unaryxn, all_data, x24, none)
-DEF_SVE_FUNCTION_GS (svwhilege, compare_scalar, while_x, x2, none)
-DEF_SVE_FUNCTION (svwhilege, compare_scalar_count, while_x_c, none)
-DEF_SVE_FUNCTION_GS (svwhilegt, compare_scalar, while_x, x2, none)
-DEF_SVE_FUNCTION (svwhilegt, compare_scalar_count, while_x_c, none)
-DEF_SVE_FUNCTION_GS (svwhilele, compare_scalar, while_x, x2, none)
-DEF_SVE_FUNCTION (svwhilele, compare_scalar_count, while_x_c, none)
-DEF_SVE_FUNCTION_GS (svwhilelt, compare_scalar, while_x, x2, none)
-DEF_SVE_FUNCTION (svwhilelt, compare_scalar_count, while_x_c, none)
 DEF_SVE_FUNCTION_GS (svzip, unaryxn, all_data, x24, none)
 DEF_SVE_FUNCTION_GS (svzipq, unaryxn, all_data, x24, none)
 #undef REQUIRED_EXTENSIONS
diff --git a/gcc/config/aarch64/aarch64-sve.md 
b/gcc/config/aarch64/aarch64-sve.md
index 3d92a2a454f..f89036c35f7 100644
--- a/gcc/config/aarch64/aarch64-sve.md
+++ b/gcc/config/aarch64/aarch64-sve.md
@@ -7222,7 +7222,7 @@ (define_insn 
"@aarch64_<sur>dot_prod_lane<SVE_FULL_SDI:mode><SVE_FULL_BHI:mode>"
          (match_operand:SVE_FULL_SDI 4 "register_operand")))]
   "TARGET_SVE
    && (<SVE_FULL_SDI:elem_bits> == <SVE_FULL_BHI:elem_bits> * 4
-       || (TARGET_STREAMING_SME2
+       || (TARGET_SVE2p1_OR_SME2
           && <SVE_FULL_SDI:elem_bits> == 32
           && <SVE_FULL_BHI:elem_bits> == 16))"
   {@ [ cons: =0 , 1 , 2                           , 4 ; attrs: movprfx ]
@@ -7839,8 +7839,8 @@ (define_insn "@aarch64_sve_tmad<mode>"
 ;; - BFDOT (BF16)
 ;; - BFMLALB (BF16)
 ;; - BFMLALT (BF16)
-;; - BFMLSLB (SME2)
-;; - BFMLSLT (SME2)
+;; - BFMLSLB (SVE2p1, SME2)
+;; - BFMLSLT (SVE2p1, SME2)
 ;; - BFMMLA (BF16)
 ;; -------------------------------------------------------------------------
 
@@ -7851,7 +7851,7 @@ (define_insn "@aarch64_sve_<sve_fp_op>vnx4sf"
           (match_operand:VNx8BF 2 "register_operand")
           (match_operand:VNx8BF 3 "register_operand")]
          SVE_BFLOAT_TERNARY_LONG))]
-  "TARGET_SVE_BF16"
+  ""
   {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
      [ w        , 0 , w , w ; *              ] <sve_fp_op>\t%0.s, %2.h, %3.h
      [ ?&w      , w , w , w ; yes            ] movprfx\t%0, 
%1\;<sve_fp_op>\t%0.s, %2.h, %3.h
@@ -7867,7 +7867,7 @@ (define_insn "@aarch64_sve_<sve_fp_op>_lanevnx4sf"
           (match_operand:VNx8BF 3 "register_operand")
           (match_operand:SI 4 "const_int_operand")]
          SVE_BFLOAT_TERNARY_LONG_LANE))]
-  "TARGET_SVE_BF16"
+  ""
   {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
      [ w        , 0 , w , y ; *              ] <sve_fp_op>\t%0.s, %2.h, 
%3.h[%4]
      [ ?&w      , w , w , y ; yes            ] movprfx\t%0, 
%1\;<sve_fp_op>\t%0.s, %2.h, %3.h[%4]
diff --git a/gcc/config/aarch64/aarch64-sve2.md 
b/gcc/config/aarch64/aarch64-sve2.md
index fd4bd42b6d9..61bae64955f 100644
--- a/gcc/config/aarch64/aarch64-sve2.md
+++ b/gcc/config/aarch64/aarch64-sve2.md
@@ -140,7 +140,7 @@ (define_insn "@aarch64_<optab><mode>"
          [(match_operand:VNx16BI 2 "register_operand" "Uph")
           (match_operand:SVE_FULLx24 1 "memory_operand" "m")]
          LD1_COUNT))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "<optab><Vesize>\t%0, %K2/z, %1"
   [(set_attr "stride_type" "ld1_consecutive")]
 )
@@ -276,7 +276,7 @@ (define_insn "@aarch64_<optab><mode>"
           (match_operand:SVE_FULLx24 1 "aligned_register_operand" 
"Uw<vector_count>")
           (match_dup 0)]
          ST1_COUNT))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "<optab><Vesize>\t%1, %K2, %0"
   [(set_attr "stride_type" "st1_consecutive")]
 )
@@ -370,7 +370,7 @@ (define_insn 
"@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>"
 (define_insn "@aarch64_sve_ptrue_c<BHSD_BITS>"
   [(set (match_operand:VNx16BI 0 "register_operand" "=Uph")
        (unspec:VNx16BI [(const_int BHSD_BITS)] UNSPEC_PTRUE_C))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "ptrue\t%K0.<bits_etype>"
 )
 
@@ -388,7 +388,7 @@ (define_insn "@aarch64_sve_pext<BHSD_BITS>"
           (match_operand:DI 2 "const_int_operand")
           (const_int BHSD_BITS)]
          UNSPEC_PEXT))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "pext\t%0.<bits_etype>, %K1[%2]"
 )
 
@@ -399,7 +399,7 @@ (define_insn "@aarch64_sve_pext<BHSD_BITS>x2"
           (match_operand:DI 2 "const_int_operand")
           (const_int BHSD_BITS)]
          UNSPEC_PEXTx2))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "pext\t{%S0.<bits_etype>, %T0.<bits_etype>}, %K1[%2]"
 )
 
@@ -451,7 +451,7 @@ (define_insn "@aarch64_sve_cntp_c<BHSD_BITS>"
           (match_operand:DI 2 "const_int_operand")
           (const_int BHSD_BITS)]
          UNSPEC_CNTP_C))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "cntp\t%x0, %K1.<bits_etype>, vlx%2"
 )
 
@@ -1117,7 +1117,7 @@ (define_insn "@aarch64_sve_fclamp<mode>"
             UNSPEC_FMAXNM)
           (match_operand:SVE_FULL_F 3 "register_operand")]
          UNSPEC_FMINNM))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   {@ [cons: =0,  1, 2, 3; attrs: movprfx]
      [       w, %0, w, w; *             ] fclamp\t%0.<Vetype>, %2.<Vetype>, 
%3.<Vetype>
      [     ?&w,  w, w, w; yes           ] movprfx\t%0, 
%1\;fclamp\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
@@ -1137,7 +1137,7 @@ (define_insn_and_split "*aarch64_sve_fclamp<mode>_x"
             UNSPEC_COND_FMAXNM)
           (match_operand:SVE_FULL_F 3 "register_operand")]
          UNSPEC_COND_FMINNM))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   {@ [cons: =0,  1, 2, 3; attrs: movprfx]
      [       w, %0, w, w; *             ] #
      [     ?&w,  w, w, w; yes           ] #
@@ -2039,7 +2039,7 @@ (define_insn "<sur>dot_prodvnx4sivnx8hi"
             (match_operand:VNx8HI 2 "register_operand")]
            DOTPROD)
          (match_operand:VNx4SI 3 "register_operand")))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
      [ w        , w , w , 0 ; *              ] <sur>dot\t%0.s, %1.h, %2.h
      [ ?&w      , w , w , w ; yes            ] movprfx\t%0, 
%3\;<sur>dot\t%0.s, %1.h, %2.h
@@ -2137,7 +2137,7 @@ (define_insn "aarch64_sve_fdotvnx4sfvnx8hf"
             (match_operand:VNx8HF 2 "register_operand")]
            UNSPEC_FDOT)
          (match_operand:VNx4SF 3 "register_operand")))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
      [ w        , w , w , 0 ; *              ] fdot\t%0.s, %1.h, %2.h
      [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;fdot\t%0.s, 
%1.h, %2.h
@@ -2155,7 +2155,7 @@ (define_insn "aarch64_fdot_prod_lanevnx4sfvnx8hf"
               UNSPEC_SVE_LANE_SELECT)]
            UNSPEC_FDOT)
          (match_operand:VNx4SF 4 "register_operand")))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   {@ [ cons: =0 , 1 , 2 , 4 ; attrs: movprfx ]
      [ w        , w , y , 0 ; *              ] fdot\t%0.s, %1.h, %2.h[%3]
      [ ?&w      , w , y , w ; yes            ] movprfx\t%0, %4\;fdot\t%0.s, 
%1.h, %2.h[%3]
@@ -2222,7 +2222,7 @@ (define_insn 
"@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>"
        (unspec:VNx8HI_ONLY
          [(match_operand:VNx8SI_ONLY 1 "aligned_register_operand" 
"Uw<vector_count>")]
          SVE_QCVTxN))]
-  "TARGET_STREAMING_SME2"
+  ""
   "<optab>\t%0.h, %1"
 )
 
@@ -2336,6 +2336,14 @@ (define_insn "@aarch64_sve_<sve_int_op><mode>"
 ;; -------------------------------------------------------------------------
 ;; ---- [INT] Multi-vector narrowing right shifts
 ;; -------------------------------------------------------------------------
+;; Includes:
+;; - SQRSHR
+;; - SQRSHRN
+;; - SQRSHRU
+;; - SQRSHRUN
+;; - UQRSHR
+;; - UQRSHRN
+;; -------------------------------------------------------------------------
 
 (define_insn "@aarch64_sve_<sve_int_op><mode>"
   [(set (match_operand:<VNARROW> 0 "register_operand" "=w")
@@ -2343,7 +2351,7 @@ (define_insn "@aarch64_sve_<sve_int_op><mode>"
          [(match_operand:SVE_FULL_SIx2_SDIx4 1 "register_operand" 
"Uw<vector_count>")
           (match_operand:DI 2 "const_int_operand")]
          SVE2_INT_SHIFT_IMM_NARROWxN))]
-  "TARGET_STREAMING_SME2"
+  "(<MODE>mode == VNx8SImode || TARGET_STREAMING_SME2)"
   "<sve_int_op>\t%0.<Ventype>, %1, #%2"
 )
 
@@ -3145,7 +3153,7 @@ (define_insn 
"@aarch64_sve_while<while_optab_cmp>_b<BHSD_BITS>_x2"
           (const_int BHSD_BITS)]
          SVE_WHILE_ORDER))
    (clobber (reg:CC_NZC CC_REGNUM))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "while<cmp_op>\t{%S0.<bits_etype>, %T0.<bits_etype>}, %x1, %x2"
 )
 
@@ -3159,7 +3167,7 @@ (define_insn 
"@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>"
           (match_operand:DI 3 "const_int_operand")]
          SVE_WHILE_ORDER))
    (clobber (reg:CC_NZC CC_REGNUM))]
-  "TARGET_STREAMING_SME2"
+  "TARGET_SVE2p1_OR_SME2"
   "while<cmp_op>\t%K0.<bits_etype>, %x1, %x2, vlx%3"
 )
 
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 404efa16c28..f07b2c49f0d 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -490,6 +490,10 @@ constexpr auto AARCH64_FL_DEFAULT_ISA_MODE ATTRIBUTE_UNUSED
    functions, since streaming mode itself implies SME.  */
 #define TARGET_SVE2p1_OR_SME (TARGET_SVE2p1 || TARGET_STREAMING)
 
+#define TARGET_SVE2p1_OR_SME2 \
+  ((TARGET_SVE2p1 || TARGET_STREAMING) \
+   && (TARGET_SME2 || TARGET_NON_STREAMING))
+
 /* Standard register usage.  */
 
 /* 31 64-bit general purpose registers R0-R30:
diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
index b8924cdc74b..73d674816f1 100644
--- a/gcc/config/aarch64/iterators.md
+++ b/gcc/config/aarch64/iterators.md
@@ -3050,19 +3050,19 @@ (define_int_iterator SVE_FP_BINARY_MULTI [UNSPEC_FMAX 
UNSPEC_FMAXNM
                                          UNSPEC_FMIN UNSPEC_FMINNM])
 
 (define_int_iterator SVE_BFLOAT_TERNARY_LONG
-  [UNSPEC_BFDOT
-   UNSPEC_BFMLALB
-   UNSPEC_BFMLALT
-   (UNSPEC_BFMLSLB "TARGET_STREAMING_SME2")
-   (UNSPEC_BFMLSLT "TARGET_STREAMING_SME2")
-   (UNSPEC_BFMMLA "TARGET_NON_STREAMING")])
+  [(UNSPEC_BFDOT "TARGET_SVE_BF16")
+   (UNSPEC_BFMLALB "TARGET_SVE_BF16")
+   (UNSPEC_BFMLALT "TARGET_SVE_BF16")
+   (UNSPEC_BFMLSLB "TARGET_SVE2p1_OR_SME2")
+   (UNSPEC_BFMLSLT "TARGET_SVE2p1_OR_SME2")
+   (UNSPEC_BFMMLA "TARGET_SVE_BF16 && TARGET_NON_STREAMING")])
 
 (define_int_iterator SVE_BFLOAT_TERNARY_LONG_LANE
-  [UNSPEC_BFDOT
-   UNSPEC_BFMLALB
-   UNSPEC_BFMLALT
-   (UNSPEC_BFMLSLB "TARGET_STREAMING_SME2")
-   (UNSPEC_BFMLSLT "TARGET_STREAMING_SME2")])
+  [(UNSPEC_BFDOT "TARGET_SVE_BF16")
+   (UNSPEC_BFMLALB "TARGET_SVE_BF16")
+   (UNSPEC_BFMLALT "TARGET_SVE_BF16")
+   (UNSPEC_BFMLSLB "TARGET_SVE2p1_OR_SME2")
+   (UNSPEC_BFMLSLT "TARGET_SVE2p1_OR_SME2")])
 
 (define_int_iterator SVE_INT_REDUCTION [UNSPEC_ANDV
                                        UNSPEC_IORV
@@ -3338,12 +3338,13 @@ (define_int_iterator SVE2_INT_SHIFT_IMM_NARROWT 
[UNSPEC_RSHRNT
                                                 UNSPEC_UQRSHRNT
                                                 UNSPEC_UQSHRNT])
 
-(define_int_iterator SVE2_INT_SHIFT_IMM_NARROWxN [UNSPEC_SQRSHR
-                                                 UNSPEC_SQRSHRN
-                                                 UNSPEC_SQRSHRU
-                                                 UNSPEC_SQRSHRUN
-                                                 UNSPEC_UQRSHR
-                                                 UNSPEC_UQRSHRN])
+(define_int_iterator SVE2_INT_SHIFT_IMM_NARROWxN
+  [(UNSPEC_SQRSHR "TARGET_STREAMING_SME2")
+   (UNSPEC_SQRSHRN "TARGET_SVE2p1_OR_SME2")
+   (UNSPEC_SQRSHRU "TARGET_STREAMING_SME2")
+   (UNSPEC_SQRSHRUN "TARGET_SVE2p1_OR_SME2")
+   (UNSPEC_UQRSHR "TARGET_STREAMING_SME2")
+   (UNSPEC_UQRSHRN "TARGET_SVE2p1_OR_SME2")])
 
 (define_int_iterator SVE2_INT_SHIFT_INSERT [UNSPEC_SLI UNSPEC_SRI])
 
@@ -3488,9 +3489,12 @@ (define_int_iterator SVE2_PMULL [UNSPEC_PMULLB 
UNSPEC_PMULLT])
 
 (define_int_iterator SVE2_PMULL_PAIR [UNSPEC_PMULLB_PAIR UNSPEC_PMULLT_PAIR])
 
-(define_int_iterator SVE_QCVTxN [UNSPEC_SQCVT UNSPEC_SQCVTN
-                                UNSPEC_SQCVTU UNSPEC_SQCVTUN
-                                UNSPEC_UQCVT UNSPEC_UQCVTN])
+(define_int_iterator SVE_QCVTxN [(UNSPEC_SQCVT "TARGET_STREAMING_SME2")
+                                (UNSPEC_SQCVTN "TARGET_SVE2p1_OR_SME2")
+                                (UNSPEC_SQCVTU "TARGET_STREAMING_SME2")
+                                (UNSPEC_SQCVTUN "TARGET_SVE2p1_OR_SME2")
+                                (UNSPEC_UQCVT "TARGET_STREAMING_SME2")
+                                (UNSPEC_UQCVTN "TARGET_SVE2p1_OR_SME2")])
 
 (define_int_iterator SVE2_SFx24_UNARY [UNSPEC_FRINTA UNSPEC_FRINTM
                                       UNSPEC_FRINTN UNSPEC_FRINTP])
-- 
2.25.1

Attachment: tests.diff.xz
Description: application/xz

Reply via email to