[herd] RISC-V: Enable RCsc ordering for load/store operations #576
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The Herd7 RISC-V model has support for L{b|h|w|d} S{b|h|w|d} with acq/rel annotations (.aq/.rl/.aqrl) but restricts the RCsc constraint (PPO rule 7 in the ISA manual[1]) to LR/SC/AMO ops. This patch removes that restriction.
This can be seen using the following litmus test:
Dan Lustig (@daniellustig) noticed the issue and Andrea Parri (@aparri) suggested the fix present in this PR.
Since ZTSO is defined as a delta from RVWMO[2], I changed that model as well.
This issue is becoming more relevant since the RISC-V load/store acquire/release instructions are being proposed by Hans Boehm[3].
[1] https://github.com/riscv/riscv-isa-manual/blob/c9a172ff2245824b0c55b234a3bb45664394d038/src/rvwmo.tex#L132-L140C3
[2] https://github.com/riscv/riscv-isa-manual/blob/c9a172ff2245824b0c55b234a3bb45664394d038/src/ztso.tex#LL5C1-L5C39
[3] https://lists.riscv.org/g/tech-unprivileged/message/382