Hi Jennifer,

> On 22 Aug 2024, at 08:59, Jennifer Schmitz <jschm...@nvidia.com> wrote:
> 
> On 21 Aug 2024, at 16:03, Richard Sandiford <richard.sandif...@arm.com> wrote:
>> 
>> External email: Use caution opening links or attachments
>> 
>> 
>> 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.
>> 
> Dear Kyrill and Richard,
> Thank you for your feedback. Based on that I made the following changes:
> - Removed the numerical values as parameter options
> - Removed the tests testing the numerical inputs
> - Shortened the enum values by removing _PREFERENCE
> - Reverted the format of the documentation entry to be a table.
> 
> I validated the updated patch, still no regression.
> 

Let’s go with removing the numerical values to keep with the spirit of a —param 
and to have less logic to maintain.
Ok for trunk.
Thanks,
Kyrill

> Best,
> Jennifer
> <0001-PR-target-116365-Add-user-friendly-arguments-to-para.patch>
>> 
>> 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