Drop Z from X + Z < Y + Z
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / declare-1.c
blobc63a68dbab75adaeffd373a296045e4b683c839b
1 /* { dg-do run { target openacc_nvidia_accel_selected } } */
3 #include <openacc.h>
4 #include <stdlib.h>
5 #include <stdio.h>
7 #define N 8
9 void
10 subr2 (int *a)
12 int i;
13 int f[N];
14 #pragma acc declare copyout (f)
16 #pragma acc parallel copy (a[0:N])
18 for (i = 0; i < N; i++)
20 f[i] = a[i];
21 a[i] = f[i] + f[i] + f[i];
26 void
27 subr1 (int *a)
29 int f[N];
30 #pragma acc declare copy (f)
32 #pragma acc parallel copy (a[0:N])
34 int i;
36 for (i = 0; i < N; i++)
38 f[i] = a[i];
39 a[i] = f[i] + f[i];
44 int b[8];
45 #pragma acc declare create (b)
47 int d[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
48 #pragma acc declare copyin (d)
50 int
51 main (int argc, char **argv)
53 int a[N];
54 int e[N];
55 #pragma acc declare create (e)
56 int i;
58 for (i = 0; i < N; i++)
59 a[i] = i + 1;
61 if (!acc_is_present (&b, sizeof (b)))
62 abort ();
64 if (!acc_is_present (&d, sizeof (d)))
65 abort ();
67 if (!acc_is_present (&e, sizeof (e)))
68 abort ();
70 #pragma acc parallel copyin (a[0:N])
72 for (i = 0; i < N; i++)
74 b[i] = a[i];
75 a[i] = b[i];
79 for (i = 0; i < N; i++)
81 if (a[i] != i + 1)
82 abort ();
85 #pragma acc parallel copy (a[0:N])
87 for (i = 0; i < N; i++)
89 e[i] = a[i] + d[i];
90 a[i] = e[i];
94 for (i = 0; i < N; i++)
96 if (a[i] != (i + 1) * 2)
97 abort ();
100 for (i = 0; i < N; i++)
102 a[i] = 1234;
105 subr1 (&a[0]);
107 for (i = 0; i < N; i++)
109 if (a[i] != 1234 * 2)
110 abort ();
113 subr2 (&a[0]);
115 for (i = 0; i < 1; i++)
117 if (a[i] != 1234 * 6)
118 abort ();
121 return 0;