diff options
Diffstat (limited to 'dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch')
-rw-r--r-- | dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch deleted file mode 100644 index 0178fd43..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch +++ /dev/null | |||
@@ -1,353 +0,0 @@ | |||
1 | From a1b924d76cdacfa3f9dbb79a9e3edddcd75f61ca Mon Sep 17 00:00:00 2001 | ||
2 | From: Naveen Saini <naveen.kumar.saini@intel.com> | ||
3 | Date: Thu, 19 Aug 2021 16:06:33 +0800 | ||
4 | Subject: [PATCH 6/6] [OpenCL] support cl_ext_float_atomics | ||
5 | |||
6 | Upstream-Status: Backport [Taken from opencl-clang patches; https://github.com/intel/opencl-clang/blob/ocl-open-110/patches/clang/0004-OpenCL-support-cl_ext_float_atomics.patch] | ||
7 | |||
8 | Signed-off-by: haonanya <haonan.yang@intel.com> | ||
9 | Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> | ||
10 | --- | ||
11 | clang/lib/Headers/opencl-c-base.h | 25 ++++ | ||
12 | clang/lib/Headers/opencl-c.h | 195 ++++++++++++++++++++++++++ | ||
13 | clang/test/Headers/opencl-c-header.cl | 85 +++++++++++ | ||
14 | 3 files changed, 305 insertions(+) | ||
15 | |||
16 | diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h | ||
17 | index afa900ab24d9..9a3ee8529acf 100644 | ||
18 | --- a/clang/lib/Headers/opencl-c-base.h | ||
19 | +++ b/clang/lib/Headers/opencl-c-base.h | ||
20 | @@ -62,6 +62,31 @@ | ||
21 | #endif | ||
22 | #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ == CL_VERSION_2_0) | ||
23 | |||
24 | +#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) | ||
25 | +// For SPIR all extensions are supported. | ||
26 | +#if defined(__SPIR__) | ||
27 | +#define cl_ext_float_atomics | ||
28 | +#ifdef cl_khr_fp16 | ||
29 | +#define __opencl_c_ext_fp16_global_atomic_load_store 1 | ||
30 | +#define __opencl_c_ext_fp16_local_atomic_load_store 1 | ||
31 | +#define __opencl_c_ext_fp16_global_atomic_add 1 | ||
32 | +#define __opencl_c_ext_fp16_local_atomic_add 1 | ||
33 | +#define __opencl_c_ext_fp16_global_atomic_min_max 1 | ||
34 | +#define __opencl_c_ext_fp16_local_atomic_min_max 1 | ||
35 | +#endif | ||
36 | +#ifdef __opencl_c_fp64 | ||
37 | +#define __opencl_c_ext_fp64_global_atomic_add 1 | ||
38 | +#define __opencl_c_ext_fp64_local_atomic_add 1 | ||
39 | +#define __opencl_c_ext_fp64_global_atomic_min_max 1 | ||
40 | +#define __opencl_c_ext_fp64_local_atomic_min_max 1 | ||
41 | +#endif | ||
42 | +#define __opencl_c_ext_fp32_global_atomic_add 1 | ||
43 | +#define __opencl_c_ext_fp32_local_atomic_add 1 | ||
44 | +#define __opencl_c_ext_fp32_global_atomic_min_max 1 | ||
45 | +#define __opencl_c_ext_fp32_local_atomic_min_max 1 | ||
46 | +#endif // defined(__SPIR__) | ||
47 | +#endif // (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) | ||
48 | + | ||
49 | // built-in scalar data types: | ||
50 | |||
51 | /** | ||
52 | diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h | ||
53 | index 67d900eb1c3d..bda0f5c6df80 100644 | ||
54 | --- a/clang/lib/Headers/opencl-c.h | ||
55 | +++ b/clang/lib/Headers/opencl-c.h | ||
56 | @@ -14354,6 +14354,201 @@ intptr_t __ovld atomic_fetch_max_explicit( | ||
57 | // defined(cl_khr_int64_extended_atomics) | ||
58 | #endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0) | ||
59 | |||
60 | +#if defined(cl_ext_float_atomics) | ||
61 | + | ||
62 | +#if defined(__opencl_c_ext_fp32_global_atomic_min_max) | ||
63 | +float __ovld atomic_fetch_min(volatile __global atomic_float *object, | ||
64 | + float operand); | ||
65 | +float __ovld atomic_fetch_max(volatile __global atomic_float *object, | ||
66 | + float operand); | ||
67 | +float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *object, | ||
68 | + float operand, memory_order order); | ||
69 | +float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *object, | ||
70 | + float operand, memory_order order); | ||
71 | +float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *object, | ||
72 | + float operand, memory_order order, | ||
73 | + memory_scope scope); | ||
74 | +float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *object, | ||
75 | + float operand, memory_order order, | ||
76 | + memory_scope scope); | ||
77 | +#endif | ||
78 | +#if defined(__opencl_c_ext_fp32_local_atomic_min_max) | ||
79 | +float __ovld atomic_fetch_min(volatile __local atomic_float *object, | ||
80 | + float operand); | ||
81 | +float __ovld atomic_fetch_max(volatile __local atomic_float *object, | ||
82 | + float operand); | ||
83 | +float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *object, | ||
84 | + float operand, memory_order order); | ||
85 | +float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *object, | ||
86 | + float operand, memory_order order); | ||
87 | +float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *object, | ||
88 | + float operand, memory_order order, | ||
89 | + memory_scope scope); | ||
90 | +float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *object, | ||
91 | + float operand, memory_order order, | ||
92 | + memory_scope scope); | ||
93 | +#endif | ||
94 | +#if defined(__opencl_c_ext_fp32_global_atomic_min_max) || \ | ||
95 | + defined(__opencl_c_ext_fp32_local_atomic_min_max) | ||
96 | +float __ovld atomic_fetch_min(volatile atomic_float *object, float operand); | ||
97 | +float __ovld atomic_fetch_max(volatile atomic_float *object, float operand); | ||
98 | +float __ovld atomic_fetch_min_explicit(volatile atomic_float *object, | ||
99 | + float operand, memory_order order); | ||
100 | +float __ovld atomic_fetch_max_explicit(volatile atomic_float *object, | ||
101 | + float operand, memory_order order); | ||
102 | +float __ovld atomic_fetch_min_explicit(volatile atomic_float *object, | ||
103 | + float operand, memory_order order, | ||
104 | + memory_scope scope); | ||
105 | +float __ovld atomic_fetch_max_explicit(volatile atomic_float *object, | ||
106 | + float operand, memory_order order, | ||
107 | + memory_scope scope); | ||
108 | +#endif | ||
109 | +#if defined(__opencl_c_ext_fp64_global_atomic_min_max) | ||
110 | +double __ovld atomic_fetch_min(volatile __global atomic_double *object, | ||
111 | + double operand); | ||
112 | +double __ovld atomic_fetch_max(volatile __global atomic_double *object, | ||
113 | + double operand); | ||
114 | +double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *object, | ||
115 | + double operand, memory_order order); | ||
116 | +double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object, | ||
117 | + double operand, memory_order order); | ||
118 | +double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *object, | ||
119 | + double operand, memory_order order, | ||
120 | + memory_scope scope); | ||
121 | +double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object, | ||
122 | + double operand, memory_order order, | ||
123 | + memory_scope scope); | ||
124 | +#endif | ||
125 | +#if defined(__opencl_c_ext_fp64_local_atomic_min_max) | ||
126 | +double __ovld atomic_fetch_min(volatile __local atomic_double *object, | ||
127 | + double operand); | ||
128 | +double __ovld atomic_fetch_max(volatile __local atomic_double *object, | ||
129 | + double operand); | ||
130 | +double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *object, | ||
131 | + double operand, memory_order order); | ||
132 | +double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object, | ||
133 | + double operand, memory_order order); | ||
134 | +double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *object, | ||
135 | + double operand, memory_order order, | ||
136 | + memory_scope scope); | ||
137 | +double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object, | ||
138 | + double operand, memory_order order, | ||
139 | + memory_scope scope); | ||
140 | +#endif | ||
141 | +#if defined(__opencl_c_ext_fp64_global_atomic_min_max) || \ | ||
142 | + defined(__opencl_c_ext_fp64_local_atomic_min_max) | ||
143 | +double __ovld atomic_fetch_min(volatile atomic_double *object, double operand); | ||
144 | +double __ovld atomic_fetch_max(volatile atomic_double *object, double operand); | ||
145 | +double __ovld atomic_fetch_min_explicit(volatile atomic_double *object, | ||
146 | + double operand, memory_order order); | ||
147 | +double __ovld atomic_fetch_max_explicit(volatile atomic_double *object, | ||
148 | + double operand, memory_order order); | ||
149 | +double __ovld atomic_fetch_min_explicit(volatile atomic_double *object, | ||
150 | + double operand, memory_order order, | ||
151 | + memory_scope scope); | ||
152 | +double __ovld atomic_fetch_max_explicit(volatile atomic_double *object, | ||
153 | + double operand, memory_order order, | ||
154 | + memory_scope scope); | ||
155 | +#endif | ||
156 | + | ||
157 | +#if defined(__opencl_c_ext_fp32_global_atomic_add) | ||
158 | +float __ovld atomic_fetch_add(volatile __global atomic_float *object, | ||
159 | + float operand); | ||
160 | +float __ovld atomic_fetch_sub(volatile __global atomic_float *object, | ||
161 | + float operand); | ||
162 | +float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *object, | ||
163 | + float operand, memory_order order); | ||
164 | +float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *object, | ||
165 | + float operand, memory_order order); | ||
166 | +float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *object, | ||
167 | + float operand, memory_order order, | ||
168 | + memory_scope scope); | ||
169 | +float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *object, | ||
170 | + float operand, memory_order order, | ||
171 | + memory_scope scope); | ||
172 | +#endif | ||
173 | +#if defined(__opencl_c_ext_fp32_local_atomic_add) | ||
174 | +float __ovld atomic_fetch_add(volatile __local atomic_float *object, | ||
175 | + float operand); | ||
176 | +float __ovld atomic_fetch_sub(volatile __local atomic_float *object, | ||
177 | + float operand); | ||
178 | +float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *object, | ||
179 | + float operand, memory_order order); | ||
180 | +float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *object, | ||
181 | + float operand, memory_order order); | ||
182 | +float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *object, | ||
183 | + float operand, memory_order order, | ||
184 | + memory_scope scope); | ||
185 | +float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *object, | ||
186 | + float operand, memory_order order, | ||
187 | + memory_scope scope); | ||
188 | +#endif | ||
189 | +#if defined(__opencl_c_ext_fp32_global_atomic_add) || \ | ||
190 | + defined(__opencl_c_ext_fp32_local_atomic_add) | ||
191 | +float __ovld atomic_fetch_add(volatile atomic_float *object, float operand); | ||
192 | +float __ovld atomic_fetch_sub(volatile atomic_float *object, float operand); | ||
193 | +float __ovld atomic_fetch_add_explicit(volatile atomic_float *object, | ||
194 | + float operand, memory_order order); | ||
195 | +float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object, | ||
196 | + float operand, memory_order order); | ||
197 | +float __ovld atomic_fetch_add_explicit(volatile atomic_float *object, | ||
198 | + float operand, memory_order order, | ||
199 | + memory_scope scope); | ||
200 | +float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object, | ||
201 | + float operand, memory_order order, | ||
202 | + memory_scope scope); | ||
203 | +#endif | ||
204 | + | ||
205 | +#if defined(__opencl_c_ext_fp64_global_atomic_add) | ||
206 | +double __ovld atomic_fetch_add(volatile __global atomic_double *object, | ||
207 | + double operand); | ||
208 | +double __ovld atomic_fetch_sub(volatile __global atomic_double *object, | ||
209 | + double operand); | ||
210 | +double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *object, | ||
211 | + double operand, memory_order order); | ||
212 | +double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object, | ||
213 | + double operand, memory_order order); | ||
214 | +double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *object, | ||
215 | + double operand, memory_order order, | ||
216 | + memory_scope scope); | ||
217 | +double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object, | ||
218 | + double operand, memory_order order, | ||
219 | + memory_scope scope); | ||
220 | +#endif | ||
221 | +#if defined(__opencl_c_ext_fp64_local_atomic_add) | ||
222 | +double __ovld atomic_fetch_add(volatile __local atomic_double *object, | ||
223 | + double operand); | ||
224 | +double __ovld atomic_fetch_sub(volatile __local atomic_double *object, | ||
225 | + double operand); | ||
226 | +double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *object, | ||
227 | + double operand, memory_order order); | ||
228 | +double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object, | ||
229 | + double operand, memory_order order); | ||
230 | +double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *object, | ||
231 | + double operand, memory_order order, | ||
232 | + memory_scope scope); | ||
233 | +double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object, | ||
234 | + double operand, memory_order order, | ||
235 | + memory_scope scope); | ||
236 | +#endif | ||
237 | +#if defined(__opencl_c_ext_fp64_global_atomic_add) || \ | ||
238 | + defined(__opencl_c_ext_fp64_local_atomic_add) | ||
239 | +double __ovld atomic_fetch_add(volatile atomic_double *object, double operand); | ||
240 | +double __ovld atomic_fetch_sub(volatile atomic_double *object, double operand); | ||
241 | +double __ovld atomic_fetch_add_explicit(volatile atomic_double *object, | ||
242 | + double operand, memory_order order); | ||
243 | +double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object, | ||
244 | + double operand, memory_order order); | ||
245 | +double __ovld atomic_fetch_add_explicit(volatile atomic_double *object, | ||
246 | + double operand, memory_order order, | ||
247 | + memory_scope scope); | ||
248 | +double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object, | ||
249 | + double operand, memory_order order, | ||
250 | + memory_scope scope); | ||
251 | +#endif | ||
252 | + | ||
253 | +#endif // cl_ext_float_atomics | ||
254 | + | ||
255 | // atomic_store() | ||
256 | |||
257 | #if defined(__opencl_c_atomic_scope_device) && \ | ||
258 | diff --git a/clang/test/Headers/opencl-c-header.cl b/clang/test/Headers/opencl-c-header.cl | ||
259 | index 2716076acdcf..6b3eca84e8b9 100644 | ||
260 | --- a/clang/test/Headers/opencl-c-header.cl | ||
261 | +++ b/clang/test/Headers/opencl-c-header.cl | ||
262 | @@ -98,3 +98,88 @@ global atomic_int z = ATOMIC_VAR_INIT(99); | ||
263 | #pragma OPENCL EXTENSION cl_intel_planar_yuv : enable | ||
264 | |||
265 | // CHECK-MOD: Reading modules | ||
266 | + | ||
267 | +// For SPIR all extensions are supported. | ||
268 | +#if defined(__SPIR__) | ||
269 | + | ||
270 | +#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) | ||
271 | + | ||
272 | +#if __opencl_c_ext_fp16_global_atomic_load_store != 1 | ||
273 | +#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_load_store" | ||
274 | +#endif | ||
275 | +#if __opencl_c_ext_fp16_local_atomic_load_store != 1 | ||
276 | +#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_load_store" | ||
277 | +#endif | ||
278 | +#if __opencl_c_ext_fp16_global_atomic_add != 1 | ||
279 | +#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_add" | ||
280 | +#endif | ||
281 | +#if __opencl_c_ext_fp32_global_atomic_add != 1 | ||
282 | +#error "Incorrectly defined __opencl_c_ext_fp32_global_atomic_add" | ||
283 | +#endif | ||
284 | +#if __opencl_c_ext_fp16_local_atomic_add != 1 | ||
285 | +#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_add" | ||
286 | +#endif | ||
287 | +#if __opencl_c_ext_fp32_local_atomic_add != 1 | ||
288 | +#error "Incorrectly defined __opencl_c_ext_fp32_local_atomic_add" | ||
289 | +#endif | ||
290 | +#if __opencl_c_ext_fp16_global_atomic_min_max != 1 | ||
291 | +#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_min_max" | ||
292 | +#endif | ||
293 | +#if __opencl_c_ext_fp32_global_atomic_min_max != 1 | ||
294 | +#error "Incorrectly defined __opencl_c_ext_fp32_global_atomic_min_max" | ||
295 | +#endif | ||
296 | +#if __opencl_c_ext_fp16_local_atomic_min_max != 1 | ||
297 | +#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_min_max" | ||
298 | +#endif | ||
299 | +#if __opencl_c_ext_fp32_local_atomic_min_max != 1 | ||
300 | +#error "Incorrectly defined __opencl_c_ext_fp32_local_atomic_min_max" | ||
301 | +#endif | ||
302 | + | ||
303 | +#else | ||
304 | +#ifdef __opencl_c_ext_fp16_global_atomic_load_store | ||
305 | +#error "Incorrectly __opencl_c_ext_fp16_global_atomic_load_store defined" | ||
306 | +#endif | ||
307 | +#ifdef __opencl_c_ext_fp16_local_atomic_load_store | ||
308 | +#error "Incorrectly __opencl_c_ext_fp16_local_atomic_load_store defined" | ||
309 | +#endif | ||
310 | +#ifdef __opencl_c_ext_fp16_global_atomic_add | ||
311 | +#error "Incorrectly __opencl_c_ext_fp16_global_atomic_add defined" | ||
312 | +#endif | ||
313 | +#ifdef __opencl_c_ext_fp32_global_atomic_add | ||
314 | +#error "Incorrectly __opencl_c_ext_fp32_global_atomic_add defined" | ||
315 | +#endif | ||
316 | +#ifdef __opencl_c_ext_fp64_global_atomic_add | ||
317 | +#error "Incorrectly __opencl_c_ext_fp64_global_atomic_add defined" | ||
318 | +#endif | ||
319 | +#ifdef __opencl_c_ext_fp16_local_atomic_add | ||
320 | +#error "Incorrectly __opencl_c_ext_fp16_local_atomic_add defined" | ||
321 | +#endif | ||
322 | +#ifdef __opencl_c_ext_fp32_local_atomic_add | ||
323 | +#error "Incorrectly __opencl_c_ext_fp32_local_atomic_add defined" | ||
324 | +#endif | ||
325 | +#ifdef __opencl_c_ext_fp64_local_atomic_add | ||
326 | +#error "Incorrectly __opencl_c_ext_fp64_local_atomic_add defined" | ||
327 | +#endif | ||
328 | +#ifdef __opencl_c_ext_fp16_global_atomic_min_max | ||
329 | +#error "Incorrectly __opencl_c_ext_fp16_global_atomic_min_max defined" | ||
330 | +#endif | ||
331 | +#ifdef __opencl_c_ext_fp32_global_atomic_min_max | ||
332 | +#error "Incorrectly __opencl_c_ext_fp32_global_atomic_min_max defined" | ||
333 | +#endif | ||
334 | +#ifdef __opencl_c_ext_fp64_global_atomic_min_max | ||
335 | +#error "Incorrectly __opencl_c_ext_fp64_global_atomic_min_max defined" | ||
336 | +#endif | ||
337 | +#ifdef __opencl_c_ext_fp16_local_atomic_min_max | ||
338 | +#error "Incorrectly __opencl_c_ext_fp16_local_atomic_min_max defined" | ||
339 | +#endif | ||
340 | +#ifdef __opencl_c_ext_fp32_local_atomic_min_max | ||
341 | +#error "Incorrectly __opencl_c_ext_fp32_local_atomic_min_max defined" | ||
342 | +#endif | ||
343 | +#ifdef __opencl_c_ext_fp64_local_atomic_min_max | ||
344 | +#error "Incorrectly __opencl_c_ext_fp64_local_atomic_min_max defined" | ||
345 | +#endif | ||
346 | + | ||
347 | +#endif //(defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) | ||
348 | + | ||
349 | +#endif // defined(__SPIR__) | ||
350 | + | ||
351 | -- | ||
352 | 2.17.1 | ||
353 | |||