RISCV ISA10+BIS (* Variation on ISA V2.3 fig. 1.10, RDW *) { int x; int y; int z; 0:s0=x; 0:s1=y; 1:s0=x; 1:s1=y; 1:s2=z; 2:s2=z; } P0 | P1 | P2 ; li t1,1 | lw a0,0(s1) | li t1,1 ; sw t1,0(s0) | xor t2,a0,a0 | sw t1,0(s2) ; fence w,w | add s3,s2,t2 | ; sw t1,0(s1) | lw a1,0(s3) | ; | lw a2,0(s2) | ; | xor t3,a2,a2 | ; | add s0,s0,t3 | ; | lw a3,0(s0) | ; ~exists (1:a0=1 /\ 1:a3 = 0 /\ 1:a1 = 0 /\ 1:a2 = 1)