Kyrylo Tkachov <ktkac...@nvidia.com> writes:
>> On 20 Aug 2024, at 19:11, Richard Sandiford <richard.sandif...@arm.com> 
>> wrot>> Jennifer Schmitz <jschm...@nvidia.com> writes:
>>> The param aarch64-autovec-preference=N is a useful tool for testing
>>> auto-vectorisation in GCC as it allows the user to force a particular
>>> strategy. So far, N could be an numerical value between 0 and 4.
>>> This patch adds more user-friendly names to distinguish the options.
>>> For backwards compatibility, the numerical values are retained, but are made
>>> aliases of the new user-readable strings.
>>> 
>>> The patch was bootstrapped and regtested on aarch64-linux-gnu, no 
>>> regression.
>>> Ok for mainline?
>> 
>> User-readable names are good, but just to check: who is the intended
>> user here?  Is it just to save developers/experimenters the effort of
>> having to look up the magic numbers (and yes, I have to do that each
>> time I use it :) )?  Or is it for more general users?
>> 
>> If this is something that is being recommended for general use,
>> then we should probably promote it from a --param to a full -m option.
>> 
>> The difference is that --params are intended to be developer options,
>> so they can be removed or changed without warning.  For this reason,
>> if we keep it as a --param, I think we should remove the old numeric
>> values and just go with the symbolic ones.
>> 
>> Instead, -m options are intended as user options and are more stable.
>> If an -m option becomes redundant later, we'd probably just turn it into
>> a no-op rather than remove it.
>
> I recommended to Jennifer to keep the old names as aliases because I had seem 
> some internal scripts that did some specialist analysis use them and I got 
> the impression there may be more such users.
> But those scripts can easily be updated and indeed this is a param that we 
> don’t promise to keep it backwards—compatible.
> I’ve been in two minds over whether to keep the old options, I’m okay with 
> switching to just the enum values.
> I wouldn’t want to make this an -m* option as I don’t want to see this used 
> in production code to override what the compiler should be getting right on 
> its own.

Ah, ok, thanks.  In that case I agree we should just keep it as a --param.
I've a slight preference for dropping the numeric arguments, but definitely
no objection to keeping them if that's more convenient.

Richard

>
> Thanks,
> Kyrill
>
>
>> 
>>> 
>>> Signed-off-by: Jennifer Schmitz <jschm...@nvidia.com>
>>> 
>>> gcc/
>>>      PR target/116365
>>>      * config/aarch64/aarch64-opts.h
>>>      (enum aarch64_autovec_preference_enum): New enum.
>>>      * config/aarch64/aarch64.cc (aarch64_cmp_autovec_modes):
>>>      Change numerical to enum values.
>>>      (aarch64_autovectorize_vector_modes): Change numerical to enum
>>>      values.
>>>      (aarch64_vector_costs::record_potential_advsimd_unrolling):
>>>      Change numerical to enum values.
>>>      * config/aarch64/aarch64.opt: Change param type to enum.
>>>      * doc/invoke.texi: Update documentation.
>>> 
>>> gcc/testsuite/
>>>      PR target/116365
>>>      * gcc.target/aarch64/autovec_param_0.c: New test.
>>>      * gcc.target/aarch64/autovec_param_1.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_2.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_3.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_4.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_asimd-only.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_default.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_prefer-asimd.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_prefer-sve.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_sve-only.c: Likewise.
>>>      * gcc.target/aarch64/neoverse_v1_2.c: Update parameter value.
>>>      * gcc.target/aarch64/neoverse_v1_3.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_asrd_1.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_cnot_4.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_unary_5.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_uxt_5.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_xorsign_2.c: Likewise.
>>>      * gcc.target/aarch64/sve/pr98268-1.c: Likewise.
>>>      * gcc.target/aarch64/sve/pr98268-2.c: Likewise.
>>> 
>>> From 2e8693143f1c9c0668dea7bad77b3eadac6a4835 Mon Sep 17 00:00:00 2001
>>> From: Jennifer Schmitz <jschm...@nvidia.com>
>>> Date: Mon, 19 Aug 2024 08:42:55 -0700
>>> Subject: [PATCH] PR target/116365: Add user-friendly arguments to --param
>>> aarch64-autovec-preference=N
>>> 
>>> The param aarch64-autovec-preference=N is a useful tool for testing
>>> auto-vectorisation in GCC as it allows the user to force a particular
>>> strategy. So far, N could be a numerical value between 0 and 4.
>>> This patch adds more user-friendly names to distinguish the options.
>>> For backwards compatibility, the numerical values are retained, but are made
>>> aliases of the new user-readable strings.
>>> 
>>> The patch was bootstrapped and regtested on aarch64-linux-gnu, no 
>>> regression.
>>> Ok for mainline?
>>> 
>>> Signed-off-by: Jennifer Schmitz <jschm...@nvidia.com>
>>> 
>>> gcc/
>>>      PR target/116365
>>>      * config/aarch64/aarch64-opts.h
>>>      (enum aarch64_autovec_preference_enum): New enum.
>>>      * config/aarch64/aarch64.cc (aarch64_cmp_autovec_modes):
>>>      Change numerical to enum values.
>>>      (aarch64_autovectorize_vector_modes): Change numerical to enum
>>>      values.
>>>      (aarch64_vector_costs::record_potential_advsimd_unrolling):
>>>      Change numerical to enum values.
>>>      * config/aarch64/aarch64.opt: Change param type to enum.
>>>      * doc/invoke.texi: Update documentation.
>>> 
>>> gcc/testsuite/
>>>      PR target/116365
>>>      * gcc.target/aarch64/autovec_param_0.c: New test.
>>>      * gcc.target/aarch64/autovec_param_1.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_2.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_3.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_4.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_asimd-only.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_default.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_prefer-asimd.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_prefer-sve.c: Likewise.
>>>      * gcc.target/aarch64/autovec_param_sve-only.c: Likewise.
>>>      * gcc.target/aarch64/neoverse_v1_2.c: Update parameter value.
>>>      * gcc.target/aarch64/neoverse_v1_3.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_asrd_1.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_cnot_4.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_unary_5.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_uxt_5.c: Likewise.
>>>      * gcc.target/aarch64/sve/cond_xorsign_2.c: Likewise.
>>>      * gcc.target/aarch64/sve/pr98268-1.c: Likewise.
>>>      * gcc.target/aarch64/sve/pr98268-2.c: Likewise.
>>> ---
>>> gcc/config/aarch64/aarch64-opts.h             | 17 +++++++++
>>> gcc/config/aarch64/aarch64.cc                 | 14 +++----
>>> gcc/config/aarch64/aarch64.opt                | 37 ++++++++++++++++++-
>>> gcc/doc/invoke.texi                           | 27 ++++++--------
>>> .../gcc.target/aarch64/autovec_param_0.c      |  4 ++
>>> .../gcc.target/aarch64/autovec_param_1.c      |  4 ++
>>> .../gcc.target/aarch64/autovec_param_2.c      |  4 ++
>>> .../gcc.target/aarch64/autovec_param_3.c      |  4 ++
>>> .../gcc.target/aarch64/autovec_param_4.c      |  4 ++
>>> .../aarch64/autovec_param_asimd-only.c        |  4 ++
>>> .../aarch64/autovec_param_default.c           |  4 ++
>>> .../aarch64/autovec_param_prefer-asimd.c      |  4 ++
>>> .../aarch64/autovec_param_prefer-sve.c        |  4 ++
>>> .../aarch64/autovec_param_sve-only.c          |  4 ++
>>> .../gcc.target/aarch64/neoverse_v1_2.c        |  2 +-
>>> .../gcc.target/aarch64/neoverse_v1_3.c        |  2 +-
>>> .../gcc.target/aarch64/sve/cond_asrd_1.c      |  2 +-
>>> .../gcc.target/aarch64/sve/cond_cnot_4.c      |  2 +-
>>> .../gcc.target/aarch64/sve/cond_unary_5.c     |  2 +-
>>> .../gcc.target/aarch64/sve/cond_uxt_5.c       |  2 +-
>>> .../gcc.target/aarch64/sve/cond_xorsign_2.c   |  2 +-
>>> .../gcc.target/aarch64/sve/pr98268-1.c        |  2 +-
>>> .../gcc.target/aarch64/sve/pr98268-2.c        |  2 +-
>>> 23 files changed, 120 insertions(+), 33 deletions(-)
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_0.c
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_1.c
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_2.c
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_3.c
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_4.c
>>> create mode 100644 
>>> gcc/testsuite/gcc.target/aarch64/autovec_param_asimd-only.c
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_default.c
>>> create mode 100644 
>>> gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-asimd.c
>>> create mode 100644 
>>> gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-sve.c
>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/autovec_param_sve-only.c
>>> 
>>> diff --git a/gcc/config/aarch64/aarch64-opts.h 
>>> b/gcc/config/aarch64/aarch64-opts.h
>>> index 80ec1a05253..1567c4baffa 100644
>>> --- a/gcc/config/aarch64/aarch64-opts.h
>>> +++ b/gcc/config/aarch64/aarch64-opts.h
>>> @@ -115,6 +115,23 @@ enum aarch64_key_type {
>>>   AARCH64_KEY_B
>>> };
>>> 
>>> +/* An enum for setting the auto-vectorization preference:
>>> +   - AARCH64_AUTOVEC_PREFERENCE_DEFAULT: Use default heuristics
>>> +   - AARCH64_AUTOVEC_PREFERENCE_ASIMD_ONLY: Use only Advanced SIMD (Neon)
>>> +   for auto-vectorisation
>>> +   - AARCH64_AUTOVEC_PREFERENCE_SVE_ONLY: Use only SVE for 
>>> auto-vectorisation
>>> +   - AARCH64_AUTOVEC_PREFERENCE_PREFER_ASIMD: Use both Neon and SVE,
>>> +   but prefer Neon when the costs are equal
>>> +   - AARCH64_AUTOVEC_PREFERENCE_PREFER_SVE: Use both Neon and SVE,
>>> +   but prefer SVE when the costs are equal.  */
>>> +enum aarch64_autovec_preference_enum {
>>> +  AARCH64_AUTOVEC_PREFERENCE_DEFAULT,
>>> +  AARCH64_AUTOVEC_PREFERENCE_ASIMD_ONLY,
>>> +  AARCH64_AUTOVEC_PREFERENCE_SVE_ONLY,
>>> +  AARCH64_AUTOVEC_PREFERENCE_PREFER_ASIMD,
>>> +  AARCH64_AUTOVEC_PREFERENCE_PREFER_SVE
>>> +};
>>> +
>>> /* An enum specifying how to handle load and store pairs using
>>>    a fine-grained policy:
>>>    - LDP_STP_POLICY_DEFAULT: Use the policy defined in the tuning structure.
>>> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
>>> index bfd7bcdef7c..fba3abe9856 100644
>>> --- a/gcc/config/aarch64/aarch64.cc
>>> +++ b/gcc/config/aarch64/aarch64.cc
>>> @@ -16404,7 +16404,7 @@ record_potential_advsimd_unrolling (loop_vec_info 
>>> loop_vinfo)
>>> 
>>>   /* Check whether it is possible in principle to use Advanced SIMD
>>>      instead.  */
>>> -  if (aarch64_autovec_preference == 2)
>>> +  if (aarch64_autovec_preference == AARCH64_AUTOVEC_PREFERENCE_SVE_ONLY)
>>>     return;
>>> 
>>>   /* We don't want to apply the heuristic to outer loops, since it's
>>> @@ -22310,8 +22310,8 @@ static bool
>>> aarch64_cmp_autovec_modes (machine_mode sve_m, machine_mode asimd_m)
>>> {
>>>   /* Take into account the aarch64-autovec-preference param if non-zero.  */
>>> -  bool only_asimd_p = aarch64_autovec_preference == 1;
>>> -  bool only_sve_p = aarch64_autovec_preference == 2;
>>> +  bool only_asimd_p = aarch64_autovec_preference == 
>>> AARCH64_AUTOVEC_PREFERENCE_ASIMD_ONLY;
>>> +  bool only_sve_p = aarch64_autovec_preference == 
>>> AARCH64_AUTOVEC_PREFERENCE_SVE_ONLY;
>>> 
>>>   if (only_asimd_p)
>>>     return false;
>>> @@ -22319,8 +22319,8 @@ aarch64_cmp_autovec_modes (machine_mode sve_m, 
>>> machine_mode asimd_m)
>>>     return true;
>>> 
>>>   /* The preference in case of a tie in costs.  */
>>> -  bool prefer_asimd = aarch64_autovec_preference == 3;
>>> -  bool prefer_sve = aarch64_autovec_preference == 4;
>>> +  bool prefer_asimd = aarch64_autovec_preference == 
>>> AARCH64_AUTOVEC_PREFERENCE_PREFER_ASIMD;
>>> +  bool prefer_sve = aarch64_autovec_preference == 
>>> AARCH64_AUTOVEC_PREFERENCE_PREFER_SVE;
>>> 
>>>   poly_int64 nunits_sve = GET_MODE_NUNITS (sve_m);
>>>   poly_int64 nunits_asimd = GET_MODE_NUNITS (asimd_m);
>>> @@ -22421,8 +22421,8 @@ aarch64_autovectorize_vector_modes (vector_modes 
>>> *modes, bool)
>>>        than an SVE main loop with N bytes then by default we'll try to
>>>        use the SVE loop to vectorize the epilogue instead.  */
>>> 
>>> -  bool only_asimd_p = aarch64_autovec_preference == 1;
>>> -  bool only_sve_p = aarch64_autovec_preference == 2;
>>> +  bool only_asimd_p = aarch64_autovec_preference == 
>>> AARCH64_AUTOVEC_PREFERENCE_ASIMD_ONLY;
>>> +  bool only_sve_p = aarch64_autovec_preference == 
>>> AARCH64_AUTOVEC_PREFERENCE_SVE_ONLY;
>> 
>> Formatting nit, sorry, but: long lines in the three hunks above.
>> (Alternatively, we could drop "PREFERENCE_" from the enum name,
>> in which case the lines all fit.)
>>> 
>>>   unsigned int sve_i = (TARGET_SVE && !only_asimd_p) ? 0 : ARRAY_SIZE 
>>> (sve_modes);
>>>   unsigned int advsimd_i = 0;
>>> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
>>> index 32b772d2a8a..a5c60e6a309 100644
>>> --- a/gcc/doc/invoke.texi
>>> +++ b/gcc/doc/invoke.texi
>>> @@ -17175,22 +17175,17 @@ The precision of division is propotional to this 
>>> param when division
>>> approximation is enabled.  The default value is 2.
>>> 
>>> @item aarch64-autovec-preference
>>> -Force an ISA selection strategy for auto-vectorization.  Accepts values 
>>> from
>>> -0 to 4, inclusive.
>>> -@table @samp
>>> -@item 0
>>> -Use the default heuristics.
>>> -@item 1
>>> -Use only Advanced SIMD for auto-vectorization.
>>> -@item 2
>>> -Use only SVE for auto-vectorization.
>>> -@item 3
>>> -Use both Advanced SIMD and SVE.  Prefer Advanced SIMD when the costs are
>>> -deemed equal.
>>> -@item 4
>>> -Use both Advanced SIMD and SVE.  Prefer SVE when the costs are deemed 
>>> equal.
>>> -@end table
>>> -The default value is 0.
>>> +Force an ISA selection strategy for auto-vectorization.
>>> +With @option{--param=aarch64-autovec-preference=default}, use the default
>>> +heuristics.
>>> +With @option{--param=aarch64-autovec-preference=asimd-only}, use only
>>> +Advanced SIMD for auto-vectorization.
>>> +With @option{--param=aarch64-autovec-preference=sve-only}, use only SVE
>>> +for auto-vectorization.
>>> +With @option{--param=aarch64-autovec-preference=prefer-asimd}, use both
>>> +Advanced SIMD and SVE.  Prefer Advanced SIMD when the costs are deemed 
>>> equal.
>>> +With @option{--param=aarch64-autovec-preference=prefer-sve}, use both
>>> +Advanced SIMD and SVE.  Prefer SVE when the costs are deemed equal.
>> 
>> The table presentation seems more natural to me.
>> 
>> Thanks,
>> Richard
>> 
>>> 
>>> @item aarch64-ldp-policy
>>> Fine-grained policy for load pairs.
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_0.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_0.c
>>> new file mode 100644
>>> index 00000000000..45a2a4c5a6b
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_0.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=0" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_1.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_1.c
>>> new file mode 100644
>>> index 00000000000..bf7f7b402a9
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_1.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=1" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_2.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_2.c
>>> new file mode 100644
>>> index 00000000000..81d6c19ea9c
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_2.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=2" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_3.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_3.c
>>> new file mode 100644
>>> index 00000000000..875eb1ea0d6
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_3.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=3" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_4.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_4.c
>>> new file mode 100644
>>> index 00000000000..55ad25fecc4
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_4.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=4" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_asimd-only.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_asimd-only.c
>>> new file mode 100644
>>> index 00000000000..c983b26604d
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_asimd-only.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=asimd-only" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_default.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_default.c
>>> new file mode 100644
>>> index 00000000000..d02acf17df2
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_default.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=default" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-asimd.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-asimd.c
>>> new file mode 100644
>>> index 00000000000..a40d7bdc0d9
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-asimd.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=prefer-asimd" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-sve.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-sve.c
>>> new file mode 100644
>>> index 00000000000..b8b995fe969
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_prefer-sve.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=prefer-sve" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/autovec_param_sve-only.c 
>>> b/gcc/testsuite/gcc.target/aarch64/autovec_param_sve-only.c
>>> new file mode 100644
>>> index 00000000000..f9c567fa6a5
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/autovec_param_sve-only.c
>>> @@ -0,0 +1,4 @@
>>> +/* { dg-options "--param aarch64-autovec-preference=sve-only" } */
>>> +
>>> +void
>>> +foo (void) {}
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/neoverse_v1_2.c 
>>> b/gcc/testsuite/gcc.target/aarch64/neoverse_v1_2.c
>>> index 45d7e81c78e..c95fd463ebf 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/neoverse_v1_2.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/neoverse_v1_2.c
>>> @@ -1,4 +1,4 @@
>>> -/* { dg-options "-O2 -mcpu=neoverse-v1 --param 
>>> aarch64-autovec-preference=1 -fdump-tree-vect-details" } */
>>> +/* { dg-options "-O2 -mcpu=neoverse-v1 --param 
>>> aarch64-autovec-preference=asimd-only -fdump-tree-vect-details" } */
>>> 
>>> void
>>> f (float x[restrict][100], float y[restrict][100])
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/neoverse_v1_3.c 
>>> b/gcc/testsuite/gcc.target/aarch64/neoverse_v1_3.c
>>> index de31fc13b28..f5c94969bf3 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/neoverse_v1_3.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/neoverse_v1_3.c
>>> @@ -1,4 +1,4 @@
>>> -/* { dg-options "-O2 -mcpu=neoverse-v1 --param 
>>> aarch64-autovec-preference=2 -fdump-tree-vect-details" } */
>>> +/* { dg-options "-O2 -mcpu=neoverse-v1 --param 
>>> aarch64-autovec-preference=sve-only -fdump-tree-vect-details" } */
>>> 
>>> void
>>> f (float x[restrict][100], float y[restrict][100])
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
>>> index 96e99353601..9e14bc68e05 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do compile } */
>>> -/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=2" } */
>>> +/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=sve-only" } */
>>> 
>>> #include <stdint.h>
>>> 
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
>>> index 6f969a82942..cc2363cad29 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do compile } */
>>> -/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=2" } */
>>> +/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=sve-only" } */
>>> 
>>> #include <stdint.h>
>>> 
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
>>> index e6ec5157cd6..078318e8d26 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do compile } */
>>> -/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=2" } */
>>> +/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=sve-only" } */
>>> 
>>> #include <stdint.h>
>>> 
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
>>> index 7ed35921b6f..0b0984743c8 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do compile } */
>>> -/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=2" } */
>>> +/* { dg-options "-O2 -ftree-vectorize -moverride=sve_width=256 
>>> --param=aarch64-autovec-preference=sve-only" } */
>>> 
>>> #include <stdint.h>
>>> 
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c
>>> index 274dd0ede59..20ec97040bd 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do compile } */
>>> -/* { dg-options "-O2 -msve-vector-bits=128 --param 
>>> aarch64-autovec-preference=2" } */
>>> +/* { dg-options "-O2 -msve-vector-bits=128 --param 
>>> aarch64-autovec-preference=sve-only" } */
>>> 
>>> #include "cond_xorsign_1.c"
>>> 
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c
>>> index fdbe55e0b4e..9b160990ddb 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do link } */
>>> -/* { dg-options "-flto -O -ftree-vectorize 
>>> --param=aarch64-autovec-preference=3" } */
>>> +/* { dg-options "-flto -O -ftree-vectorize 
>>> --param=aarch64-autovec-preference=prefer-asimd" } */
>>> /* { dg-additional-sources "pr98268-2.c" } */
>>> 
>>> short d, e;
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c 
>>> b/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c
>>> index de3b05d5e15..59cea967bbd 100644
>>> --- a/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c
>>> @@ -1,5 +1,5 @@
>>> /* { dg-do compile } */
>>> -/* { dg-options "-O -ftree-vectorize --param=aarch64-autovec-preference=3" 
>>> } */
>>> +/* { dg-options "-O -ftree-vectorize 
>>> --param=aarch64-autovec-preference=prefer-asimd" } */
>>> 
>>> extern short d[], e[];
>>> void f(char a, long *b) {

Reply via email to