diff options
author | Anuj Mittal <anuj.mittal@intel.com> | 2021-10-12 16:07:17 (GMT) |
---|---|---|
committer | Anuj Mittal <anuj.mittal@intel.com> | 2021-10-13 03:23:41 (GMT) |
commit | a809b8c531f6f0176f7148977b1237319abdd660 (patch) | |
tree | 88ce637013b0ea30224d778413417c5fe9e972cf | |
parent | 467d15d57afea208fb7bc35e486ee274700dca70 (diff) | |
download | meta-intel-a809b8c531f6f0176f7148977b1237319abdd660.tar.gz |
Remove support for gatesgarth
Building with oe-core gatesgarth is no longer supported. Remove from
LAYERSERIES_COMPAT and remove the LLVM 11 patches as well.
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
14 files changed, 4 insertions, 9658 deletions
diff --git a/conf/layer.conf b/conf/layer.conf index b48cf61..eb8ab7f 100644 --- a/conf/layer.conf +++ b/conf/layer.conf | |||
@@ -18,7 +18,7 @@ LAYERRECOMMENDS_intel = "dpdk" | |||
18 | # This should only be incremented on significant changes that will | 18 | # This should only be incremented on significant changes that will |
19 | # cause compatibility issues with other layers | 19 | # cause compatibility issues with other layers |
20 | LAYERVERSION_intel = "5" | 20 | LAYERVERSION_intel = "5" |
21 | LAYERSERIES_COMPAT_intel = "dunfell gatesgarth hardknott honister" | 21 | LAYERSERIES_COMPAT_intel = "dunfell hardknott honister" |
22 | 22 | ||
23 | BBFILES_DYNAMIC += " \ | 23 | BBFILES_DYNAMIC += " \ |
24 | clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \ | 24 | clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \ |
diff --git a/conf/machine/include/meta-intel.inc b/conf/machine/include/meta-intel.inc index f4d4c61..7ae7826 100644 --- a/conf/machine/include/meta-intel.inc +++ b/conf/machine/include/meta-intel.inc | |||
@@ -27,11 +27,9 @@ PREFERRED_PROVIDER_libva-utils-native = "libva-intel-utils-native" | |||
27 | PREFERRED_PROVIDER_nativesdk-libva-utils = "nativesdk-libva-intel-utils" | 27 | PREFERRED_PROVIDER_nativesdk-libva-utils = "nativesdk-libva-intel-utils" |
28 | 28 | ||
29 | PREFERRED_VERSION_opencl-clang ?= "${@bb.utils.contains('LLVMVERSION', '10.0.1', '10.0.0', \ | 29 | PREFERRED_VERSION_opencl-clang ?= "${@bb.utils.contains('LLVMVERSION', '10.0.1', '10.0.0', \ |
30 | bb.utils.contains('LLVMVERSION', '11.1.0', '11.0.0', \ | 30 | bb.utils.contains('LLVMVERSION', '12.0.0', '12.0.0', '13.0.0', d), d)}" |
31 | bb.utils.contains('LLVMVERSION', '12.0.0', '12.0.0', '13.0.0', d), d), d)}" | ||
32 | PREFERRED_VERSION_opencl-clang-native ?= "${@bb.utils.contains('LLVMVERSION', '10.0.1', '10.0.0', \ | 31 | PREFERRED_VERSION_opencl-clang-native ?= "${@bb.utils.contains('LLVMVERSION', '10.0.1', '10.0.0', \ |
33 | bb.utils.contains('LLVMVERSION', '11.1.0', '11.0.0', \ | 32 | bb.utils.contains('LLVMVERSION', '12.0.0', '12.0.0', '13.0.0', d), d)}" |
34 | bb.utils.contains('LLVMVERSION', '12.0.0', '12.0.0', '13.0.0', d), d), d)}" | ||
35 | 33 | ||
36 | XSERVER_X86_ASPEED_AST = "xf86-video-ast \ | 34 | XSERVER_X86_ASPEED_AST = "xf86-video-ast \ |
37 | " | 35 | " |
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0001-OpenCL-3.0-support.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0001-OpenCL-3.0-support.patch deleted file mode 100644 index af433e1..0000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm11-0001-OpenCL-3.0-support.patch +++ /dev/null | |||
@@ -1,8451 +0,0 @@ | |||
1 | From 36d87f69fee9c3d3f399f8e4027ab707ad050e80 Mon Sep 17 00:00:00 2001 | ||
2 | From: Anton Zabaznov <anton.zabaznov@intel.com> | ||
3 | Date: Tue, 22 Sep 2020 19:03:50 +0300 | ||
4 | Subject: [PATCH 1/6] OpenCL 3.0 support | ||
5 | |||
6 | Upstream-Status: Backport [Taken from opencl-clang patches, https://github.com/intel/opencl-clang/blob/ocl-open-110/patches/clang/0001-OpenCL-3.0-support.patch] | ||
7 | Signed-off-by: Anton Zabaznov <anton.zabaznov@intel.com> | ||
8 | Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> | ||
9 | --- | ||
10 | clang/include/clang/Basic/Builtins.def | 65 +- | ||
11 | clang/include/clang/Basic/Builtins.h | 13 +- | ||
12 | .../clang/Basic/DiagnosticParseKinds.td | 2 + | ||
13 | .../clang/Basic/DiagnosticSemaKinds.td | 7 + | ||
14 | clang/include/clang/Basic/LangOptions.def | 2 + | ||
15 | clang/include/clang/Basic/LangStandards.def | 4 + | ||
16 | .../include/clang/Basic/OpenCLExtensions.def | 15 + | ||
17 | clang/include/clang/Basic/OpenCLOptions.h | 174 +- | ||
18 | clang/include/clang/Driver/Options.td | 2 +- | ||
19 | clang/include/clang/Sema/Sema.h | 9 + | ||
20 | clang/lib/AST/ASTContext.cpp | 3 +- | ||
21 | clang/lib/Basic/Builtins.cpp | 28 +- | ||
22 | clang/lib/Basic/TargetInfo.cpp | 11 + | ||
23 | clang/lib/Basic/Targets.cpp | 1 - | ||
24 | clang/lib/CodeGen/CodeGenFunction.cpp | 6 +- | ||
25 | clang/lib/Frontend/CompilerInvocation.cpp | 22 +- | ||
26 | clang/lib/Frontend/InitPreprocessor.cpp | 6 +- | ||
27 | clang/lib/Headers/opencl-c-base.h | 75 +- | ||
28 | clang/lib/Headers/opencl-c.h | 3216 ++++++++++++++--- | ||
29 | clang/lib/Parse/ParseDecl.cpp | 12 +- | ||
30 | clang/lib/Parse/ParsePragma.cpp | 10 +- | ||
31 | clang/lib/Sema/OpenCLBuiltins.td | 153 +- | ||
32 | clang/lib/Sema/Sema.cpp | 47 +- | ||
33 | clang/lib/Sema/SemaChecking.cpp | 38 +- | ||
34 | clang/lib/Sema/SemaDecl.cpp | 18 +- | ||
35 | clang/lib/Sema/SemaDeclAttr.cpp | 9 +- | ||
36 | clang/lib/Sema/SemaDeclCXX.cpp | 12 +- | ||
37 | clang/lib/Sema/SemaLookup.cpp | 19 +- | ||
38 | clang/lib/Sema/SemaType.cpp | 14 +- | ||
39 | .../CodeGenOpenCL/addr-space-struct-arg.cl | 7 +- | ||
40 | .../address-spaces-conversions.cl | 2 + | ||
41 | .../CodeGenOpenCL/address-spaces-mangling.cl | 3 +- | ||
42 | clang/test/CodeGenOpenCL/address-spaces.cl | 4 + | ||
43 | .../amdgcn-automatic-variable.cl | 1 + | ||
44 | .../CodeGenOpenCL/amdgpu-sizeof-alignof.cl | 21 +- | ||
45 | .../CodeGenOpenCL/arm-integer-dot-product.cl | 1 + | ||
46 | .../test/CodeGenOpenCL/cl-uniform-wg-size.cl | 2 + | ||
47 | clang/test/CodeGenOpenCL/fpmath.cl | 2 + | ||
48 | .../generic-address-space-feature.cl | 28 + | ||
49 | .../intel-subgroups-avc-ext-types.cl | 1 + | ||
50 | .../kernels-have-spir-cc-by-default.cl | 3 + | ||
51 | clang/test/CodeGenOpenCL/logical-ops.cl | 1 + | ||
52 | clang/test/CodeGenOpenCL/no-half.cl | 1 + | ||
53 | clang/test/CodeGenOpenCL/pipe_builtin.cl | 3 + | ||
54 | clang/test/CodeGenOpenCL/pipe_types.cl | 1 + | ||
55 | clang/test/CodeGenOpenCL/printf.cl | 2 + | ||
56 | clang/test/CodeGenOpenCL/unroll-hint.cl | 1 + | ||
57 | clang/test/Driver/autocomplete.c | 2 + | ||
58 | clang/test/Driver/opencl.cl | 2 + | ||
59 | clang/test/Driver/unknown-std.cl | 1 + | ||
60 | clang/test/Frontend/stdlang.c | 1 + | ||
61 | clang/test/Headers/opencl-c-header.cl | 7 +- | ||
62 | clang/test/Index/pipe-size.cl | 7 + | ||
63 | clang/test/Preprocessor/init-aarch64.c | 12 +- | ||
64 | clang/test/Preprocessor/predefined-macros.c | 13 + | ||
65 | .../Sema/feature-extensions-simult-support.cl | 75 + | ||
66 | clang/test/Sema/features-ignore-pragma.cl | 24 + | ||
67 | clang/test/Sema/opencl-features-pipes.cl | 18 + | ||
68 | clang/test/Sema/opencl-features.cl | 128 + | ||
69 | clang/test/Sema/pipe_builtins_feature.cl | 21 + | ||
70 | .../address-spaces-conversions-cl2.0.cl | 3 + | ||
71 | clang/test/SemaOpenCL/address-spaces.cl | 1 + | ||
72 | .../SemaOpenCL/cl20-device-side-enqueue.cl | 16 +- | ||
73 | .../SemaOpenCL/forget-unsupported-builtins.cl | 22 + | ||
74 | clang/test/SemaOpenCL/image-features.cl | 20 + | ||
75 | .../SemaOpenCL/invalid-pipe-builtin-cl2.0.cl | 1 + | ||
76 | clang/test/SemaOpenCL/storageclass-cl20.cl | 1 + | ||
77 | .../TableGen/ClangOpenCLBuiltinEmitter.cpp | 35 +- | ||
78 | 68 files changed, 3749 insertions(+), 738 deletions(-) | ||
79 | create mode 100644 clang/test/CodeGenOpenCL/generic-address-space-feature.cl | ||
80 | create mode 100644 clang/test/Sema/feature-extensions-simult-support.cl | ||
81 | create mode 100644 clang/test/Sema/features-ignore-pragma.cl | ||
82 | create mode 100644 clang/test/Sema/opencl-features-pipes.cl | ||
83 | create mode 100644 clang/test/Sema/opencl-features.cl | ||
84 | create mode 100644 clang/test/Sema/pipe_builtins_feature.cl | ||
85 | create mode 100644 clang/test/SemaOpenCL/forget-unsupported-builtins.cl | ||
86 | create mode 100644 clang/test/SemaOpenCL/image-features.cl | ||
87 | |||
88 | diff --git a/clang/include/clang/Basic/Builtins.def b/clang/include/clang/Basic/Builtins.def | ||
89 | index 5463b7dfc18c..e094beab9a6c 100644 | ||
90 | --- a/clang/include/clang/Basic/Builtins.def | ||
91 | +++ b/clang/include/clang/Basic/Builtins.def | ||
92 | @@ -111,6 +111,10 @@ | ||
93 | # define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) | ||
94 | #endif | ||
95 | |||
96 | +#if defined(BUILTIN) && !defined(OPENCLBUILTIN) | ||
97 | +# define OPENCLBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) | ||
98 | +#endif | ||
99 | + | ||
100 | // Standard libc/libm functions: | ||
101 | BUILTIN(__builtin_atan2 , "ddd" , "Fne") | ||
102 | BUILTIN(__builtin_atan2f, "fff" , "Fne") | ||
103 | @@ -1529,50 +1533,54 @@ BUILTIN(__builtin_coro_param, "bv*v*", "n") | ||
104 | |||
105 | // OpenCL v2.0 s6.13.16, s9.17.3.5 - Pipe functions. | ||
106 | // We need the generic prototype, since the packet type could be anything. | ||
107 | -LANGBUILTIN(read_pipe, "i.", "tn", OCLC20_LANG) | ||
108 | -LANGBUILTIN(write_pipe, "i.", "tn", OCLC20_LANG) | ||
109 | +OPENCLBUILTIN(read_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
110 | +OPENCLBUILTIN(write_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
111 | |||
112 | -LANGBUILTIN(reserve_read_pipe, "i.", "tn", OCLC20_LANG) | ||
113 | -LANGBUILTIN(reserve_write_pipe, "i.", "tn", OCLC20_LANG) | ||
114 | +OPENCLBUILTIN(reserve_read_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
115 | +OPENCLBUILTIN(reserve_write_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
116 | |||
117 | -LANGBUILTIN(commit_write_pipe, "v.", "tn", OCLC20_LANG) | ||
118 | -LANGBUILTIN(commit_read_pipe, "v.", "tn", OCLC20_LANG) | ||
119 | +OPENCLBUILTIN(commit_write_pipe, "v.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
120 | +OPENCLBUILTIN(commit_read_pipe, "v.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
121 | |||
122 | -LANGBUILTIN(sub_group_reserve_read_pipe, "i.", "tn", OCLC20_LANG) | ||
123 | -LANGBUILTIN(sub_group_reserve_write_pipe, "i.", "tn", OCLC20_LANG) | ||
124 | +OPENCLBUILTIN(sub_group_reserve_read_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
125 | +OPENCLBUILTIN(sub_group_reserve_write_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
126 | |||
127 | -LANGBUILTIN(sub_group_commit_read_pipe, "v.", "tn", OCLC20_LANG) | ||
128 | -LANGBUILTIN(sub_group_commit_write_pipe, "v.", "tn", OCLC20_LANG) | ||
129 | +OPENCLBUILTIN(sub_group_commit_read_pipe, "v.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
130 | +OPENCLBUILTIN(sub_group_commit_write_pipe, "v.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
131 | |||
132 | -LANGBUILTIN(work_group_reserve_read_pipe, "i.", "tn", OCLC20_LANG) | ||
133 | -LANGBUILTIN(work_group_reserve_write_pipe, "i.", "tn", OCLC20_LANG) | ||
134 | +OPENCLBUILTIN(work_group_reserve_read_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
135 | +OPENCLBUILTIN(work_group_reserve_write_pipe, "i.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
136 | |||
137 | -LANGBUILTIN(work_group_commit_read_pipe, "v.", "tn", OCLC20_LANG) | ||
138 | -LANGBUILTIN(work_group_commit_write_pipe, "v.", "tn", OCLC20_LANG) | ||
139 | +OPENCLBUILTIN(work_group_commit_read_pipe, "v.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
140 | +OPENCLBUILTIN(work_group_commit_write_pipe, "v.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
141 | |||
142 | -LANGBUILTIN(get_pipe_num_packets, "Ui.", "tn", OCLC20_LANG) | ||
143 | -LANGBUILTIN(get_pipe_max_packets, "Ui.", "tn", OCLC20_LANG) | ||
144 | +OPENCLBUILTIN(get_pipe_num_packets, "Ui.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
145 | +OPENCLBUILTIN(get_pipe_max_packets, "Ui.", "tn", OCLC2P_LANG, "__opencl_c_pipes") | ||
146 | |||
147 | // OpenCL v2.0 s6.13.17 - Enqueue kernel functions. | ||
148 | // Custom builtin check allows to perform special check of passed block arguments. | ||
149 | -LANGBUILTIN(enqueue_kernel, "i.", "tn", OCLC20_LANG) | ||
150 | -LANGBUILTIN(get_kernel_work_group_size, "Ui.", "tn", OCLC20_LANG) | ||
151 | -LANGBUILTIN(get_kernel_preferred_work_group_size_multiple, "Ui.", "tn", OCLC20_LANG) | ||
152 | -LANGBUILTIN(get_kernel_max_sub_group_size_for_ndrange, "Ui.", "tn", OCLC20_LANG) | ||
153 | -LANGBUILTIN(get_kernel_sub_group_count_for_ndrange, "Ui.", "tn", OCLC20_LANG) | ||
154 | +OPENCLBUILTIN(enqueue_kernel, "i.", "tn", OCLC2P_LANG, | ||
155 | + "__opencl_c_device_enqueue") | ||
156 | +OPENCLBUILTIN(get_kernel_work_group_size, "Ui.", "tn", OCLC2P_LANG, | ||
157 | + "__opencl_c_device_enqueue") | ||
158 | +OPENCLBUILTIN(get_kernel_preferred_work_group_size_multiple, "Ui.", "tn", | ||
159 | + OCLC2P_LANG, "__opencl_c_device_enqueue") | ||
160 | +OPENCLBUILTIN(get_kernel_max_sub_group_size_for_ndrange, "Ui.", "tn", | ||
161 | + OCLC2P_LANG, "__opencl_c_device_enqueue") | ||
162 | +OPENCLBUILTIN(get_kernel_sub_group_count_for_ndrange, "Ui.", "tn", OCLC2P_LANG, "__opencl_c_device_enqueue") | ||
163 | |||
164 | // OpenCL v2.0 s6.13.9 - Address space qualifier functions. | ||
165 | // FIXME: Pointer parameters of OpenCL builtins should have their address space | ||
166 | // requirement defined. | ||
167 | -LANGBUILTIN(to_global, "v*v*", "tn", OCLC20_LANG) | ||
168 | -LANGBUILTIN(to_local, "v*v*", "tn", OCLC20_LANG) | ||
169 | -LANGBUILTIN(to_private, "v*v*", "tn", OCLC20_LANG) | ||
170 | +OPENCLBUILTIN(to_global, "v*v*", "tn", OCLC2P_LANG, "__opencl_c_generic_address_space") | ||
171 | +OPENCLBUILTIN(to_local, "v*v*", "tn", OCLC2P_LANG, "__opencl_c_generic_address_space") | ||
172 | +OPENCLBUILTIN(to_private, "v*v*", "tn", OCLC2P_LANG, "__opencl_c_generic_address_space") | ||
173 | |||
174 | // OpenCL half load/store builtin | ||
175 | -LANGBUILTIN(__builtin_store_half, "vdh*", "n", ALL_OCLC_LANGUAGES) | ||
176 | -LANGBUILTIN(__builtin_store_halff, "vfh*", "n", ALL_OCLC_LANGUAGES) | ||
177 | -LANGBUILTIN(__builtin_load_half, "dhC*", "nc", ALL_OCLC_LANGUAGES) | ||
178 | -LANGBUILTIN(__builtin_load_halff, "fhC*", "nc", ALL_OCLC_LANGUAGES) | ||
179 | +OPENCLBUILTIN(__builtin_store_half, "vdh*", "n", ALL_OCLC_LANGUAGES, "") | ||
180 | +OPENCLBUILTIN(__builtin_store_halff, "vfh*", "n", ALL_OCLC_LANGUAGES, "") | ||
181 | +OPENCLBUILTIN(__builtin_load_half, "dhC*", "nc", ALL_OCLC_LANGUAGES, "") | ||
182 | +OPENCLBUILTIN(__builtin_load_halff, "fhC*", "nc", ALL_OCLC_LANGUAGES, "") | ||
183 | |||
184 | // Builtins for os_log/os_trace | ||
185 | BUILTIN(__builtin_os_log_format_buffer_size, "zcC*.", "p:0:nut") | ||
186 | @@ -1593,3 +1601,4 @@ BUILTIN(__builtin_ms_va_copy, "vc*&c*&", "n") | ||
187 | #undef BUILTIN | ||
188 | #undef LIBBUILTIN | ||
189 | #undef LANGBUILTIN | ||
190 | +#undef OPENCLBUILTIN | ||
191 | diff --git a/clang/include/clang/Basic/Builtins.h b/clang/include/clang/Basic/Builtins.h | ||
192 | index 15bfcf797917..ba3e7853444c 100644 | ||
193 | --- a/clang/include/clang/Basic/Builtins.h | ||
194 | +++ b/clang/include/clang/Basic/Builtins.h | ||
195 | @@ -33,13 +33,13 @@ enum LanguageID { | ||
196 | CXX_LANG = 0x4, // builtin for cplusplus only. | ||
197 | OBJC_LANG = 0x8, // builtin for objective-c and objective-c++ | ||
198 | MS_LANG = 0x10, // builtin requires MS mode. | ||
199 | - OCLC20_LANG = 0x20, // builtin for OpenCL C 2.0 only. | ||
200 | + OCLC2P_LANG = 0x20, // builtin for OpenCL C 2.0+ versions. | ||
201 | OCLC1X_LANG = 0x40, // builtin for OpenCL C 1.x only. | ||
202 | OMP_LANG = 0x80, // builtin requires OpenMP. | ||
203 | ALL_LANGUAGES = C_LANG | CXX_LANG | OBJC_LANG, // builtin for all languages. | ||
204 | ALL_GNU_LANGUAGES = ALL_LANGUAGES | GNU_LANG, // builtin requires GNU mode. | ||
205 | ALL_MS_LANGUAGES = ALL_LANGUAGES | MS_LANG, // builtin requires MS mode. | ||
206 | - ALL_OCLC_LANGUAGES = OCLC1X_LANG | OCLC20_LANG // builtin for OCLC languages. | ||
207 | + ALL_OCLC_LANGUAGES = OCLC1X_LANG | OCLC2P_LANG // builtin for OCLC languages. | ||
208 | }; | ||
209 | |||
210 | namespace Builtin { | ||
211 | @@ -235,6 +235,10 @@ public: | ||
212 | /// for non-builtins. | ||
213 | bool canBeRedeclared(unsigned ID) const; | ||
214 | |||
215 | + bool requiresFeatures(unsigned ID) const { | ||
216 | + return requiresFeatures(getRecord(ID)); | ||
217 | + } | ||
218 | + | ||
219 | private: | ||
220 | const Info &getRecord(unsigned ID) const; | ||
221 | |||
222 | @@ -242,6 +246,11 @@ private: | ||
223 | bool builtinIsSupported(const Builtin::Info &BuiltinInfo, | ||
224 | const LangOptions &LangOpts); | ||
225 | |||
226 | + bool OclBuiltinIsSupported(const Builtin::Info &BuiltinInfo, | ||
227 | + const LangOptions &LangOpts) const; | ||
228 | + | ||
229 | + bool requiresFeatures(const Builtin::Info &BuiltinInfo) const; | ||
230 | + | ||
231 | /// Helper function for isPrintfLike and isScanfLike. | ||
232 | bool isLike(unsigned ID, unsigned &FormatIdx, bool &HasVAListArg, | ||
233 | const char *Fmt) const; | ||
234 | diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td | ||
235 | index 1038a4119d4c..ba1b1b67a131 100644 | ||
236 | --- a/clang/include/clang/Basic/DiagnosticParseKinds.td | ||
237 | +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td | ||
238 | @@ -1206,6 +1206,8 @@ def warn_pragma_unsupported_extension : Warning< | ||
239 | "unsupported OpenCL extension %0 - ignoring">, InGroup<IgnoredPragmas>; | ||
240 | def warn_pragma_extension_is_core : Warning< | ||
241 | "OpenCL extension %0 is core feature or supported optional core feature - ignoring">, InGroup<DiagGroup<"pedantic-core-features">>, DefaultIgnore; | ||
242 | +def warn_opencl_pragma_feature_ignore : Warning< | ||
243 | + "OpenCL feature support can't be controlled via pragma, ignoring">, InGroup<IgnoredPragmas>; | ||
244 | |||
245 | // OpenCL errors. | ||
246 | def err_opencl_taking_function_address_parser : Error< | ||
247 | diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td | ||
248 | index 941f2cafc372..aa9e8b7b011b 100644 | ||
249 | --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td | ||
250 | +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td | ||
251 | @@ -9741,6 +9741,13 @@ def ext_opencl_ext_vector_type_rgba_selector: ExtWarn< | ||
252 | def err_openclcxx_placement_new : Error< | ||
253 | "use of placement new requires explicit declaration">; | ||
254 | |||
255 | +def err_opencl_pipes_require_feat : Error< | ||
256 | + "usage of OpenCL pipes requires feature support">; | ||
257 | +def err_opencl_memory_scope_require_feat : Error< | ||
258 | + "usage of memory scope requires feature support">; | ||
259 | +def err_opencl_memory_ordering_require_feat : Error< | ||
260 | + "usage of memory ordering requires feature support">; | ||
261 | + | ||
262 | // MIG routine annotations. | ||
263 | def warn_mig_server_routine_does_not_return_kern_return_t : Warning< | ||
264 | "'mig_server_routine' attribute only applies to routines that return a kern_return_t">, | ||
265 | diff --git a/clang/include/clang/Basic/LangOptions.def b/clang/include/clang/Basic/LangOptions.def | ||
266 | index 70f68d664bb7..e683f5956975 100644 | ||
267 | --- a/clang/include/clang/Basic/LangOptions.def | ||
268 | +++ b/clang/include/clang/Basic/LangOptions.def | ||
269 | @@ -215,6 +215,8 @@ LANGOPT(OpenCL , 1, 0, "OpenCL") | ||
270 | LANGOPT(OpenCLVersion , 32, 0, "OpenCL C version") | ||
271 | LANGOPT(OpenCLCPlusPlus , 1, 0, "C++ for OpenCL") | ||
272 | LANGOPT(OpenCLCPlusPlusVersion , 32, 0, "C++ for OpenCL version") | ||
273 | +LANGOPT(OpenCLGenericKeyword , 1, 0, "OpenCL generic keyword") | ||
274 | +LANGOPT(OpenCLPipeKeyword , 1, 0, "OpenCL pipe keyword") | ||
275 | LANGOPT(NativeHalfType , 1, 0, "Native half type support") | ||
276 | LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns") | ||
277 | LANGOPT(HalfArgsAndReturns, 1, 0, "half args and returns") | ||
278 | diff --git a/clang/include/clang/Basic/LangStandards.def b/clang/include/clang/Basic/LangStandards.def | ||
279 | index b09568e8b3e8..7b915c312746 100644 | ||
280 | --- a/clang/include/clang/Basic/LangStandards.def | ||
281 | +++ b/clang/include/clang/Basic/LangStandards.def | ||
282 | @@ -167,6 +167,9 @@ LANGSTANDARD(opencl12, "cl1.2", | ||
283 | LANGSTANDARD(opencl20, "cl2.0", | ||
284 | OpenCL, "OpenCL 2.0", | ||
285 | LineComment | C99 | Digraphs | HexFloat | OpenCL) | ||
286 | +LANGSTANDARD(opencl30, "cl3.0", | ||
287 | + OpenCL, "OpenCL 3.0", | ||
288 | + LineComment | C99 | Digraphs | HexFloat | OpenCL) | ||
289 | LANGSTANDARD(openclcpp, "clc++", | ||
290 | OpenCL, "C++ for OpenCL", | ||
291 | LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus17 | | ||
292 | @@ -176,6 +179,7 @@ LANGSTANDARD_ALIAS_DEPR(opencl10, "CL") | ||
293 | LANGSTANDARD_ALIAS_DEPR(opencl11, "CL1.1") | ||
294 | LANGSTANDARD_ALIAS_DEPR(opencl12, "CL1.2") | ||
295 | LANGSTANDARD_ALIAS_DEPR(opencl20, "CL2.0") | ||
296 | +LANGSTANDARD_ALIAS_DEPR(opencl30, "CL3.0") | ||
297 | LANGSTANDARD_ALIAS_DEPR(openclcpp, "CLC++") | ||
298 | |||
299 | // CUDA | ||
300 | diff --git a/clang/include/clang/Basic/OpenCLExtensions.def b/clang/include/clang/Basic/OpenCLExtensions.def | ||
301 | index 1ae36b32fb0a..d1574164f9b2 100644 | ||
302 | --- a/clang/include/clang/Basic/OpenCLExtensions.def | ||
303 | +++ b/clang/include/clang/Basic/OpenCLExtensions.def | ||
304 | @@ -100,6 +100,21 @@ OPENCLEXT_INTERNAL(cl_intel_subgroups, 120, ~0U) | ||
305 | OPENCLEXT_INTERNAL(cl_intel_subgroups_short, 120, ~0U) | ||
306 | OPENCLEXT_INTERNAL(cl_intel_device_side_avc_motion_estimation, 120, ~0U) | ||
307 | |||
308 | +OPENCLEXT_INTERNAL(__opencl_c_pipes, 200, ~0U) | ||
309 | +OPENCLEXT_INTERNAL(__opencl_c_generic_address_space, 200, ~0U) | ||
310 | +OPENCLEXT_INTERNAL(__opencl_c_work_group_collective_functions, 200, ~0U) | ||
311 | +OPENCLEXT_INTERNAL(__opencl_c_atomic_order_acq_rel, 200, ~0U) | ||
312 | +OPENCLEXT_INTERNAL(__opencl_c_atomic_order_seq_cst, 200, ~0U) | ||
313 | +OPENCLEXT_INTERNAL(__opencl_c_atomic_scope_device, 200, ~0U) | ||
314 | +OPENCLEXT_INTERNAL(__opencl_c_atomic_scope_all_devices, 200, ~0U) | ||
315 | +OPENCLEXT_INTERNAL(__opencl_c_subgroups, 200, ~0U) | ||
316 | +OPENCLEXT_INTERNAL(__opencl_c_3d_image_writes, 100, ~0U) | ||
317 | +OPENCLEXT_INTERNAL(__opencl_c_device_enqueue, 200, ~0U) | ||
318 | +OPENCLEXT_INTERNAL(__opencl_c_read_write_images, 200, ~0U) | ||
319 | +OPENCLEXT_INTERNAL(__opencl_c_program_scope_global_variables, 200, ~0U) | ||
320 | +OPENCLEXT_INTERNAL(__opencl_c_fp64, 120, ~0U) | ||
321 | +OPENCLEXT_INTERNAL(__opencl_c_int64, 100, ~0U) | ||
322 | +OPENCLEXT_INTERNAL(__opencl_c_images, 100, ~0U) | ||
323 | #undef OPENCLEXT_INTERNAL | ||
324 | |||
325 | #ifdef OPENCLEXT | ||
326 | diff --git a/clang/include/clang/Basic/OpenCLOptions.h b/clang/include/clang/Basic/OpenCLOptions.h | ||
327 | index 15661154eab5..d5800f5611c6 100644 | ||
328 | --- a/clang/include/clang/Basic/OpenCLOptions.h | ||
329 | +++ b/clang/include/clang/Basic/OpenCLOptions.h | ||
330 | @@ -21,6 +21,10 @@ namespace clang { | ||
331 | |||
332 | /// OpenCL supported extensions and optional core features | ||
333 | class OpenCLOptions { | ||
334 | + // OpenCL Version | ||
335 | + unsigned CLVer = 120; | ||
336 | + bool IsOpenCLCPlusPlus = false; | ||
337 | + | ||
338 | struct Info { | ||
339 | bool Supported; // Is this option supported | ||
340 | bool Enabled; // Is this option enabled | ||
341 | @@ -31,7 +35,38 @@ class OpenCLOptions { | ||
342 | :Supported(S), Enabled(E), Avail(A), Core(C){} | ||
343 | }; | ||
344 | llvm::StringMap<Info> OptMap; | ||
345 | + | ||
346 | public: | ||
347 | + void setOpenCLVersion(const LangOptions &LO) { | ||
348 | + IsOpenCLCPlusPlus = LO.OpenCLCPlusPlus; | ||
349 | + CLVer = IsOpenCLCPlusPlus ? 200 : LO.OpenCLVersion; | ||
350 | + } | ||
351 | + | ||
352 | + // Get extension which is semantically equivalent to a given feature | ||
353 | + // if exists (e.g. __opencl_c_subgroups -> cl_khr_subgroups) | ||
354 | + llvm::Optional<StringRef> getEquivalentExtension(StringRef Feature) const { | ||
355 | + return llvm::StringSwitch<llvm::Optional<StringRef>>(Feature) | ||
356 | + .Case("__opencl_c_3d_image_writes", | ||
357 | + Optional<StringRef>("cl_khr_3d_image_writes")) | ||
358 | + .Case("__opencl_c_subgroups", Optional<StringRef>("cl_khr_subgroups")) | ||
359 | + .Case("__opencl_c_fp64", Optional<StringRef>("cl_khr_fp64")) | ||
360 | + .Default(Optional<StringRef>()); | ||
361 | + } | ||
362 | + | ||
363 | + // Same as above but for extensions | ||
364 | + llvm::Optional<StringRef> getEquivalentFeature(StringRef Extension) const { | ||
365 | + return llvm::StringSwitch<llvm::Optional<StringRef>>(Extension) | ||
366 | + .Case("cl_khr_3d_image_writes", | ||
367 | + Optional<StringRef>("__opencl_c_3d_image_writes")) | ||
368 | + .Case("cl_khr_subgroups", Optional<StringRef>("__opencl_c_subgroups")) | ||
369 | + .Case("cl_khr_fp64", Optional<StringRef>("__opencl_c_fp64")) | ||
370 | + .Default(Optional<StringRef>()); | ||
371 | + } | ||
372 | + | ||
373 | + bool isFeature(llvm::StringRef Ext) const { | ||
374 | + return Ext.startswith("__opencl_c"); | ||
375 | + } | ||
376 | + | ||
377 | bool isKnown(llvm::StringRef Ext) const { | ||
378 | return OptMap.find(Ext) != OptMap.end(); | ||
379 | } | ||
380 | @@ -42,32 +77,88 @@ public: | ||
381 | |||
382 | // Is supported as either an extension or an (optional) core feature for | ||
383 | // OpenCL version \p CLVer. | ||
384 | - bool isSupported(llvm::StringRef Ext, const LangOptions &LO) const { | ||
385 | + bool isSupported(llvm::StringRef Ext) const { | ||
386 | // In C++ mode all extensions should work at least as in v2.0. | ||
387 | - auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion; | ||
388 | auto I = OptMap.find(Ext)->getValue(); | ||
389 | return I.Supported && I.Avail <= CLVer; | ||
390 | } | ||
391 | |||
392 | // Is supported (optional) OpenCL core features for OpenCL version \p CLVer. | ||
393 | // For supported extension, return false. | ||
394 | - bool isSupportedCore(llvm::StringRef Ext, const LangOptions &LO) const { | ||
395 | + bool isSupportedCore(llvm::StringRef Ext) const { | ||
396 | // In C++ mode all extensions should work at least as in v2.0. | ||
397 | - auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion; | ||
398 | auto I = OptMap.find(Ext)->getValue(); | ||
399 | return I.Supported && I.Avail <= CLVer && I.Core != ~0U && CLVer >= I.Core; | ||
400 | } | ||
401 | |||
402 | // Is supported OpenCL extension for OpenCL version \p CLVer. | ||
403 | // For supported (optional) core feature, return false. | ||
404 | - bool isSupportedExtension(llvm::StringRef Ext, const LangOptions &LO) const { | ||
405 | + bool isSupportedExtension(llvm::StringRef Ext) const { | ||
406 | // In C++ mode all extensions should work at least as in v2.0. | ||
407 | - auto CLVer = LO.OpenCLCPlusPlus ? 200 : LO.OpenCLVersion; | ||
408 | auto I = OptMap.find(Ext)->getValue(); | ||
409 | return I.Supported && I.Avail <= CLVer && (I.Core == ~0U || CLVer < I.Core); | ||
410 | } | ||
411 | |||
412 | + // Support features whose support is directly related to the | ||
413 | + // specific OpenCL version. For example, OpenCL 2.0 supports | ||
414 | + // all features that are optional in 3.0 | ||
415 | + void adjustFeatures() { | ||
416 | + // Support int64 by default (assume compiling for FULL profile) | ||
417 | + OptMap["__opencl_c_int64"].Supported = true; | ||
418 | + | ||
419 | + if (CLVer >= 300) { | ||
420 | + // Simultaneously support extension and corresponding feature | ||
421 | + for (llvm::StringRef F : | ||
422 | + {"__opencl_c_subgroups", "__opencl_c_3d_image_writes", | ||
423 | + "__opencl_c_fp64"}) { | ||
424 | + auto Ext = getEquivalentExtension(F); | ||
425 | + OptMap[*Ext].Supported = OptMap[F].Supported; | ||
426 | + } | ||
427 | + | ||
428 | + // OpenCL C compilers that define the feature macro __opencl_c_pipes or | ||
429 | + // or __opencl_c_device_enqueue must also define the | ||
430 | + // feature macro __opencl_c_generic_address_space. | ||
431 | + if (OptMap["__opencl_c_pipes"].Supported || | ||
432 | + OptMap["__opencl_c_device_enqueue"].Supported) | ||
433 | + OptMap["__opencl_c_generic_address_space"].Supported = true; | ||
434 | + | ||
435 | + // OpenCL C compilers that define the feature macro | ||
436 | + // __opencl_c_3d_image_writes or __opencl_c_read_write_images must also | ||
437 | + // define the feature macro __opencl_c_images | ||
438 | + if (OptMap["__opencl_c_3d_image_writes"].Supported || | ||
439 | + OptMap["__opencl_c_read_write_images"].Supported) | ||
440 | + OptMap["__opencl_c_images"].Supported = true; | ||
441 | + | ||
442 | + // All other features are already supported with options | ||
443 | + // or in target settings | ||
444 | + return; | ||
445 | + } | ||
446 | + | ||
447 | + auto FeaturesRange = llvm::make_filter_range( | ||
448 | + OptMap, [&](llvm::StringMapEntry<Info> &OptVal) { | ||
449 | + auto Opt = OptVal.getKey(); | ||
450 | + return isFeature(Opt); | ||
451 | + }); | ||
452 | + | ||
453 | + for (auto &It : FeaturesRange) { | ||
454 | + auto &Info = It.getValue(); | ||
455 | + // For OpenCL version less then 3.0 some | ||
456 | + // features should be supported simulateneously | ||
457 | + // with specific extension | ||
458 | + if (Optional<llvm::StringRef> Ext = getEquivalentExtension(It.getKey())) | ||
459 | + Info.Supported = Info.Enabled = OptMap[*Ext].Supported; | ||
460 | + else if (Info.Avail <= CLVer) | ||
461 | + Info.Supported = Info.Enabled = true; | ||
462 | + } | ||
463 | + } | ||
464 | + | ||
465 | void enable(llvm::StringRef Ext, bool V = true) { | ||
466 | + // Ignore disabling extensions if corresponding features | ||
467 | + // already supported for OpenCL version higher then 3.0 | ||
468 | + if (CLVer >= 300) | ||
469 | + if (Optional<llvm::StringRef> F = getEquivalentFeature(Ext)) | ||
470 | + if (V != OptMap[*F].Enabled) | ||
471 | + return; | ||
472 | OptMap[Ext].Enabled = V; | ||
473 | } | ||
474 | |||
475 | @@ -96,7 +187,7 @@ public: | ||
476 | OptMap[Ext].Supported = V; | ||
477 | } | ||
478 | |||
479 | - OpenCLOptions(){ | ||
480 | + OpenCLOptions() { | ||
481 | #define OPENCLEXT_INTERNAL(Ext, AvailVer, CoreVer) \ | ||
482 | OptMap[#Ext].Avail = AvailVer; \ | ||
483 | OptMap[#Ext].Core = CoreVer; | ||
484 | @@ -104,35 +195,86 @@ public: | ||
485 | } | ||
486 | |||
487 | void addSupport(const OpenCLOptions &Opts) { | ||
488 | + assert(IsOpenCLCPlusPlus == Opts.IsOpenCLCPlusPlus && CLVer == Opts.CLVer); | ||
489 | for (auto &I:Opts.OptMap) | ||
490 | - if (I.second.Supported) | ||
491 | + if (I.second.Supported) { | ||
492 | OptMap[I.getKey()].Supported = true; | ||
493 | + // All features are enabled as they are supported | ||
494 | + if (isFeature(I.getKey())) | ||
495 | + OptMap[I.getKey()].Enabled = true; | ||
496 | + } | ||
497 | + if (CLVer >= 300) { | ||
498 | + // Enabling extensions with respect to features | ||
499 | + for (llvm::StringRef Ext : | ||
500 | + {"cl_khr_3d_image_writes", "cl_khr_subgroups", "cl_khr_fp64"}) { | ||
501 | + auto Feature = getEquivalentFeature(Ext); | ||
502 | + enable(Ext, OptMap[*Feature].Enabled); | ||
503 | + } | ||
504 | + } | ||
505 | } | ||
506 | |||
507 | void copy(const OpenCLOptions &Opts) { | ||
508 | + CLVer = Opts.CLVer; | ||
509 | + IsOpenCLCPlusPlus = Opts.IsOpenCLCPlusPlus; | ||
510 | OptMap = Opts.OptMap; | ||
511 | } | ||
512 | |||
513 | // Turn on or off support of all options. | ||
514 | void supportAll(bool On = true) { | ||
515 | - for (llvm::StringMap<Info>::iterator I = OptMap.begin(), | ||
516 | - E = OptMap.end(); I != E; ++I) | ||
517 | - I->second.Supported = On; | ||
518 | + for (llvm::StringMap<Info>::iterator I = OptMap.begin(), E = OptMap.end(); | ||
519 | + I != E; ++I) | ||
520 | + if (!isFeature(I->getKey())) | ||
521 | + I->second.Supported = On; | ||
522 | } | ||
523 | |||
524 | void disableAll() { | ||
525 | - for (llvm::StringMap<Info>::iterator I = OptMap.begin(), | ||
526 | - E = OptMap.end(); I != E; ++I) | ||
527 | - I->second.Enabled = false; | ||
528 | + for (llvm::StringMap<Info>::iterator I = OptMap.begin(), E = OptMap.end(); | ||
529 | + I != E; ++I) { | ||
530 | + auto Ext = I->getKey(); | ||
531 | + if (!isFeature(Ext)) | ||
532 | + enable(Ext, false); | ||
533 | + } | ||
534 | } | ||
535 | |||
536 | - void enableSupportedCore(LangOptions LO) { | ||
537 | + void enableSupportedCore() { | ||
538 | for (llvm::StringMap<Info>::iterator I = OptMap.begin(), E = OptMap.end(); | ||
539 | I != E; ++I) | ||
540 | - if (isSupportedCore(I->getKey(), LO)) | ||
541 | + if (isSupportedCore(I->getKey())) | ||
542 | I->second.Enabled = true; | ||
543 | } | ||
544 | |||
545 | + // This enum specifies how OpenCL versions map into values | ||
546 | + // for encoding. This is used when generating built-ins | ||
547 | + // from tablegen | ||
548 | + enum OpenCLVersionsEncodings : unsigned short { | ||
549 | + OPENCL_C_100_CODE = 0x1, | ||
550 | + OPENCL_C_110_CODE = 0x2, | ||
551 | + OPENCL_C_120_CODE = 0x4, | ||
552 | + OPENCL_C_200_CODE = 0x8, | ||
553 | + OPENCL_C_300_CODE = 0x10, | ||
554 | + OPENCL_C_ALL_CODE = 0x1f | ||
555 | + }; | ||
556 | + | ||
557 | + // Encode version into single integer | ||
558 | + static unsigned short EncodeVersion(unsigned OpenCLVersion) { | ||
559 | + switch (OpenCLVersion) { | ||
560 | + default: | ||
561 | + llvm_unreachable("Unknown OpenCL version"); | ||
562 | + case 0: | ||
563 | + return OpenCLVersionsEncodings::OPENCL_C_ALL_CODE; | ||
564 | + case 100: | ||
565 | + return OpenCLVersionsEncodings::OPENCL_C_100_CODE; | ||
566 | + case 110: | ||
567 | + return OpenCLVersionsEncodings::OPENCL_C_110_CODE; | ||
568 | + case 120: | ||
569 | + return OpenCLVersionsEncodings::OPENCL_C_120_CODE; | ||
570 | + case 200: | ||
571 | + return OpenCLVersionsEncodings::OPENCL_C_200_CODE; | ||
572 | + case 300: | ||
573 | + return OpenCLVersionsEncodings::OPENCL_C_300_CODE; | ||
574 | + } | ||
575 | + } | ||
576 | + | ||
577 | friend class ASTWriter; | ||
578 | friend class ASTReader; | ||
579 | }; | ||
580 | diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td | ||
581 | index 966cb907b7e2..62536f2470c2 100644 | ||
582 | --- a/clang/include/clang/Driver/Options.td | ||
583 | +++ b/clang/include/clang/Driver/Options.td | ||
584 | @@ -557,7 +557,7 @@ def cl_mad_enable : Flag<["-"], "cl-mad-enable">, Group<opencl_Group>, Flags<[CC | ||
585 | def cl_no_signed_zeros : Flag<["-"], "cl-no-signed-zeros">, Group<opencl_Group>, Flags<[CC1Option]>, | ||
586 | HelpText<"OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.">; | ||
587 | def cl_std_EQ : Joined<["-"], "cl-std=">, Group<opencl_Group>, Flags<[CC1Option]>, | ||
588 | - HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,clc++,CLC++">; | ||
589 | + HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,cl3.0,CL3.0,clc++,CLC++">; | ||
590 | def cl_denorms_are_zero : Flag<["-"], "cl-denorms-are-zero">, Group<opencl_Group>, | ||
591 | HelpText<"OpenCL only. Allow denormals to be flushed to zero.">; | ||
592 | def cl_fp32_correctly_rounded_divide_sqrt : Flag<["-"], "cl-fp32-correctly-rounded-divide-sqrt">, Group<opencl_Group>, Flags<[CC1Option]>, | ||
593 | diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h | ||
594 | index 16a7084f6b08..5920c27229d8 100644 | ||
595 | --- a/clang/include/clang/Sema/Sema.h | ||
596 | +++ b/clang/include/clang/Sema/Sema.h | ||
597 | @@ -9930,6 +9930,10 @@ public: | ||
598 | /// \return true if type is disabled. | ||
599 | bool checkOpenCLDisabledDecl(const NamedDecl &D, const Expr &E); | ||
600 | |||
601 | + bool checkOpenCLSubgroupExtForCallExpr(CallExpr *Call); | ||
602 | + | ||
603 | + bool isSupportedOpenCLOMemoryOrdering(int64_t Ordering) const; | ||
604 | + | ||
605 | //===--------------------------------------------------------------------===// | ||
606 | // OpenMP directives and clauses. | ||
607 | // | ||
608 | @@ -11527,6 +11531,11 @@ public: | ||
609 | /// that the user intended an assignment used as condition. | ||
610 | void DiagnoseEqualityWithExtraParens(ParenExpr *ParenE); | ||
611 | |||
612 | + template <typename DiagLocT, typename DiagInfoT> | ||
613 | + void DiagnoseOpenCLRequiresOption(llvm::StringRef OpenCLOptName, | ||
614 | + DiagLocT DiagLoc, DiagInfoT DiagInfo, | ||
615 | + unsigned Selector, SourceRange SrcRange); | ||
616 | + | ||
617 | /// CheckCXXBooleanCondition - Returns true if conversion to bool is invalid. | ||
618 | ExprResult CheckCXXBooleanCondition(Expr *CondExpr, bool IsConstexpr = false); | ||
619 | |||
620 | diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp | ||
621 | index bf51d35d9693..a54ea8475d7d 100644 | ||
622 | --- a/clang/lib/AST/ASTContext.cpp | ||
623 | +++ b/clang/lib/AST/ASTContext.cpp | ||
624 | @@ -1433,7 +1433,8 @@ void ASTContext::InitBuiltinTypes(const TargetInfo &Target, | ||
625 | ObjCSuperType = QualType(); | ||
626 | |||
627 | // void * type | ||
628 | - if (LangOpts.OpenCLVersion >= 200) { | ||
629 | + if (Target.getSupportedOpenCLOpts().isEnabled( | ||
630 | + "__opencl_c_generic_address_space")) { | ||
631 | auto Q = VoidTy.getQualifiers(); | ||
632 | Q.setAddressSpace(LangAS::opencl_generic); | ||
633 | VoidPtrTy = getPointerType(getCanonicalType( | ||
634 | diff --git a/clang/lib/Basic/Builtins.cpp b/clang/lib/Basic/Builtins.cpp | ||
635 | index 0cd89df41b67..7a3067345098 100644 | ||
636 | --- a/clang/lib/Basic/Builtins.cpp | ||
637 | +++ b/clang/lib/Basic/Builtins.cpp | ||
638 | @@ -23,6 +23,8 @@ static const Builtin::Info BuiltinInfo[] = { | ||
639 | { #ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, nullptr }, | ||
640 | #define LANGBUILTIN(ID, TYPE, ATTRS, LANGS) \ | ||
641 | { #ID, TYPE, ATTRS, nullptr, LANGS, nullptr }, | ||
642 | +#define OPENCLBUILTIN(ID, TYPE, ATTRS, LANGS, FEATURE) \ | ||
643 | + {#ID, TYPE, ATTRS, nullptr, LANGS, FEATURE}, | ||
644 | #define LIBBUILTIN(ID, TYPE, ATTRS, HEADER, LANGS) \ | ||
645 | { #ID, TYPE, ATTRS, HEADER, LANGS, nullptr }, | ||
646 | #include "clang/Basic/Builtins.def" | ||
647 | @@ -69,16 +71,17 @@ bool Builtin::Context::builtinIsSupported(const Builtin::Info &BuiltinInfo, | ||
648 | bool ObjCUnsupported = !LangOpts.ObjC && BuiltinInfo.Langs == OBJC_LANG; | ||
649 | bool OclC1Unsupported = (LangOpts.OpenCLVersion / 100) != 1 && | ||
650 | (BuiltinInfo.Langs & ALL_OCLC_LANGUAGES ) == OCLC1X_LANG; | ||
651 | - bool OclC2Unsupported = | ||
652 | - (LangOpts.OpenCLVersion != 200 && !LangOpts.OpenCLCPlusPlus) && | ||
653 | - (BuiltinInfo.Langs & ALL_OCLC_LANGUAGES) == OCLC20_LANG; | ||
654 | + bool OclC2PUnsupported = | ||
655 | + (BuiltinInfo.Langs & ALL_OCLC_LANGUAGES) == OCLC2P_LANG && | ||
656 | + ((LangOpts.OpenCLVersion < 200 && !LangOpts.OpenCLCPlusPlus) || | ||
657 | + !OclBuiltinIsSupported(BuiltinInfo, LangOpts)); | ||
658 | bool OclCUnsupported = !LangOpts.OpenCL && | ||
659 | (BuiltinInfo.Langs & ALL_OCLC_LANGUAGES); | ||
660 | bool OpenMPUnsupported = !LangOpts.OpenMP && BuiltinInfo.Langs == OMP_LANG; | ||
661 | bool CPlusPlusUnsupported = | ||
662 | !LangOpts.CPlusPlus && BuiltinInfo.Langs == CXX_LANG; | ||
663 | return !BuiltinsUnsupported && !MathBuiltinsUnsupported && !OclCUnsupported && | ||
664 | - !OclC1Unsupported && !OclC2Unsupported && !OpenMPUnsupported && | ||
665 | + !OclC1Unsupported && !OclC2PUnsupported && !OpenMPUnsupported && | ||
666 | !GnuModeUnsupported && !MSModeUnsupported && !ObjCUnsupported && | ||
667 | !CPlusPlusUnsupported; | ||
668 | } | ||
669 | @@ -191,3 +194,20 @@ bool Builtin::Context::canBeRedeclared(unsigned ID) const { | ||
670 | (!hasReferenceArgsOrResult(ID) && | ||
671 | !hasCustomTypechecking(ID)); | ||
672 | } | ||
673 | + | ||
674 | +bool Builtin::Context::OclBuiltinIsSupported( | ||
675 | + const Builtin::Info &BuiltinInfo, const LangOptions &LangOpts) const { | ||
676 | + if (!requiresFeatures(BuiltinInfo)) | ||
677 | + return true; | ||
678 | + | ||
679 | + return llvm::StringSwitch<bool>(BuiltinInfo.Features) | ||
680 | + .Case("__opencl_c_device_enqueue", LangOpts.Blocks) | ||
681 | + .Case("__opencl_c_generic_address_space", LangOpts.OpenCLGenericKeyword) | ||
682 | + .Case("__opencl_c_pipes", LangOpts.OpenCLPipeKeyword) | ||
683 | + .Default(false); | ||
684 | +} | ||
685 | + | ||
686 | +bool Builtin::Context::requiresFeatures( | ||
687 | + const Builtin::Info &BuiltinInfo) const { | ||
688 | + return BuiltinInfo.Features && llvm::StringRef(BuiltinInfo.Features) != ""; | ||
689 | +} | ||
690 | diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp | ||
691 | index eccdc21d724a..6b4f524d5271 100644 | ||
692 | --- a/clang/lib/Basic/TargetInfo.cpp | ||
693 | +++ b/clang/lib/Basic/TargetInfo.cpp | ||
694 | @@ -387,6 +387,17 @@ void TargetInfo::adjust(LangOptions &Opts) { | ||
695 | HalfFormat = &llvm::APFloat::IEEEhalf(); | ||
696 | FloatFormat = &llvm::APFloat::IEEEsingle(); | ||
697 | LongDoubleFormat = &llvm::APFloat::IEEEquad(); | ||
698 | + | ||
699 | + auto &SupportedOCLOpts = getTargetOpts().SupportedOpenCLOptions; | ||
700 | + | ||
701 | + SupportedOCLOpts.setOpenCLVersion(Opts); | ||
702 | + SupportedOCLOpts.adjustFeatures(); | ||
703 | + | ||
704 | + if (!Opts.OpenCLCPlusPlus && Opts.OpenCLVersion >= 200) | ||
705 | + Opts.Blocks = SupportedOCLOpts.isSupported("__opencl_c_device_enqueue"); | ||
706 | + Opts.OpenCLGenericKeyword = | ||
707 | + SupportedOCLOpts.isSupported("__opencl_c_generic_address_space"); | ||
708 | + Opts.OpenCLPipeKeyword = SupportedOCLOpts.isSupported("__opencl_c_pipes"); | ||
709 | } | ||
710 | |||
711 | if (Opts.DoubleSize) { | ||
712 | diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp | ||
713 | index 965f273892bd..046d7c15f835 100644 | ||
714 | --- a/clang/lib/Basic/Targets.cpp | ||
715 | +++ b/clang/lib/Basic/Targets.cpp | ||
716 | @@ -40,7 +40,6 @@ | ||
717 | #include "clang/Basic/Diagnostic.h" | ||
718 | #include "llvm/ADT/StringExtras.h" | ||
719 | #include "llvm/ADT/Triple.h" | ||
720 | - | ||
721 | using namespace clang; | ||
722 | |||
723 | namespace clang { | ||
724 | diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp | ||
725 | index 8ce488f35dd3..ca4cb0fbf018 100644 | ||
726 | --- a/clang/lib/CodeGen/CodeGenFunction.cpp | ||
727 | +++ b/clang/lib/CodeGen/CodeGenFunction.cpp | ||
728 | @@ -2306,11 +2306,11 @@ void CodeGenFunction::checkTargetFeatures(SourceLocation Loc, | ||
729 | std::string MissingFeature; | ||
730 | if (BuiltinID) { | ||
731 | SmallVector<StringRef, 1> ReqFeatures; | ||
732 | - const char *FeatureList = | ||
733 | - CGM.getContext().BuiltinInfo.getRequiredFeatures(BuiltinID); | ||
734 | // Return if the builtin doesn't have any required features. | ||
735 | - if (!FeatureList || StringRef(FeatureList) == "") | ||
736 | + if (!CGM.getContext().BuiltinInfo.requiresFeatures(BuiltinID)) | ||
737 | return; | ||
738 | + const char *FeatureList = | ||
739 | + CGM.getContext().BuiltinInfo.getRequiredFeatures(BuiltinID); | ||
740 | StringRef(FeatureList).split(ReqFeatures, ','); | ||
741 | if (!hasRequiredFeatures(ReqFeatures, CGM, FD, MissingFeature)) | ||
742 | CGM.getDiags().Report(Loc, diag::err_builtin_needs_feature) | ||
743 | diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp | ||
744 | index 73114c6d76cb..bc54d231b97a 100644 | ||
745 | --- a/clang/lib/Frontend/CompilerInvocation.cpp | ||
746 | +++ b/clang/lib/Frontend/CompilerInvocation.cpp | ||
747 | @@ -2344,6 +2344,8 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, | ||
748 | Opts.OpenCLVersion = 120; | ||
749 | else if (LangStd == LangStandard::lang_opencl20) | ||
750 | Opts.OpenCLVersion = 200; | ||
751 | + else if (LangStd == LangStandard::lang_opencl30) | ||
752 | + Opts.OpenCLVersion = 300; | ||
753 | else if (LangStd == LangStandard::lang_openclcpp) | ||
754 | Opts.OpenCLCPlusPlusVersion = 100; | ||
755 | |||
756 | @@ -2544,14 +2546,15 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, | ||
757 | // -cl-std only applies for OpenCL language standards. | ||
758 | // Override the -std option in this case. | ||
759 | if (const Arg *A = Args.getLastArg(OPT_cl_std_EQ)) { | ||
760 | - LangStandard::Kind OpenCLLangStd | ||
761 | - = llvm::StringSwitch<LangStandard::Kind>(A->getValue()) | ||
762 | - .Cases("cl", "CL", LangStandard::lang_opencl10) | ||
763 | - .Cases("cl1.1", "CL1.1", LangStandard::lang_opencl11) | ||
764 | - .Cases("cl1.2", "CL1.2", LangStandard::lang_opencl12) | ||
765 | - .Cases("cl2.0", "CL2.0", LangStandard::lang_opencl20) | ||
766 | - .Cases("clc++", "CLC++", LangStandard::lang_openclcpp) | ||
767 | - .Default(LangStandard::lang_unspecified); | ||
768 | + LangStandard::Kind OpenCLLangStd = | ||
769 | + llvm::StringSwitch<LangStandard::Kind>(A->getValue()) | ||
770 | + .Cases("cl", "CL", LangStandard::lang_opencl10) | ||
771 | + .Cases("cl1.1", "CL1.1", LangStandard::lang_opencl11) | ||
772 | + .Cases("cl1.2", "CL1.2", LangStandard::lang_opencl12) | ||
773 | + .Cases("cl2.0", "CL2.0", LangStandard::lang_opencl20) | ||
774 | + .Cases("cl3.0", "CL3.0", LangStandard::lang_opencl30) | ||
775 | + .Cases("clc++", "CLC++", LangStandard::lang_openclcpp) | ||
776 | + .Default(LangStandard::lang_unspecified); | ||
777 | |||
778 | if (OpenCLLangStd == LangStandard::lang_unspecified) { | ||
779 | Diags.Report(diag::err_drv_invalid_value) | ||
780 | @@ -2852,8 +2855,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, | ||
781 | |||
782 | Opts.RTTI = Opts.CPlusPlus && !Args.hasArg(OPT_fno_rtti); | ||
783 | Opts.RTTIData = Opts.RTTI && !Args.hasArg(OPT_fno_rtti_data); | ||
784 | - Opts.Blocks = Args.hasArg(OPT_fblocks) || (Opts.OpenCL | ||
785 | - && Opts.OpenCLVersion == 200); | ||
786 | + Opts.Blocks = Args.hasArg(OPT_fblocks); | ||
787 | Opts.BlocksRuntimeOptional = Args.hasArg(OPT_fblocks_runtime_optional); | ||
788 | Opts.Coroutines = Opts.CPlusPlus20 || Args.hasArg(OPT_fcoroutines_ts); | ||
789 | |||
790 | diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp | ||
791 | index 6eef1e2376f6..5bb489c11909 100644 | ||
792 | --- a/clang/lib/Frontend/InitPreprocessor.cpp | ||
793 | +++ b/clang/lib/Frontend/InitPreprocessor.cpp | ||
794 | @@ -445,6 +445,9 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, | ||
795 | case 200: | ||
796 | Builder.defineMacro("__OPENCL_C_VERSION__", "200"); | ||
797 | break; | ||
798 | + case 300: | ||
799 | + Builder.defineMacro("__OPENCL_C_VERSION__", "300"); | ||
800 | + break; | ||
801 | default: | ||
802 | llvm_unreachable("Unsupported OpenCL version"); | ||
803 | } | ||
804 | @@ -453,6 +456,7 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, | ||
805 | Builder.defineMacro("CL_VERSION_1_1", "110"); | ||
806 | Builder.defineMacro("CL_VERSION_1_2", "120"); | ||
807 | Builder.defineMacro("CL_VERSION_2_0", "200"); | ||
808 | + Builder.defineMacro("CL_VERSION_3_0", "300"); | ||
809 | |||
810 | if (TI.isLittleEndian()) | ||
811 | Builder.defineMacro("__ENDIAN_LITTLE__"); | ||
812 | @@ -1108,7 +1112,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI, | ||
813 | // OpenCL definitions. | ||
814 | if (LangOpts.OpenCL) { | ||
815 | #define OPENCLEXT(Ext) \ | ||
816 | - if (TI.getSupportedOpenCLOpts().isSupported(#Ext, LangOpts)) \ | ||
817 | + if (TI.getSupportedOpenCLOpts().isSupported(#Ext)) \ | ||
818 | Builder.defineMacro(#Ext); | ||
819 | #include "clang/Basic/OpenCLExtensions.def" | ||
820 | |||
821 | diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h | ||
822 | index 430e07d36f62..afa900ab24d9 100644 | ||
823 | --- a/clang/lib/Headers/opencl-c-base.h | ||
824 | +++ b/clang/lib/Headers/opencl-c-base.h | ||
825 | @@ -9,6 +9,59 @@ | ||
826 | #ifndef _OPENCL_BASE_H_ | ||
827 | #define _OPENCL_BASE_H_ | ||
828 | |||
829 | +// Add predefined macros to build headers with standalone executable | ||
830 | +#ifndef CL_VERSION_3_0 | ||
831 | + #define CL_VERSION_3_0 300 | ||
832 | +#endif | ||
833 | + | ||
834 | +// Define features for 2.0 for header backward compatibility | ||
835 | +#ifndef __opencl_c_int64 | ||
836 | + #define __opencl_c_int64 1 | ||
837 | +#endif | ||
838 | +#if __OPENCL_C_VERSION__ != CL_VERSION_3_0 | ||
839 | + #ifndef __opencl_c_images | ||
840 | + #define __opencl_c_images 1 | ||
841 | + #endif | ||
842 | +#endif | ||
843 | +#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ == CL_VERSION_2_0) | ||
844 | +#ifndef __opencl_c_pipes | ||
845 | + #define __opencl_c_pipes 1 | ||
846 | +#endif | ||
847 | +#ifndef __opencl_c_generic_address_space | ||
848 | + #define __opencl_c_generic_address_space 1 | ||
849 | +#endif | ||
850 | +#ifndef __opencl_c_work_group_collective_functions | ||
851 | + #define __opencl_c_work_group_collective_functions 1 | ||
852 | +#endif | ||
853 | +#ifndef __opencl_c_atomic_order_acq_rel | ||
854 | + #define __opencl_c_atomic_order_acq_rel 1 | ||
855 | +#endif | ||
856 | +#ifndef __opencl_c_atomic_order_seq_cst | ||
857 | + #define __opencl_c_atomic_order_seq_cst 1 | ||
858 | +#endif | ||
859 | +#ifndef __opencl_c_atomic_scope_device | ||
860 | + #define __opencl_c_atomic_scope_device 1 | ||
861 | +#endif | ||
862 | +#ifndef __opencl_c_atomic_scope_all_devices | ||
863 | + #define __opencl_c_atomic_scope_all_devices 1 | ||
864 | +#endif | ||
865 | +#ifndef __opencl_c_subgroups | ||
866 | + #define __opencl_c_subgroups 1 | ||
867 | +#endif | ||
868 | +#ifndef __opencl_c_3d_image_writes | ||
869 | + #define __opencl_c_3d_image_writes 1 | ||
870 | +#endif | ||
871 | +#ifndef __opencl_c_device_enqueue | ||
872 | + #define __opencl_c_device_enqueue 1 | ||
873 | +#endif | ||
874 | +#ifndef __opencl_c_read_write_images | ||
875 | + #define __opencl_c_read_write_images 1 | ||
876 | +#endif | ||
877 | +#ifndef __opencl_c_program_scope_global_variables | ||
878 | + #define __opencl_c_program_scope_global_variables 1 | ||
879 | +#endif | ||
880 | +#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ == CL_VERSION_2_0) | ||
881 | + | ||
882 | // built-in scalar data types: | ||
883 | |||
884 | /** | ||
885 | @@ -115,7 +168,12 @@ typedef half half4 __attribute__((ext_vector_type(4))); | ||
886 | typedef half half8 __attribute__((ext_vector_type(8))); | ||
887 | typedef half half16 __attribute__((ext_vector_type(16))); | ||
888 | #endif | ||
889 | -#ifdef cl_khr_fp64 | ||
890 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
891 | + | ||
892 | +#ifndef __opencl_c_fp64 | ||
893 | + #define __opencl_c_fp64 1 | ||
894 | +#endif | ||
895 | + | ||
896 | #if __OPENCL_C_VERSION__ < CL_VERSION_1_2 | ||
897 | #pragma OPENCL EXTENSION cl_khr_fp64 : enable | ||
898 | #endif | ||
899 | @@ -281,9 +339,17 @@ typedef uint cl_mem_fence_flags; | ||
900 | typedef enum memory_scope { | ||
901 | memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM, | ||
902 | memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP, | ||
903 | +#ifdef __opencl_c_atomic_scope_device | ||
904 | memory_scope_device = __OPENCL_MEMORY_SCOPE_DEVICE, | ||
905 | +#endif | ||
906 | +#ifdef __opencl_c_atomic_scope_all_devices | ||
907 | + #if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0) | ||
908 | + memory_scope_all_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES, | ||
909 | + #endif //(__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
910 | memory_scope_all_svm_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES, | ||
911 | -#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups) | ||
912 | +#endif // __opencl_c_atomic_scope_all_devices | ||
913 | +#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups) || \ | ||
914 | + defined(__opencl_c_subgroups) | ||
915 | memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP | ||
916 | #endif | ||
917 | } memory_scope; | ||
918 | @@ -301,13 +367,14 @@ typedef enum memory_scope { | ||
919 | #define ATOMIC_FLAG_INIT 0 | ||
920 | |||
921 | // enum values aligned with what clang uses in EmitAtomicExpr() | ||
922 | -typedef enum memory_order | ||
923 | -{ | ||
924 | +typedef enum memory_order { | ||
925 | memory_order_relaxed = __ATOMIC_RELAXED, | ||
926 | memory_order_acquire = __ATOMIC_ACQUIRE, | ||
927 | memory_order_release = __ATOMIC_RELEASE, | ||
928 | memory_order_acq_rel = __ATOMIC_ACQ_REL, | ||
929 | +#ifdef __opencl_c_atomic_order_seq_cst | ||
930 | memory_order_seq_cst = __ATOMIC_SEQ_CST | ||
931 | +#endif //__opencl_c_atomic_order_seq_cst | ||
932 | } memory_order; | ||
933 | |||
934 | #endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
935 | diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h | ||
936 | index 66e18bdd47bb..67d900eb1c3d 100644 | ||
937 | --- a/clang/lib/Headers/opencl-c.h | ||
938 | +++ b/clang/lib/Headers/opencl-c.h | ||
939 | @@ -35,7 +35,6 @@ | ||
940 | #define __purefn __attribute__((pure)) | ||
941 | #define __cnfn __attribute__((const)) | ||
942 | |||
943 | - | ||
944 | // OpenCL v1.1/1.2/2.0 s6.2.3 - Explicit conversions | ||
945 | |||
946 | char __ovld __cnfn convert_char_rte(char); | ||
947 | @@ -4632,7 +4631,7 @@ float16 __ovld __cnfn convert_float16(float16); | ||
948 | |||
949 | // Conversions with double data type parameters or return value. | ||
950 | |||
951 | -#ifdef cl_khr_fp64 | ||
952 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
953 | char __ovld __cnfn convert_char(double); | ||
954 | char __ovld __cnfn convert_char_rte(double); | ||
955 | char __ovld __cnfn convert_char_rtn(double); | ||
956 | @@ -5452,7 +5451,7 @@ double16 __ovld __cnfn convert_double16_rtz(uchar16); | ||
957 | double16 __ovld __cnfn convert_double16_rtz(uint16); | ||
958 | double16 __ovld __cnfn convert_double16_rtz(ulong16); | ||
959 | double16 __ovld __cnfn convert_double16_rtz(ushort16); | ||
960 | -#endif //cl_khr_fp64 | ||
961 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
962 | |||
963 | #ifdef cl_khr_fp16 | ||
964 | // Convert half types to non-double types. | ||
965 | @@ -6270,7 +6269,7 @@ half16 __ovld __cnfn convert_half16_rtz(float16); | ||
966 | half16 __ovld __cnfn convert_half16_rtz(half16); | ||
967 | |||
968 | // Convert half types to double types. | ||
969 | -#ifdef cl_khr_fp64 | ||
970 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
971 | double __ovld __cnfn convert_double(half); | ||
972 | double __ovld __cnfn convert_double_rte(half); | ||
973 | double __ovld __cnfn convert_double_rtp(half); | ||
974 | @@ -6333,7 +6332,7 @@ half16 __ovld __cnfn convert_half16_rte(double16); | ||
975 | half16 __ovld __cnfn convert_half16_rtp(double16); | ||
976 | half16 __ovld __cnfn convert_half16_rtn(double16); | ||
977 | half16 __ovld __cnfn convert_half16_rtz(double16); | ||
978 | -#endif //cl_khr_fp64 | ||
979 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
980 | |||
981 | #endif // cl_khr_fp16 | ||
982 | |||
983 | @@ -6404,14 +6403,14 @@ half16 __ovld __cnfn convert_half16_rtz(double16); | ||
984 | #define as_float8(x) __builtin_astype((x), float8) | ||
985 | #define as_float16(x) __builtin_astype((x), float16) | ||
986 | |||
987 | -#ifdef cl_khr_fp64 | ||
988 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
989 | #define as_double(x) __builtin_astype((x), double) | ||
990 | #define as_double2(x) __builtin_astype((x), double2) | ||
991 | #define as_double3(x) __builtin_astype((x), double3) | ||
992 | #define as_double4(x) __builtin_astype((x), double4) | ||
993 | #define as_double8(x) __builtin_astype((x), double8) | ||
994 | #define as_double16(x) __builtin_astype((x), double16) | ||
995 | -#endif //cl_khr_fp64 | ||
996 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
997 | |||
998 | #ifdef cl_khr_fp16 | ||
999 | #define as_half(x) __builtin_astype((x), half) | ||
1000 | @@ -6534,14 +6533,14 @@ float3 __ovld __cnfn acos(float3); | ||
1001 | float4 __ovld __cnfn acos(float4); | ||
1002 | float8 __ovld __cnfn acos(float8); | ||
1003 | float16 __ovld __cnfn acos(float16); | ||
1004 | -#ifdef cl_khr_fp64 | ||
1005 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1006 | double __ovld __cnfn acos(double); | ||
1007 | double2 __ovld __cnfn acos(double2); | ||
1008 | double3 __ovld __cnfn acos(double3); | ||
1009 | double4 __ovld __cnfn acos(double4); | ||
1010 | double8 __ovld __cnfn acos(double8); | ||
1011 | double16 __ovld __cnfn acos(double16); | ||
1012 | -#endif //cl_khr_fp64 | ||
1013 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1014 | #ifdef cl_khr_fp16 | ||
1015 | half __ovld __cnfn acos(half); | ||
1016 | half2 __ovld __cnfn acos(half2); | ||
1017 | @@ -6560,14 +6559,14 @@ float3 __ovld __cnfn acosh(float3); | ||
1018 | float4 __ovld __cnfn acosh(float4); | ||
1019 | float8 __ovld __cnfn acosh(float8); | ||
1020 | float16 __ovld __cnfn acosh(float16); | ||
1021 | -#ifdef cl_khr_fp64 | ||
1022 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1023 | double __ovld __cnfn acosh(double); | ||
1024 | double2 __ovld __cnfn acosh(double2); | ||
1025 | double3 __ovld __cnfn acosh(double3); | ||
1026 | double4 __ovld __cnfn acosh(double4); | ||
1027 | double8 __ovld __cnfn acosh(double8); | ||
1028 | double16 __ovld __cnfn acosh(double16); | ||
1029 | -#endif //cl_khr_fp64 | ||
1030 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1031 | #ifdef cl_khr_fp16 | ||
1032 | half __ovld __cnfn acosh(half); | ||
1033 | half2 __ovld __cnfn acosh(half2); | ||
1034 | @@ -6586,14 +6585,14 @@ float3 __ovld __cnfn acospi(float3 x); | ||
1035 | float4 __ovld __cnfn acospi(float4 x); | ||
1036 | float8 __ovld __cnfn acospi(float8 x); | ||
1037 | float16 __ovld __cnfn acospi(float16 x); | ||
1038 | -#ifdef cl_khr_fp64 | ||
1039 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1040 | double __ovld __cnfn acospi(double x); | ||
1041 | double2 __ovld __cnfn acospi(double2 x); | ||
1042 | double3 __ovld __cnfn acospi(double3 x); | ||
1043 | double4 __ovld __cnfn acospi(double4 x); | ||
1044 | double8 __ovld __cnfn acospi(double8 x); | ||
1045 | double16 __ovld __cnfn acospi(double16 x); | ||
1046 | -#endif //cl_khr_fp64 | ||
1047 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1048 | #ifdef cl_khr_fp16 | ||
1049 | half __ovld __cnfn acospi(half x); | ||
1050 | half2 __ovld __cnfn acospi(half2 x); | ||
1051 | @@ -6612,14 +6611,14 @@ float3 __ovld __cnfn asin(float3); | ||
1052 | float4 __ovld __cnfn asin(float4); | ||
1053 | float8 __ovld __cnfn asin(float8); | ||
1054 | float16 __ovld __cnfn asin(float16); | ||
1055 | -#ifdef cl_khr_fp64 | ||
1056 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1057 | double __ovld __cnfn asin(double); | ||
1058 | double2 __ovld __cnfn asin(double2); | ||
1059 | double3 __ovld __cnfn asin(double3); | ||
1060 | double4 __ovld __cnfn asin(double4); | ||
1061 | double8 __ovld __cnfn asin(double8); | ||
1062 | double16 __ovld __cnfn asin(double16); | ||
1063 | -#endif //cl_khr_fp64 | ||
1064 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1065 | #ifdef cl_khr_fp16 | ||
1066 | half __ovld __cnfn asin(half); | ||
1067 | half2 __ovld __cnfn asin(half2); | ||
1068 | @@ -6638,14 +6637,14 @@ float3 __ovld __cnfn asinh(float3); | ||
1069 | float4 __ovld __cnfn asinh(float4); | ||
1070 | float8 __ovld __cnfn asinh(float8); | ||
1071 | float16 __ovld __cnfn asinh(float16); | ||
1072 | -#ifdef cl_khr_fp64 | ||
1073 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1074 | double __ovld __cnfn asinh(double); | ||
1075 | double2 __ovld __cnfn asinh(double2); | ||
1076 | double3 __ovld __cnfn asinh(double3); | ||
1077 | double4 __ovld __cnfn asinh(double4); | ||
1078 | double8 __ovld __cnfn asinh(double8); | ||
1079 | double16 __ovld __cnfn asinh(double16); | ||
1080 | -#endif //cl_khr_fp64 | ||
1081 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1082 | #ifdef cl_khr_fp16 | ||
1083 | half __ovld __cnfn asinh(half); | ||
1084 | half2 __ovld __cnfn asinh(half2); | ||
1085 | @@ -6664,14 +6663,14 @@ float3 __ovld __cnfn asinpi(float3 x); | ||
1086 | float4 __ovld __cnfn asinpi(float4 x); | ||
1087 | float8 __ovld __cnfn asinpi(float8 x); | ||
1088 | float16 __ovld __cnfn asinpi(float16 x); | ||
1089 | -#ifdef cl_khr_fp64 | ||
1090 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1091 | double __ovld __cnfn asinpi(double x); | ||
1092 | double2 __ovld __cnfn asinpi(double2 x); | ||
1093 | double3 __ovld __cnfn asinpi(double3 x); | ||
1094 | double4 __ovld __cnfn asinpi(double4 x); | ||
1095 | double8 __ovld __cnfn asinpi(double8 x); | ||
1096 | double16 __ovld __cnfn asinpi(double16 x); | ||
1097 | -#endif //cl_khr_fp64 | ||
1098 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1099 | #ifdef cl_khr_fp16 | ||
1100 | half __ovld __cnfn asinpi(half x); | ||
1101 | half2 __ovld __cnfn asinpi(half2 x); | ||
1102 | @@ -6690,14 +6689,14 @@ float3 __ovld __cnfn atan(float3 y_over_x); | ||
1103 | float4 __ovld __cnfn atan(float4 y_over_x); | ||
1104 | float8 __ovld __cnfn atan(float8 y_over_x); | ||
1105 | float16 __ovld __cnfn atan(float16 y_over_x); | ||
1106 | -#ifdef cl_khr_fp64 | ||
1107 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1108 | double __ovld __cnfn atan(double y_over_x); | ||
1109 | double2 __ovld __cnfn atan(double2 y_over_x); | ||
1110 | double3 __ovld __cnfn atan(double3 y_over_x); | ||
1111 | double4 __ovld __cnfn atan(double4 y_over_x); | ||
1112 | double8 __ovld __cnfn atan(double8 y_over_x); | ||
1113 | double16 __ovld __cnfn atan(double16 y_over_x); | ||
1114 | -#endif //cl_khr_fp64 | ||
1115 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1116 | #ifdef cl_khr_fp16 | ||
1117 | half __ovld __cnfn atan(half y_over_x); | ||
1118 | half2 __ovld __cnfn atan(half2 y_over_x); | ||
1119 | @@ -6716,14 +6715,14 @@ float3 __ovld __cnfn atan2(float3 y, float3 x); | ||
1120 | float4 __ovld __cnfn atan2(float4 y, float4 x); | ||
1121 | float8 __ovld __cnfn atan2(float8 y, float8 x); | ||
1122 | float16 __ovld __cnfn atan2(float16 y, float16 x); | ||
1123 | -#ifdef cl_khr_fp64 | ||
1124 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1125 | double __ovld __cnfn atan2(double y, double x); | ||
1126 | double2 __ovld __cnfn atan2(double2 y, double2 x); | ||
1127 | double3 __ovld __cnfn atan2(double3 y, double3 x); | ||
1128 | double4 __ovld __cnfn atan2(double4 y, double4 x); | ||
1129 | double8 __ovld __cnfn atan2(double8 y, double8 x); | ||
1130 | double16 __ovld __cnfn atan2(double16 y, double16 x); | ||
1131 | -#endif //cl_khr_fp64 | ||
1132 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1133 | #ifdef cl_khr_fp16 | ||
1134 | half __ovld __cnfn atan2(half y, half x); | ||
1135 | half2 __ovld __cnfn atan2(half2 y, half2 x); | ||
1136 | @@ -6742,14 +6741,14 @@ float3 __ovld __cnfn atanh(float3); | ||
1137 | float4 __ovld __cnfn atanh(float4); | ||
1138 | float8 __ovld __cnfn atanh(float8); | ||
1139 | float16 __ovld __cnfn atanh(float16); | ||
1140 | -#ifdef cl_khr_fp64 | ||
1141 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1142 | double __ovld __cnfn atanh(double); | ||
1143 | double2 __ovld __cnfn atanh(double2); | ||
1144 | double3 __ovld __cnfn atanh(double3); | ||
1145 | double4 __ovld __cnfn atanh(double4); | ||
1146 | double8 __ovld __cnfn atanh(double8); | ||
1147 | double16 __ovld __cnfn atanh(double16); | ||
1148 | -#endif //cl_khr_fp64 | ||
1149 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1150 | #ifdef cl_khr_fp16 | ||
1151 | half __ovld __cnfn atanh(half); | ||
1152 | half2 __ovld __cnfn atanh(half2); | ||
1153 | @@ -6768,14 +6767,14 @@ float3 __ovld __cnfn atanpi(float3 x); | ||
1154 | float4 __ovld __cnfn atanpi(float4 x); | ||
1155 | float8 __ovld __cnfn atanpi(float8 x); | ||
1156 | float16 __ovld __cnfn atanpi(float16 x); | ||
1157 | -#ifdef cl_khr_fp64 | ||
1158 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1159 | double __ovld __cnfn atanpi(double x); | ||
1160 | double2 __ovld __cnfn atanpi(double2 x); | ||
1161 | double3 __ovld __cnfn atanpi(double3 x); | ||
1162 | double4 __ovld __cnfn atanpi(double4 x); | ||
1163 | double8 __ovld __cnfn atanpi(double8 x); | ||
1164 | double16 __ovld __cnfn atanpi(double16 x); | ||
1165 | -#endif //cl_khr_fp64 | ||
1166 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1167 | #ifdef cl_khr_fp16 | ||
1168 | half __ovld __cnfn atanpi(half x); | ||
1169 | half2 __ovld __cnfn atanpi(half2 x); | ||
1170 | @@ -6794,14 +6793,14 @@ float3 __ovld __cnfn atan2pi(float3 y, float3 x); | ||
1171 | float4 __ovld __cnfn atan2pi(float4 y, float4 x); | ||
1172 | float8 __ovld __cnfn atan2pi(float8 y, float8 x); | ||
1173 | float16 __ovld __cnfn atan2pi(float16 y, float16 x); | ||
1174 | -#ifdef cl_khr_fp64 | ||
1175 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1176 | double __ovld __cnfn atan2pi(double y, double x); | ||
1177 | double2 __ovld __cnfn atan2pi(double2 y, double2 x); | ||
1178 | double3 __ovld __cnfn atan2pi(double3 y, double3 x); | ||
1179 | double4 __ovld __cnfn atan2pi(double4 y, double4 x); | ||
1180 | double8 __ovld __cnfn atan2pi(double8 y, double8 x); | ||
1181 | double16 __ovld __cnfn atan2pi(double16 y, double16 x); | ||
1182 | -#endif //cl_khr_fp64 | ||
1183 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1184 | #ifdef cl_khr_fp16 | ||
1185 | half __ovld __cnfn atan2pi(half y, half x); | ||
1186 | half2 __ovld __cnfn atan2pi(half2 y, half2 x); | ||
1187 | @@ -6820,14 +6819,14 @@ float3 __ovld __cnfn cbrt(float3); | ||
1188 | float4 __ovld __cnfn cbrt(float4); | ||
1189 | float8 __ovld __cnfn cbrt(float8); | ||
1190 | float16 __ovld __cnfn cbrt(float16); | ||
1191 | -#ifdef cl_khr_fp64 | ||
1192 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1193 | double __ovld __cnfn cbrt(double); | ||
1194 | double2 __ovld __cnfn cbrt(double2); | ||
1195 | double3 __ovld __cnfn cbrt(double3); | ||
1196 | double4 __ovld __cnfn cbrt(double4); | ||
1197 | double8 __ovld __cnfn cbrt(double8); | ||
1198 | double16 __ovld __cnfn cbrt(double16); | ||
1199 | -#endif //cl_khr_fp64 | ||
1200 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1201 | #ifdef cl_khr_fp16 | ||
1202 | half __ovld __cnfn cbrt(half); | ||
1203 | half2 __ovld __cnfn cbrt(half2); | ||
1204 | @@ -6847,14 +6846,14 @@ float3 __ovld __cnfn ceil(float3); | ||
1205 | float4 __ovld __cnfn ceil(float4); | ||
1206 | float8 __ovld __cnfn ceil(float8); | ||
1207 | float16 __ovld __cnfn ceil(float16); | ||
1208 | -#ifdef cl_khr_fp64 | ||
1209 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1210 | double __ovld __cnfn ceil(double); | ||
1211 | double2 __ovld __cnfn ceil(double2); | ||
1212 | double3 __ovld __cnfn ceil(double3); | ||
1213 | double4 __ovld __cnfn ceil(double4); | ||
1214 | double8 __ovld __cnfn ceil(double8); | ||
1215 | double16 __ovld __cnfn ceil(double16); | ||
1216 | -#endif //cl_khr_fp64 | ||
1217 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1218 | #ifdef cl_khr_fp16 | ||
1219 | half __ovld __cnfn ceil(half); | ||
1220 | half2 __ovld __cnfn ceil(half2); | ||
1221 | @@ -6873,14 +6872,14 @@ float3 __ovld __cnfn copysign(float3 x, float3 y); | ||
1222 | float4 __ovld __cnfn copysign(float4 x, float4 y); | ||
1223 | float8 __ovld __cnfn copysign(float8 x, float8 y); | ||
1224 | float16 __ovld __cnfn copysign(float16 x, float16 y); | ||
1225 | -#ifdef cl_khr_fp64 | ||
1226 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1227 | double __ovld __cnfn copysign(double x, double y); | ||
1228 | double2 __ovld __cnfn copysign(double2 x, double2 y); | ||
1229 | double3 __ovld __cnfn copysign(double3 x, double3 y); | ||
1230 | double4 __ovld __cnfn copysign(double4 x, double4 y); | ||
1231 | double8 __ovld __cnfn copysign(double8 x, double8 y); | ||
1232 | double16 __ovld __cnfn copysign(double16 x, double16 y); | ||
1233 | -#endif //cl_khr_fp64 | ||
1234 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1235 | #ifdef cl_khr_fp16 | ||
1236 | half __ovld __cnfn copysign(half x, half y); | ||
1237 | half2 __ovld __cnfn copysign(half2 x, half2 y); | ||
1238 | @@ -6899,14 +6898,14 @@ float3 __ovld __cnfn cos(float3); | ||
1239 | float4 __ovld __cnfn cos(float4); | ||
1240 | float8 __ovld __cnfn cos(float8); | ||
1241 | float16 __ovld __cnfn cos(float16); | ||
1242 | -#ifdef cl_khr_fp64 | ||
1243 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1244 | double __ovld __cnfn cos(double); | ||
1245 | double2 __ovld __cnfn cos(double2); | ||
1246 | double3 __ovld __cnfn cos(double3); | ||
1247 | double4 __ovld __cnfn cos(double4); | ||
1248 | double8 __ovld __cnfn cos(double8); | ||
1249 | double16 __ovld __cnfn cos(double16); | ||
1250 | -#endif //cl_khr_fp64 | ||
1251 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1252 | #ifdef cl_khr_fp16 | ||
1253 | half __ovld __cnfn cos(half); | ||
1254 | half2 __ovld __cnfn cos(half2); | ||
1255 | @@ -6925,14 +6924,14 @@ float3 __ovld __cnfn cosh(float3); | ||
1256 | float4 __ovld __cnfn cosh(float4); | ||
1257 | float8 __ovld __cnfn cosh(float8); | ||
1258 | float16 __ovld __cnfn cosh(float16); | ||
1259 | -#ifdef cl_khr_fp64 | ||
1260 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1261 | double __ovld __cnfn cosh(double); | ||
1262 | double2 __ovld __cnfn cosh(double2); | ||
1263 | double3 __ovld __cnfn cosh(double3); | ||
1264 | double4 __ovld __cnfn cosh(double4); | ||
1265 | double8 __ovld __cnfn cosh(double8); | ||
1266 | double16 __ovld __cnfn cosh(double16); | ||
1267 | -#endif //cl_khr_fp64 | ||
1268 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1269 | #ifdef cl_khr_fp16 | ||
1270 | half __ovld __cnfn cosh(half); | ||
1271 | half2 __ovld __cnfn cosh(half2); | ||
1272 | @@ -6951,14 +6950,14 @@ float3 __ovld __cnfn cospi(float3 x); | ||
1273 | float4 __ovld __cnfn cospi(float4 x); | ||
1274 | float8 __ovld __cnfn cospi(float8 x); | ||
1275 | float16 __ovld __cnfn cospi(float16 x); | ||
1276 | -#ifdef cl_khr_fp64 | ||
1277 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1278 | double __ovld __cnfn cospi(double x); | ||
1279 | double2 __ovld __cnfn cospi(double2 x); | ||
1280 | double3 __ovld __cnfn cospi(double3 x); | ||
1281 | double4 __ovld __cnfn cospi(double4 x); | ||
1282 | double8 __ovld __cnfn cospi(double8 x); | ||
1283 | double16 __ovld __cnfn cospi(double16 x); | ||
1284 | -#endif //cl_khr_fp64 | ||
1285 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1286 | #ifdef cl_khr_fp16 | ||
1287 | half __ovld __cnfn cospi(half x); | ||
1288 | half2 __ovld __cnfn cospi(half2 x); | ||
1289 | @@ -6977,14 +6976,14 @@ float3 __ovld __cnfn erfc(float3); | ||
1290 | float4 __ovld __cnfn erfc(float4); | ||
1291 | float8 __ovld __cnfn erfc(float8); | ||
1292 | float16 __ovld __cnfn erfc(float16); | ||
1293 | -#ifdef cl_khr_fp64 | ||
1294 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1295 | double __ovld __cnfn erfc(double); | ||
1296 | double2 __ovld __cnfn erfc(double2); | ||
1297 | double3 __ovld __cnfn erfc(double3); | ||
1298 | double4 __ovld __cnfn erfc(double4); | ||
1299 | double8 __ovld __cnfn erfc(double8); | ||
1300 | double16 __ovld __cnfn erfc(double16); | ||
1301 | -#endif //cl_khr_fp64 | ||
1302 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1303 | #ifdef cl_khr_fp16 | ||
1304 | half __ovld __cnfn erfc(half); | ||
1305 | half2 __ovld __cnfn erfc(half2); | ||
1306 | @@ -7004,14 +7003,14 @@ float3 __ovld __cnfn erf(float3); | ||
1307 | float4 __ovld __cnfn erf(float4); | ||
1308 | float8 __ovld __cnfn erf(float8); | ||
1309 | float16 __ovld __cnfn erf(float16); | ||
1310 | -#ifdef cl_khr_fp64 | ||
1311 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1312 | double __ovld __cnfn erf(double); | ||
1313 | double2 __ovld __cnfn erf(double2); | ||
1314 | double3 __ovld __cnfn erf(double3); | ||
1315 | double4 __ovld __cnfn erf(double4); | ||
1316 | double8 __ovld __cnfn erf(double8); | ||
1317 | double16 __ovld __cnfn erf(double16); | ||
1318 | -#endif //cl_khr_fp64 | ||
1319 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1320 | #ifdef cl_khr_fp16 | ||
1321 | half __ovld __cnfn erf(half); | ||
1322 | half2 __ovld __cnfn erf(half2); | ||
1323 | @@ -7030,14 +7029,14 @@ float3 __ovld __cnfn exp(float3 x); | ||
1324 | float4 __ovld __cnfn exp(float4 x); | ||
1325 | float8 __ovld __cnfn exp(float8 x); | ||
1326 | float16 __ovld __cnfn exp(float16 x); | ||
1327 | -#ifdef cl_khr_fp64 | ||
1328 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1329 | double __ovld __cnfn exp(double x); | ||
1330 | double2 __ovld __cnfn exp(double2 x); | ||
1331 | double3 __ovld __cnfn exp(double3 x); | ||
1332 | double4 __ovld __cnfn exp(double4 x); | ||
1333 | double8 __ovld __cnfn exp(double8 x); | ||
1334 | double16 __ovld __cnfn exp(double16 x); | ||
1335 | -#endif //cl_khr_fp64 | ||
1336 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1337 | #ifdef cl_khr_fp16 | ||
1338 | half __ovld __cnfn exp(half x); | ||
1339 | half2 __ovld __cnfn exp(half2 x); | ||
1340 | @@ -7056,14 +7055,14 @@ float3 __ovld __cnfn exp2(float3); | ||
1341 | float4 __ovld __cnfn exp2(float4); | ||
1342 | float8 __ovld __cnfn exp2(float8); | ||
1343 | float16 __ovld __cnfn exp2(float16); | ||
1344 | -#ifdef cl_khr_fp64 | ||
1345 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1346 | double __ovld __cnfn exp2(double); | ||
1347 | double2 __ovld __cnfn exp2(double2); | ||
1348 | double3 __ovld __cnfn exp2(double3); | ||
1349 | double4 __ovld __cnfn exp2(double4); | ||
1350 | double8 __ovld __cnfn exp2(double8); | ||
1351 | double16 __ovld __cnfn exp2(double16); | ||
1352 | -#endif //cl_khr_fp64 | ||
1353 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1354 | #ifdef cl_khr_fp16 | ||
1355 | half __ovld __cnfn exp2(half); | ||
1356 | half2 __ovld __cnfn exp2(half2); | ||
1357 | @@ -7082,14 +7081,14 @@ float3 __ovld __cnfn exp10(float3); | ||
1358 | float4 __ovld __cnfn exp10(float4); | ||
1359 | float8 __ovld __cnfn exp10(float8); | ||
1360 | float16 __ovld __cnfn exp10(float16); | ||
1361 | -#ifdef cl_khr_fp64 | ||
1362 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1363 | double __ovld __cnfn exp10(double); | ||
1364 | double2 __ovld __cnfn exp10(double2); | ||
1365 | double3 __ovld __cnfn exp10(double3); | ||
1366 | double4 __ovld __cnfn exp10(double4); | ||
1367 | double8 __ovld __cnfn exp10(double8); | ||
1368 | double16 __ovld __cnfn exp10(double16); | ||
1369 | -#endif //cl_khr_fp64 | ||
1370 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1371 | #ifdef cl_khr_fp16 | ||
1372 | half __ovld __cnfn exp10(half); | ||
1373 | half2 __ovld __cnfn exp10(half2); | ||
1374 | @@ -7108,14 +7107,14 @@ float3 __ovld __cnfn expm1(float3 x); | ||
1375 | float4 __ovld __cnfn expm1(float4 x); | ||
1376 | float8 __ovld __cnfn expm1(float8 x); | ||
1377 | float16 __ovld __cnfn expm1(float16 x); | ||
1378 | -#ifdef cl_khr_fp64 | ||
1379 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1380 | double __ovld __cnfn expm1(double x); | ||
1381 | double2 __ovld __cnfn expm1(double2 x); | ||
1382 | double3 __ovld __cnfn expm1(double3 x); | ||
1383 | double4 __ovld __cnfn expm1(double4 x); | ||
1384 | double8 __ovld __cnfn expm1(double8 x); | ||
1385 | double16 __ovld __cnfn expm1(double16 x); | ||
1386 | -#endif //cl_khr_fp64 | ||
1387 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1388 | #ifdef cl_khr_fp16 | ||
1389 | half __ovld __cnfn expm1(half x); | ||
1390 | half2 __ovld __cnfn expm1(half2 x); | ||
1391 | @@ -7134,14 +7133,14 @@ float3 __ovld __cnfn fabs(float3); | ||
1392 | float4 __ovld __cnfn fabs(float4); | ||
1393 | float8 __ovld __cnfn fabs(float8); | ||
1394 | float16 __ovld __cnfn fabs(float16); | ||
1395 | -#ifdef cl_khr_fp64 | ||
1396 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1397 | double __ovld __cnfn fabs(double); | ||
1398 | double2 __ovld __cnfn fabs(double2); | ||
1399 | double3 __ovld __cnfn fabs(double3); | ||
1400 | double4 __ovld __cnfn fabs(double4); | ||
1401 | double8 __ovld __cnfn fabs(double8); | ||
1402 | double16 __ovld __cnfn fabs(double16); | ||
1403 | -#endif //cl_khr_fp64 | ||
1404 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1405 | #ifdef cl_khr_fp16 | ||
1406 | half __ovld __cnfn fabs(half); | ||
1407 | half2 __ovld __cnfn fabs(half2); | ||
1408 | @@ -7160,14 +7159,14 @@ float3 __ovld __cnfn fdim(float3 x, float3 y); | ||
1409 | float4 __ovld __cnfn fdim(float4 x, float4 y); | ||
1410 | float8 __ovld __cnfn fdim(float8 x, float8 y); | ||
1411 | float16 __ovld __cnfn fdim(float16 x, float16 y); | ||
1412 | -#ifdef cl_khr_fp64 | ||
1413 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1414 | double __ovld __cnfn fdim(double x, double y); | ||
1415 | double2 __ovld __cnfn fdim(double2 x, double2 y); | ||
1416 | double3 __ovld __cnfn fdim(double3 x, double3 y); | ||
1417 | double4 __ovld __cnfn fdim(double4 x, double4 y); | ||
1418 | double8 __ovld __cnfn fdim(double8 x, double8 y); | ||
1419 | double16 __ovld __cnfn fdim(double16 x, double16 y); | ||
1420 | -#endif //cl_khr_fp64 | ||
1421 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1422 | #ifdef cl_khr_fp16 | ||
1423 | half __ovld __cnfn fdim(half x, half y); | ||
1424 | half2 __ovld __cnfn fdim(half2 x, half2 y); | ||
1425 | @@ -7187,14 +7186,14 @@ float3 __ovld __cnfn floor(float3); | ||
1426 | float4 __ovld __cnfn floor(float4); | ||
1427 | float8 __ovld __cnfn floor(float8); | ||
1428 | float16 __ovld __cnfn floor(float16); | ||
1429 | -#ifdef cl_khr_fp64 | ||
1430 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1431 | double __ovld __cnfn floor(double); | ||
1432 | double2 __ovld __cnfn floor(double2); | ||
1433 | double3 __ovld __cnfn floor(double3); | ||
1434 | double4 __ovld __cnfn floor(double4); | ||
1435 | double8 __ovld __cnfn floor(double8); | ||
1436 | double16 __ovld __cnfn floor(double16); | ||
1437 | -#endif //cl_khr_fp64 | ||
1438 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1439 | #ifdef cl_khr_fp16 | ||
1440 | half __ovld __cnfn floor(half); | ||
1441 | half2 __ovld __cnfn floor(half2); | ||
1442 | @@ -7217,14 +7216,14 @@ float3 __ovld __cnfn fma(float3 a, float3 b, float3 c); | ||
1443 | float4 __ovld __cnfn fma(float4 a, float4 b, float4 c); | ||
1444 | float8 __ovld __cnfn fma(float8 a, float8 b, float8 c); | ||
1445 | float16 __ovld __cnfn fma(float16 a, float16 b, float16 c); | ||
1446 | -#ifdef cl_khr_fp64 | ||
1447 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1448 | double __ovld __cnfn fma(double a, double b, double c); | ||
1449 | double2 __ovld __cnfn fma(double2 a, double2 b, double2 c); | ||
1450 | double3 __ovld __cnfn fma(double3 a, double3 b, double3 c); | ||
1451 | double4 __ovld __cnfn fma(double4 a, double4 b, double4 c); | ||
1452 | double8 __ovld __cnfn fma(double8 a, double8 b, double8 c); | ||
1453 | double16 __ovld __cnfn fma(double16 a, double16 b, double16 c); | ||
1454 | -#endif //cl_khr_fp64 | ||
1455 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1456 | #ifdef cl_khr_fp16 | ||
1457 | half __ovld __cnfn fma(half a, half b, half c); | ||
1458 | half2 __ovld __cnfn fma(half2 a, half2 b, half2 c); | ||
1459 | @@ -7251,7 +7250,7 @@ float3 __ovld __cnfn fmax(float3 x, float y); | ||
1460 | float4 __ovld __cnfn fmax(float4 x, float y); | ||
1461 | float8 __ovld __cnfn fmax(float8 x, float y); | ||
1462 | float16 __ovld __cnfn fmax(float16 x, float y); | ||
1463 | -#ifdef cl_khr_fp64 | ||
1464 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1465 | double __ovld __cnfn fmax(double x, double y); | ||
1466 | double2 __ovld __cnfn fmax(double2 x, double2 y); | ||
1467 | double3 __ovld __cnfn fmax(double3 x, double3 y); | ||
1468 | @@ -7263,7 +7262,7 @@ double3 __ovld __cnfn fmax(double3 x, double y); | ||
1469 | double4 __ovld __cnfn fmax(double4 x, double y); | ||
1470 | double8 __ovld __cnfn fmax(double8 x, double y); | ||
1471 | double16 __ovld __cnfn fmax(double16 x, double y); | ||
1472 | -#endif //cl_khr_fp64 | ||
1473 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1474 | #ifdef cl_khr_fp16 | ||
1475 | half __ovld __cnfn fmax(half x, half y); | ||
1476 | half2 __ovld __cnfn fmax(half2 x, half2 y); | ||
1477 | @@ -7295,7 +7294,7 @@ float3 __ovld __cnfn fmin(float3 x, float y); | ||
1478 | float4 __ovld __cnfn fmin(float4 x, float y); | ||
1479 | float8 __ovld __cnfn fmin(float8 x, float y); | ||
1480 | float16 __ovld __cnfn fmin(float16 x, float y); | ||
1481 | -#ifdef cl_khr_fp64 | ||
1482 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1483 | double __ovld __cnfn fmin(double x, double y); | ||
1484 | double2 __ovld __cnfn fmin(double2 x, double2 y); | ||
1485 | double3 __ovld __cnfn fmin(double3 x, double3 y); | ||
1486 | @@ -7307,7 +7306,7 @@ double3 __ovld __cnfn fmin(double3 x, double y); | ||
1487 | double4 __ovld __cnfn fmin(double4 x, double y); | ||
1488 | double8 __ovld __cnfn fmin(double8 x, double y); | ||
1489 | double16 __ovld __cnfn fmin(double16 x, double y); | ||
1490 | -#endif //cl_khr_fp64 | ||
1491 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1492 | #ifdef cl_khr_fp16 | ||
1493 | half __ovld __cnfn fmin(half x, half y); | ||
1494 | half2 __ovld __cnfn fmin(half2 x, half2 y); | ||
1495 | @@ -7331,14 +7330,14 @@ float3 __ovld __cnfn fmod(float3 x, float3 y); | ||
1496 | float4 __ovld __cnfn fmod(float4 x, float4 y); | ||
1497 | float8 __ovld __cnfn fmod(float8 x, float8 y); | ||
1498 | float16 __ovld __cnfn fmod(float16 x, float16 y); | ||
1499 | -#ifdef cl_khr_fp64 | ||
1500 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1501 | double __ovld __cnfn fmod(double x, double y); | ||
1502 | double2 __ovld __cnfn fmod(double2 x, double2 y); | ||
1503 | double3 __ovld __cnfn fmod(double3 x, double3 y); | ||
1504 | double4 __ovld __cnfn fmod(double4 x, double4 y); | ||
1505 | double8 __ovld __cnfn fmod(double8 x, double8 y); | ||
1506 | double16 __ovld __cnfn fmod(double16 x, double16 y); | ||
1507 | -#endif //cl_khr_fp64 | ||
1508 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1509 | #ifdef cl_khr_fp16 | ||
1510 | half __ovld __cnfn fmod(half x, half y); | ||
1511 | half2 __ovld __cnfn fmod(half2 x, half2 y); | ||
1512 | @@ -7352,21 +7351,21 @@ half16 __ovld __cnfn fmod(half16 x, half16 y); | ||
1513 | * Returns fmin(x - floor (x), 0x1.fffffep-1f ). | ||
1514 | * floor(x) is returned in iptr. | ||
1515 | */ | ||
1516 | -#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1517 | +#ifdef __opencl_c_generic_address_space | ||
1518 | float __ovld fract(float x, float *iptr); | ||
1519 | float2 __ovld fract(float2 x, float2 *iptr); | ||
1520 | float3 __ovld fract(float3 x, float3 *iptr); | ||
1521 | float4 __ovld fract(float4 x, float4 *iptr); | ||
1522 | float8 __ovld fract(float8 x, float8 *iptr); | ||
1523 | float16 __ovld fract(float16 x, float16 *iptr); | ||
1524 | -#ifdef cl_khr_fp64 | ||
1525 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1526 | double __ovld fract(double x, double *iptr); | ||
1527 | double2 __ovld fract(double2 x, double2 *iptr); | ||
1528 | double3 __ovld fract(double3 x, double3 *iptr); | ||
1529 | double4 __ovld fract(double4 x, double4 *iptr); | ||
1530 | double8 __ovld fract(double8 x, double8 *iptr); | ||
1531 | double16 __ovld fract(double16 x, double16 *iptr); | ||
1532 | -#endif //cl_khr_fp64 | ||
1533 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1534 | #ifdef cl_khr_fp16 | ||
1535 | half __ovld fract(half x, half *iptr); | ||
1536 | half2 __ovld fract(half2 x, half2 *iptr); | ||
1537 | @@ -7375,7 +7374,9 @@ half4 __ovld fract(half4 x, half4 *iptr); | ||
1538 | half8 __ovld fract(half8 x, half8 *iptr); | ||
1539 | half16 __ovld fract(half16 x, half16 *iptr); | ||
1540 | #endif //cl_khr_fp16 | ||
1541 | -#else | ||
1542 | +#endif //__opencl_c_generic_address_space | ||
1543 | + | ||
1544 | +#if !defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != CL_VERSION_2_0) | ||
1545 | float __ovld fract(float x, __global float *iptr); | ||
1546 | float2 __ovld fract(float2 x, __global float2 *iptr); | ||
1547 | float3 __ovld fract(float3 x, __global float3 *iptr); | ||
1548 | @@ -7394,7 +7395,7 @@ float3 __ovld fract(float3 x, __private float3 *iptr); | ||
1549 | float4 __ovld fract(float4 x, __private float4 *iptr); | ||
1550 | float8 __ovld fract(float8 x, __private float8 *iptr); | ||
1551 | float16 __ovld fract(float16 x, __private float16 *iptr); | ||
1552 | -#ifdef cl_khr_fp64 | ||
1553 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1554 | double __ovld fract(double x, __global double *iptr); | ||
1555 | double2 __ovld fract(double2 x, __global double2 *iptr); | ||
1556 | double3 __ovld fract(double3 x, __global double3 *iptr); | ||
1557 | @@ -7413,7 +7414,7 @@ double3 __ovld fract(double3 x, __private double3 *iptr); | ||
1558 | double4 __ovld fract(double4 x, __private double4 *iptr); | ||
1559 | double8 __ovld fract(double8 x, __private double8 *iptr); | ||
1560 | double16 __ovld fract(double16 x, __private double16 *iptr); | ||
1561 | -#endif //cl_khr_fp64 | ||
1562 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1563 | #ifdef cl_khr_fp16 | ||
1564 | half __ovld fract(half x, __global half *iptr); | ||
1565 | half2 __ovld fract(half2 x, __global half2 *iptr); | ||
1566 | @@ -7434,29 +7435,29 @@ half4 __ovld fract(half4 x, __private half4 *iptr); | ||
1567 | half8 __ovld fract(half8 x, __private half8 *iptr); | ||
1568 | half16 __ovld fract(half16 x, __private half16 *iptr); | ||
1569 | #endif //cl_khr_fp16 | ||
1570 | -#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1571 | - | ||
1572 | +#endif //! defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != | ||
1573 | + //! CL_VERSION_2_0) | ||
1574 | /** | ||
1575 | * Extract mantissa and exponent from x. For each | ||
1576 | * component the mantissa returned is a float with | ||
1577 | * magnitude in the interval [1/2, 1) or 0. Each | ||
1578 | * component of x equals mantissa returned * 2^exp. | ||
1579 | */ | ||
1580 | -#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1581 | +#ifdef __opencl_c_generic_address_space | ||
1582 | float __ovld frexp(float x, int *exp); | ||
1583 | float2 __ovld frexp(float2 x, int2 *exp); | ||
1584 | float3 __ovld frexp(float3 x, int3 *exp); | ||
1585 | float4 __ovld frexp(float4 x, int4 *exp); | ||
1586 | float8 __ovld frexp(float8 x, int8 *exp); | ||
1587 | float16 __ovld frexp(float16 x, int16 *exp); | ||
1588 | -#ifdef cl_khr_fp64 | ||
1589 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1590 | double __ovld frexp(double x, int *exp); | ||
1591 | double2 __ovld frexp(double2 x, int2 *exp); | ||
1592 | double3 __ovld frexp(double3 x, int3 *exp); | ||
1593 | double4 __ovld frexp(double4 x, int4 *exp); | ||
1594 | double8 __ovld frexp(double8 x, int8 *exp); | ||
1595 | double16 __ovld frexp(double16 x, int16 *exp); | ||
1596 | -#endif //cl_khr_fp64 | ||
1597 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1598 | #ifdef cl_khr_fp16 | ||
1599 | half __ovld frexp(half x, int *exp); | ||
1600 | half2 __ovld frexp(half2 x, int2 *exp); | ||
1601 | @@ -7465,7 +7466,9 @@ half4 __ovld frexp(half4 x, int4 *exp); | ||
1602 | half8 __ovld frexp(half8 x, int8 *exp); | ||
1603 | half16 __ovld frexp(half16 x, int16 *exp); | ||
1604 | #endif //cl_khr_fp16 | ||
1605 | -#else | ||
1606 | +#endif //__opencl_c_generic_address_space | ||
1607 | + | ||
1608 | +#if !defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != CL_VERSION_2_0) | ||
1609 | float __ovld frexp(float x, __global int *exp); | ||
1610 | float2 __ovld frexp(float2 x, __global int2 *exp); | ||
1611 | float3 __ovld frexp(float3 x, __global int3 *exp); | ||
1612 | @@ -7484,7 +7487,7 @@ float3 __ovld frexp(float3 x, __private int3 *exp); | ||
1613 | float4 __ovld frexp(float4 x, __private int4 *exp); | ||
1614 | float8 __ovld frexp(float8 x, __private int8 *exp); | ||
1615 | float16 __ovld frexp(float16 x, __private int16 *exp); | ||
1616 | -#ifdef cl_khr_fp64 | ||
1617 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1618 | double __ovld frexp(double x, __global int *exp); | ||
1619 | double2 __ovld frexp(double2 x, __global int2 *exp); | ||
1620 | double3 __ovld frexp(double3 x, __global int3 *exp); | ||
1621 | @@ -7503,7 +7506,7 @@ double3 __ovld frexp(double3 x, __private int3 *exp); | ||
1622 | double4 __ovld frexp(double4 x, __private int4 *exp); | ||
1623 | double8 __ovld frexp(double8 x, __private int8 *exp); | ||
1624 | double16 __ovld frexp(double16 x, __private int16 *exp); | ||
1625 | -#endif //cl_khr_fp64 | ||
1626 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1627 | #ifdef cl_khr_fp16 | ||
1628 | half __ovld frexp(half x, __global int *exp); | ||
1629 | half2 __ovld frexp(half2 x, __global int2 *exp); | ||
1630 | @@ -7524,7 +7527,8 @@ half4 __ovld frexp(half4 x, __private int4 *exp); | ||
1631 | half8 __ovld frexp(half8 x, __private int8 *exp); | ||
1632 | half16 __ovld frexp(half16 x, __private int16 *exp); | ||
1633 | #endif //cl_khr_fp16 | ||
1634 | -#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1635 | +#endif //! defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != | ||
1636 | + //! CL_VERSION_2_0) | ||
1637 | |||
1638 | /** | ||
1639 | * Compute the value of the square root of x^2 + y^2 | ||
1640 | @@ -7536,14 +7540,14 @@ float3 __ovld __cnfn hypot(float3 x, float3 y); | ||
1641 | float4 __ovld __cnfn hypot(float4 x, float4 y); | ||
1642 | float8 __ovld __cnfn hypot(float8 x, float8 y); | ||
1643 | float16 __ovld __cnfn hypot(float16 x, float16 y); | ||
1644 | -#ifdef cl_khr_fp64 | ||
1645 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1646 | double __ovld __cnfn hypot(double x, double y); | ||
1647 | double2 __ovld __cnfn hypot(double2 x, double2 y); | ||
1648 | double3 __ovld __cnfn hypot(double3 x, double3 y); | ||
1649 | double4 __ovld __cnfn hypot(double4 x, double4 y); | ||
1650 | double8 __ovld __cnfn hypot(double8 x, double8 y); | ||
1651 | double16 __ovld __cnfn hypot(double16 x, double16 y); | ||
1652 | -#endif //cl_khr_fp64 | ||
1653 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1654 | #ifdef cl_khr_fp16 | ||
1655 | half __ovld __cnfn hypot(half x, half y); | ||
1656 | half2 __ovld __cnfn hypot(half2 x, half2 y); | ||
1657 | @@ -7562,14 +7566,14 @@ int3 __ovld __cnfn ilogb(float3 x); | ||
1658 | int4 __ovld __cnfn ilogb(float4 x); | ||
1659 | int8 __ovld __cnfn ilogb(float8 x); | ||
1660 | int16 __ovld __cnfn ilogb(float16 x); | ||
1661 | -#ifdef cl_khr_fp64 | ||
1662 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1663 | int __ovld __cnfn ilogb(double x); | ||
1664 | int2 __ovld __cnfn ilogb(double2 x); | ||
1665 | int3 __ovld __cnfn ilogb(double3 x); | ||
1666 | int4 __ovld __cnfn ilogb(double4 x); | ||
1667 | int8 __ovld __cnfn ilogb(double8 x); | ||
1668 | int16 __ovld __cnfn ilogb(double16 x); | ||
1669 | -#endif //cl_khr_fp64 | ||
1670 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1671 | #ifdef cl_khr_fp16 | ||
1672 | int __ovld __cnfn ilogb(half x); | ||
1673 | int2 __ovld __cnfn ilogb(half2 x); | ||
1674 | @@ -7593,7 +7597,7 @@ float3 __ovld __cnfn ldexp(float3 x, int n); | ||
1675 | float4 __ovld __cnfn ldexp(float4 x, int n); | ||
1676 | float8 __ovld __cnfn ldexp(float8 x, int n); | ||
1677 | float16 __ovld __cnfn ldexp(float16 x, int n); | ||
1678 | -#ifdef cl_khr_fp64 | ||
1679 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1680 | double __ovld __cnfn ldexp(double x, int n); | ||
1681 | double2 __ovld __cnfn ldexp(double2 x, int2 n); | ||
1682 | double3 __ovld __cnfn ldexp(double3 x, int3 n); | ||
1683 | @@ -7605,7 +7609,7 @@ double3 __ovld __cnfn ldexp(double3 x, int n); | ||
1684 | double4 __ovld __cnfn ldexp(double4 x, int n); | ||
1685 | double8 __ovld __cnfn ldexp(double8 x, int n); | ||
1686 | double16 __ovld __cnfn ldexp(double16 x, int n); | ||
1687 | -#endif //cl_khr_fp64 | ||
1688 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1689 | #ifdef cl_khr_fp16 | ||
1690 | half __ovld __cnfn ldexp(half x, int n); | ||
1691 | half2 __ovld __cnfn ldexp(half2 x, int2 n); | ||
1692 | @@ -7632,14 +7636,14 @@ float3 __ovld __cnfn lgamma(float3 x); | ||
1693 | float4 __ovld __cnfn lgamma(float4 x); | ||
1694 | float8 __ovld __cnfn lgamma(float8 x); | ||
1695 | float16 __ovld __cnfn lgamma(float16 x); | ||
1696 | -#ifdef cl_khr_fp64 | ||
1697 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1698 | double __ovld __cnfn lgamma(double x); | ||
1699 | double2 __ovld __cnfn lgamma(double2 x); | ||
1700 | double3 __ovld __cnfn lgamma(double3 x); | ||
1701 | double4 __ovld __cnfn lgamma(double4 x); | ||
1702 | double8 __ovld __cnfn lgamma(double8 x); | ||
1703 | double16 __ovld __cnfn lgamma(double16 x); | ||
1704 | -#endif //cl_khr_fp64 | ||
1705 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1706 | #ifdef cl_khr_fp16 | ||
1707 | half __ovld __cnfn lgamma(half x); | ||
1708 | half2 __ovld __cnfn lgamma(half2 x); | ||
1709 | @@ -7649,21 +7653,21 @@ half8 __ovld __cnfn lgamma(half8 x); | ||
1710 | half16 __ovld __cnfn lgamma(half16 x); | ||
1711 | #endif //cl_khr_fp16 | ||
1712 | |||
1713 | -#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1714 | +#ifdef __opencl_c_generic_address_space | ||
1715 | float __ovld lgamma_r(float x, int *signp); | ||
1716 | float2 __ovld lgamma_r(float2 x, int2 *signp); | ||
1717 | float3 __ovld lgamma_r(float3 x, int3 *signp); | ||
1718 | float4 __ovld lgamma_r(float4 x, int4 *signp); | ||
1719 | float8 __ovld lgamma_r(float8 x, int8 *signp); | ||
1720 | float16 __ovld lgamma_r(float16 x, int16 *signp); | ||
1721 | -#ifdef cl_khr_fp64 | ||
1722 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1723 | double __ovld lgamma_r(double x, int *signp); | ||
1724 | double2 __ovld lgamma_r(double2 x, int2 *signp); | ||
1725 | double3 __ovld lgamma_r(double3 x, int3 *signp); | ||
1726 | double4 __ovld lgamma_r(double4 x, int4 *signp); | ||
1727 | double8 __ovld lgamma_r(double8 x, int8 *signp); | ||
1728 | double16 __ovld lgamma_r(double16 x, int16 *signp); | ||
1729 | -#endif //cl_khr_fp64 | ||
1730 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1731 | #ifdef cl_khr_fp16 | ||
1732 | half __ovld lgamma_r(half x, int *signp); | ||
1733 | half2 __ovld lgamma_r(half2 x, int2 *signp); | ||
1734 | @@ -7672,7 +7676,9 @@ half4 __ovld lgamma_r(half4 x, int4 *signp); | ||
1735 | half8 __ovld lgamma_r(half8 x, int8 *signp); | ||
1736 | half16 __ovld lgamma_r(half16 x, int16 *signp); | ||
1737 | #endif //cl_khr_fp16 | ||
1738 | -#else | ||
1739 | +#endif //__opencl_c_generic_address_space | ||
1740 | + | ||
1741 | +#if !defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != CL_VERSION_2_0) | ||
1742 | float __ovld lgamma_r(float x, __global int *signp); | ||
1743 | float2 __ovld lgamma_r(float2 x, __global int2 *signp); | ||
1744 | float3 __ovld lgamma_r(float3 x, __global int3 *signp); | ||
1745 | @@ -7691,7 +7697,7 @@ float3 __ovld lgamma_r(float3 x, __private int3 *signp); | ||
1746 | float4 __ovld lgamma_r(float4 x, __private int4 *signp); | ||
1747 | float8 __ovld lgamma_r(float8 x, __private int8 *signp); | ||
1748 | float16 __ovld lgamma_r(float16 x, __private int16 *signp); | ||
1749 | -#ifdef cl_khr_fp64 | ||
1750 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1751 | double __ovld lgamma_r(double x, __global int *signp); | ||
1752 | double2 __ovld lgamma_r(double2 x, __global int2 *signp); | ||
1753 | double3 __ovld lgamma_r(double3 x, __global int3 *signp); | ||
1754 | @@ -7710,7 +7716,7 @@ double3 __ovld lgamma_r(double3 x, __private int3 *signp); | ||
1755 | double4 __ovld lgamma_r(double4 x, __private int4 *signp); | ||
1756 | double8 __ovld lgamma_r(double8 x, __private int8 *signp); | ||
1757 | double16 __ovld lgamma_r(double16 x, __private int16 *signp); | ||
1758 | -#endif //cl_khr_fp64 | ||
1759 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1760 | #ifdef cl_khr_fp16 | ||
1761 | half __ovld lgamma_r(half x, __global int *signp); | ||
1762 | half2 __ovld lgamma_r(half2 x, __global int2 *signp); | ||
1763 | @@ -7731,8 +7737,8 @@ half4 __ovld lgamma_r(half4 x, __private int4 *signp); | ||
1764 | half8 __ovld lgamma_r(half8 x, __private int8 *signp); | ||
1765 | half16 __ovld lgamma_r(half16 x, __private int16 *signp); | ||
1766 | #endif //cl_khr_fp16 | ||
1767 | -#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1768 | - | ||
1769 | +#endif //! defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != | ||
1770 | + //! CL_VERSION_2_0) | ||
1771 | /** | ||
1772 | * Compute natural logarithm. | ||
1773 | */ | ||
1774 | @@ -7742,14 +7748,14 @@ float3 __ovld __cnfn log(float3); | ||
1775 | float4 __ovld __cnfn log(float4); | ||
1776 | float8 __ovld __cnfn log(float8); | ||
1777 | float16 __ovld __cnfn log(float16); | ||
1778 | -#ifdef cl_khr_fp64 | ||
1779 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1780 | double __ovld __cnfn log(double); | ||
1781 | double2 __ovld __cnfn log(double2); | ||
1782 | double3 __ovld __cnfn log(double3); | ||
1783 | double4 __ovld __cnfn log(double4); | ||
1784 | double8 __ovld __cnfn log(double8); | ||
1785 | double16 __ovld __cnfn log(double16); | ||
1786 | -#endif //cl_khr_fp64 | ||
1787 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1788 | #ifdef cl_khr_fp16 | ||
1789 | half __ovld __cnfn log(half); | ||
1790 | half2 __ovld __cnfn log(half2); | ||
1791 | @@ -7760,7 +7766,7 @@ half16 __ovld __cnfn log(half16); | ||
1792 | #endif //cl_khr_fp16 | ||
1793 | |||
1794 | /** | ||
1795 | - * Compute a base 2 logarithm. | ||
1796 | + * Compute a base 2 logarithm | ||
1797 | */ | ||
1798 | float __ovld __cnfn log2(float); | ||
1799 | float2 __ovld __cnfn log2(float2); | ||
1800 | @@ -7768,14 +7774,14 @@ float3 __ovld __cnfn log2(float3); | ||
1801 | float4 __ovld __cnfn log2(float4); | ||
1802 | float8 __ovld __cnfn log2(float8); | ||
1803 | float16 __ovld __cnfn log2(float16); | ||
1804 | -#ifdef cl_khr_fp64 | ||
1805 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1806 | double __ovld __cnfn log2(double); | ||
1807 | double2 __ovld __cnfn log2(double2); | ||
1808 | double3 __ovld __cnfn log2(double3); | ||
1809 | double4 __ovld __cnfn log2(double4); | ||
1810 | double8 __ovld __cnfn log2(double8); | ||
1811 | double16 __ovld __cnfn log2(double16); | ||
1812 | -#endif //cl_khr_fp64 | ||
1813 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1814 | #ifdef cl_khr_fp16 | ||
1815 | half __ovld __cnfn log2(half); | ||
1816 | half2 __ovld __cnfn log2(half2); | ||
1817 | @@ -7794,14 +7800,14 @@ float3 __ovld __cnfn log10(float3); | ||
1818 | float4 __ovld __cnfn log10(float4); | ||
1819 | float8 __ovld __cnfn log10(float8); | ||
1820 | float16 __ovld __cnfn log10(float16); | ||
1821 | -#ifdef cl_khr_fp64 | ||
1822 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1823 | double __ovld __cnfn log10(double); | ||
1824 | double2 __ovld __cnfn log10(double2); | ||
1825 | double3 __ovld __cnfn log10(double3); | ||
1826 | double4 __ovld __cnfn log10(double4); | ||
1827 | double8 __ovld __cnfn log10(double8); | ||
1828 | double16 __ovld __cnfn log10(double16); | ||
1829 | -#endif //cl_khr_fp64 | ||
1830 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1831 | #ifdef cl_khr_fp16 | ||
1832 | half __ovld __cnfn log10(half); | ||
1833 | half2 __ovld __cnfn log10(half2); | ||
1834 | @@ -7820,14 +7826,14 @@ float3 __ovld __cnfn log1p(float3 x); | ||
1835 | float4 __ovld __cnfn log1p(float4 x); | ||
1836 | float8 __ovld __cnfn log1p(float8 x); | ||
1837 | float16 __ovld __cnfn log1p(float16 x); | ||
1838 | -#ifdef cl_khr_fp64 | ||
1839 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1840 | double __ovld __cnfn log1p(double x); | ||
1841 | double2 __ovld __cnfn log1p(double2 x); | ||
1842 | double3 __ovld __cnfn log1p(double3 x); | ||
1843 | double4 __ovld __cnfn log1p(double4 x); | ||
1844 | double8 __ovld __cnfn log1p(double8 x); | ||
1845 | double16 __ovld __cnfn log1p(double16 x); | ||
1846 | -#endif //cl_khr_fp64 | ||
1847 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1848 | #ifdef cl_khr_fp16 | ||
1849 | half __ovld __cnfn log1p(half x); | ||
1850 | half2 __ovld __cnfn log1p(half2 x); | ||
1851 | @@ -7847,14 +7853,14 @@ float3 __ovld __cnfn logb(float3 x); | ||
1852 | float4 __ovld __cnfn logb(float4 x); | ||
1853 | float8 __ovld __cnfn logb(float8 x); | ||
1854 | float16 __ovld __cnfn logb(float16 x); | ||
1855 | -#ifdef cl_khr_fp64 | ||
1856 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1857 | double __ovld __cnfn logb(double x); | ||
1858 | double2 __ovld __cnfn logb(double2 x); | ||
1859 | double3 __ovld __cnfn logb(double3 x); | ||
1860 | double4 __ovld __cnfn logb(double4 x); | ||
1861 | double8 __ovld __cnfn logb(double8 x); | ||
1862 | double16 __ovld __cnfn logb(double16 x); | ||
1863 | -#endif //cl_khr_fp64 | ||
1864 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1865 | #ifdef cl_khr_fp16 | ||
1866 | half __ovld __cnfn logb(half x); | ||
1867 | half2 __ovld __cnfn logb(half2 x); | ||
1868 | @@ -7877,14 +7883,14 @@ float3 __ovld __cnfn mad(float3 a, float3 b, float3 c); | ||
1869 | float4 __ovld __cnfn mad(float4 a, float4 b, float4 c); | ||
1870 | float8 __ovld __cnfn mad(float8 a, float8 b, float8 c); | ||
1871 | float16 __ovld __cnfn mad(float16 a, float16 b, float16 c); | ||
1872 | -#ifdef cl_khr_fp64 | ||
1873 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1874 | double __ovld __cnfn mad(double a, double b, double c); | ||
1875 | double2 __ovld __cnfn mad(double2 a, double2 b, double2 c); | ||
1876 | double3 __ovld __cnfn mad(double3 a, double3 b, double3 c); | ||
1877 | double4 __ovld __cnfn mad(double4 a, double4 b, double4 c); | ||
1878 | double8 __ovld __cnfn mad(double8 a, double8 b, double8 c); | ||
1879 | double16 __ovld __cnfn mad(double16 a, double16 b, double16 c); | ||
1880 | -#endif //cl_khr_fp64 | ||
1881 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1882 | #ifdef cl_khr_fp16 | ||
1883 | half __ovld __cnfn mad(half a, half b, half c); | ||
1884 | half2 __ovld __cnfn mad(half2 a, half2 b, half2 c); | ||
1885 | @@ -7904,14 +7910,14 @@ float3 __ovld __cnfn maxmag(float3 x, float3 y); | ||
1886 | float4 __ovld __cnfn maxmag(float4 x, float4 y); | ||
1887 | float8 __ovld __cnfn maxmag(float8 x, float8 y); | ||
1888 | float16 __ovld __cnfn maxmag(float16 x, float16 y); | ||
1889 | -#ifdef cl_khr_fp64 | ||
1890 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1891 | double __ovld __cnfn maxmag(double x, double y); | ||
1892 | double2 __ovld __cnfn maxmag(double2 x, double2 y); | ||
1893 | double3 __ovld __cnfn maxmag(double3 x, double3 y); | ||
1894 | double4 __ovld __cnfn maxmag(double4 x, double4 y); | ||
1895 | double8 __ovld __cnfn maxmag(double8 x, double8 y); | ||
1896 | double16 __ovld __cnfn maxmag(double16 x, double16 y); | ||
1897 | -#endif //cl_khr_fp64 | ||
1898 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1899 | #ifdef cl_khr_fp16 | ||
1900 | half __ovld __cnfn maxmag(half x, half y); | ||
1901 | half2 __ovld __cnfn maxmag(half2 x, half2 y); | ||
1902 | @@ -7931,14 +7937,14 @@ float3 __ovld __cnfn minmag(float3 x, float3 y); | ||
1903 | float4 __ovld __cnfn minmag(float4 x, float4 y); | ||
1904 | float8 __ovld __cnfn minmag(float8 x, float8 y); | ||
1905 | float16 __ovld __cnfn minmag(float16 x, float16 y); | ||
1906 | -#ifdef cl_khr_fp64 | ||
1907 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1908 | double __ovld __cnfn minmag(double x, double y); | ||
1909 | double2 __ovld __cnfn minmag(double2 x, double2 y); | ||
1910 | double3 __ovld __cnfn minmag(double3 x, double3 y); | ||
1911 | double4 __ovld __cnfn minmag(double4 x, double4 y); | ||
1912 | double8 __ovld __cnfn minmag(double8 x, double8 y); | ||
1913 | double16 __ovld __cnfn minmag(double16 x, double16 y); | ||
1914 | -#endif //cl_khr_fp64 | ||
1915 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1916 | #ifdef cl_khr_fp16 | ||
1917 | half __ovld __cnfn minmag(half x, half y); | ||
1918 | half2 __ovld __cnfn minmag(half2 x, half2 y); | ||
1919 | @@ -7955,21 +7961,21 @@ half16 __ovld __cnfn minmag(half16 x, half16 y); | ||
1920 | * the argument. It stores the integral part in the object | ||
1921 | * pointed to by iptr. | ||
1922 | */ | ||
1923 | -#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1924 | +#ifdef __opencl_c_generic_address_space | ||
1925 | float __ovld modf(float x, float *iptr); | ||
1926 | float2 __ovld modf(float2 x, float2 *iptr); | ||
1927 | float3 __ovld modf(float3 x, float3 *iptr); | ||
1928 | float4 __ovld modf(float4 x, float4 *iptr); | ||
1929 | float8 __ovld modf(float8 x, float8 *iptr); | ||
1930 | float16 __ovld modf(float16 x, float16 *iptr); | ||
1931 | -#ifdef cl_khr_fp64 | ||
1932 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1933 | double __ovld modf(double x, double *iptr); | ||
1934 | double2 __ovld modf(double2 x, double2 *iptr); | ||
1935 | double3 __ovld modf(double3 x, double3 *iptr); | ||
1936 | double4 __ovld modf(double4 x, double4 *iptr); | ||
1937 | double8 __ovld modf(double8 x, double8 *iptr); | ||
1938 | double16 __ovld modf(double16 x, double16 *iptr); | ||
1939 | -#endif //cl_khr_fp64 | ||
1940 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1941 | #ifdef cl_khr_fp16 | ||
1942 | half __ovld modf(half x, half *iptr); | ||
1943 | half2 __ovld modf(half2 x, half2 *iptr); | ||
1944 | @@ -7978,7 +7984,9 @@ half4 __ovld modf(half4 x, half4 *iptr); | ||
1945 | half8 __ovld modf(half8 x, half8 *iptr); | ||
1946 | half16 __ovld modf(half16 x, half16 *iptr); | ||
1947 | #endif //cl_khr_fp16 | ||
1948 | -#else | ||
1949 | +#endif //__opencl_c_generic_address_space | ||
1950 | + | ||
1951 | +#if !defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != CL_VERSION_2_0) | ||
1952 | float __ovld modf(float x, __global float *iptr); | ||
1953 | float2 __ovld modf(float2 x, __global float2 *iptr); | ||
1954 | float3 __ovld modf(float3 x, __global float3 *iptr); | ||
1955 | @@ -7997,7 +8005,7 @@ float3 __ovld modf(float3 x, __private float3 *iptr); | ||
1956 | float4 __ovld modf(float4 x, __private float4 *iptr); | ||
1957 | float8 __ovld modf(float8 x, __private float8 *iptr); | ||
1958 | float16 __ovld modf(float16 x, __private float16 *iptr); | ||
1959 | -#ifdef cl_khr_fp64 | ||
1960 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1961 | double __ovld modf(double x, __global double *iptr); | ||
1962 | double2 __ovld modf(double2 x, __global double2 *iptr); | ||
1963 | double3 __ovld modf(double3 x, __global double3 *iptr); | ||
1964 | @@ -8016,7 +8024,7 @@ double3 __ovld modf(double3 x, __private double3 *iptr); | ||
1965 | double4 __ovld modf(double4 x, __private double4 *iptr); | ||
1966 | double8 __ovld modf(double8 x, __private double8 *iptr); | ||
1967 | double16 __ovld modf(double16 x, __private double16 *iptr); | ||
1968 | -#endif //cl_khr_fp64 | ||
1969 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1970 | #ifdef cl_khr_fp16 | ||
1971 | half __ovld modf(half x, __global half *iptr); | ||
1972 | half2 __ovld modf(half2 x, __global half2 *iptr); | ||
1973 | @@ -8037,7 +8045,8 @@ half4 __ovld modf(half4 x, __private half4 *iptr); | ||
1974 | half8 __ovld modf(half8 x, __private half8 *iptr); | ||
1975 | half16 __ovld modf(half16 x, __private half16 *iptr); | ||
1976 | #endif //cl_khr_fp16 | ||
1977 | -#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
1978 | +#endif //! defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != | ||
1979 | + //! CL_VERSION_2_0) | ||
1980 | |||
1981 | /** | ||
1982 | * Returns a quiet NaN. The nancode may be placed | ||
1983 | @@ -8049,14 +8058,14 @@ float3 __ovld __cnfn nan(uint3 nancode); | ||
1984 | float4 __ovld __cnfn nan(uint4 nancode); | ||
1985 | float8 __ovld __cnfn nan(uint8 nancode); | ||
1986 | float16 __ovld __cnfn nan(uint16 nancode); | ||
1987 | -#ifdef cl_khr_fp64 | ||
1988 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1989 | double __ovld __cnfn nan(ulong nancode); | ||
1990 | double2 __ovld __cnfn nan(ulong2 nancode); | ||
1991 | double3 __ovld __cnfn nan(ulong3 nancode); | ||
1992 | double4 __ovld __cnfn nan(ulong4 nancode); | ||
1993 | double8 __ovld __cnfn nan(ulong8 nancode); | ||
1994 | double16 __ovld __cnfn nan(ulong16 nancode); | ||
1995 | -#endif //cl_khr_fp64 | ||
1996 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
1997 | #ifdef cl_khr_fp16 | ||
1998 | half __ovld __cnfn nan(ushort nancode); | ||
1999 | half2 __ovld __cnfn nan(ushort2 nancode); | ||
2000 | @@ -8079,14 +8088,14 @@ float3 __ovld __cnfn nextafter(float3 x, float3 y); | ||
2001 | float4 __ovld __cnfn nextafter(float4 x, float4 y); | ||
2002 | float8 __ovld __cnfn nextafter(float8 x, float8 y); | ||
2003 | float16 __ovld __cnfn nextafter(float16 x, float16 y); | ||
2004 | -#ifdef cl_khr_fp64 | ||
2005 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2006 | double __ovld __cnfn nextafter(double x, double y); | ||
2007 | double2 __ovld __cnfn nextafter(double2 x, double2 y); | ||
2008 | double3 __ovld __cnfn nextafter(double3 x, double3 y); | ||
2009 | double4 __ovld __cnfn nextafter(double4 x, double4 y); | ||
2010 | double8 __ovld __cnfn nextafter(double8 x, double8 y); | ||
2011 | double16 __ovld __cnfn nextafter(double16 x, double16 y); | ||
2012 | -#endif //cl_khr_fp64 | ||
2013 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2014 | #ifdef cl_khr_fp16 | ||
2015 | half __ovld __cnfn nextafter(half x, half y); | ||
2016 | half2 __ovld __cnfn nextafter(half2 x, half2 y); | ||
2017 | @@ -8105,14 +8114,14 @@ float3 __ovld __cnfn pow(float3 x, float3 y); | ||
2018 | float4 __ovld __cnfn pow(float4 x, float4 y); | ||
2019 | float8 __ovld __cnfn pow(float8 x, float8 y); | ||
2020 | float16 __ovld __cnfn pow(float16 x, float16 y); | ||
2021 | -#ifdef cl_khr_fp64 | ||
2022 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2023 | double __ovld __cnfn pow(double x, double y); | ||
2024 | double2 __ovld __cnfn pow(double2 x, double2 y); | ||
2025 | double3 __ovld __cnfn pow(double3 x, double3 y); | ||
2026 | double4 __ovld __cnfn pow(double4 x, double4 y); | ||
2027 | double8 __ovld __cnfn pow(double8 x, double8 y); | ||
2028 | double16 __ovld __cnfn pow(double16 x, double16 y); | ||
2029 | -#endif //cl_khr_fp64 | ||
2030 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2031 | #ifdef cl_khr_fp16 | ||
2032 | half __ovld __cnfn pow(half x, half y); | ||
2033 | half2 __ovld __cnfn pow(half2 x, half2 y); | ||
2034 | @@ -8131,14 +8140,14 @@ float3 __ovld __cnfn pown(float3 x, int3 y); | ||
2035 | float4 __ovld __cnfn pown(float4 x, int4 y); | ||
2036 | float8 __ovld __cnfn pown(float8 x, int8 y); | ||
2037 | float16 __ovld __cnfn pown(float16 x, int16 y); | ||
2038 | -#ifdef cl_khr_fp64 | ||
2039 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2040 | double __ovld __cnfn pown(double x, int y); | ||
2041 | double2 __ovld __cnfn pown(double2 x, int2 y); | ||
2042 | double3 __ovld __cnfn pown(double3 x, int3 y); | ||
2043 | double4 __ovld __cnfn pown(double4 x, int4 y); | ||
2044 | double8 __ovld __cnfn pown(double8 x, int8 y); | ||
2045 | double16 __ovld __cnfn pown(double16 x, int16 y); | ||
2046 | -#endif //cl_khr_fp64 | ||
2047 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2048 | #ifdef cl_khr_fp16 | ||
2049 | half __ovld __cnfn pown(half x, int y); | ||
2050 | half2 __ovld __cnfn pown(half2 x, int2 y); | ||
2051 | @@ -8157,14 +8166,14 @@ float3 __ovld __cnfn powr(float3 x, float3 y); | ||
2052 | float4 __ovld __cnfn powr(float4 x, float4 y); | ||
2053 | float8 __ovld __cnfn powr(float8 x, float8 y); | ||
2054 | float16 __ovld __cnfn powr(float16 x, float16 y); | ||
2055 | -#ifdef cl_khr_fp64 | ||
2056 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2057 | double __ovld __cnfn powr(double x, double y); | ||
2058 | double2 __ovld __cnfn powr(double2 x, double2 y); | ||
2059 | double3 __ovld __cnfn powr(double3 x, double3 y); | ||
2060 | double4 __ovld __cnfn powr(double4 x, double4 y); | ||
2061 | double8 __ovld __cnfn powr(double8 x, double8 y); | ||
2062 | double16 __ovld __cnfn powr(double16 x, double16 y); | ||
2063 | -#endif //cl_khr_fp64 | ||
2064 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2065 | #ifdef cl_khr_fp16 | ||
2066 | half __ovld __cnfn powr(half x, half y); | ||
2067 | half2 __ovld __cnfn powr(half2 x, half2 y); | ||
2068 | @@ -8186,14 +8195,14 @@ float3 __ovld __cnfn remainder(float3 x, float3 y); | ||
2069 | float4 __ovld __cnfn remainder(float4 x, float4 y); | ||
2070 | float8 __ovld __cnfn remainder(float8 x, float8 y); | ||
2071 | float16 __ovld __cnfn remainder(float16 x, float16 y); | ||
2072 | -#ifdef cl_khr_fp64 | ||
2073 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2074 | double __ovld __cnfn remainder(double x, double y); | ||
2075 | double2 __ovld __cnfn remainder(double2 x, double2 y); | ||
2076 | double3 __ovld __cnfn remainder(double3 x, double3 y); | ||
2077 | double4 __ovld __cnfn remainder(double4 x, double4 y); | ||
2078 | double8 __ovld __cnfn remainder(double8 x, double8 y); | ||
2079 | double16 __ovld __cnfn remainder(double16 x, double16 y); | ||
2080 | -#endif //cl_khr_fp64 | ||
2081 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2082 | #ifdef cl_khr_fp16 | ||
2083 | half __ovld __cnfn remainder(half x, half y); | ||
2084 | half2 __ovld __cnfn remainder(half2 x, half2 y); | ||
2085 | @@ -8215,21 +8224,21 @@ half16 __ovld __cnfn remainder(half16 x, half16 y); | ||
2086 | * sign as x/y. It stores this signed value in the object | ||
2087 | * pointed to by quo. | ||
2088 | */ | ||
2089 | -#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
2090 | +#ifdef __opencl_c_generic_address_space | ||
2091 | float __ovld remquo(float x, float y, int *quo); | ||
2092 | float2 __ovld remquo(float2 x, float2 y, int2 *quo); | ||
2093 | float3 __ovld remquo(float3 x, float3 y, int3 *quo); | ||
2094 | float4 __ovld remquo(float4 x, float4 y, int4 *quo); | ||
2095 | float8 __ovld remquo(float8 x, float8 y, int8 *quo); | ||
2096 | float16 __ovld remquo(float16 x, float16 y, int16 *quo); | ||
2097 | -#ifdef cl_khr_fp64 | ||
2098 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2099 | double __ovld remquo(double x, double y, int *quo); | ||
2100 | double2 __ovld remquo(double2 x, double2 y, int2 *quo); | ||
2101 | double3 __ovld remquo(double3 x, double3 y, int3 *quo); | ||
2102 | double4 __ovld remquo(double4 x, double4 y, int4 *quo); | ||
2103 | double8 __ovld remquo(double8 x, double8 y, int8 *quo); | ||
2104 | double16 __ovld remquo(double16 x, double16 y, int16 *quo); | ||
2105 | -#endif //cl_khr_fp64 | ||
2106 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2107 | #ifdef cl_khr_fp16 | ||
2108 | half __ovld remquo(half x, half y, int *quo); | ||
2109 | half2 __ovld remquo(half2 x, half2 y, int2 *quo); | ||
2110 | @@ -8237,9 +8246,10 @@ half3 __ovld remquo(half3 x, half3 y, int3 *quo); | ||
2111 | half4 __ovld remquo(half4 x, half4 y, int4 *quo); | ||
2112 | half8 __ovld remquo(half8 x, half8 y, int8 *quo); | ||
2113 | half16 __ovld remquo(half16 x, half16 y, int16 *quo); | ||
2114 | - | ||
2115 | #endif //cl_khr_fp16 | ||
2116 | -#else | ||
2117 | +#endif //__opencl_c_generic_address_space | ||
2118 | + | ||
2119 | +#if !defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != CL_VERSION_2_0) | ||
2120 | float __ovld remquo(float x, float y, __global int *quo); | ||
2121 | float2 __ovld remquo(float2 x, float2 y, __global int2 *quo); | ||
2122 | float3 __ovld remquo(float3 x, float3 y, __global int3 *quo); | ||
2123 | @@ -8258,7 +8268,7 @@ float3 __ovld remquo(float3 x, float3 y, __private int3 *quo); | ||
2124 | float4 __ovld remquo(float4 x, float4 y, __private int4 *quo); | ||
2125 | float8 __ovld remquo(float8 x, float8 y, __private int8 *quo); | ||
2126 | float16 __ovld remquo(float16 x, float16 y, __private int16 *quo); | ||
2127 | -#ifdef cl_khr_fp64 | ||
2128 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2129 | double __ovld remquo(double x, double y, __global int *quo); | ||
2130 | double2 __ovld remquo(double2 x, double2 y, __global int2 *quo); | ||
2131 | double3 __ovld remquo(double3 x, double3 y, __global int3 *quo); | ||
2132 | @@ -8277,7 +8287,7 @@ double3 __ovld remquo(double3 x, double3 y, __private int3 *quo); | ||
2133 | double4 __ovld remquo(double4 x, double4 y, __private int4 *quo); | ||
2134 | double8 __ovld remquo(double8 x, double8 y, __private int8 *quo); | ||
2135 | double16 __ovld remquo(double16 x, double16 y, __private int16 *quo); | ||
2136 | -#endif //cl_khr_fp64 | ||
2137 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2138 | #ifdef cl_khr_fp16 | ||
2139 | half __ovld remquo(half x, half y, __global int *quo); | ||
2140 | half2 __ovld remquo(half2 x, half2 y, __global int2 *quo); | ||
2141 | @@ -8298,7 +8308,8 @@ half4 __ovld remquo(half4 x, half4 y, __private int4 *quo); | ||
2142 | half8 __ovld remquo(half8 x, half8 y, __private int8 *quo); | ||
2143 | half16 __ovld remquo(half16 x, half16 y, __private int16 *quo); | ||
2144 | #endif //cl_khr_fp16 | ||
2145 | -#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
2146 | +#endif //! defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != | ||
2147 | + //! CL_VERSION_2_0) | ||
2148 | /** | ||
2149 | * Round to integral value (using round to nearest | ||
2150 | * even rounding mode) in floating-point format. | ||
2151 | @@ -8311,14 +8322,14 @@ float3 __ovld __cnfn rint(float3); | ||
2152 | float4 __ovld __cnfn rint(float4); | ||
2153 | float8 __ovld __cnfn rint(float8); | ||
2154 | float16 __ovld __cnfn rint(float16); | ||
2155 | -#ifdef cl_khr_fp64 | ||
2156 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2157 | double __ovld __cnfn rint(double); | ||
2158 | double2 __ovld __cnfn rint(double2); | ||
2159 | double3 __ovld __cnfn rint(double3); | ||
2160 | double4 __ovld __cnfn rint(double4); | ||
2161 | double8 __ovld __cnfn rint(double8); | ||
2162 | double16 __ovld __cnfn rint(double16); | ||
2163 | -#endif //cl_khr_fp64 | ||
2164 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2165 | #ifdef cl_khr_fp16 | ||
2166 | half __ovld __cnfn rint(half); | ||
2167 | half2 __ovld __cnfn rint(half2); | ||
2168 | @@ -8337,14 +8348,14 @@ float3 __ovld __cnfn rootn(float3 x, int3 y); | ||
2169 | float4 __ovld __cnfn rootn(float4 x, int4 y); | ||
2170 | float8 __ovld __cnfn rootn(float8 x, int8 y); | ||
2171 | float16 __ovld __cnfn rootn(float16 x, int16 y); | ||
2172 | -#ifdef cl_khr_fp64 | ||
2173 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2174 | double __ovld __cnfn rootn(double x, int y); | ||
2175 | double2 __ovld __cnfn rootn(double2 x, int2 y); | ||
2176 | double3 __ovld __cnfn rootn(double3 x, int3 y); | ||
2177 | double4 __ovld __cnfn rootn(double4 x, int4 y); | ||
2178 | double8 __ovld __cnfn rootn(double8 x, int8 y); | ||
2179 | double16 __ovld __cnfn rootn(double16 x, int16 y); | ||
2180 | -#endif //cl_khr_fp64 | ||
2181 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2182 | #ifdef cl_khr_fp16 | ||
2183 | half __ovld __cnfn rootn(half x, int y); | ||
2184 | half2 __ovld __cnfn rootn(half2 x, int2 y); | ||
2185 | @@ -8365,14 +8376,14 @@ float3 __ovld __cnfn round(float3 x); | ||
2186 | float4 __ovld __cnfn round(float4 x); | ||
2187 | float8 __ovld __cnfn round(float8 x); | ||
2188 | float16 __ovld __cnfn round(float16 x); | ||
2189 | -#ifdef cl_khr_fp64 | ||
2190 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2191 | double __ovld __cnfn round(double x); | ||
2192 | double2 __ovld __cnfn round(double2 x); | ||
2193 | double3 __ovld __cnfn round(double3 x); | ||
2194 | double4 __ovld __cnfn round(double4 x); | ||
2195 | double8 __ovld __cnfn round(double8 x); | ||
2196 | double16 __ovld __cnfn round(double16 x); | ||
2197 | -#endif //cl_khr_fp64 | ||
2198 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2199 | #ifdef cl_khr_fp16 | ||
2200 | half __ovld __cnfn round(half x); | ||
2201 | half2 __ovld __cnfn round(half2 x); | ||
2202 | @@ -8391,14 +8402,14 @@ float3 __ovld __cnfn rsqrt(float3); | ||
2203 | float4 __ovld __cnfn rsqrt(float4); | ||
2204 | float8 __ovld __cnfn rsqrt(float8); | ||
2205 | float16 __ovld __cnfn rsqrt(float16); | ||
2206 | -#ifdef cl_khr_fp64 | ||
2207 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2208 | double __ovld __cnfn rsqrt(double); | ||
2209 | double2 __ovld __cnfn rsqrt(double2); | ||
2210 | double3 __ovld __cnfn rsqrt(double3); | ||
2211 | double4 __ovld __cnfn rsqrt(double4); | ||
2212 | double8 __ovld __cnfn rsqrt(double8); | ||
2213 | double16 __ovld __cnfn rsqrt(double16); | ||
2214 | -#endif //cl_khr_fp64 | ||
2215 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2216 | #ifdef cl_khr_fp16 | ||
2217 | half __ovld __cnfn rsqrt(half); | ||
2218 | half2 __ovld __cnfn rsqrt(half2); | ||
2219 | @@ -8417,14 +8428,14 @@ float3 __ovld __cnfn sin(float3); | ||
2220 | float4 __ovld __cnfn sin(float4); | ||
2221 | float8 __ovld __cnfn sin(float8); | ||
2222 | float16 __ovld __cnfn sin(float16); | ||
2223 | -#ifdef cl_khr_fp64 | ||
2224 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2225 | double __ovld __cnfn sin(double); | ||
2226 | double2 __ovld __cnfn sin(double2); | ||
2227 | double3 __ovld __cnfn sin(double3); | ||
2228 | double4 __ovld __cnfn sin(double4); | ||
2229 | double8 __ovld __cnfn sin(double8); | ||
2230 | double16 __ovld __cnfn sin(double16); | ||
2231 | -#endif //cl_khr_fp64 | ||
2232 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2233 | #ifdef cl_khr_fp16 | ||
2234 | half __ovld __cnfn sin(half); | ||
2235 | half2 __ovld __cnfn sin(half2); | ||
2236 | @@ -8439,21 +8450,21 @@ half16 __ovld __cnfn sin(half16); | ||
2237 | * is the return value and computed cosine is returned | ||
2238 | * in cosval. | ||
2239 | */ | ||
2240 | -#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
2241 | +#ifdef __opencl_c_generic_address_space | ||
2242 | float __ovld sincos(float x, float *cosval); | ||
2243 | float2 __ovld sincos(float2 x, float2 *cosval); | ||
2244 | float3 __ovld sincos(float3 x, float3 *cosval); | ||
2245 | float4 __ovld sincos(float4 x, float4 *cosval); | ||
2246 | float8 __ovld sincos(float8 x, float8 *cosval); | ||
2247 | float16 __ovld sincos(float16 x, float16 *cosval); | ||
2248 | -#ifdef cl_khr_fp64 | ||
2249 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2250 | double __ovld sincos(double x, double *cosval); | ||
2251 | double2 __ovld sincos(double2 x, double2 *cosval); | ||
2252 | double3 __ovld sincos(double3 x, double3 *cosval); | ||
2253 | double4 __ovld sincos(double4 x, double4 *cosval); | ||
2254 | double8 __ovld sincos(double8 x, double8 *cosval); | ||
2255 | double16 __ovld sincos(double16 x, double16 *cosval); | ||
2256 | -#endif //cl_khr_fp64 | ||
2257 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2258 | #ifdef cl_khr_fp16 | ||
2259 | half __ovld sincos(half x, half *cosval); | ||
2260 | half2 __ovld sincos(half2 x, half2 *cosval); | ||
2261 | @@ -8462,7 +8473,9 @@ half4 __ovld sincos(half4 x, half4 *cosval); | ||
2262 | half8 __ovld sincos(half8 x, half8 *cosval); | ||
2263 | half16 __ovld sincos(half16 x, half16 *cosval); | ||
2264 | #endif //cl_khr_fp16 | ||
2265 | -#else | ||
2266 | +#endif //__opencl_c_generic_address_space | ||
2267 | + | ||
2268 | +#if !defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != CL_VERSION_2_0) | ||
2269 | float __ovld sincos(float x, __global float *cosval); | ||
2270 | float2 __ovld sincos(float2 x, __global float2 *cosval); | ||
2271 | float3 __ovld sincos(float3 x, __global float3 *cosval); | ||
2272 | @@ -8481,7 +8494,7 @@ float3 __ovld sincos(float3 x, __private float3 *cosval); | ||
2273 | float4 __ovld sincos(float4 x, __private float4 *cosval); | ||
2274 | float8 __ovld sincos(float8 x, __private float8 *cosval); | ||
2275 | float16 __ovld sincos(float16 x, __private float16 *cosval); | ||
2276 | -#ifdef cl_khr_fp64 | ||
2277 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2278 | double __ovld sincos(double x, __global double *cosval); | ||
2279 | double2 __ovld sincos(double2 x, __global double2 *cosval); | ||
2280 | double3 __ovld sincos(double3 x, __global double3 *cosval); | ||
2281 | @@ -8500,7 +8513,7 @@ double3 __ovld sincos(double3 x, __private double3 *cosval); | ||
2282 | double4 __ovld sincos(double4 x, __private double4 *cosval); | ||
2283 | double8 __ovld sincos(double8 x, __private double8 *cosval); | ||
2284 | double16 __ovld sincos(double16 x, __private double16 *cosval); | ||
2285 | -#endif //cl_khr_fp64 | ||
2286 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2287 | #ifdef cl_khr_fp16 | ||
2288 | half __ovld sincos(half x, __global half *cosval); | ||
2289 | half2 __ovld sincos(half2 x, __global half2 *cosval); | ||
2290 | @@ -8521,8 +8534,8 @@ half4 __ovld sincos(half4 x, __private half4 *cosval); | ||
2291 | half8 __ovld sincos(half8 x, __private half8 *cosval); | ||
2292 | half16 __ovld sincos(half16 x, __private half16 *cosval); | ||
2293 | #endif //cl_khr_fp16 | ||
2294 | -#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) | ||
2295 | - | ||
2296 | +#endif //! defined(__OPENCL_CPP_VERSION__) && (__OPENCL_C_VERSION__ != | ||
2297 | + //! CL_VERSION_2_0) | ||
2298 | /** | ||
2299 | * Compute hyperbolic sine. | ||
2300 | */ | ||
2301 | @@ -8532,14 +8545,14 @@ float3 __ovld __cnfn sinh(float3); | ||
2302 | float4 __ovld __cnfn sinh(float4); | ||
2303 | float8 __ovld __cnfn sinh(float8); | ||
2304 | float16 __ovld __cnfn sinh(float16); | ||
2305 | -#ifdef cl_khr_fp64 | ||
2306 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2307 | double __ovld __cnfn sinh(double); | ||
2308 | double2 __ovld __cnfn sinh(double2); | ||
2309 | double3 __ovld __cnfn sinh(double3); | ||
2310 | double4 __ovld __cnfn sinh(double4); | ||
2311 | double8 __ovld __cnfn sinh(double8); | ||
2312 | double16 __ovld __cnfn sinh(double16); | ||
2313 | -#endif //cl_khr_fp64 | ||
2314 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2315 | #ifdef cl_khr_fp16 | ||
2316 | half __ovld __cnfn sinh(half); | ||
2317 | half2 __ovld __cnfn sinh(half2); | ||
2318 | @@ -8558,14 +8571,14 @@ float3 __ovld __cnfn sinpi(float3 x); | ||
2319 | float4 __ovld __cnfn sinpi(float4 x); | ||
2320 | float8 __ovld __cnfn sinpi(float8 x); | ||
2321 | float16 __ovld __cnfn sinpi(float16 x); | ||
2322 | -#ifdef cl_khr_fp64 | ||
2323 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2324 | double __ovld __cnfn sinpi(double x); | ||
2325 | double2 __ovld __cnfn sinpi(double2 x); | ||
2326 | double3 __ovld __cnfn sinpi(double3 x); | ||
2327 | double4 __ovld __cnfn sinpi(double4 x); | ||
2328 | double8 __ovld __cnfn sinpi(double8 x); | ||
2329 | double16 __ovld __cnfn sinpi(double16 x); | ||
2330 | -#endif //cl_khr_fp64 | ||
2331 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2332 | #ifdef cl_khr_fp16 | ||
2333 | half __ovld __cnfn sinpi(half x); | ||
2334 | half2 __ovld __cnfn sinpi(half2 x); | ||
2335 | @@ -8584,14 +8597,14 @@ float3 __ovld __cnfn sqrt(float3); | ||
2336 | float4 __ovld __cnfn sqrt(float4); | ||
2337 | float8 __ovld __cnfn sqrt(float8); | ||
2338 | float16 __ovld __cnfn sqrt(float16); | ||
2339 | -#ifdef cl_khr_fp64 | ||
2340 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2341 | double __ovld __cnfn sqrt(double); | ||
2342 | double2 __ovld __cnfn sqrt(double2); | ||
2343 | double3 __ovld __cnfn sqrt(double3); | ||
2344 | double4 __ovld __cnfn sqrt(double4); | ||
2345 | double8 __ovld __cnfn sqrt(double8); | ||
2346 | double16 __ovld __cnfn sqrt(double16); | ||
2347 | -#endif //cl_khr_fp64 | ||
2348 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2349 | #ifdef cl_khr_fp16 | ||
2350 | half __ovld __cnfn sqrt(half); | ||
2351 | half2 __ovld __cnfn sqrt(half2); | ||
2352 | @@ -8610,14 +8623,14 @@ float3 __ovld __cnfn tan(float3); | ||
2353 | float4 __ovld __cnfn tan(float4); | ||
2354 | float8 __ovld __cnfn tan(float8); | ||
2355 | float16 __ovld __cnfn tan(float16); | ||
2356 | -#ifdef cl_khr_fp64 | ||
2357 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2358 | double __ovld __cnfn tan(double); | ||
2359 | double2 __ovld __cnfn tan(double2); | ||
2360 | double3 __ovld __cnfn tan(double3); | ||
2361 | double4 __ovld __cnfn tan(double4); | ||
2362 | double8 __ovld __cnfn tan(double8); | ||
2363 | double16 __ovld __cnfn tan(double16); | ||
2364 | -#endif //cl_khr_fp64 | ||
2365 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2366 | #ifdef cl_khr_fp16 | ||
2367 | half __ovld __cnfn tan(half); | ||
2368 | half2 __ovld __cnfn tan(half2); | ||
2369 | @@ -8636,14 +8649,14 @@ float3 __ovld __cnfn tanh(float3); | ||
2370 | float4 __ovld __cnfn tanh(float4); | ||
2371 | float8 __ovld __cnfn tanh(float8); | ||
2372 | float16 __ovld __cnfn tanh(float16); | ||
2373 | -#ifdef cl_khr_fp64 | ||
2374 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2375 | double __ovld __cnfn tanh(double); | ||
2376 | double2 __ovld __cnfn tanh(double2); | ||
2377 | double3 __ovld __cnfn tanh(double3); | ||
2378 | double4 __ovld __cnfn tanh(double4); | ||
2379 | double8 __ovld __cnfn tanh(double8); | ||
2380 | double16 __ovld __cnfn tanh(double16); | ||
2381 | -#endif //cl_khr_fp64 | ||
2382 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2383 | #ifdef cl_khr_fp16 | ||
2384 | half __ovld __cnfn tanh(half); | ||
2385 | half2 __ovld __cnfn tanh(half2); | ||
2386 | @@ -8662,14 +8675,14 @@ float3 __ovld __cnfn tanpi(float3 x); | ||
2387 | float4 __ovld __cnfn tanpi(float4 x); | ||
2388 | float8 __ovld __cnfn tanpi(float8 x); | ||
2389 | float16 __ovld __cnfn tanpi(float16 x); | ||
2390 | -#ifdef cl_khr_fp64 | ||
2391 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2392 | double __ovld __cnfn tanpi(double x); | ||
2393 | double2 __ovld __cnfn tanpi(double2 x); | ||
2394 | double3 __ovld __cnfn tanpi(double3 x); | ||
2395 | double4 __ovld __cnfn tanpi(double4 x); | ||
2396 | double8 __ovld __cnfn tanpi(double8 x); | ||
2397 | double16 __ovld __cnfn tanpi(double16 x); | ||
2398 | -#endif //cl_khr_fp64 | ||
2399 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2400 | #ifdef cl_khr_fp16 | ||
2401 | half __ovld __cnfn tanpi(half x); | ||
2402 | half2 __ovld __cnfn tanpi(half2 x); | ||
2403 | @@ -8688,14 +8701,14 @@ float3 __ovld __cnfn tgamma(float3); | ||
2404 | float4 __ovld __cnfn tgamma(float4); | ||
2405 | float8 __ovld __cnfn tgamma(float8); | ||
2406 | float16 __ovld __cnfn tgamma(float16); | ||
2407 | -#ifdef cl_khr_fp64 | ||
2408 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2409 | double __ovld __cnfn tgamma(double); | ||
2410 | double2 __ovld __cnfn tgamma(double2); | ||
2411 | double3 __ovld __cnfn tgamma(double3); | ||
2412 | double4 __ovld __cnfn tgamma(double4); | ||
2413 | double8 __ovld __cnfn tgamma(double8); | ||
2414 | double16 __ovld __cnfn tgamma(double16); | ||
2415 | -#endif //cl_khr_fp64 | ||
2416 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2417 | #ifdef cl_khr_fp16 | ||
2418 | half __ovld __cnfn tgamma(half); | ||
2419 | half2 __ovld __cnfn tgamma(half2); | ||
2420 | @@ -8715,14 +8728,14 @@ float3 __ovld __cnfn trunc(float3); | ||
2421 | float4 __ovld __cnfn trunc(float4); | ||
2422 | float8 __ovld __cnfn trunc(float8); | ||
2423 | float16 __ovld __cnfn trunc(float16); | ||
2424 | -#ifdef cl_khr_fp64 | ||
2425 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2426 | double __ovld __cnfn trunc(double); | ||
2427 | double2 __ovld __cnfn trunc(double2); | ||
2428 | double3 __ovld __cnfn trunc(double3); | ||
2429 | double4 __ovld __cnfn trunc(double4); | ||
2430 | double8 __ovld __cnfn trunc(double8); | ||
2431 | double16 __ovld __cnfn trunc(double16); | ||
2432 | -#endif //cl_khr_fp64 | ||
2433 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2434 | #ifdef cl_khr_fp16 | ||
2435 | half __ovld __cnfn trunc(half); | ||
2436 | half2 __ovld __cnfn trunc(half2); | ||
2437 | @@ -10108,7 +10121,7 @@ float3 __ovld __cnfn clamp(float3 x, float minval, float maxval); | ||
2438 | float4 __ovld __cnfn clamp(float4 x, float minval, float maxval); | ||
2439 | float8 __ovld __cnfn clamp(float8 x, float minval, float maxval); | ||
2440 | float16 __ovld __cnfn clamp(float16 x, float minval, float maxval); | ||
2441 | -#ifdef cl_khr_fp64 | ||
2442 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2443 | double __ovld __cnfn clamp(double x, double minval, double maxval); | ||
2444 | double2 __ovld __cnfn clamp(double2 x, double2 minval, double2 maxval); | ||
2445 | double3 __ovld __cnfn clamp(double3 x, double3 minval, double3 maxval); | ||
2446 | @@ -10120,7 +10133,7 @@ double3 __ovld __cnfn clamp(double3 x, double minval, double maxval); | ||
2447 | double4 __ovld __cnfn clamp(double4 x, double minval, double maxval); | ||
2448 | double8 __ovld __cnfn clamp(double8 x, double minval, double maxval); | ||
2449 | double16 __ovld __cnfn clamp(double16 x, double minval, double maxval); | ||
2450 | -#endif //cl_khr_fp64 | ||
2451 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2452 | #ifdef cl_khr_fp16 | ||
2453 | half __ovld __cnfn clamp(half x, half minval, half maxval); | ||
2454 | half2 __ovld __cnfn clamp(half2 x, half2 minval, half2 maxval); | ||
2455 | @@ -10145,14 +10158,14 @@ float3 __ovld __cnfn degrees(float3 radians); | ||
2456 | float4 __ovld __cnfn degrees(float4 radians); | ||
2457 | float8 __ovld __cnfn degrees(float8 radians); | ||
2458 | float16 __ovld __cnfn degrees(float16 radians); | ||
2459 | -#ifdef cl_khr_fp64 | ||
2460 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2461 | double __ovld __cnfn degrees(double radians); | ||
2462 | double2 __ovld __cnfn degrees(double2 radians); | ||
2463 | double3 __ovld __cnfn degrees(double3 radians); | ||
2464 | double4 __ovld __cnfn degrees(double4 radians); | ||
2465 | double8 __ovld __cnfn degrees(double8 radians); | ||
2466 | double16 __ovld __cnfn degrees(double16 radians); | ||
2467 | -#endif //cl_khr_fp64 | ||
2468 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2469 | #ifdef cl_khr_fp16 | ||
2470 | half __ovld __cnfn degrees(half radians); | ||
2471 | half2 __ovld __cnfn degrees(half2 radians); | ||
2472 | @@ -10177,7 +10190,7 @@ float3 __ovld __cnfn max(float3 x, float y); | ||
2473 | float4 __ovld __cnfn max(float4 x, float y); | ||
2474 | float8 __ovld __cnfn max(float8 x, float y); | ||
2475 | float16 __ovld __cnfn max(float16 x, float y); | ||
2476 | -#ifdef cl_khr_fp64 | ||
2477 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2478 | double __ovld __cnfn max(double x, double y); | ||
2479 | double2 __ovld __cnfn max(double2 x, double2 y); | ||
2480 | double3 __ovld __cnfn max(double3 x, double3 y); | ||
2481 | @@ -10189,7 +10202,7 @@ double3 __ovld __cnfn max(double3 x, double y); | ||
2482 | double4 __ovld __cnfn max(double4 x, double y); | ||
2483 | double8 __ovld __cnfn max(double8 x, double y); | ||
2484 | double16 __ovld __cnfn max(double16 x, double y); | ||
2485 | -#endif //cl_khr_fp64 | ||
2486 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2487 | #ifdef cl_khr_fp16 | ||
2488 | half __ovld __cnfn max(half x, half y); | ||
2489 | half2 __ovld __cnfn max(half2 x, half2 y); | ||
2490 | @@ -10219,7 +10232,7 @@ float3 __ovld __cnfn min(float3 x, float y); | ||
2491 | float4 __ovld __cnfn min(float4 x, float y); | ||
2492 | float8 __ovld __cnfn min(float8 x, float y); | ||
2493 | float16 __ovld __cnfn min(float16 x, float y); | ||
2494 | -#ifdef cl_khr_fp64 | ||
2495 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2496 | double __ovld __cnfn min(double x, double y); | ||
2497 | double2 __ovld __cnfn min(double2 x, double2 y); | ||
2498 | double3 __ovld __cnfn min(double3 x, double3 y); | ||
2499 | @@ -10231,7 +10244,7 @@ double3 __ovld __cnfn min(double3 x, double y); | ||
2500 | double4 __ovld __cnfn min(double4 x, double y); | ||
2501 | double8 __ovld __cnfn min(double8 x, double y); | ||
2502 | double16 __ovld __cnfn min(double16 x, double y); | ||
2503 | -#endif //cl_khr_fp64 | ||
2504 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2505 | #ifdef cl_khr_fp16 | ||
2506 | half __ovld __cnfn min(half x, half y); | ||
2507 | half2 __ovld __cnfn min(half2 x, half2 y); | ||
2508 | @@ -10264,7 +10277,7 @@ float3 __ovld __cnfn mix(float3 x, float3 y, float a); | ||
2509 | float4 __ovld __cnfn mix(float4 x, float4 y, float a); | ||
2510 | float8 __ovld __cnfn mix(float8 x, float8 y, float a); | ||
2511 | float16 __ovld __cnfn mix(float16 x, float16 y, float a); | ||
2512 | -#ifdef cl_khr_fp64 | ||
2513 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2514 | double __ovld __cnfn mix(double x, double y, double a); | ||
2515 | double2 __ovld __cnfn mix(double2 x, double2 y, double2 a); | ||
2516 | double3 __ovld __cnfn mix(double3 x, double3 y, double3 a); | ||
2517 | @@ -10276,7 +10289,7 @@ double3 __ovld __cnfn mix(double3 x, double3 y, double a); | ||
2518 | double4 __ovld __cnfn mix(double4 x, double4 y, double a); | ||
2519 | double8 __ovld __cnfn mix(double8 x, double8 y, double a); | ||
2520 | double16 __ovld __cnfn mix(double16 x, double16 y, double a); | ||
2521 | -#endif //cl_khr_fp64 | ||
2522 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2523 | #ifdef cl_khr_fp16 | ||
2524 | half __ovld __cnfn mix(half x, half y, half a); | ||
2525 | half2 __ovld __cnfn mix(half2 x, half2 y, half2 a); | ||
2526 | @@ -10301,14 +10314,14 @@ float3 __ovld __cnfn radians(float3 degrees); | ||
2527 | float4 __ovld __cnfn radians(float4 degrees); | ||
2528 | float8 __ovld __cnfn radians(float8 degrees); | ||
2529 | float16 __ovld __cnfn radians(float16 degrees); | ||
2530 | -#ifdef cl_khr_fp64 | ||
2531 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2532 | double __ovld __cnfn radians(double degrees); | ||
2533 | double2 __ovld __cnfn radians(double2 degrees); | ||
2534 | double3 __ovld __cnfn radians(double3 degrees); | ||
2535 | double4 __ovld __cnfn radians(double4 degrees); | ||
2536 | double8 __ovld __cnfn radians(double8 degrees); | ||
2537 | double16 __ovld __cnfn radians(double16 degrees); | ||
2538 | -#endif //cl_khr_fp64 | ||
2539 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2540 | #ifdef cl_khr_fp16 | ||
2541 | half __ovld __cnfn radians(half degrees); | ||
2542 | half2 __ovld __cnfn radians(half2 degrees); | ||
2543 | @@ -10332,7 +10345,7 @@ float3 __ovld __cnfn step(float edge, float3 x); | ||
2544 | float4 __ovld __cnfn step(float edge, float4 x); | ||
2545 | float8 __ovld __cnfn step(float edge, float8 x); | ||
2546 | float16 __ovld __cnfn step(float edge, float16 x); | ||
2547 | -#ifdef cl_khr_fp64 | ||
2548 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2549 | double __ovld __cnfn step(double edge, double x); | ||
2550 | double2 __ovld __cnfn step(double2 edge, double2 x); | ||
2551 | double3 __ovld __cnfn step(double3 edge, double3 x); | ||
2552 | @@ -10344,7 +10357,7 @@ double3 __ovld __cnfn step(double edge, double3 x); | ||
2553 | double4 __ovld __cnfn step(double edge, double4 x); | ||
2554 | double8 __ovld __cnfn step(double edge, double8 x); | ||
2555 | double16 __ovld __cnfn step(double edge, double16 x); | ||
2556 | -#endif //cl_khr_fp64 | ||
2557 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2558 | #ifdef cl_khr_fp16 | ||
2559 | half __ovld __cnfn step(half edge, half x); | ||
2560 | half2 __ovld __cnfn step(half2 edge, half2 x); | ||
2561 | @@ -10383,7 +10396,7 @@ float3 __ovld __cnfn smoothstep(float edge0, float edge1, float3 x); | ||
2562 | float4 __ovld __cnfn smoothstep(float edge0, float edge1, float4 x); | ||
2563 | float8 __ovld __cnfn smoothstep(float edge0, float edge1, float8 x); | ||
2564 | float16 __ovld __cnfn smoothstep(float edge0, float edge1, float16 x); | ||
2565 | -#ifdef cl_khr_fp64 | ||
2566 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2567 | double __ovld __cnfn smoothstep(double edge0, double edge1, double x); | ||
2568 | double2 __ovld __cnfn smoothstep(double2 edge0, double2 edge1, double2 x); | ||
2569 | double3 __ovld __cnfn smoothstep(double3 edge0, double3 edge1, double3 x); | ||
2570 | @@ -10395,7 +10408,7 @@ double3 __ovld __cnfn smoothstep(double edge0, double edge1, double3 x); | ||
2571 | double4 __ovld __cnfn smoothstep(double edge0, double edge1, double4 x); | ||
2572 | double8 __ovld __cnfn smoothstep(double edge0, double edge1, double8 x); | ||
2573 | double16 __ovld __cnfn smoothstep(double edge0, double edge1, double16 x); | ||
2574 | -#endif //cl_khr_fp64 | ||
2575 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2576 | #ifdef cl_khr_fp16 | ||
2577 | half __ovld __cnfn smoothstep(half edge0, half edge1, half x); | ||
2578 | half2 __ovld __cnfn smoothstep(half2 edge0, half2 edge1, half2 x); | ||
2579 | @@ -10420,14 +10433,14 @@ float3 __ovld __cnfn sign(float3 x); | ||
2580 | float4 __ovld __cnfn sign(float4 x); | ||
2581 | float8 __ovld __cnfn sign(float8 x); | ||
2582 | float16 __ovld __cnfn sign(float16 x); | ||
2583 | -#ifdef cl_khr_fp64 | ||
2584 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2585 | double __ovld __cnfn sign(double x); | ||
2586 | double2 __ovld __cnfn sign(double2 x); | ||
2587 | double3 __ovld __cnfn sign(double3 x); | ||
2588 | double4 __ovld __cnfn sign(double4 x); | ||
2589 | double8 __ovld __cnfn sign(double8 x); | ||
2590 | double16 __ovld __cnfn sign(double16 x); | ||
2591 | -#endif //cl_khr_fp64 | ||
2592 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2593 | #ifdef cl_khr_fp16 | ||
2594 | half __ovld __cnfn sign(half x); | ||
2595 | half2 __ovld __cnfn sign(half2 x); | ||
2596 | @@ -10445,10 +10458,10 @@ half16 __ovld __cnfn sign(half16 x); | ||
2597 | */ | ||
2598 | float4 __ovld __cnfn cross(float4 p0, float4 p1); | ||
2599 | float3 __ovld __cnfn cross(float3 p0, float3 p1); | ||
2600 | -#ifdef cl_khr_fp64 | ||
2601 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2602 | double4 __ovld __cnfn cross(double4 p0, double4 p1); | ||
2603 | double3 __ovld __cnfn cross(double3 p0, double3 p1); | ||
2604 | -#endif //cl_khr_fp64 | ||
2605 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2606 | #ifdef cl_khr_fp16 | ||
2607 | half4 __ovld __cnfn cross(half4 p0, half4 p1); | ||
2608 | half3 __ovld __cnfn cross(half3 p0, half3 p1); | ||
2609 | @@ -10461,12 +10474,12 @@ float __ovld __cnfn dot(float p0, float p1); | ||
2610 | float __ovld __cnfn dot(float2 p0, float2 p1); | ||
2611 | float __ovld __cnfn dot(float3 p0, float3 p1); | ||
2612 | float __ovld __cnfn dot(float4 p0, float4 p1); | ||
2613 | -#ifdef cl_khr_fp64 | ||
2614 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2615 | double __ovld __cnfn dot(double p0, double p1); | ||
2616 | double __ovld __cnfn dot(double2 p0, double2 p1); | ||
2617 | double __ovld __cnfn dot(double3 p0, double3 p1); | ||
2618 | double __ovld __cnfn dot(double4 p0, double4 p1); | ||
2619 | -#endif //cl_khr_fp64 | ||
2620 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2621 | #ifdef cl_khr_fp16 | ||
2622 | half __ovld __cnfn dot(half p0, half p1); | ||
2623 | half __ovld __cnfn dot(half2 p0, half2 p1); | ||
2624 | @@ -10482,12 +10495,12 @@ float __ovld __cnfn distance(float p0, float p1); | ||
2625 | float __ovld __cnfn distance(float2 p0, float2 p1); | ||
2626 | float __ovld __cnfn distance(float3 p0, float3 p1); | ||
2627 | float __ovld __cnfn distance(float4 p0, float4 p1); | ||
2628 | -#ifdef cl_khr_fp64 | ||
2629 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2630 | double __ovld __cnfn distance(double p0, double p1); | ||
2631 | double __ovld __cnfn distance(double2 p0, double2 p1); | ||
2632 | double __ovld __cnfn distance(double3 p0, double3 p1); | ||
2633 | double __ovld __cnfn distance(double4 p0, double4 p1); | ||
2634 | -#endif //cl_khr_fp64 | ||
2635 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2636 | #ifdef cl_khr_fp16 | ||
2637 | half __ovld __cnfn distance(half p0, half p1); | ||
2638 | half __ovld __cnfn distance(half2 p0, half2 p1); | ||
2639 | @@ -10503,12 +10516,12 @@ float __ovld __cnfn length(float p); | ||
2640 | float __ovld __cnfn length(float2 p); | ||
2641 | float __ovld __cnfn length(float3 p); | ||
2642 | float __ovld __cnfn length(float4 p); | ||
2643 | -#ifdef cl_khr_fp64 | ||
2644 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2645 | double __ovld __cnfn length(double p); | ||
2646 | double __ovld __cnfn length(double2 p); | ||
2647 | double __ovld __cnfn length(double3 p); | ||
2648 | double __ovld __cnfn length(double4 p); | ||
2649 | -#endif //cl_khr_fp64 | ||
2650 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2651 | #ifdef cl_khr_fp16 | ||
2652 | half __ovld __cnfn length(half p); | ||
2653 | half __ovld __cnfn length(half2 p); | ||
2654 | @@ -10524,12 +10537,12 @@ float __ovld __cnfn normalize(float p); | ||
2655 | float2 __ovld __cnfn normalize(float2 p); | ||
2656 | float3 __ovld __cnfn normalize(float3 p); | ||
2657 | float4 __ovld __cnfn normalize(float4 p); | ||
2658 | -#ifdef cl_khr_fp64 | ||
2659 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2660 | double __ovld __cnfn normalize(double p); | ||
2661 | double2 __ovld __cnfn normalize(double2 p); | ||
2662 | double3 __ovld __cnfn normalize(double3 p); | ||
2663 | double4 __ovld __cnfn normalize(double4 p); | ||
2664 | -#endif //cl_khr_fp64 | ||
2665 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2666 | #ifdef cl_khr_fp16 | ||
2667 | half __ovld __cnfn normalize(half p); | ||
2668 | half2 __ovld __cnfn normalize(half2 p); | ||
2669 | @@ -10610,14 +10623,14 @@ int3 __ovld __cnfn isequal(float3 x, float3 y); | ||
2670 | int4 __ovld __cnfn isequal(float4 x, float4 y); | ||
2671 | int8 __ovld __cnfn isequal(float8 x, float8 y); | ||
2672 | int16 __ovld __cnfn isequal(float16 x, float16 y); | ||
2673 | -#ifdef cl_khr_fp64 | ||
2674 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2675 | int __ovld __cnfn isequal(double x, double y); | ||
2676 | long2 __ovld __cnfn isequal(double2 x, double2 y); | ||
2677 | long3 __ovld __cnfn isequal(double3 x, double3 y); | ||
2678 | long4 __ovld __cnfn isequal(double4 x, double4 y); | ||
2679 | long8 __ovld __cnfn isequal(double8 x, double8 y); | ||
2680 | long16 __ovld __cnfn isequal(double16 x, double16 y); | ||
2681 | -#endif //cl_khr_fp64 | ||
2682 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2683 | #ifdef cl_khr_fp16 | ||
2684 | int __ovld __cnfn isequal(half x, half y); | ||
2685 | short2 __ovld __cnfn isequal(half2 x, half2 y); | ||
2686 | @@ -10636,14 +10649,14 @@ int3 __ovld __cnfn isnotequal(float3 x, float3 y); | ||
2687 | int4 __ovld __cnfn isnotequal(float4 x, float4 y); | ||
2688 | int8 __ovld __cnfn isnotequal(float8 x, float8 y); | ||
2689 | int16 __ovld __cnfn isnotequal(float16 x, float16 y); | ||
2690 | -#ifdef cl_khr_fp64 | ||
2691 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2692 | int __ovld __cnfn isnotequal(double x, double y); | ||
2693 | long2 __ovld __cnfn isnotequal(double2 x, double2 y); | ||
2694 | long3 __ovld __cnfn isnotequal(double3 x, double3 y); | ||
2695 | long4 __ovld __cnfn isnotequal(double4 x, double4 y); | ||
2696 | long8 __ovld __cnfn isnotequal(double8 x, double8 y); | ||
2697 | long16 __ovld __cnfn isnotequal(double16 x, double16 y); | ||
2698 | -#endif //cl_khr_fp64 | ||
2699 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2700 | #ifdef cl_khr_fp16 | ||
2701 | int __ovld __cnfn isnotequal(half x, half y); | ||
2702 | short2 __ovld __cnfn isnotequal(half2 x, half2 y); | ||
2703 | @@ -10662,14 +10675,14 @@ int3 __ovld __cnfn isgreater(float3 x, float3 y); | ||
2704 | int4 __ovld __cnfn isgreater(float4 x, float4 y); | ||
2705 | int8 __ovld __cnfn isgreater(float8 x, float8 y); | ||
2706 | int16 __ovld __cnfn isgreater(float16 x, float16 y); | ||
2707 | -#ifdef cl_khr_fp64 | ||
2708 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2709 | int __ovld __cnfn isgreater(double x, double y); | ||
2710 | long2 __ovld __cnfn isgreater(double2 x, double2 y); | ||
2711 | long3 __ovld __cnfn isgreater(double3 x, double3 y); | ||
2712 | long4 __ovld __cnfn isgreater(double4 x, double4 y); | ||
2713 | long8 __ovld __cnfn isgreater(double8 x, double8 y); | ||
2714 | long16 __ovld __cnfn isgreater(double16 x, double16 y); | ||
2715 | -#endif //cl_khr_fp64 | ||
2716 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2717 | #ifdef cl_khr_fp16 | ||
2718 | int __ovld __cnfn isgreater(half x, half y); | ||
2719 | short2 __ovld __cnfn isgreater(half2 x, half2 y); | ||
2720 | @@ -10688,14 +10701,14 @@ int3 __ovld __cnfn isgreaterequal(float3 x, float3 y); | ||
2721 | int4 __ovld __cnfn isgreaterequal(float4 x, float4 y); | ||
2722 | int8 __ovld __cnfn isgreaterequal(float8 x, float8 y); | ||
2723 | int16 __ovld __cnfn isgreaterequal(float16 x, float16 y); | ||
2724 | -#ifdef cl_khr_fp64 | ||
2725 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2726 | int __ovld __cnfn isgreaterequal(double x, double y); | ||
2727 | long2 __ovld __cnfn isgreaterequal(double2 x, double2 y); | ||
2728 | long3 __ovld __cnfn isgreaterequal(double3 x, double3 y); | ||
2729 | long4 __ovld __cnfn isgreaterequal(double4 x, double4 y); | ||
2730 | long8 __ovld __cnfn isgreaterequal(double8 x, double8 y); | ||
2731 | long16 __ovld __cnfn isgreaterequal(double16 x, double16 y); | ||
2732 | -#endif //cl_khr_fp64 | ||
2733 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2734 | #ifdef cl_khr_fp16 | ||
2735 | int __ovld __cnfn isgreaterequal(half x, half y); | ||
2736 | short2 __ovld __cnfn isgreaterequal(half2 x, half2 y); | ||
2737 | @@ -10714,14 +10727,14 @@ int3 __ovld __cnfn isless(float3 x, float3 y); | ||
2738 | int4 __ovld __cnfn isless(float4 x, float4 y); | ||
2739 | int8 __ovld __cnfn isless(float8 x, float8 y); | ||
2740 | int16 __ovld __cnfn isless(float16 x, float16 y); | ||
2741 | -#ifdef cl_khr_fp64 | ||
2742 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2743 | int __ovld __cnfn isless(double x, double y); | ||
2744 | long2 __ovld __cnfn isless(double2 x, double2 y); | ||
2745 | long3 __ovld __cnfn isless(double3 x, double3 y); | ||
2746 | long4 __ovld __cnfn isless(double4 x, double4 y); | ||
2747 | long8 __ovld __cnfn isless(double8 x, double8 y); | ||
2748 | long16 __ovld __cnfn isless(double16 x, double16 y); | ||
2749 | -#endif //cl_khr_fp64 | ||
2750 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2751 | #ifdef cl_khr_fp16 | ||
2752 | int __ovld __cnfn isless(half x, half y); | ||
2753 | short2 __ovld __cnfn isless(half2 x, half2 y); | ||
2754 | @@ -10740,14 +10753,14 @@ int3 __ovld __cnfn islessequal(float3 x, float3 y); | ||
2755 | int4 __ovld __cnfn islessequal(float4 x, float4 y); | ||
2756 | int8 __ovld __cnfn islessequal(float8 x, float8 y); | ||
2757 | int16 __ovld __cnfn islessequal(float16 x, float16 y); | ||
2758 | -#ifdef cl_khr_fp64 | ||
2759 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2760 | int __ovld __cnfn islessequal(double x, double y); | ||
2761 | long2 __ovld __cnfn islessequal(double2 x, double2 y); | ||
2762 | long3 __ovld __cnfn islessequal(double3 x, double3 y); | ||
2763 | long4 __ovld __cnfn islessequal(double4 x, double4 y); | ||
2764 | long8 __ovld __cnfn islessequal(double8 x, double8 y); | ||
2765 | long16 __ovld __cnfn islessequal(double16 x, double16 y); | ||
2766 | -#endif //cl_khr_fp64 | ||
2767 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2768 | #ifdef cl_khr_fp16 | ||
2769 | int __ovld __cnfn islessequal(half x, half y); | ||
2770 | short2 __ovld __cnfn islessequal(half2 x, half2 y); | ||
2771 | @@ -10767,14 +10780,14 @@ int3 __ovld __cnfn islessgreater(float3 x, float3 y); | ||
2772 | int4 __ovld __cnfn islessgreater(float4 x, float4 y); | ||
2773 | int8 __ovld __cnfn islessgreater(float8 x, float8 y); | ||
2774 | int16 __ovld __cnfn islessgreater(float16 x, float16 y); | ||
2775 | -#ifdef cl_khr_fp64 | ||
2776 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2777 | int __ovld __cnfn islessgreater(double x, double y); | ||
2778 | long2 __ovld __cnfn islessgreater(double2 x, double2 y); | ||
2779 | long3 __ovld __cnfn islessgreater(double3 x, double3 y); | ||
2780 | long4 __ovld __cnfn islessgreater(double4 x, double4 y); | ||
2781 | long8 __ovld __cnfn islessgreater(double8 x, double8 y); | ||
2782 | long16 __ovld __cnfn islessgreater(double16 x, double16 y); | ||
2783 | -#endif //cl_khr_fp64 | ||
2784 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2785 | #ifdef cl_khr_fp16 | ||
2786 | int __ovld __cnfn islessgreater(half x, half y); | ||
2787 | short2 __ovld __cnfn islessgreater(half2 x, half2 y); | ||
2788 | @@ -10793,14 +10806,14 @@ int3 __ovld __cnfn isfinite(float3); | ||
2789 | int4 __ovld __cnfn isfinite(float4); | ||
2790 | int8 __ovld __cnfn isfinite(float8); | ||
2791 | int16 __ovld __cnfn isfinite(float16); | ||
2792 | -#ifdef cl_khr_fp64 | ||
2793 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2794 | int __ovld __cnfn isfinite(double); | ||
2795 | long2 __ovld __cnfn isfinite(double2); | ||
2796 | long3 __ovld __cnfn isfinite(double3); | ||
2797 | long4 __ovld __cnfn isfinite(double4); | ||
2798 | long8 __ovld __cnfn isfinite(double8); | ||
2799 | long16 __ovld __cnfn isfinite(double16); | ||
2800 | -#endif //cl_khr_fp64 | ||
2801 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2802 | #ifdef cl_khr_fp16 | ||
2803 | int __ovld __cnfn isfinite(half); | ||
2804 | short2 __ovld __cnfn isfinite(half2); | ||
2805 | @@ -10819,14 +10832,14 @@ int3 __ovld __cnfn isinf(float3); | ||
2806 | int4 __ovld __cnfn isinf(float4); | ||
2807 | int8 __ovld __cnfn isinf(float8); | ||
2808 | int16 __ovld __cnfn isinf(float16); | ||
2809 | -#ifdef cl_khr_fp64 | ||
2810 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2811 | int __ovld __cnfn isinf(double); | ||
2812 | long2 __ovld __cnfn isinf(double2); | ||
2813 | long3 __ovld __cnfn isinf(double3); | ||
2814 | long4 __ovld __cnfn isinf(double4); | ||
2815 | long8 __ovld __cnfn isinf(double8); | ||
2816 | long16 __ovld __cnfn isinf(double16); | ||
2817 | -#endif //cl_khr_fp64 | ||
2818 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2819 | #ifdef cl_khr_fp16 | ||
2820 | int __ovld __cnfn isinf(half); | ||
2821 | short2 __ovld __cnfn isinf(half2); | ||
2822 | @@ -10845,14 +10858,14 @@ int3 __ovld __cnfn isnan(float3); | ||
2823 | int4 __ovld __cnfn isnan(float4); | ||
2824 | int8 __ovld __cnfn isnan(float8); | ||
2825 | int16 __ovld __cnfn isnan(float16); | ||
2826 | -#ifdef cl_khr_fp64 | ||
2827 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2828 | int __ovld __cnfn isnan(double); | ||
2829 | long2 __ovld __cnfn isnan(double2); | ||
2830 | long3 __ovld __cnfn isnan(double3); | ||
2831 | long4 __ovld __cnfn isnan(double4); | ||
2832 | long8 __ovld __cnfn isnan(double8); | ||
2833 | long16 __ovld __cnfn isnan(double16); | ||
2834 | -#endif //cl_khr_fp64 | ||
2835 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2836 | #ifdef cl_khr_fp16 | ||
2837 | int __ovld __cnfn isnan(half); | ||
2838 | short2 __ovld __cnfn isnan(half2); | ||
2839 | @@ -10871,14 +10884,14 @@ int3 __ovld __cnfn isnormal(float3); | ||
2840 | int4 __ovld __cnfn isnormal(float4); | ||
2841 | int8 __ovld __cnfn isnormal(float8); | ||
2842 | int16 __ovld __cnfn isnormal(float16); | ||
2843 | -#ifdef cl_khr_fp64 | ||
2844 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2845 | int __ovld __cnfn isnormal(double); | ||
2846 | long2 __ovld __cnfn isnormal(double2); | ||
2847 | long3 __ovld __cnfn isnormal(double3); | ||
2848 | long4 __ovld __cnfn isnormal(double4); | ||
2849 | long8 __ovld __cnfn isnormal(double8); | ||
2850 | long16 __ovld __cnfn isnormal(double16); | ||
2851 | -#endif //cl_khr_fp64 | ||
2852 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2853 | #ifdef cl_khr_fp16 | ||
2854 | int __ovld __cnfn isnormal(half); | ||
2855 | short2 __ovld __cnfn isnormal(half2); | ||
2856 | @@ -10899,14 +10912,14 @@ int3 __ovld __cnfn isordered(float3 x, float3 y); | ||
2857 | int4 __ovld __cnfn isordered(float4 x, float4 y); | ||
2858 | int8 __ovld __cnfn isordered(float8 x, float8 y); | ||
2859 | int16 __ovld __cnfn isordered(float16 x, float16 y); | ||
2860 | -#ifdef cl_khr_fp64 | ||
2861 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2862 | int __ovld __cnfn isordered(double x, double y); | ||
2863 | long2 __ovld __cnfn isordered(double2 x, double2 y); | ||
2864 | long3 __ovld __cnfn isordered(double3 x, double3 y); | ||
2865 | long4 __ovld __cnfn isordered(double4 x, double4 y); | ||
2866 | long8 __ovld __cnfn isordered(double8 x, double8 y); | ||
2867 | long16 __ovld __cnfn isordered(double16 x, double16 y); | ||
2868 | -#endif //cl_khr_fp64 | ||
2869 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2870 | #ifdef cl_khr_fp16 | ||
2871 | int __ovld __cnfn isordered(half x, half y); | ||
2872 | short2 __ovld __cnfn isordered(half2 x, half2 y); | ||
2873 | @@ -10927,14 +10940,14 @@ int3 __ovld __cnfn isunordered(float3 x, float3 y); | ||
2874 | int4 __ovld __cnfn isunordered(float4 x, float4 y); | ||
2875 | int8 __ovld __cnfn isunordered(float8 x, float8 y); | ||
2876 | int16 __ovld __cnfn isunordered(float16 x, float16 y); | ||
2877 | -#ifdef cl_khr_fp64 | ||
2878 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2879 | int __ovld __cnfn isunordered(double x, double y); | ||
2880 | long2 __ovld __cnfn isunordered(double2 x, double2 y); | ||
2881 | long3 __ovld __cnfn isunordered(double3 x, double3 y); | ||
2882 | long4 __ovld __cnfn isunordered(double4 x, double4 y); | ||
2883 | long8 __ovld __cnfn isunordered(double8 x, double8 y); | ||
2884 | long16 __ovld __cnfn isunordered(double16 x, double16 y); | ||
2885 | -#endif //cl_khr_fp64 | ||
2886 | +#endif // defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2887 | #ifdef cl_khr_fp16 | ||
2888 | int __ovld __cnfn isunordered(half x, half y); | ||
2889 | short2 __ovld __cnfn isunordered(half2 x, half2 y); | ||
2890 | @@ -10957,14 +10970,14 @@ int3 __ovld __cnfn signbit(float3); | ||
2891 | int4 __ovld __cnfn signbit(float4); | ||
2892 | int8 __ovld __cnfn signbit(float8); | ||
2893 | int16 __ovld __cnfn signbit(float16); | ||
2894 | -#ifdef cl_khr_fp64 | ||
2895 | +#if defined(cl_khr_fp64) || defined(__opencl_c_fp64) | ||
2896 | int __ovld __cnfn signbit(double); | ||
2897 | long2 __ovld __cnfn signbit(double2); | ||
2898 | long3 __ovld __cnfn signbit(double3); | ||
2899 | long4 __ovld __cnfn signbit(double4); | ||