Atomicity

The atomicity litmus test checks to see if a read-modify-write instruction is atomic. One thread in one workgroup performs an atomic rmw, while one thread in a second workgroup performs an atomic write. If the read part of the rmw does not observe the write by the other thread, then the value in memory after the test finishes must be the write by the thread in the second workgroup.

Initial State *x = 0 Final State: r0 == 0 && *x == 1
Workgroup 0 Thread 0
0.1: let r0 = atomicExchange(x, 1)
Workgroup 1 Thread 0
1.1: atomicStore(x, 2)
Explorer Mode
Tuning Mode

Weak Outcome Count: 0

Total Observed Outcomes: 0

Weak Outcome Percentage: 0.00%

Weak Outcome: r0 == 0 && *x == 1

Run time : 0 seconds

Rate : NaN iterations per second

Time Remaining : NaN seconds