From: lkcl Date: Fri, 8 Jul 2022 12:56:04 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~1269 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=89d94a8451c453f0b9d744cdb4437fa8991d9a8d;p=libreriscv.git --- 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