blob: 4a13663b6091a6c50386e98c87a1998217e7300d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
#include <assert.h>
#include <openacc.h>
#include <stdint.h>
int
main ()
{
int data;
int *data_p_dev = (int *) acc_create (&data, sizeof data);
int *data_p = &data;
uintptr_t ptrbits;
acc_copyin (&data_p, sizeof data_p);
/* Test attach/detach directives. */
#pragma acc enter data attach(data_p)
#pragma acc serial copyout(ptrbits) /* { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } } */
{
ptrbits = (uintptr_t) data_p;
}
#pragma acc exit data detach(data_p)
assert ((void *) ptrbits == data_p_dev);
acc_update_self (&data_p, sizeof data_p);
assert (data_p == &data);
/* Test attach/detach API call. */
acc_attach ((void **) &data_p);
#pragma acc serial copyout(ptrbits) /* { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } } */
{
ptrbits = (uintptr_t) data_p;
}
acc_detach ((void **) &data_p);
assert ((void *) ptrbits == data_p_dev);
acc_update_self (&data_p, sizeof data_p);
assert (data_p == &data);
acc_delete (&data_p, sizeof data_p);
acc_delete (&data, sizeof data);
return 0;
}
|