]> git.ipfire.org Git - thirdparty/gcc.git/commit
libatomic: Add rcpc3 128-bit atomic operations for AArch64
authorVictor Do Nascimento <victor.donascimento@arm.com>
Mon, 10 Jun 2024 10:10:36 +0000 (11:10 +0100)
committerVictor Do Nascimento <victor.donascimento@arm.com>
Tue, 25 Jun 2024 10:48:38 +0000 (11:48 +0100)
commit7107574958e2bed11d916a1480ef1319f15e5ffe
treef8be67d195c33b03b84ceb7616d1714de2388649
parentd4db77ce37a65207baea88859fd9c191469187f8
libatomic: Add rcpc3 128-bit atomic operations for AArch64

The introduction of the optional RCPC3 architectural extension for
Armv8.2-A upwards provides additional support for the release
consistency model, introducing the Load-Acquire RCpc Pair Ordered, and
Store-Release Pair Ordered operations in the form of LDIAPP and STILP.

These operations are single-copy atomic on cores which also implement
LSE2 and, as such, support for these operations is added to Libatomic
and employed accordingly when the LSE2 and RCPC3 features are detected
in a given core at runtime.

libatomic/ChangeLog:

* config/linux/aarch64/atomic_16.S (libat_load_16): Add LRCPC3
variant.
(libat_store_16): Likewise.
* config/linux/aarch64/host-config.h (HWCAP2_LRCPC3): New.
(LSE2_LRCPC3_ATOP): Previously LSE2_ATOP.  New ifuncs guarded
under it.
(has_rcpc3): New.
libatomic/config/linux/aarch64/atomic_16.S
libatomic/config/linux/aarch64/host-config.h