From 89d94a8451c453f0b9d744cdb4437fa8991d9a8d Mon Sep 17 00:00:00 2001 From: lkcl Date: Fri, 8 Jul 2022 13:56:04 +0100 Subject: [PATCH] --- openpower/atomics.mdwn | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/openpower/atomics.mdwn b/openpower/atomics.mdwn index e8cc340e4..4ee56fc6d 100644 --- a/openpower/atomics.mdwn +++ b/openpower/atomics.mdwn @@ -79,6 +79,7 @@ skip: ``` Having single atomic operations is useful for implementations that want to send atomic operations to a shared cache since they can be more efficient to execute there, rather than having to move a whole cache block. Relying exclusively on +TODO ### Power ISA doesn't align well with C++11 atomics @@ -104,23 +105,27 @@ unnecessary restrictions: it has only 32-bit and 64-bit atomic operations. +These operations are recognised as being part of the +OpenCAPI Specification. the operations it has that I was going to propose: -fetch_add -fetch_xor -fetch_or -fetch_and -fetch_umax -fetch_smax -fetch_umin -fetch_smin -exchange + +* fetch_add +* fetch_xor +* fetch_or +* fetch_and +* fetch_umax +* fetch_smax +* fetch_umin +* fetch_smin +* exchange as well as a few I wasn't going to propose (they seem less useful to me): -compare-and-swap-not-equal -fetch-and-increment-bounded -fetch-and-increment-equal -fetch-and-decrement-bounded -store-twin + +* compare-and-swap-not-equal +* fetch-and-increment-bounded +* fetch-and-increment-equal +* fetch-and-decrement-bounded +* store-twin The spec also basically says that the atomic memory operations are only intended for when you want to do atomic operations on memory, but don't -- 2.30.2