]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Set Armv9-A generic L1 cache line size to 64 bytes
authorKyrylo Tkachov <ktkachov@nvidia.com>
Fri, 20 Sep 2024 12:11:39 +0000 (05:11 -0700)
committerKyrylo Tkachov <ktkachov@nvidia.com>
Fri, 4 Oct 2024 13:15:11 +0000 (15:15 +0200)
commitf000cb8cbc58b23a91c84d47d69481904981a1d9
tree16e280efda76efa9351eb4d5d7162df6e7cbff89
parente1205218936e416881c4f465d51c033b29044d79
aarch64: Set Armv9-A generic L1 cache line size to 64 bytes

I'd like to use a value of 64 bytes for the L1 cache size for Armv9-A
generic tuning.
As described in g:9a99559a478111f7fbeec29bd78344df7651c707 this value is used
to set the std::hardware_destructive_interference_size value which we want to
be not overly large when running concurrent applications on large core-count
systems.

The generic value for Armv8-A systems and the port baseline is 256 bytes
because that's what the A64FX CPU has, as set de-facto in
aarch64_override_options_internal.

But for Armv9-A CPUs as far as I know there isn't anything larger
than 64 bytes, so we should be able to use the smaller value here and reduce
the size of concurrent structs that use
std::hardware_destructive_interference_size to pad their fields.

Bootstrapped and tested on aarch64-none-linux-gnu.

Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
* config/aarch64/tuning_models/generic_armv9_a.h
(generic_armv9a_prefetch_tune): Define.
(generic_armv9_a_tunings): Use the above.
gcc/config/aarch64/tuning_models/generic_armv9_a.h