summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaveen Saini <naveen.kumar.saini@intel.com>2021-08-20 09:45:25 +0800
committerAnuj Mittal <anuj.mittal@intel.com>2021-08-24 10:41:24 +0800
commit6a628fa0b507eefd3ed1608b39f4702ea56d1093 (patch)
tree074ec40208410279e5b18242d9dc33f06c8a5076
parent5448b52ae684c250bf79df1cd40c3b16efcc86dc (diff)
downloadmeta-intel-6a628fa0b507eefd3ed1608b39f4702ea56d1093.tar.gz
llvm/12.0.0: apply opencl-clang recommend patches
https://github.com/intel/opencl-clang/tree/ocl-open-120/patches Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch (renamed from dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch)6
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch52
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch344
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend4
4 files changed, 402 insertions, 4 deletions
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch
index c0696652..7e6c4f92 100644
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch
+++ b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch
@@ -1,8 +1,8 @@
1From dccea3a4e68c9a4ce069f2f0a2a24df057199db1 Mon Sep 17 00:00:00 2001 1From 3632f727dfd786a8eca50bd01219669bbe7b0df9 Mon Sep 17 00:00:00 2001
2From: haonanya <haonan.yang@intel.com> 2From: haonanya <haonan.yang@intel.com>
3Date: Tue, 11 May 2021 11:13:02 +0800 3Date: Tue, 11 May 2021 11:13:02 +0800
4Subject: [PATCH] Remove __IMAGE_SUPPORT__ macro for SPIR since SPIR doesn't 4Subject: [PATCH 1/3] Remove __IMAGE_SUPPORT__ macro for SPIR since SPIR
5 require image support 5 doesn't require image support
6 6
7Upstream-Status: Backport [Taken from opencl-clang patches, https://github.com/intel/opencl-clang/blob/ocl-open-120/patches/clang/0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch] 7Upstream-Status: Backport [Taken from opencl-clang patches, https://github.com/intel/opencl-clang/blob/ocl-open-120/patches/clang/0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch]
8 8
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch
new file mode 100644
index 00000000..4f7d3e51
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch
@@ -0,0 +1,52 @@
1From 06cf750d2ef892eaa4f0ff5d0a9e9e5c49697264 Mon Sep 17 00:00:00 2001
2From: Raphael Isemann <teemperor@gmail.com>
3Date: Thu, 1 Apr 2021 18:41:44 +0200
4Subject: [PATCH 2/3] Avoid calling ParseCommandLineOptions in BackendUtil if
5 possible
6
7Calling `ParseCommandLineOptions` should only be called from `main` as the
8CommandLine setup code isn't thread-safe. As BackendUtil is part of the
9generic Clang FrontendAction logic, a process which has several threads executing
10Clang FrontendActions will randomly crash in the unsafe setup code.
11
12This patch avoids calling the function unless either the debug-pass option or
13limit-float-precision option is set. Without these two options set the
14`ParseCommandLineOptions` call doesn't do anything beside parsing
15the command line `clang` which doesn't set any options.
16
17See also D99652 where LLDB received a workaround for this crash.
18
19Reviewed By: JDevlieghere
20
21Differential Revision: https://reviews.llvm.org/D99740
22
23Upstream-Status: Backport [Taken from opencl-clang patches; https://github.com/intel/opencl-clang/blob/ocl-open-120/patches/clang/0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch]
24
25Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
26---
27 clang/lib/CodeGen/BackendUtil.cpp | 8 ++++++++
28 1 file changed, 8 insertions(+)
29
30diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
31index 52bcd971dc8c..f9f891247530 100644
32--- a/clang/lib/CodeGen/BackendUtil.cpp
33+++ b/clang/lib/CodeGen/BackendUtil.cpp
34@@ -850,7 +850,15 @@ static void setCommandLineOpts(const CodeGenOptions &CodeGenOpts) {
35 BackendArgs.push_back("-limit-float-precision");
36 BackendArgs.push_back(CodeGenOpts.LimitFloatPrecision.c_str());
37 }
38+ // Check for the default "clang" invocation that won't set any cl::opt values.
39+ // Skip trying to parse the command line invocation to avoid the issues
40+ // described below.
41+ if (BackendArgs.size() == 1)
42+ return;
43 BackendArgs.push_back(nullptr);
44+ // FIXME: The command line parser below is not thread-safe and shares a global
45+ // state, so this call might crash or overwrite the options of another Clang
46+ // instance in the same process.
47 llvm::cl::ParseCommandLineOptions(BackendArgs.size() - 1,
48 BackendArgs.data());
49 }
50--
512.17.1
52
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch
new file mode 100644
index 00000000..99dbb81c
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch
@@ -0,0 +1,344 @@
1From f1a24eeb89342186c6c718e02dd394775620799f Mon Sep 17 00:00:00 2001
2From: haonanya <haonan.yang@intel.com>
3Date: Wed, 28 Jul 2021 14:20:08 +0800
4Subject: [PATCH 3/3] Support cl_ext_float_atomics
5
6Upstream-Status: Backport [Taken from opencl-clang patches; https://github.com/intel/opencl-clang/blob/ocl-open-120/patches/clang/0003-OpenCL-Support-cl_ext_float_atomics.patch]
7
8Signed-off-by: haonanya <haonan.yang@intel.com>
9Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
10---
11 clang/lib/Headers/opencl-c-base.h | 19 +++
12 clang/lib/Headers/opencl-c.h | 195 ++++++++++++++++++++++++++
13 clang/test/Headers/opencl-c-header.cl | 72 ++++++++++
14 3 files changed, 286 insertions(+)
15
16diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
17index e8dcd70377e5..c8b6d36029ec 100644
18--- a/clang/lib/Headers/opencl-c-base.h
19+++ b/clang/lib/Headers/opencl-c-base.h
20@@ -21,6 +21,25 @@
21 #define cl_khr_subgroup_shuffle 1
22 #define cl_khr_subgroup_shuffle_relative 1
23 #define cl_khr_subgroup_clustered_reduce 1
24+#define cl_ext_float_atomics
25+#ifdef cl_khr_fp16
26+#define __opencl_c_ext_fp16_global_atomic_load_store 1
27+#define __opencl_c_ext_fp16_local_atomic_load_store 1
28+#define __opencl_c_ext_fp16_global_atomic_add 1
29+#define __opencl_c_ext_fp16_local_atomic_add 1
30+#define __opencl_c_ext_fp16_global_atomic_min_max 1
31+#define __opencl_c_ext_fp16_local_atomic_min_max 1
32+#endif
33+#ifdef __opencl_c_fp64
34+#define __opencl_c_ext_fp64_global_atomic_add 1
35+#define __opencl_c_ext_fp64_local_atomic_add 1
36+#define __opencl_c_ext_fp64_global_atomic_min_max 1
37+#define __opencl_c_ext_fp64_local_atomic_min_max 1
38+#endif
39+#define __opencl_c_ext_fp32_global_atomic_add 1
40+#define __opencl_c_ext_fp32_local_atomic_add 1
41+#define __opencl_c_ext_fp32_global_atomic_min_max 1
42+#define __opencl_c_ext_fp32_local_atomic_min_max 1
43 #endif // defined(__SPIR__)
44 #endif // (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
45
46diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
47index ab665628c8e1..6676da858d2a 100644
48--- a/clang/lib/Headers/opencl-c.h
49+++ b/clang/lib/Headers/opencl-c.h
50@@ -13531,6 +13531,201 @@ intptr_t __ovld atomic_fetch_max_explicit(volatile atomic_intptr_t *object, uint
51 intptr_t __ovld atomic_fetch_max_explicit(volatile atomic_intptr_t *object, uintptr_t opermax, memory_order minder, memory_scope scope);
52 #endif
53
54+#if defined(cl_ext_float_atomics)
55+
56+#if defined(__opencl_c_ext_fp32_global_atomic_min_max)
57+float __ovld atomic_fetch_min(volatile __global atomic_float *object,
58+ float operand);
59+float __ovld atomic_fetch_max(volatile __global atomic_float *object,
60+ float operand);
61+float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *object,
62+ float operand, memory_order order);
63+float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *object,
64+ float operand, memory_order order);
65+float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *object,
66+ float operand, memory_order order,
67+ memory_scope scope);
68+float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *object,
69+ float operand, memory_order order,
70+ memory_scope scope);
71+#endif
72+#if defined(__opencl_c_ext_fp32_local_atomic_min_max)
73+float __ovld atomic_fetch_min(volatile __local atomic_float *object,
74+ float operand);
75+float __ovld atomic_fetch_max(volatile __local atomic_float *object,
76+ float operand);
77+float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *object,
78+ float operand, memory_order order);
79+float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *object,
80+ float operand, memory_order order);
81+float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *object,
82+ float operand, memory_order order,
83+ memory_scope scope);
84+float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *object,
85+ float operand, memory_order order,
86+ memory_scope scope);
87+#endif
88+#if defined(__opencl_c_ext_fp32_global_atomic_min_max) || \
89+ defined(__opencl_c_ext_fp32_local_atomic_min_max)
90+float __ovld atomic_fetch_min(volatile atomic_float *object, float operand);
91+float __ovld atomic_fetch_max(volatile atomic_float *object, float operand);
92+float __ovld atomic_fetch_min_explicit(volatile atomic_float *object,
93+ float operand, memory_order order);
94+float __ovld atomic_fetch_max_explicit(volatile atomic_float *object,
95+ float operand, memory_order order);
96+float __ovld atomic_fetch_min_explicit(volatile atomic_float *object,
97+ float operand, memory_order order,
98+ memory_scope scope);
99+float __ovld atomic_fetch_max_explicit(volatile atomic_float *object,
100+ float operand, memory_order order,
101+ memory_scope scope);
102+#endif
103+#if defined(__opencl_c_ext_fp64_global_atomic_min_max)
104+double __ovld atomic_fetch_min(volatile __global atomic_double *object,
105+ double operand);
106+double __ovld atomic_fetch_max(volatile __global atomic_double *object,
107+ double operand);
108+double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *object,
109+ double operand, memory_order order);
110+double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object,
111+ double operand, memory_order order);
112+double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *object,
113+ double operand, memory_order order,
114+ memory_scope scope);
115+double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object,
116+ double operand, memory_order order,
117+ memory_scope scope);
118+#endif
119+#if defined(__opencl_c_ext_fp64_local_atomic_min_max)
120+double __ovld atomic_fetch_min(volatile __local atomic_double *object,
121+ double operand);
122+double __ovld atomic_fetch_max(volatile __local atomic_double *object,
123+ double operand);
124+double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *object,
125+ double operand, memory_order order);
126+double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object,
127+ double operand, memory_order order);
128+double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *object,
129+ double operand, memory_order order,
130+ memory_scope scope);
131+double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object,
132+ double operand, memory_order order,
133+ memory_scope scope);
134+#endif
135+#if defined(__opencl_c_ext_fp64_global_atomic_min_max) || \
136+ defined(__opencl_c_ext_fp64_local_atomic_min_max)
137+double __ovld atomic_fetch_min(volatile atomic_double *object, double operand);
138+double __ovld atomic_fetch_max(volatile atomic_double *object, double operand);
139+double __ovld atomic_fetch_min_explicit(volatile atomic_double *object,
140+ double operand, memory_order order);
141+double __ovld atomic_fetch_max_explicit(volatile atomic_double *object,
142+ double operand, memory_order order);
143+double __ovld atomic_fetch_min_explicit(volatile atomic_double *object,
144+ double operand, memory_order order,
145+ memory_scope scope);
146+double __ovld atomic_fetch_max_explicit(volatile atomic_double *object,
147+ double operand, memory_order order,
148+ memory_scope scope);
149+#endif
150+
151+#if defined(__opencl_c_ext_fp32_global_atomic_add)
152+float __ovld atomic_fetch_add(volatile __global atomic_float *object,
153+ float operand);
154+float __ovld atomic_fetch_sub(volatile __global atomic_float *object,
155+ float operand);
156+float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *object,
157+ float operand, memory_order order);
158+float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *object,
159+ float operand, memory_order order);
160+float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *object,
161+ float operand, memory_order order,
162+ memory_scope scope);
163+float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *object,
164+ float operand, memory_order order,
165+ memory_scope scope);
166+#endif
167+#if defined(__opencl_c_ext_fp32_local_atomic_add)
168+float __ovld atomic_fetch_add(volatile __local atomic_float *object,
169+ float operand);
170+float __ovld atomic_fetch_sub(volatile __local atomic_float *object,
171+ float operand);
172+float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *object,
173+ float operand, memory_order order);
174+float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *object,
175+ float operand, memory_order order);
176+float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *object,
177+ float operand, memory_order order,
178+ memory_scope scope);
179+float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *object,
180+ float operand, memory_order order,
181+ memory_scope scope);
182+#endif
183+#if defined(__opencl_c_ext_fp32_global_atomic_add) || \
184+ defined(__opencl_c_ext_fp32_local_atomic_add)
185+float __ovld atomic_fetch_add(volatile atomic_float *object, float operand);
186+float __ovld atomic_fetch_sub(volatile atomic_float *object, float operand);
187+float __ovld atomic_fetch_add_explicit(volatile atomic_float *object,
188+ float operand, memory_order order);
189+float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object,
190+ float operand, memory_order order);
191+float __ovld atomic_fetch_add_explicit(volatile atomic_float *object,
192+ float operand, memory_order order,
193+ memory_scope scope);
194+float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object,
195+ float operand, memory_order order,
196+ memory_scope scope);
197+#endif
198+
199+#if defined(__opencl_c_ext_fp64_global_atomic_add)
200+double __ovld atomic_fetch_add(volatile __global atomic_double *object,
201+ double operand);
202+double __ovld atomic_fetch_sub(volatile __global atomic_double *object,
203+ double operand);
204+double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *object,
205+ double operand, memory_order order);
206+double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object,
207+ double operand, memory_order order);
208+double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *object,
209+ double operand, memory_order order,
210+ memory_scope scope);
211+double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object,
212+ double operand, memory_order order,
213+ memory_scope scope);
214+#endif
215+#if defined(__opencl_c_ext_fp64_local_atomic_add)
216+double __ovld atomic_fetch_add(volatile __local atomic_double *object,
217+ double operand);
218+double __ovld atomic_fetch_sub(volatile __local atomic_double *object,
219+ double operand);
220+double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *object,
221+ double operand, memory_order order);
222+double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object,
223+ double operand, memory_order order);
224+double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *object,
225+ double operand, memory_order order,
226+ memory_scope scope);
227+double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object,
228+ double operand, memory_order order,
229+ memory_scope scope);
230+#endif
231+#if defined(__opencl_c_ext_fp64_global_atomic_add) || \
232+ defined(__opencl_c_ext_fp64_local_atomic_add)
233+double __ovld atomic_fetch_add(volatile atomic_double *object, double operand);
234+double __ovld atomic_fetch_sub(volatile atomic_double *object, double operand);
235+double __ovld atomic_fetch_add_explicit(volatile atomic_double *object,
236+ double operand, memory_order order);
237+double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object,
238+ double operand, memory_order order);
239+double __ovld atomic_fetch_add_explicit(volatile atomic_double *object,
240+ double operand, memory_order order,
241+ memory_scope scope);
242+double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object,
243+ double operand, memory_order order,
244+ memory_scope scope);
245+#endif
246+
247+#endif // cl_ext_float_atomics
248+
249 // atomic_store()
250
251 void __ovld atomic_store(volatile atomic_int *object, int desired);
252diff --git a/clang/test/Headers/opencl-c-header.cl b/clang/test/Headers/opencl-c-header.cl
253index 13a3b62481ec..2c02d14f25c3 100644
254--- a/clang/test/Headers/opencl-c-header.cl
255+++ b/clang/test/Headers/opencl-c-header.cl
256@@ -124,6 +124,36 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
257 #if cl_khr_subgroup_clustered_reduce != 1
258 #error "Incorrectly defined cl_khr_subgroup_clustered_reduce"
259 #endif
260+#if __opencl_c_ext_fp16_global_atomic_load_store != 1
261+#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_load_store"
262+#endif
263+#if __opencl_c_ext_fp16_local_atomic_load_store != 1
264+#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_load_store"
265+#endif
266+#if __opencl_c_ext_fp16_global_atomic_add != 1
267+#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_add"
268+#endif
269+#if __opencl_c_ext_fp32_global_atomic_add != 1
270+#error "Incorrectly defined __opencl_c_ext_fp32_global_atomic_add"
271+#endif
272+#if __opencl_c_ext_fp16_local_atomic_add != 1
273+#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_add"
274+#endif
275+#if __opencl_c_ext_fp32_local_atomic_add != 1
276+#error "Incorrectly defined __opencl_c_ext_fp32_local_atomic_add"
277+#endif
278+#if __opencl_c_ext_fp16_global_atomic_min_max != 1
279+#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_min_max"
280+#endif
281+#if __opencl_c_ext_fp32_global_atomic_min_max != 1
282+#error "Incorrectly defined __opencl_c_ext_fp32_global_atomic_min_max"
283+#endif
284+#if __opencl_c_ext_fp16_local_atomic_min_max != 1
285+#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_min_max"
286+#endif
287+#if __opencl_c_ext_fp32_local_atomic_min_max != 1
288+#error "Incorrectly defined __opencl_c_ext_fp32_local_atomic_min_max"
289+#endif
290
291 #else
292
293@@ -148,6 +178,48 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
294 #ifdef cl_khr_subgroup_clustered_reduce
295 #error "Incorrect cl_khr_subgroup_clustered_reduce define"
296 #endif
297+#ifdef __opencl_c_ext_fp16_global_atomic_load_store
298+#error "Incorrectly __opencl_c_ext_fp16_global_atomic_load_store defined"
299+#endif
300+#ifdef __opencl_c_ext_fp16_local_atomic_load_store
301+#error "Incorrectly __opencl_c_ext_fp16_local_atomic_load_store defined"
302+#endif
303+#ifdef __opencl_c_ext_fp16_global_atomic_add
304+#error "Incorrectly __opencl_c_ext_fp16_global_atomic_add defined"
305+#endif
306+#ifdef __opencl_c_ext_fp32_global_atomic_add
307+#error "Incorrectly __opencl_c_ext_fp32_global_atomic_add defined"
308+#endif
309+#ifdef __opencl_c_ext_fp64_global_atomic_add
310+#error "Incorrectly __opencl_c_ext_fp64_global_atomic_add defined"
311+#endif
312+#ifdef __opencl_c_ext_fp16_local_atomic_add
313+#error "Incorrectly __opencl_c_ext_fp16_local_atomic_add defined"
314+#endif
315+#ifdef __opencl_c_ext_fp32_local_atomic_add
316+#error "Incorrectly __opencl_c_ext_fp32_local_atomic_add defined"
317+#endif
318+#ifdef __opencl_c_ext_fp64_local_atomic_add
319+#error "Incorrectly __opencl_c_ext_fp64_local_atomic_add defined"
320+#endif
321+#ifdef __opencl_c_ext_fp16_global_atomic_min_max
322+#error "Incorrectly __opencl_c_ext_fp16_global_atomic_min_max defined"
323+#endif
324+#ifdef __opencl_c_ext_fp32_global_atomic_min_max
325+#error "Incorrectly __opencl_c_ext_fp32_global_atomic_min_max defined"
326+#endif
327+#ifdef __opencl_c_ext_fp64_global_atomic_min_max
328+#error "Incorrectly __opencl_c_ext_fp64_global_atomic_min_max defined"
329+#endif
330+#ifdef __opencl_c_ext_fp16_local_atomic_min_max
331+#error "Incorrectly __opencl_c_ext_fp16_local_atomic_min_max defined"
332+#endif
333+#ifdef __opencl_c_ext_fp32_local_atomic_min_max
334+#error "Incorrectly __opencl_c_ext_fp32_local_atomic_min_max defined"
335+#endif
336+#ifdef __opencl_c_ext_fp64_local_atomic_min_max
337+#error "Incorrectly __opencl_c_ext_fp64_local_atomic_min_max defined"
338+#endif
339
340 #endif //(defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
341
342--
3432.17.1
344
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend b/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend
index 84192714..01af38c2 100644
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend
+++ b/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend
@@ -31,7 +31,9 @@ SRC_URI_LLVM11_PATCHES = " \
31 file://llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch \ 31 file://llvm11-0006-OpenCL-support-cl_ext_float_atomics.patch \
32 " 32 "
33SRC_URI_LLVM12_PATCHES = " \ 33SRC_URI_LLVM12_PATCHES = " \
34 file://0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR.patch \ 34 file://llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch \
35 file://llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch \
36 file://llvm12-0003-Support-cl_ext_float_atomics.patch \
35 " 37 "
36 38
37 39