C MP+polockmbonce+poacquiresilsil

(*
 * Result: Never
 *
 * Do spinlocks combined with smp_mb__after_spinlock() provide order
 * to outside observers using spin_is_locked() to sense the lock-held
 * state, ordered by acquire?  Note that when the first spin_is_locked()
 * returns false and the second true, we know that the smp_load_acquire()
 * executed before the lock was acquired (loosely speaking).
 *)

{}

P0(spinlock_t *lo, int *x) // Producer
{
	spin_lock(lo);
	smp_mb__after_spinlock();
	WRITE_ONCE(*x, 1);
	spin_unlock(lo);
}

P1(spinlock_t *lo, int *x) // Consumer
{
	int r1;
	int r2;
	int r3;

	r1 = smp_load_acquire(x);
	r2 = spin_is_locked(lo);
	r3 = spin_is_locked(lo);
}

exists (1:r1=1 /\ 1:r2=0 /\ 1:r3=1) (* Bad outcome. *)
