[PATCH] D20602: Add .rgba syntax extension to ext_vector_type types

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Wed May 25 15:07:56 PDT 2016


On Wed, May 25, 2016 at 2:20 PM, Aleksey Bader <aleksey.bader at mail.ru>
wrote:

> On Wed, May 25, 2016 at 11:53 PM, Richard Smith <richard at metafoo.co.uk>
> wrote:
>
>> On Wed, May 25, 2016 at 2:20 AM, Alexey Bader via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> bader added a subscriber: bader.
>>> bader added a comment.
>>>
>>> In http://reviews.llvm.org/D20602#438667, @rsmith wrote:
>>>
>>> > I'm not suggesting it be treated as invalid. This extension is part of
>>> at least OpenCL 2.1, but it's not part of OpenCL 1.0. `ext_vector_type` is
>>> Clang's implementation of the OpenCL vector type. Therefore if the user
>>> asks us to support OpenCL 1.0, we should give them a warning if they use
>>> this syntax.
>>> >
>>> > If we're not building an OpenCL source file, then yes, this is our
>>> extension and it makes sense for it to be available unconditionally
>>> (without a warning).
>>>
>>>
>>> To avoid confusion, I'd like to note that rgba selector was first
>>> introduced in OpenCL C++ kernel language, which is currently in provisional
>>> state and will be part of OpenCL version 2.2.
>>> https://www.khronos.org/registry/cl/specs/opencl-2.2-cplusplus.pdf
>>> (page 18).
>>>
>>
>> https://www.khronos.org/registry/cl/specs/opencl-2.1-openclc++.pdf page
>> 12-13 document it. Is that not OpenCL version 2.1?
>>
>>
>
> Not quite. OpenCL C++ kernel language was planned to be ratified with
> OpenCL 2.1 standard, but it did happen.
> It's still listed as provisional although OpenCL 2.1 specification was
> released last year. https://www.khronos.org/opencl/
> Ratified OpenCL 2.1 standard requires to support only OpenCL C 2.0 and
> SPIR-V 1.0 kernel languages.
> There is no much sense to support provisional specification that will
> never be ratified.
>

Thanks for the explanation.

It seems to me that the right way to handle this is the same way we'd
handle any feature that's part of an upcoming language standard:
 - add a flag to enable the OpenCL 2.2 language mode
 - if an OpenCL compilation uses this extension and doesn't specify that
version or newer, produce an `ExtWarn`

BTW, Khronos provided open source implementation of OpenCL C++ compiler and
> since OpenCL C++ is a new kernel language and specification (
> https://www.khronos.org/registry/cl/specs/opencl-2.2-cplusplus.pdf) is
> version 1.0, the numbering of standard versions is different from OpenCL C.
> Current std version is 'c++'.
> Here is usage example:
> https://github.com/KhronosGroup/SPIR/blob/spirv-1.1/test/OpenCL/OpenCL22/opencl_cplusplus.cl
>

That's a really weird way to specify a version number.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160525/3aed3334/attachment.html>


More information about the cfe-commits mailing list