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)?

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.

Attachment: autovec-pref.patch
Description: autovec-pref.patch

Reply via email to