1/* { dg-do run } */ 2/* { dg-options "-O2 -fopenmp" } */ 3/* { dg-options "-O2 -fopenmp -march=pentium" { target i?86-*-* x86_64-*-* } } */ 4/* { dg-options "-O2 -fopenmp" { target lp64 } } */ 5 6#ifdef __i386__ 7#include "../../../gcc/testsuite/gcc.dg/i386-cpuid.h" 8#define bit_CX8 (1 << 8) 9#endif 10 11extern void abort (void); 12double d; 13struct 14{ 15 int i; 16 double e; 17 int j; 18} x; 19 20void 21f1 (void) 22{ 23 #pragma omp atomic 24 d += 7.5; 25 #pragma omp atomic 26 d *= 2.5; 27 #pragma omp atomic 28 d /= 0.25; 29} 30 31void 32f2 (void) 33{ 34 #pragma omp atomic 35 x.e += 7.5; 36 #pragma omp atomic 37 x.e *= 2.5; 38 #pragma omp atomic 39 x.e /= 0.25; 40} 41 42int 43main (void) 44{ 45#ifdef __i386__ 46 unsigned long cpu_facilities; 47 48 cpu_facilities = i386_cpuid (); 49 50 if ((cpu_facilities & bit_CX8) == 0) 51 return 0; 52#endif 53 54 d = 1.0; 55 f1 (); 56 if (d != 85.0) 57 abort (); 58 59 x.e = 1.0; 60 f2 (); 61 if (x.i != 0 || x.e != 85.0 || x.j != 0) 62 abort (); 63 return 0; 64} 65