<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hi, all!</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<div><br>
</div>
<div>As OpenCL C 3.0 is getting support in clang there is a wish to expand C++ for
</div>
<div>OpenCL to be compatible with OpenCL 3.0 as well. Being able to support OpenCL</div>
<div>3.0 is important in making C++ for OpenCL a viable option for as many platforms</div>
<div>as possible.</div>
<div><br>
</div>
<div>Arm is therefore proposing adding a new version of C++ for OpenCL which will</div>
<div>add support for OpenCL 3.0. This version will aim to be backwards compatible</div>
<div>with OpenCL C 3.0. This will involve a new language version of C++ for OpenCL,</div>
<div>currently called C++ for OpenCL 2021 in the draft of the new documentation [1].</div>
<div><br>
</div>
<div>----- Implementation Details -----</div>
<div><br>
</div>
<div>As the biggest changes in OpenCL 3.0 are making some 2.0 features optional, and
</div>
<div>a lot of work as already been done in clang to support OpenCL C 3.0 [2] there</div>
<div>shouldn't be a need for any big conceptual changes in clang as a result of this</div>
<div>work. Our hope is to reuse the work done for OpenCL C 3.0 and apply similar</div>
<div>logic to C++ mode.</div>
<div><br>
</div>
<div>Most of the work is expected to be related to making the 'generic' address space</div>
<div>optional. Currently this address space is used for several implicitly generated</div>
<div>constructors and operators, so these will need to be adjusted. </div>
<div><br>
</div>
<div>This should still be able to leverage work done for OpenCL C 3.0. For example</div>
<div>this has already dealt with detecting when the 'generic' address space is</div>
<div>available. This can then be used to adjust the current C++ for OpenCL</div>
<div>implementation without requiring large scale changes.</div>
<div><br>
</div>
<div>----------------------------------</div>
<div><br>
</div>
<div>As mentioned, the linked documentation is only a draft and will be revised and
</div>
<div>finalized along with the implementation.</div>
<div><br>
</div>
<div>If you have any thoughts or comments, please make contact.</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Ole</div>
<div><br>
</div>
<div>[1] <a href="https://github.com/KhronosGroup/OpenCL-Docs/pull/616" id="LPlnk967299">
https://github.com/KhronosGroup/OpenCL-Docs/pull/616</a></div>
<span>[2] <a href="https://lists.llvm.org/pipermail/cfe-dev/2020-September/066883.html" id="LPlnk879678">
https://lists.llvm.org/pipermail/cfe-dev/2020-September/066883.html</a></span><br>
</div>
</body>
</html>