Re: [PATCH] tools/memory-model: Document herd7 (internal) representation

From: Hernan Ponce de Leon
Date: Mon May 27 2024 - 13:58:22 EST


On 5/27/2024 3:28 PM, Andrea Parri wrote:
+ | smp_store_mb | W[once] ->po F[mb] |

I expect this one to be hard-coded in herd7 source code, but I cannot find
it. Can you give me a pointer?

smp_store_mb() is currently mapped to { __store{once}(X,V); __fence{mb}; } in
the .def file, so it's semantically equivalent to "WRITE_ONCE(); smp_mb();".

Ok, so some fences where added in the .def file (this) while other programmatically (e.g., xchg). We should at least be consistent about how this is done. Based on previous comments, it seems most of us agree this should go the the .def file.



What about spin_unlock?

spin_unlock() is listed among the non-RMW ops/macros in the current table: it
is represented by a single UL or "Unlock" event (a special type of Store event
with (some special) Release semantics).

I was blind. Sorry for the noise.



I found the extra spaces in the failure case very hard to read. Any
particular reason why you went with this format?

The extra spaces were simply to convey something like "belong to the previous
row/entry", but I'm open to remove them or other suggestions if preferred.

I find it easier to read without the extra spaces. The empty column on the left already tells me this is a continuation of the previous row.
But I don't see this as a blocker.


Andrea