1/* { dg-do run } */ 2/* { dg-options "-O2 -mcx16" { target { { i?86-*-* x86_64-*-* } && lp64 } } } */ 3 4#ifdef __x86_64__ 5#include "cpuid.h" 6#endif 7 8double d = 1.5; 9long double ld = 3; 10extern void abort (void); 11 12void 13test (void) 14{ 15#pragma omp atomic 16 d *= 1.25; 17#pragma omp atomic 18 ld /= 0.75; 19 if (d != 1.875 || ld != 4.0L) 20 abort (); 21} 22 23int 24main (void) 25{ 26#ifdef __x86_64__ 27 unsigned int eax, ebx, ecx, edx; 28 29 if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) 30 return 0; 31 32 if (!(ecx & bit_CMPXCHG16B)) 33 return 0; 34#endif 35 test (); 36 return 0; 37} 38