On Thu, Mar 13, 2025 at 05:10:07PM +0000, Andre Vieira (lists) wrote: > Apologies for the delay, had been waiting on some other relevant patches to > go in to make sure we didn't break any valid existing behaviours. It should > all be working properly now. I think I've also addressed all your comments. > Most notable change is that it now uses the 'sorry' mechanism. > > Bootstrapped and regression tested on aarch64-none-linux-gnu. > > > aarch64: remove SVE2 requirement from SME and diagnose it as unsupported
I find this line hard to understand, but I struggled to find a better wording when you posted the first version. I think something better would be: aarch64: Remove +sme -> +sve2 feature flag dependency We don't yet support SME without SVE2, so bail out with a 'sorry' if we encounter this configuration. > As per the AArch64 ISA FEAT_SME does not require FEAT_SVE2, so we are > removing > that false dependency in GCC. However, we chose for now to not support this > combination of features and will diagnose the combination of FEAT_SME > without > FEAT_SVE2 as unsupported by GCC. We may choose to support this in the > future. ... > diff --git a/gcc/config/aarch64/aarch64-option-extensions.def > b/gcc/config/aarch64/aarch64-option-extensions.def > index > aa8d315c240fbd25b49008b131cc09f04001eb80..8603836de01588b8db417289f842f911567288ea > 100644 > --- a/gcc/config/aarch64/aarch64-option-extensions.def > +++ b/gcc/config/aarch64/aarch64-option-extensions.def > @@ -207,7 +207,7 @@ AARCH64_FMV_FEATURE("sve2-sm4", SVE_SM4, (SVE2_SM4)) > > AARCH64_OPT_EXTENSION("sve2p1", SVE2p1, (SVE2), (), (), "sve2p1") > > -AARCH64_OPT_FMV_EXTENSION("sme", SME, (BF16, SVE2), (), (), "sme") > +AARCH64_OPT_FMV_EXTENSION("sme", SME, (BF16, FCMA, F16FML), (), (), "sme") Have you deliberately changed other dependenciesi? As well as removing SVE and SVE2 from +sme, this would also remove FP16 and add F16FML (which does nothing by itself if FP16 isn't also enabled). > > AARCH64_OPT_EXTENSION("memtag", MEMTAG, (), (), (), "") > > diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc > index > 36b65df50c57267d9c18e430665c411f1bf3cc24..c9f37bd70cbccef70f383f873c97b2be58c938dc > 100644 > --- a/gcc/config/aarch64/aarch64.cc > +++ b/gcc/config/aarch64/aarch64.cc > @@ -18886,6 +18886,9 @@ aarch64_override_options_internal (struct gcc_options > *opts) > SET_OPTION_IF_UNSET (opts, &global_options_set, > param_fully_pipelined_fma, > 1); > > + if (TARGET_SME && !TARGET_SVE2) > + sorry ("no support for %qs without %qs", "sme", "sve2"); > + > aarch64_override_options_after_change_1 (opts); > } > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index > 4fbb4cda101ebd14891a3ad80aa5b1bc069b45c6..3754e468a05b3ae554b71adb4cf60068d5249507 > 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -22068,7 +22068,8 @@ Enable the Pointer Authentication Extension. > @item cssc > Enable the Common Short Sequence Compression instructions. > @item sme > -Enable the Scalable Matrix Extension. > +Enable the Scalable Matrix Extension. This can only be used with the sve2 > +extension. How about "This is only supported when SVE2 is also enabled"? I think that would make it clearer that it's a lack of (gcc) support, not a fundamental requirement. > @item sme-i16i64 > Enable the FEAT_SME_I16I64 extension to SME. This also enables SME > instructions.