]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Introduce --param=aarch64-autovec-preference to select autovec preference...
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 27 Nov 2020 09:19:33 +0000 (09:19 +0000)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 27 Nov 2020 13:25:05 +0000 (13:25 +0000)
commit5d4330981dd359cf2f0cae6cd55f5a0373fcb7a4
treee767643767f16437838a83b7db14dafdd2b02220
parent830910a51fa36a96bf860dca750624d25c10cdd4
aarch64: Introduce --param=aarch64-autovec-preference to select autovec preference in backend

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.

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.

(cherry picked from commit 5f29f3d5dd94c3f8eef10492a657a0719d4b3318)
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.opt
gcc/doc/invoke.texi