PR testsuite/85483: Move aarch64/sve/vcond_1.c test to g++.dg/other/
[official-gcc.git] / libgomp / testsuite / libgomp.c / target-25.c
blob09b8d52184aee8c222d1677656c47e8e27474a38
1 #include <stdlib.h>
2 #include <unistd.h>
4 int
5 main ()
7 int x = 0, y = 0, z = 0, s = 11, t = 12, u = 13, w = 7, err;
8 #pragma omp parallel
9 #pragma omp single
11 #pragma omp task depend(in: x)
13 usleep (5000);
14 x = 1;
16 #pragma omp task depend(in: x)
18 usleep (6000);
19 y = 2;
21 #pragma omp task depend(out: z)
23 usleep (7000);
24 z = 3;
26 #pragma omp target map(tofrom: x) map(from: err) map (to: y, z) depend(inout: x, z)
27 err = (x != 1 || y != 2 || z != 3);
28 if (err)
29 abort ();
30 #pragma omp task depend(in: x)
32 usleep (5000);
33 x = 4;
35 #pragma omp task depend(in: x)
37 usleep (4000);
38 y = 5;
40 #pragma omp task depend(in: z)
42 usleep (3000);
43 z = 6;
45 #pragma omp target enter data nowait map (to: w)
46 #pragma omp target enter data depend (inout: x, z) map (to: x, y, z)
47 #pragma omp target map (alloc: x, y, z) map(from: err)
49 err = (x != 4 || y != 5 || z != 6);
50 x = 7;
51 y = 8;
52 z = 9;
54 if (err)
55 abort ();
56 #pragma omp taskwait
57 #pragma omp target map (alloc: w) map(from: err)
59 err = w != 7;
60 w = 17;
62 if (err)
63 abort ();
64 #pragma omp task depend(in: x)
66 usleep (2000);
67 s = 14;
69 #pragma omp task depend(in: x)
71 usleep (3000);
72 t = 15;
74 #pragma omp task depend(in: z)
76 usleep (4000);
77 u = 16;
79 #pragma omp target exit data depend (inout: x, z) map (from: x, y, z, w)
80 if (x != 7 || y != 8 || z != 9 || s != 14 || t != 15 || u != 16 || w != 17)
81 abort ();
83 return 0;