mbox series

[0/2] aarch64: remove SVE2 requirement from SME and diagnose it as unsupported

Message ID 20241002171339.299940-1-andre.simoesdiasvieira@arm.com
Headers show
Series aarch64: remove SVE2 requirement from SME and diagnose it as unsupported | expand

Message

Andre Vieira (lists) Oct. 2, 2024, 5:13 p.m. UTC
This patch series removes the requirement of SVE2 for SME, so when a user
passes +sme, SVE2 is not enabled as a result of that.
We do this to be compliant with the ISA and behave in a compatible manner to
other toolchains, to prevent unexpected behavior when switching between them.

However, for the time being we diagnose the use of SME without SVE2 as
unsupported, we suspect that the backend correctly enables and disables the
right instructions given the options, but we believe that for certain codegen
there are assumptions that SVE & SVE2 is present when using SME.  Before we
fully support this combination we should investigate these.

The patch series also refactors the FCMA/COMPNUM/TARGET_COMPLEX feature to
separate it from Armv8.3-A feature set.

Andre Vieira (2)
 aarch64: Split FCMA feature bit from Armv8.3-A
 aarch64: remove SVE2 requirement from SME and diagnose it as unsupported

Regression tested on aarch64-none-linux-gnu.

OK for trunk?

Andre Vieira (2):
  aarch64: Split FCMA feature bit from Armv8.3-A
  aarch64: remove SVE2 requirement from SME and diagnose it as unsupported

 gcc/config/aarch64/aarch64-arches.def                         | 2 +-
 gcc/config/aarch64/aarch64-option-extensions.def              | 4 +++-
 gcc/config/aarch64/aarch64.cc                                 | 4 ++++
 gcc/config/aarch64/aarch64.h                                  | 2 +-
 .../aarch64/sve/acle/general-c/binary_int_opt_single_n_2.c    | 2 +-
 .../aarch64/sve/acle/general-c/binary_opt_single_n_2.c        | 2 +-
 .../gcc.target/aarch64/sve/acle/general-c/binary_single_1.c   | 2 +-
 .../gcc.target/aarch64/sve/acle/general-c/binaryxn_2.c        | 2 +-
 gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/clamp_1.c | 2 +-
 .../aarch64/sve/acle/general-c/compare_scalar_count_1.c       | 2 +-
 .../aarch64/sve/acle/general-c/shift_right_imm_narrowxn_1.c   | 2 +-
 .../gcc.target/aarch64/sve/acle/general-c/storexn_1.c         | 2 +-
 .../aarch64/sve/acle/general-c/ternary_qq_or_011_lane_1.c     | 2 +-
 .../gcc.target/aarch64/sve/acle/general-c/unary_convertxn_1.c | 2 +-
 .../gcc.target/aarch64/sve/acle/general-c/unaryxn_1.c         | 2 +-
 15 files changed, 20 insertions(+), 14 deletions(-)

Comments

Kyrylo Tkachov Oct. 4, 2024, 12:02 p.m. UTC | #1
Hi Andre,

> On 2 Oct 2024, at 19:13, Andre Vieira <andre.simoesdiasvieira@arm.com> wrote:
> 
> External email: Use caution opening links or attachments
> 
> 
> This patch series removes the requirement of SVE2 for SME, so when a user
> passes +sme, SVE2 is not enabled as a result of that.
> We do this to be compliant with the ISA and behave in a compatible manner to
> other toolchains, to prevent unexpected behavior when switching between them.
> 
> However, for the time being we diagnose the use of SME without SVE2 as
> unsupported, we suspect that the backend correctly enables and disables the
> right instructions given the options, but we believe that for certain codegen
> there are assumptions that SVE & SVE2 is present when using SME.  Before we
> fully support this combination we should investigate these.

Is that something you intend to do for GCC 15.1?
I’m not a fan of the warning in patch [2/2].
If the compiler is at risk of crashing, generating wrong code, or emitting SVE code in non-streaming regions or other such violations then we should mark it as unsupported with an error.
Usually diagnostics about “I could support it but I don’t” use the sorry () API for this reason.

Thanks,
Kyrill

> 
> The patch series also refactors the FCMA/COMPNUM/TARGET_COMPLEX feature to
> separate it from Armv8.3-A feature set.
> 
> Andre Vieira (2)
> aarch64: Split FCMA feature bit from Armv8.3-A
> aarch64: remove SVE2 requirement from SME and diagnose it as unsupported
> 
> Regression tested on aarch64-none-linux-gnu.
> 
> OK for trunk?
> 
> Andre Vieira (2):
>  aarch64: Split FCMA feature bit from Armv8.3-A
>  aarch64: remove SVE2 requirement from SME and diagnose it as unsupported
> 
> gcc/config/aarch64/aarch64-arches.def                         | 2 +-
> gcc/config/aarch64/aarch64-option-extensions.def              | 4 +++-
> gcc/config/aarch64/aarch64.cc                                 | 4 ++++
> gcc/config/aarch64/aarch64.h                                  | 2 +-
> .../aarch64/sve/acle/general-c/binary_int_opt_single_n_2.c    | 2 +-
> .../aarch64/sve/acle/general-c/binary_opt_single_n_2.c        | 2 +-
> .../gcc.target/aarch64/sve/acle/general-c/binary_single_1.c   | 2 +-
> .../gcc.target/aarch64/sve/acle/general-c/binaryxn_2.c        | 2 +-
> gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/clamp_1.c | 2 +-
> .../aarch64/sve/acle/general-c/compare_scalar_count_1.c       | 2 +-
> .../aarch64/sve/acle/general-c/shift_right_imm_narrowxn_1.c   | 2 +-
> .../gcc.target/aarch64/sve/acle/general-c/storexn_1.c         | 2 +-
> .../aarch64/sve/acle/general-c/ternary_qq_or_011_lane_1.c     | 2 +-
> .../gcc.target/aarch64/sve/acle/general-c/unary_convertxn_1.c | 2 +-
> .../gcc.target/aarch64/sve/acle/general-c/unaryxn_1.c         | 2 +-
> 15 files changed, 20 insertions(+), 14 deletions(-)
> 
> --
> 2.25.1
>