Viewing file: atomic-load-4.c (1.17 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Test __atomic routines for existence and proper execution on 8 byte values with each valid memory model. */ /* { dg-do run } */ /* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-options "" } */ /* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
extern void abort(void);
long long v, count;
int main () { v = 0; count = 0;
if (__atomic_load_n (&v, __ATOMIC_RELAXED) != count++) abort(); else v++;
if (__atomic_load_n (&v, __ATOMIC_ACQUIRE) != count++) abort(); else v++;
if (__atomic_load_n (&v, __ATOMIC_CONSUME) != count++) abort(); else v++;
if (__atomic_load_n (&v, __ATOMIC_SEQ_CST) != count++) abort(); else v++;
/* Now test the generic variants. */
__atomic_load (&v, &count, __ATOMIC_RELAXED); if (count != v) abort(); else v++;
__atomic_load (&v, &count, __ATOMIC_ACQUIRE); if (count != v) abort(); else v++;
__atomic_load (&v, &count, __ATOMIC_CONSUME); if (count != v) abort(); else v++;
__atomic_load (&v, &count, __ATOMIC_SEQ_CST); if (count != v) abort(); else v++;
return 0; }
|