Sujet : Re: portable proxy collector test...
De : chris.m.thomasson.1 (at) *nospam* gmail.com (Chris M. Thomasson)
Groupes : comp.archDate : 09. Dec 2024, 00:31:07
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vj5a7q$2b9v$3@dont-email.me>
References : 1 2 3 4
User-Agent : Mozilla Thunderbird
On 12/6/2024 2:43 PM, jseigh wrote:
On 12/6/24 16:12, Chris M. Thomasson wrote:
On 12/6/2024 11:55 AM, Brett wrote:
Chris M. Thomasson <chris.m.thomasson.1@gmail.com> wrote:
I am wondering if anybody can try to compile and run this C++11 code of
mine for a portable word-based proxy collector, a sort of poor mans RCU,
on an ARM based system? I don't have access to one. I am interested in
the resulting output.
>
https://godbolt.org
>
https://pastebin.com/raw/CYZ78gVj
(raw text link, no ads... :^)
[...]
>
It seems that all of the atomics are LDREX/STREX wrt fetch_add/sub . Even with relaxed memory order. Are the LDREX/STREX similar to the LOCK prefix on an x86/64?
>
https://godbolt.org/z/EPGYWve71
>
It has loops for this in the ASM code. Adding a loop in there can change things from wait-free to lock-free. Humm...
>
Which compiler did you choose. armv8? Try ARM64.
The newer arms have new atomics
cas and atomic fetch ops.
LDREX/STREX is the older load store reserved.
On the newer stuff it's ldxr/stxr not ldrex/strex.
Well, for a ARM64 gcc 14.2.0 a relaxed fetch_add I get __aarch64_ldadd8_acq_rel in the asm.
https://godbolt.org/z/YzPdM8j33acq_rel barrier for a relaxed membar? Well, that makes me go grrrrrr!
It has to be akin to the LOCK prefix over on x86. I want it relaxed damn it! ;^)