testsuite/libgomp.c/atomic-10.c

Go to the documentation of this file.
00001 /* { dg-do run } */
00002 
00003 extern void abort (void);
00004 int x1, x2, x3, x4, x5;
00005 volatile int y6 = 9, y2, y3, y4, y5;
00006 volatile unsigned char z1, z2, z3, z4, z5;
00007 float a1, a2, a3, a4;
00008 
00009 void
00010 f1 (void)
00011 {
00012   #pragma omp atomic
00013     x1++;
00014   #pragma omp atomic
00015     x2--;
00016   #pragma omp atomic
00017     ++x3;
00018   #pragma omp atomic
00019     --x4;
00020   #pragma omp atomic
00021     x5 += 1;
00022   #pragma omp atomic
00023     x1 -= y6;
00024   #pragma omp atomic
00025     x2 |= 1;
00026   #pragma omp atomic
00027     x3 &= 1;
00028   #pragma omp atomic
00029     x4 ^= 1;
00030   #pragma omp atomic
00031     x5 *= 3;
00032   #pragma omp atomic
00033     x1 /= 3;
00034   #pragma omp atomic
00035     x2 /= 3;
00036   #pragma omp atomic
00037     x3 <<= 3;
00038   #pragma omp atomic
00039     x4 >>= 3;
00040 }
00041 
00042 void
00043 f2 (void)
00044 {
00045   #pragma omp atomic
00046     y6++;
00047   #pragma omp atomic
00048     y2--;
00049   #pragma omp atomic
00050     ++y3;
00051   #pragma omp atomic
00052     --y4;
00053   #pragma omp atomic
00054     y5 += 1;
00055   #pragma omp atomic
00056     y6 -= x1;
00057   #pragma omp atomic
00058     y2 |= 1;
00059   #pragma omp atomic
00060     y3 &= 1;
00061   #pragma omp atomic
00062     y4 ^= 1;
00063   #pragma omp atomic
00064     y5 *= 3;
00065   #pragma omp atomic
00066     y6 /= 3;
00067   #pragma omp atomic
00068     y2 /= 3;
00069   #pragma omp atomic
00070     y3 <<= 3;
00071   #pragma omp atomic
00072     y4 >>= 3;
00073 }
00074 
00075 void
00076 f3 (void)
00077 {
00078   #pragma omp atomic
00079     z1++;
00080   #pragma omp atomic
00081     z2--;
00082   #pragma omp atomic
00083     ++z3;
00084   #pragma omp atomic
00085     --z4;
00086   #pragma omp atomic
00087     z5 += 1;
00088   #pragma omp atomic
00089     z1 |= 1;
00090   #pragma omp atomic
00091     z2 &= 1;
00092   #pragma omp atomic
00093     z3 ^= 1;
00094   #pragma omp atomic
00095     z4 *= 3;
00096   #pragma omp atomic
00097     z5 /= 3;
00098   #pragma omp atomic
00099     z1 /= 3;
00100   #pragma omp atomic
00101     z2 <<= 3;
00102   #pragma omp atomic
00103     z3 >>= 3;
00104 }
00105 
00106 void
00107 f4 (void)
00108 {
00109   #pragma omp atomic
00110     a1 += 8.0;
00111   #pragma omp atomic
00112     a2 *= 3.5;
00113   #pragma omp atomic
00114     a3 -= a1 + a2;
00115   #pragma omp atomic
00116     a4 /= 2.0;
00117 }
00118 
00119 int
00120 main (void)
00121 {
00122   f1 ();
00123   if (x1 != -2 || x2 != 0 || x3 != 8 || x4 != -1 || x5 != 3)
00124     abort ();
00125   f2 ();
00126   if (y6 != 4 || y2 != 0 || y3 != 8 || y4 != -1 || y5 != 3)
00127     abort ();
00128   f3 ();
00129   if (z1 != 0 || z2 != 8 || z3 != 0 || z4 != 253 || z5 != 0)
00130     abort ();
00131   a1 = 7;
00132   a2 = 10;
00133   a3 = 11;
00134   a4 = 13;
00135   f4 ();
00136   if (a1 != 15.0 || a2 != 35.0 || a3 != -39.0 || a4 != 6.5)
00137     abort ();
00138   return 0;
00139 }

Generated on Fri Apr 5 05:38:10 2013 for Libgomp by  doxygen 1.4.7