Index: docs/ReleaseNotes.rst =================================================================== --- docs/ReleaseNotes.rst +++ docs/ReleaseNotes.rst @@ -46,6 +46,8 @@ Major New Features ------------------ +- Full experimental support of :ref:`C++ for OpenCL ` has + been added. - ... Improvements to Clang's diagnostics @@ -133,6 +135,14 @@ C++ Language Changes in Clang ----------------------------- +- Support of address space attribute in various C++ features was improved, refer + to :ref:`C++ for OpenCL ` for more details). The following features + deviated from OpenCL: + + (1) address spaces as method qualifiers are not accepted yet; + + (2) There is no address space deduction. + - ... C++1z Feature Support @@ -152,10 +162,84 @@ // clang used to encode this as "^{NSArray=#}" instead of "@". const char *s0 = @encode(MyArray *); -OpenCL C Language Changes in Clang ----------------------------------- +OpenCL Kernel Language Changes in Clang +--------------------------------------- + +OpenCL C +^^^^^^^^ + +- Enabled use of variadic macro as a Clang extension. + +- Added initial support for implicitly including OpenCL BIFs using + efficient trie lookup generated by TableGen. A corresponding + frontend only flag ``-fadd-opencl-builtins`` has been added to + enable trie during parsing. + +- Refactored header file to be used for common parts between + regular header and TableGen trie. + +- Improved string formatting diagnostics in printf for vector types. + +- Simplified representation of blocks including their generation in + IR i.e. indirect calls to block function has been changed to + direct function calls. + +- Added diagnostics for conversions of nested pointers with + different address spaces. + +- Added ``cl_arm_integer_dot_product`` extension. + +- Fixed global samplers in OpenCL v2.0. + +- Improved math builtin function of long long for x86. + +.. _openclcpp: + +C++ for OpenCL +^^^^^^^^^^^^^^ + +Full experimental support for C++17 features in OpenCL has been +added and backwards compatibility to OpenCL C v2.0 was enabled. +The documentation has been added for supported language features +into :doc:`LanguageExtensions` and :doc:`UsersManual`. + +Implemented features are: +- Address space behavior is improved in majority of C++ features: + +- Templates parameters and arguments + + - Reference types; + + - Type deduction; + + - Objects and member functions including special member + functions; + + - Builtin operators; + + - Method qualifiers are allowed with address spaces; + + - Address space deduction has been extended for C++ use cases; + + - Improved overload ranking rules. + + - Cast operators are now preventing to converting address + spaces. They can still be cast using C style cast. + +- Vector types as in OpenCL C including compound vector + initialization. + +- OpenCL specific type: images, samplers, events, pipes, except + for blocks. + +- OpenCL standard header in Clang can be compiled in C++ mode. + +- Global constructor stab is made an executable kernel to allow + invoking it from the host side. + +- Overloads with generic address space are added to all atomics + including the ones from prior to OpenCL v2.0. -... ABI Changes in Clang --------------------