Mercurial > hg > CbC > CbC_gcc
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 } |