C IRIW+mbonceonces+OnceOnce

(*
 * Result: Never
 *
 * Test of independent reads from independent writes with smp_mb()
 * between each pairs of reads.  In other words, is smp_mb() sufficient to
 * cause two different reading processes to agree on the order of a pair
 * of writes, where each write is to a different variable by a different
 * process?  This litmus test exercises LKMM's "propagation" rule.
 *)

{}

P0(int *x)
{
	WRITE_ONCE(*x, 1);
}

P1(int *x, int *y)
{
	int r0;
	int r1;

	r0 = READ_ONCE(*x);
	smp_mb();
	r1 = READ_ONCE(*y);
}

P2(int *y)
{
	WRITE_ONCE(*y, 1);
}

P3(int *x, int *y)
{
	int r0;
	int r1;

	r0 = READ_ONCE(*y);
	smp_mb();
	r1 = READ_ONCE(*x);
}

exists (1:r0=1 /\ 1:r1=0 /\ 3:r0=1 /\ 3:r1=0)
