12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /* Test __atomic routines for existence and proper execution on 16 byte
- values with each valid memory model. */
- /* { dg-do run } */
- /* { dg-require-effective-target int128 } */
- /* Test the execution of the __atomic_store_n builtin for a 16 byte value. */
- extern void abort(void);
- __int128_t v, count;
- int
- main ()
- {
- v = 0;
- count = 0;
- __atomic_store_n (&v, count + 1, __ATOMIC_RELAXED);
- if (v != ++count)
- abort ();
- __atomic_store_n (&v, count + 1, __ATOMIC_RELEASE);
- if (v != ++count)
- abort ();
- __atomic_store_n (&v, count + 1, __ATOMIC_SEQ_CST);
- if (v != ++count)
- abort ();
- /* Now test the generic variant. */
- count++;
- __atomic_store (&v, &count, __ATOMIC_RELAXED);
- if (v != count++)
- abort ();
- __atomic_store (&v, &count, __ATOMIC_RELEASE);
- if (v != count++)
- abort ();
- __atomic_store (&v, &count, __ATOMIC_SEQ_CST);
- if (v != count)
- abort ();
- return 0;
- }
|