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