1- From 9b48f70bae77fdc752ee5e98949a7ed2c9373037 Mon Sep 17 00:00:00 2001
1+ From 6ef0d9afd03c80671393f4d749ddbeb08f7291fe Mon Sep 17 00:00:00 2001
22From: haonanya <
[email protected] >
33Date: Fri, 13 Aug 2021 10:00:02 +0800
44Subject: [PATCH] [OpenCL] support cl_ext_float_atomics
55
66Signed-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
1413diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
1514index 2cc688ccc3da..18d367de68ec 100644
@@ -45,10 +44,10 @@ index 2cc688ccc3da..18d367de68ec 100644
4544 #ifndef __opencl_c_int64
4645 #define __opencl_c_int64 1
4746diff --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