1 /* { dg-do run } */ 2 /* { dg-additional-options "-mcx16" { target { { i?86-*-* x86_64-*-* } && lp64 } } } */ 3 4 #ifdef __x86_64__ 5 #include "cpuid.h" 6 #endif 7 8 double d = 1.5; 9 long double ld = 3; 10 extern void abort (void); 11 12 void test(void)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 23 int main(void)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