On 22 Aug 2024, at 09:30, Kyrylo Tkachov <ktkac...@nvidia.com> wrote: > > 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, I pushed it to trunk with 313aa733e22b654ff822b867018b13ceb624c13a. Best, Jennifer > 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) {
smime.p7s
Description: S/MIME cryptographic signature