C ISA2+pooncerelease+poacquirerelease+poacquireonce

(*
 * Result: Never
 *
 * This litmus test demonstrates that a release-acquire chain suffices
 * to order P0()'s initial write against P2()'s final read.  The reason
 * that the release-acquire chain suffices is because in all but one
 * case (P2() to P0()), each process reads from the preceding process's
 * write.  In memory-model-speak, there is only one non-reads-from
 * (AKA non-rf) link, so release-acquire is all that is needed.
 *)

{
	int x;
	int y;
	int z;
}

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

P1(int *y, int *z)
{
	int r0;

	r0 = smp_load_acquire(y);
	smp_store_release(z, 1);
}

P2(int *x, int *z)
{
	int r0;
	int r1;

	r0 = smp_load_acquire(z);
	r1 = READ_ONCE(*x);
}

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