Update 'Q' constraint documentation.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / lib-95.c
blob85b238d78c832e87d49b6209e97b88ea880f0b6f
1 /* { dg-do run } */
2 /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
4 #include <string.h>
5 #include <stdlib.h>
6 #include <openacc.h>
8 int
9 main (int argc, char **argv)
11 const int N = 256;
12 int i, q = 5;
13 unsigned char *h, *g;
14 void *d;
16 h = (unsigned char *) malloc (N);
17 g = (unsigned char *) malloc (N);
18 for (i = 0; i < N; i++)
20 g[i] = i;
23 acc_create_async (h, N, q);
25 acc_memcpy_to_device_async (acc_deviceptr (h), g, N, q);
26 memset (&h[0], 0, N);
28 acc_wait (q);
30 acc_update_self_async (h, N, q + 1);
31 acc_delete_async (h, N, q + 1);
33 acc_wait (q + 1);
35 for (i = 0; i < N; i++)
37 if (h[i] != i)
38 abort ();
41 free (h);
42 free (g);
44 return 0;