diff libgomp/testsuite/libgomp.c/atomic-10.c @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgomp/testsuite/libgomp.c/atomic-10.c	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,139 @@
+/* { dg-do run } */
+
+extern void abort (void);
+int x1, x2, x3, x4, x5;
+volatile int y6 = 9, y2, y3, y4, y5;
+volatile unsigned char z1, z2, z3, z4, z5;
+float a1, a2, a3, a4;
+
+void
+f1 (void)
+{
+  #pragma omp atomic
+    x1++;
+  #pragma omp atomic
+    x2--;
+  #pragma omp atomic
+    ++x3;
+  #pragma omp atomic
+    --x4;
+  #pragma omp atomic
+    x5 += 1;
+  #pragma omp atomic
+    x1 -= y6;
+  #pragma omp atomic
+    x2 |= 1;
+  #pragma omp atomic
+    x3 &= 1;
+  #pragma omp atomic
+    x4 ^= 1;
+  #pragma omp atomic
+    x5 *= 3;
+  #pragma omp atomic
+    x1 /= 3;
+  #pragma omp atomic
+    x2 /= 3;
+  #pragma omp atomic
+    x3 <<= 3;
+  #pragma omp atomic
+    x4 >>= 3;
+}
+
+void
+f2 (void)
+{
+  #pragma omp atomic
+    y6++;
+  #pragma omp atomic
+    y2--;
+  #pragma omp atomic
+    ++y3;
+  #pragma omp atomic
+    --y4;
+  #pragma omp atomic
+    y5 += 1;
+  #pragma omp atomic
+    y6 -= x1;
+  #pragma omp atomic
+    y2 |= 1;
+  #pragma omp atomic
+    y3 &= 1;
+  #pragma omp atomic
+    y4 ^= 1;
+  #pragma omp atomic
+    y5 *= 3;
+  #pragma omp atomic
+    y6 /= 3;
+  #pragma omp atomic
+    y2 /= 3;
+  #pragma omp atomic
+    y3 <<= 3;
+  #pragma omp atomic
+    y4 >>= 3;
+}
+
+void
+f3 (void)
+{
+  #pragma omp atomic
+    z1++;
+  #pragma omp atomic
+    z2--;
+  #pragma omp atomic
+    ++z3;
+  #pragma omp atomic
+    --z4;
+  #pragma omp atomic
+    z5 += 1;
+  #pragma omp atomic
+    z1 |= 1;
+  #pragma omp atomic
+    z2 &= 1;
+  #pragma omp atomic
+    z3 ^= 1;
+  #pragma omp atomic
+    z4 *= 3;
+  #pragma omp atomic
+    z5 /= 3;
+  #pragma omp atomic
+    z1 /= 3;
+  #pragma omp atomic
+    z2 <<= 3;
+  #pragma omp atomic
+    z3 >>= 3;
+}
+
+void
+f4 (void)
+{
+  #pragma omp atomic
+    a1 += 8.0;
+  #pragma omp atomic
+    a2 *= 3.5;
+  #pragma omp atomic
+    a3 -= a1 + a2;
+  #pragma omp atomic
+    a4 /= 2.0;
+}
+
+int
+main (void)
+{
+  f1 ();
+  if (x1 != -2 || x2 != 0 || x3 != 8 || x4 != -1 || x5 != 3)
+    abort ();
+  f2 ();
+  if (y6 != 4 || y2 != 0 || y3 != 8 || y4 != -1 || y5 != 3)
+    abort ();
+  f3 ();
+  if (z1 != 0 || z2 != 8 || z3 != 0 || z4 != 253 || z5 != 0)
+    abort ();
+  a1 = 7;
+  a2 = 10;
+  a3 = 11;
+  a4 = 13;
+  f4 ();
+  if (a1 != 15.0 || a2 != 35.0 || a3 != -39.0 || a4 != 6.5)
+    abort ();
+  return 0;
+}