1 /* This test exercises combined directives. */
2
3 /* { dg-do run } */
4
5 #include <stdlib.h>
6
7 int
8 main (int argc, char **argv)
9 {
10 const int N = 32;
11 float a[N], b[N];
12 int i;
13
14 for (i = 0; i < N; i++)
15 {
16 a[i] = 1.0;
17 b[i] = 0.0;
18 }
19
20 #pragma acc parallel loop copy (a[0:N]) copy (b[0:N])
21 for (i = 0; i < N; i++)
22 {
23 b[i] = 2.0;
24 a[i] = a[i] + b[i];
25 }
26
27 for (i = 0; i < N; i++)
28 {
29 if (a[i] != 3.0)
30 abort ();
31
32 if (b[i] != 2.0)
33 abort ();
34 }
35
36 #pragma acc kernels loop copy (a[0:N]) copy (b[0:N])
37 for (i = 0; i < N; i++)
38 {
39 b[i] = 3.0;
40 a[i] = a[i] + b[i];
41 }
42
43 for (i = 0; i < N; i++)
44 {
45 if (a[i] != 6.0)
46 abort ();
47
48 if (b[i] != 3.0)
49 abort ();
50 }
51
52 return 0;
53
54 }