On Thu, Nov 26, 2020 at 6:18 PM Kyrylo Tkachov via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Hi all, > > This is a patch that introduces the aarch64-autovec-preference that can take > values from 0 - 4, 0 being the default. > It can be used to override the autovectorisation preferences in the backend: > 0 - use default scheme > 1 - only use Advanced SIMD > 2 - only use SVE > 3 - use Advanced SIMD and SVE, prefer Advanced SIMD in the event of a tie (as > determined by costs) > 4 - use Advanced SIMD and SVE, prefer SVE in the event of a tie (as > determined by costs) > > It can valuable for experimentation when comparing SVE and Advanced SIMD > autovectorisation strategies. > > It achieves this adjusting the order of the interleaved SVE and Advanced SIMD > modes in aarch64_autovectorize_vector_modes. > It also adjusts aarch64_preferred_simd_mode to use the new comparison > function to pick Advanced SIMD or SVE to start with. > > Bootstrapped and tested on aarch64-none-linux-gnu. > Ok for master (since it touches much SVE-related code by Richard I'd feel > more comfortable with a second pair of eyes)?
Is this supposed to be used internally or for development purposes? If users are supposed to use this then a -m switch would be more appropriate (x86 for example has -mprefer-vector-width) Richard. > Thanks, > Kyrill > > gcc/ > * config/aarch64/aarch64.opt (-param=aarch64-autovec-preference): > Define. > * config/aarch64/aarch64.c (aarch64_override_options_internal): > Set aarch64_sve_compare_costs to 0 when preferring only Advanced SIMD. > (aarch64_cmp_autovec_modes): Define. > (aarch64_preferred_simd_mode): Adjust to use the above. > (aarch64_autovectorize_vector_modes): Likewise. > * doc/invoke.texi: Document aarch64-autovec-preference param.