@@ -46,6 +46,8 @@ sections with improvements to Clang's support for those languages.
46
46
Major New Features
47
47
------------------
48
48
49
+ - Experimental support for :ref: `C++ for OpenCL <openclcpp >` has been
50
+ added.
49
51
- ...
50
52
51
53
Improvements to Clang's diagnostics
@@ -133,6 +135,14 @@ C11 Feature Support
133
135
C++ Language Changes in Clang
134
136
-----------------------------
135
137
138
+ - Support for the address space attribute in various C++ features was improved,
139
+ refer to :ref: `C++ for OpenCL <openclcpp >` for more details. The following
140
+ features deviated from OpenCL:
141
+
142
+ (1) Address spaces as method qualifiers are not accepted yet;
143
+
144
+ (2) There is no address space deduction.
145
+
136
146
- ...
137
147
138
148
C++1z Feature Support
@@ -152,10 +162,87 @@ Objective-C Language Changes in Clang
152
162
// clang used to encode this as "^{NSArray=#}" instead of "@".
153
163
const char *s0 = @encode (MyArray *);
154
164
155
- OpenCL C Language Changes in Clang
156
- ----------------------------------
165
+ OpenCL Kernel Language Changes in Clang
166
+ ---------------------------------------
157
167
158
- ...
168
+ OpenCL C
169
+ ^^^^^^^^
170
+
171
+ - Enabled use of variadic macro as a Clang extension.
172
+
173
+ - Added initial support for implicitly including OpenCL builtin
174
+ fuctions using efficient trie lookup generated by TableGen.
175
+ A corresponding frontend-only flag ``-fdeclare-opencl-builtins ``
176
+ has been added to enable trie during parsing.
177
+
178
+ - Refactored header file to be used for common parts between
179
+ regular header added using ``-finclude-default-header `` and trie
180
+ based declarations added using ``-fdeclare-opencl-builtins ``.
181
+
182
+ - Improved string formatting diagnostics in printf for vector types.
183
+
184
+ - Simplified the internal representation of blocks, including their
185
+ generation in IR. Furthermore, indirect calls to block function
186
+ has been changed to direct function calls.
187
+
188
+ - Added diagnostics for conversions of nested pointers with
189
+ different address spaces.
190
+
191
+ - Added ``cl_arm_integer_dot_product `` extension.
192
+
193
+ - Fixed global samplers in OpenCL v2.0.
194
+
195
+ - Improved math builtin functions with parameters of type ``long
196
+ long `` for x86.
197
+
198
+ .. _openclcpp :
199
+
200
+ C++ for OpenCL
201
+ ^^^^^^^^^^^^^^
202
+
203
+ Experimental support for C++17 features in OpenCL has been added
204
+ and backwards compatibility with OpenCL C v2.0 was enabled.
205
+ The documentation has been added for supported language features
206
+ into :doc: `LanguageExtensions ` and :doc: `UsersManual `.
207
+
208
+ Implemented features are:
209
+
210
+ - Address space behavior is improved in majority of C++ features:
211
+
212
+ - Templates parameters and arguments;
213
+
214
+ - Reference types;
215
+
216
+ - Type deduction;
217
+
218
+ - Objects and member functions, including special member
219
+ functions;
220
+
221
+ - Builtin operators;
222
+
223
+ - Method qualifiers now include address space;
224
+
225
+ - Address space deduction has been extended for C++ use cases;
226
+
227
+ - Improved overload ranking rules;
228
+
229
+ - All standard cast operators now prevent converting address
230
+ spaces (except for conversions allowed implicitly). They
231
+ can still be cast using C-style cast.
232
+
233
+ - Vector types as in OpenCL C, including compound vector
234
+ initialization.
235
+
236
+ - OpenCL-specific types: images, samplers, events, pipes, are
237
+ accepted. Note that blocks are not supported yet.
238
+
239
+ - OpenCL standard header in Clang can be compiled in C++ mode.
240
+
241
+ - Global constructors can be invoked from the host side using
242
+ a specific, compiler-generated kernel.
243
+
244
+ - Overloads with generic address space are added to all atomic
245
+ builtin functions, including the ones prior to OpenCL v2.0.
159
246
160
247
ABI Changes in Clang
161
248
--------------------
0 commit comments