Skip to content

Commit 8185218

Browse files
author
Shale Xiong
committed
[gen] add back Amo.StAdd and Amo.LdAdd in baseline configuration file.
Add back `Amo.StAdd` and `Amo.LdAdd` as the representation for all other atomic operation. We also remove `[Q Amo.* ***]` as `Q` cannot apply to `Amo.*`
1 parent 2a28c1a commit 8185218

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

gen/libdir/forbidden.conf

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,12 @@
214214
# An acquire atomic operation followed by a memory access also matches above
215215
-safe [A Amo.Swp PodW* ExpObs] [A Amo.Swp PosWR ExpObs]
216216
-safe [A Amo.Cas PodW* ExpObs] [A Amo.Cas PosWR ExpObs]
217+
-safe [A Amo.StAdd PodW* ExpObs] [A Amo.StAdd PosWR ExpObs]
218+
-safe [A Amo.LdAdd PodW* ExpObs] [A Amo.LdAdd PosWR ExpObs]
217219
-safe [A LxSx PodW* ExpObs] [A LxSx PosWR ExpObs]
218-
-safe [Q Amo.Swp PodW* ExpObs] [Q Amo.Swp PosWR ExpObs]
219-
-safe [Q Amo.Cas PodW* ExpObs] [Q Amo.Cas PosWR ExpObs]
220220
-safe [Q LxSx PodW* ExpObs] [Q LxSx PosWR ExpObs]
221221
#[A|Q rmw PosWW] is stronger than `Pos*W`
222-
#-safe [A Amo.Swp PosWW] [A Amo.Cas PosWW] [Q Amo.Swp PosWW] [Q Amo.Cas PosWW] [A LxSx PosWW] [Q LxSx PosWW]
222+
#-safe [A Amo.Swp PosWW] [A Amo.Cas PosWW] [A Amo.StAdd PosWW] [A Amo.LdAdd PosWW] [A LxSx PosWW] [Q LxSx PosWW]
223223

224224
# TODO
225225
# let bob = [Exp & M | Imp & Tag & R]; po; [L]
@@ -229,6 +229,8 @@
229229
# A memory access followed by a release atomic operation also matches above.
230230
-safe [ExpObs Pod*R Amo.Swp L]
231231
-safe [ExpObs Pod*R Amo.Cas L]
232+
-safe [ExpObs Pod*R Amo.StAdd L]
233+
-safe [ExpObs Pod*R Amo.LdAdd L]
232234
-safe [ExpObs Pod*R LxSx L]
233235
# `[Pos*R rmw L]` is stronger than `Pos*W`
234236
#-safe [Pos*R Amo.Swp L] [Pos*R Amo.Cas L] [Pos*R LxSx L]
@@ -240,8 +242,8 @@
240242
# TODO
241243
# le aob = [Exp & M]; rmw; lrs; [A | Q]
242244
# let lrs = [W]; ((po & same-loc) & ~(intervening(W,(po & same-loc)))); [R]
243-
-safe [LxSx PosWR A] [Amo.Swp PosWR A] [Amo.Cas PosWR A]
244-
-safe [LxSx PosWR Q] [Amo.Swp PosWR Q] [Amo.Cas PosWR Q]
245+
-safe [LxSx PosWR A] [Amo.Swp PosWR A] [Amo.Cas PosWR A] [Amo.StAdd PosWR A] [Amo.LdAdd PosWR A]
246+
-safe [LxSx PosWR Q] [Amo.Swp PosWR Q] [Amo.Cas PosWR Q] [Amo.StAdd PosWR Q] [Amo.LdAdd PosWR Q]
245247

246248
# TODO
247249
#let bob = [range([A];amo;[L])]; po; [Exp & M | Imp & Tag & R | MMU & FAULT]
@@ -252,6 +254,8 @@
252254
# `[A]; amo; [range([A];amo;[L])]; po; [Exp & M | Imp & Tag & R | MMU & FAULT]`
253255
-safe [A Amo.Swp L PodW* ExpObs] [A Amo.Swp L PosWR ExpObs]
254256
-safe [A Amo.Cas L PodW* ExpObs] [A Amo.Cas L PosWR ExpObs]
257+
-safe [A Amo.StAdd L PodW* ExpObs] [A Amo.StAdd L PosWR ExpObs]
258+
-safe [A Amo.LdAdd L PodW* ExpObs] [A Amo.LdAdd L PosWR ExpObs]
255259
-safe [A LxSx L PodW* ExpObs] [A LxSx L PosWR ExpObs]
256260
# `[A rmw L PosWW]` is stronger than `Pos*W`
257261
#-safe [A Amo.Swp L PosWW] [A Amo.Cas L PosWW] [A LxSx L PosWW]
@@ -262,6 +266,8 @@
262266
# This particular edges cannot be auto generated from other safe edges.
263267
-safe [ExpObs Po**R A Amo.Swp L Po*W* ExpObs]
264268
-safe [ExpObs Po**R A Amo.Cas L Po*W* ExpObs]
269+
-safe [ExpObs Po**R A Amo.StAdd L Po*W* ExpObs]
270+
-safe [ExpObs Po**R A Amo.LdAdd L Po*W* ExpObs]
265271

266272
# TODO
267273
### Hat
@@ -278,7 +284,7 @@
278284
-safe [Hat DMB.LDdR* ExpObs]
279285
-safe [Hat DSB.LDdR* ExpObs]
280286
-safe [Hat A PodR* ExpObs] [Hat Q PodR* ExpObs]
281-
-safe [Hat Amo.Swp] [Hat Amo.Cas] [Hat LxSx]
287+
-safe [Hat Amo.Swp] [Hat Amo.Cas] [Hat Amo.StAdd] [Hat Amo.LdAdd] [Hat LxSx]
282288

283289
### Note for consuming the generated tests
284290
# When verifying all the generated tests are indeed forbidden via `herd7`,

0 commit comments

Comments
 (0)