/* { dg-do run } */
extern void abort (void);
extern void exit (int);

NOMIPS16 int main ()
{
#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
  unsigned v = 0;
  __sync_synchronize ();

  if (!__sync_bool_compare_and_swap (&v, 0, 30000))
    abort();
  if (30000 != __sync_val_compare_and_swap (&v, 30000, 100001))
    abort();
  __sync_sub_and_fetch (&v, 0x8001);
  __sync_sub_and_fetch (&v, 0x7fff);
  if (v != 34465)
    abort();
  if (__sync_nand_and_fetch (&v, 0xff) != 94)
    abort();
  if (__sync_fetch_and_add (&v, 6) != 94)
    abort();
  if (v != 100)
    abort();
  if (__sync_or_and_fetch (&v, 0xf001) != 0xf065)
    abort();
  if (__sync_and_and_fetch (&v, 0x1000) != 0x1000)
    abort();
  if (__sync_xor_and_fetch (&v, 0xa51040) != 0xa50040)
    abort();
  __sync_and_and_fetch (&v, 7);
  if (__sync_lock_test_and_set(&v, 1) != 0)
    abort();
  if (v != 1)
    abort();
  __sync_lock_release (&v);
  if (v != 0)
    abort();
#endif
  exit(0);
}
