1 /* Verify that 'acc_copyout' etc. is a no-op if there's still a structured
4 /* { dg-xfail-run-if "TODO PR92843" { *-*-* } } */
5 /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
16 assign_array (char *array, size_t size, char value)
18 for (size_t i = 0; i < size; ++i)
23 verify_array (const char *array, size_t size, char value)
25 for (size_t i = 0; i < size; ++i)
26 assert (array[i] == value);
31 #pragma acc declare create (global_var)
36 assert (acc_is_present (&global_var, sizeof global_var));
39 #pragma acc update device (global_var)
42 acc_copyout (&global_var, sizeof global_var);
43 assert (acc_is_present (&global_var, sizeof global_var));
44 assert (global_var == c1);
47 acc_copyout_finalize (&global_var, sizeof global_var);
48 assert (acc_is_present (&global_var, sizeof global_var));
49 assert (global_var == c1);
51 void *global_var_d_p = acc_deviceptr (&global_var);
52 assert (global_var_d_p);
54 void *d_p = acc_copyin (&global_var, sizeof global_var);
55 assert (d_p == global_var_d_p);
57 acc_copyout (&global_var, sizeof global_var);
58 assert (acc_is_present (&global_var, sizeof global_var));
60 d_p = acc_copyin (&global_var, sizeof global_var);
61 assert (d_p == global_var_d_p);
63 d_p = acc_copyin (&global_var, sizeof global_var);
64 assert (d_p == global_var_d_p);
67 acc_copyout_finalize (&global_var, sizeof global_var);
68 assert (acc_is_present (&global_var, sizeof global_var));
69 assert (global_var == c1);
72 acc_copyout (&global_var, sizeof global_var);
73 assert (acc_is_present (&global_var, sizeof global_var));
74 assert (global_var == c1);
83 char *h = (char *) malloc (N);
85 void *d = acc_malloc (N);
87 acc_map_data (h, d, N);
88 assert (acc_is_present (h, N));
90 assign_array (h, N, c0);
91 #pragma acc update device (h[0:N])
93 assign_array (h, N, c1);
94 #pragma acc exit data copyout (h[0:N])
95 assert (acc_is_present (h, N));
96 verify_array (h, N, c1);
98 assign_array (h, N, c1);
99 #pragma acc exit data copyout (h[0:N]) finalize
100 assert (acc_is_present (h, N));
101 verify_array (h, N, c1);
103 #pragma acc enter data copyin (h[0:N])
105 assign_array (h, N, c1);
106 #pragma acc exit data copyout (h[0:N])
107 assert (acc_is_present (h, N));
108 verify_array (h, N, c1);
110 #pragma acc enter data copyin (h[0:N])
112 #pragma acc enter data copyin (h[0:N])
114 assign_array (h, N, c1);
115 #pragma acc exit data copyout (h[0:N]) finalize
116 assert (acc_is_present (h, N));
117 verify_array (h, N, c1);
119 assign_array (h, N, c1);
120 #pragma acc exit data copyout (h[0:N])
121 assert (acc_is_present (h, N));
122 verify_array (h, N, c1);
132 assign_array (h, N, c0);
133 #pragma acc data copyin (h)
135 assert (acc_is_present (h, sizeof h));
137 assign_array (h, N, c1);
138 acc_copyout_finalize (h, sizeof h);
139 assert (acc_is_present (h, sizeof h));
140 verify_array (h, N, c1);
142 assign_array (h, N, c1);
143 acc_copyout (h, sizeof h);
144 assert (acc_is_present (h, sizeof h));
145 verify_array (h, N, c1);
147 acc_copyin (h, sizeof h);
149 assign_array (h, N, c1);
150 acc_copyout (h, sizeof h);
151 assert (acc_is_present (h, sizeof h));
152 verify_array (h, N, c1);
154 acc_copyin (h, sizeof h);
156 acc_copyin (h, sizeof h);
158 assign_array (h, N, c1);
159 acc_copyout_finalize (h, sizeof h);
160 assert (acc_is_present (h, sizeof h));
161 verify_array (h, N, c1);
163 assign_array (h, N, c1);
164 acc_copyout (h, sizeof h);
165 assert (acc_is_present (h, sizeof h));
166 verify_array (h, N, c1);
176 test_acc_map_data ();