comparison libgomp/testsuite/libgomp.oacc-c-c++-common/structured-dynamic-lifetimes-2.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
comparison
equal deleted inserted replaced
145:1830386684a0 152:2b5abeee2509
1 /* Test nested dynamic/structured data mappings. */
2
3 /* { dg-skip-if "" { *-*-* } { "-DACC_MEM_SHARED=1" } } */
4
5 #include <openacc.h>
6 #include <assert.h>
7 #include <stdlib.h>
8
9 #define SIZE 1024
10
11 void
12 f1 (void)
13 {
14 char *block1 = (char *) malloc (SIZE);
15
16 #pragma acc data copy(block1[0:SIZE])
17 {
18 #ifdef OPENACC_API
19 acc_copyin (block1, SIZE);
20 acc_copyout (block1, SIZE);
21 #else
22 #pragma acc enter data copyin(block1[0:SIZE])
23 #pragma acc exit data copyout(block1[0:SIZE])
24 #endif
25 }
26
27 assert (!acc_is_present (block1, SIZE));
28
29 free (block1);
30 }
31
32 void
33 f2 (void)
34 {
35 char *block1 = (char *) malloc (SIZE);
36
37 #ifdef OPENACC_API
38 acc_copyin (block1, SIZE);
39 #else
40 #pragma acc enter data copyin(block1[0:SIZE])
41 #endif
42
43 #pragma acc data copy(block1[0:SIZE])
44 {
45 }
46
47 #ifdef OPENACC_API
48 acc_copyout (block1, SIZE);
49 #else
50 #pragma acc exit data copyout(block1[0:SIZE])
51 #endif
52
53 assert (!acc_is_present (block1, SIZE));
54
55 free (block1);
56 }
57
58 void
59 f3 (void)
60 {
61 char *block1 = (char *) malloc (SIZE);
62
63 #pragma acc data copy(block1[0:SIZE])
64 {
65 #ifdef OPENACC_API
66 acc_copyin (block1, SIZE);
67 acc_copyin (block1, SIZE);
68 acc_copyout (block1, SIZE);
69 acc_copyout (block1, SIZE);
70 #else
71 #pragma acc enter data copyin(block1[0:SIZE])
72 #pragma acc enter data copyin(block1[0:SIZE])
73 #pragma acc exit data copyout(block1[0:SIZE])
74 #pragma acc exit data copyout(block1[0:SIZE])
75 #endif
76 }
77
78 assert (!acc_is_present (block1, SIZE));
79
80 free (block1);
81 }
82
83 void
84 f4 (void)
85 {
86 char *block1 = (char *) malloc (SIZE);
87
88 #pragma acc data copy(block1[0:SIZE])
89 {
90 #ifdef OPENACC_API
91 acc_copyin (block1, SIZE);
92 #else
93 #pragma acc enter data copyin(block1[0:SIZE])
94 #endif
95
96 #pragma acc data copy(block1[0:SIZE])
97 {
98 #ifdef OPENACC_API
99 acc_copyin (block1, SIZE);
100 acc_copyout (block1, SIZE);
101 #else
102 #pragma acc enter data copyin(block1[0:SIZE])
103 #pragma acc exit data copyout(block1[0:SIZE])
104 #endif
105 }
106
107 #ifdef OPENACC_API
108 acc_copyout (block1, SIZE);
109 #else
110 #pragma acc exit data copyout(block1[0:SIZE])
111 #endif
112 }
113
114 assert (!acc_is_present (block1, SIZE));
115
116 free (block1);
117 }
118
119 void
120 f5 (void)
121 {
122 char *block1 = (char *) malloc (SIZE);
123
124 #ifdef OPENACC_API
125 acc_copyin (block1, SIZE);
126 #else
127 #pragma acc enter data copyin(block1[0:SIZE])
128 #endif
129
130 #pragma acc data copy(block1[0:SIZE])
131 {
132 #ifdef OPENACC_API
133 acc_copyin (block1, SIZE);
134 #else
135 #pragma acc enter data copyin(block1[0:SIZE])
136 #endif
137 #pragma acc data copy(block1[0:SIZE])
138 {
139 }
140 #ifdef OPENACC_API
141 acc_copyout (block1, SIZE);
142 #else
143 #pragma acc exit data copyout(block1[0:SIZE])
144 #endif
145 }
146 #ifdef OPENACC_API
147 acc_copyout (block1, SIZE);
148 #else
149 #pragma acc exit data copyout(block1[0:SIZE])
150 #endif
151
152 assert (!acc_is_present (block1, SIZE));
153
154 free (block1);
155 }
156
157 int
158 main (int argc, char *argv[])
159 {
160 f1 ();
161 f2 ();
162 f3 ();
163 f4 ();
164 f5 ();
165 return 0;
166 }