1 /* { dg-do run } */
2 /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
3
4 #include <string.h>
5 #include <stdlib.h>
6 #include <openacc.h>
7
8 int
9 main (int argc, char **argv)
10 {
11 const int N = 256;
12 int i, q = 5;
13 unsigned char *h, *g;
14 void *d;
15
16 h = (unsigned char *) malloc (N);
17 g = (unsigned char *) malloc (N);
18 for (i = 0; i < N; i++)
19 {
20 g[i] = i;
21 }
22
23 acc_create_async (h, N, q);
24
25 acc_memcpy_to_device_async (acc_deviceptr (h), g, N, q);
26
27 acc_wait (q);
28
29 memset (h, 0, N);
30
31 acc_update_self_async (h, N, q + 1);
32 acc_delete_async (h, N, q + 1);
33
34 acc_wait (q + 1);
35
36 for (i = 0; i < N; i++)
37 {
38 if (h[i] != i)
39 abort ();
40 }
41
42 free (h);
43 free (g);
44
45 return 0;
46 }