Skip to content

ArchSemArm: machine-checked LSE fence-redundancy over UMArm.ob - #212

Open
sebpop wants to merge 1 commit into
rems-project:mainfrom
sebpop:acq_rel-LSE-fence-redundancy
Open

ArchSemArm: machine-checked LSE fence-redundancy over UMArm.ob#212
sebpop wants to merge 1 commit into
rems-project:mainfrom
sebpop:acq_rel-LSE-fence-redundancy

Conversation

@sebpop

@sebpop sebpop commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

With the acq-rel AMO full-barrier clause present, prove against UMArm.ob:

  • LSE (e.g. SWPAL): the leading and trailing DMB fences OCaml emits around an atomic RMW add no ob edge the AMO does not already add (redundant);
  • LL/SC (ldaxr/stlxr): the store-exclusive release is lxsx, not amo, so the clause does not fire and the trailing fence is load-bearing.

Print Assumptions reports only stdpp functional_extensionality (no Admitted, no added axiom). Motivation: the OCaml runtime (ocaml/ocaml#14936) drops these redundant fences around LSE atomics on AArch64.

With the acq-rel AMO full-barrier clause present, prove against UMArm.ob:

  - LSE (e.g. SWPAL): the leading and trailing DMB fences OCaml emits around an
    atomic RMW add no ob edge the AMO does not already add (redundant);
  - LL/SC (ldaxr/stlxr): the store-exclusive release is lxsx, not amo, so the
    clause does not fire and the trailing fence is load-bearing.

Print Assumptions reports only stdpp functional_extensionality (no Admitted, no
added axiom).  Motivation: the OCaml runtime (ocaml/ocaml#14936) drops these
redundant fences around LSE atomics on AArch64.
@febyeji

febyeji commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

I think this will require rebasing onto main because of the GitHub CI fixes.

@tperami

tperami commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

@sebpop, Sorry for the delay I was on leave. This proof is really nice, although there are some things that should be cleaned-up before merging, I think. In particular, using “clause 135” to designate a line in a herd file is really confusing and really not robust if herd model is updated (even by adding irrelevant stuff).

Before looking at it further, I'd really like to talk be email or if possible over a call. I couldn't find your email. Can you email me at thibaut.perami AT cl.cam.ac.uk?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants