Skip to content

Commit 9a6acc3

Browse files
authored
Merge pull request #272 from haonanya/atomic_half_100
Update cl_ext_float_atomics patch
2 parents af09f61 + c41609b commit 9a6acc3

File tree

2 files changed

+302
-80
lines changed

2 files changed

+302
-80
lines changed

patches/clang/0005-OpenCL-support-cl_ext_float_atomics.patch

Lines changed: 48 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
From 9b48f70bae77fdc752ee5e98949a7ed2c9373037 Mon Sep 17 00:00:00 2001
1+
From 6ef0d9afd03c80671393f4d749ddbeb08f7291fe Mon Sep 17 00:00:00 2001
22
From: haonanya <[email protected]>
33
Date: Fri, 13 Aug 2021 10:00:02 +0800
44
Subject: [PATCH] [OpenCL] support cl_ext_float_atomics
55

66
Signed-off-by: haonanya <[email protected]>
7-
Signed-off-by: Haonan Yang <[email protected]>
87
---
98
clang/lib/Headers/opencl-c-base.h | 22 +++
10-
clang/lib/Headers/opencl-c.h | 208 ++++++++++++++++++++++++++
11-
clang/test/Headers/opencl-c-header.cl | 96 ++++++++++++
12-
3 files changed, 326 insertions(+)
9+
clang/lib/Headers/opencl-c.h | 232 ++++++++++++++++++++++++++
10+
clang/test/Headers/opencl-c-header.cl | 96 +++++++++++
11+
3 files changed, 350 insertions(+)
1312

1413
diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
1514
index 2cc688ccc3da..18d367de68ec 100644
@@ -45,10 +44,10 @@ index 2cc688ccc3da..18d367de68ec 100644
4544
#ifndef __opencl_c_int64
4645
#define __opencl_c_int64 1
4746
diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
48-
index d8173f0aa843..50515ac17a0c 100644
47+
index d8173f0aa843..454469991d59 100644
4948
--- a/clang/lib/Headers/opencl-c.h
5049
+++ b/clang/lib/Headers/opencl-c.h
51-
@@ -14354,6 +14354,214 @@ intptr_t __ovld atomic_fetch_max_explicit(
50+
@@ -14354,6 +14354,238 @@ intptr_t __ovld atomic_fetch_max_explicit(
5251
// defined(cl_khr_int64_extended_atomics)
5352
#endif // (__OPENCL_C_VERSION__ >= CL_VERSION_3_0)
5453

@@ -102,10 +101,12 @@ index d8173f0aa843..50515ac17a0c 100644
102101
+float __ovld atomic_fetch_max_explicit(volatile atomic_float *object,
103102
+ float operand, memory_order order,
104103
+ memory_scope scope);
105-
+#endif // defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
106-
+ defined(__opencl_c_ext_fp32_local_atomic_min_max)
104+
+#endif // defined(__opencl_c_ext_fp32_global_atomic_min_max) &&
105+
+ // defined(__opencl_c_ext_fp32_local_atomic_min_max)
107106
+
108-
+#if defined(__opencl_c_ext_fp64_global_atomic_min_max)
107+
+#if defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
108+
+ defined(cl_khr_int64_base_atomics) && \
109+
+ defined(cl_khr_int64_extended_atomics)
109110
+double __ovld atomic_fetch_min(volatile __global atomic_double *object,
110111
+ double operand);
111112
+double __ovld atomic_fetch_max(volatile __global atomic_double *object,
@@ -120,9 +121,13 @@ index d8173f0aa843..50515ac17a0c 100644
120121
+double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object,
121122
+ double operand, memory_order order,
122123
+ memory_scope scope);
123-
+#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max)
124+
+#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) &&
125+
+ // defined(cl_khr_int64_base_atomics) &&
126+
+ // defined(cl_khr_int64_extended_atomics)
124127
+
125-
+#if defined(__opencl_c_ext_fp64_local_atomic_min_max)
128+
+#if defined(__opencl_c_ext_fp64_local_atomic_min_max) && \
129+
+ defined(cl_khr_int64_base_atomics) && \
130+
+ defined(cl_khr_int64_extended_atomics)
126131
+double __ovld atomic_fetch_min(volatile __local atomic_double *object,
127132
+ double operand);
128133
+double __ovld atomic_fetch_max(volatile __local atomic_double *object,
@@ -137,10 +142,14 @@ index d8173f0aa843..50515ac17a0c 100644
137142
+double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object,
138143
+ double operand, memory_order order,
139144
+ memory_scope scope);
140-
+#endif // defined(__opencl_c_ext_fp64_local_atomic_min_max)
145+
+#endif // defined(__opencl_c_ext_fp64_local_atomic_min_max) &&
146+
+ // defined(cl_khr_int64_base_atomics) &&
147+
+ // defined(cl_khr_int64_extended_atomics)
141148
+
142149
+#if defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
143-
+ defined(__opencl_c_ext_fp64_local_atomic_min_max)
150+
+ defined(__opencl_c_ext_fp64_local_atomic_min_max) && \
151+
+ defined(cl_khr_int64_base_atomics) && \
152+
+ defined(cl_khr_int64_extended_atomics)
144153
+double __ovld atomic_fetch_min(volatile atomic_double *object, double operand);
145154
+double __ovld atomic_fetch_max(volatile atomic_double *object, double operand);
146155
+double __ovld atomic_fetch_min_explicit(volatile atomic_double *object,
@@ -153,8 +162,10 @@ index d8173f0aa843..50515ac17a0c 100644
153162
+double __ovld atomic_fetch_max_explicit(volatile atomic_double *object,
154163
+ double operand, memory_order order,
155164
+ memory_scope scope);
156-
+#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
157-
+ defined(__opencl_c_ext_fp64_local_atomic_min_max)
165+
+#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) &&
166+
+ // defined(__opencl_c_ext_fp64_local_atomic_min_max) &&
167+
+ // defined(cl_khr_int64_base_atomics) &&
168+
+ // defined(cl_khr_int64_extended_atomics)
158169
+
159170
+#if defined(__opencl_c_ext_fp32_global_atomic_add)
160171
+float __ovld atomic_fetch_add(volatile __global atomic_float *object,
@@ -204,10 +215,12 @@ index d8173f0aa843..50515ac17a0c 100644
204215
+float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object,
205216
+ float operand, memory_order order,
206217
+ memory_scope scope);
207-
+#endif // defined(__opencl_c_ext_fp32_global_atomic_add) && \
208-
+ defined(__opencl_c_ext_fp32_local_atomic_add)
218+
+#endif // defined(__opencl_c_ext_fp32_global_atomic_add) &&
219+
+ // defined(__opencl_c_ext_fp32_local_atomic_add)
209220
+
210-
+#if defined(__opencl_c_ext_fp64_global_atomic_add)
221+
+#if defined(__opencl_c_ext_fp64_global_atomic_add) && \
222+
+ defined(cl_khr_int64_base_atomics) && \
223+
+ defined(cl_khr_int64_extended_atomics)
211224
+double __ovld atomic_fetch_add(volatile __global atomic_double *object,
212225
+ double operand);
213226
+double __ovld atomic_fetch_sub(volatile __global atomic_double *object,
@@ -222,9 +235,13 @@ index d8173f0aa843..50515ac17a0c 100644
222235
+double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object,
223236
+ double operand, memory_order order,
224237
+ memory_scope scope);
225-
+#endif // defined(__opencl_c_ext_fp64_global_atomic_add)
238+
+#endif // defined(__opencl_c_ext_fp64_global_atomic_add) &&
239+
+ // defined(cl_khr_int64_base_atomics) &&
240+
+ // defined(cl_khr_int64_extended_atomics)
226241
+
227-
+#if defined(__opencl_c_ext_fp64_local_atomic_add)
242+
+#if defined(__opencl_c_ext_fp64_local_atomic_add) && \
243+
+ defined(cl_khr_int64_base_atomics) && \
244+
+ defined(cl_khr_int64_extended_atomics)
228245
+double __ovld atomic_fetch_add(volatile __local atomic_double *object,
229246
+ double operand);
230247
+double __ovld atomic_fetch_sub(volatile __local atomic_double *object,
@@ -239,10 +256,14 @@ index d8173f0aa843..50515ac17a0c 100644
239256
+double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object,
240257
+ double operand, memory_order order,
241258
+ memory_scope scope);
242-
+#endif // defined(__opencl_c_ext_fp64_local_atomic_add)
259+
+#endif // defined(__opencl_c_ext_fp64_local_atomic_add) &&
260+
+ // defined(cl_khr_int64_base_atomics) &&
261+
+ // defined(cl_khr_int64_extended_atomics)
243262
+
244263
+#if defined(__opencl_c_ext_fp64_global_atomic_add) && \
245-
+ defined(__opencl_c_ext_fp64_local_atomic_add)
264+
+ defined(__opencl_c_ext_fp64_local_atomic_add) && \
265+
+ defined(cl_khr_int64_base_atomics) && \
266+
+ defined(cl_khr_int64_extended_atomics)
246267
+double __ovld atomic_fetch_add(volatile atomic_double *object, double operand);
247268
+double __ovld atomic_fetch_sub(volatile atomic_double *object, double operand);
248269
+double __ovld atomic_fetch_add_explicit(volatile atomic_double *object,
@@ -255,8 +276,10 @@ index d8173f0aa843..50515ac17a0c 100644
255276
+double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object,
256277
+ double operand, memory_order order,
257278
+ memory_scope scope);
258-
+#endif // defined(__opencl_c_ext_fp64_global_atomic_add) && \
259-
+ defined(__opencl_c_ext_fp64_local_atomic_add)
279+
+#endif // defined(__opencl_c_ext_fp64_global_atomic_add) &&
280+
+ // defined(__opencl_c_ext_fp64_local_atomic_add) &&
281+
+ // defined(cl_khr_int64_base_atomics) &&
282+
+ // defined(cl_khr_int64_extended_atomics)
260283
+
261284
+#endif // cl_ext_float_atomics
262285
+

0 commit comments

Comments
 (0)