[cfe-dev] OpenCL & SPIR specific types - proposal and patch
Tanya Lattner
lattner at apple.com
Thu Oct 4 15:55:17 PDT 2012
I already responded about sampler briefly, but I'm not in favor of making sampler a pointer to an opaque type. I have more comments, but I need more than a day to write them up.
-Tanya
On Oct 4, 2012, at 3:52 PM, "Ouriel, Boaz" <boaz.ouriel at intel.com> wrote:
> Hi Doug & Tanya,
>
> Could you please have a look at this patch?
> (see the description below as sent by Guy Benyei)
>
> Thanks in advance,
> Boaz
>
> -----Original Message-----
> From: Anton Lokhmotov [mailto:Anton.Lokhmotov at arm.com]
> Sent: Thursday, October 04, 2012 17:37
> To: Benyei, Guy; cfe-dev at cs.uiuc.edu
> Cc: Villmow, Micah; Ouriel, Boaz
> Subject: RE: OpenCL & SPIR specific types - proposal and patch
>
> Hi Guy,
>
> Basically, the patch looks good (after a quick look). Please find our
> initial comments below.
>
> Look forward to seeing more code for various restrictions on these data
> types. We can help you there if needed.
>
> Many thanks,
> Anton.
>
>
> + CanQualType Image1dTTy, Image1dArrayTTy, Image1dBufferTTy;
> + CanQualType Image2dTTy, Image2dArrayTTy, Image3dTTy;
>
> Please move Image3dTTy to a separate line for consistency.
>
>
> +inline bool Type::isImageType() const {
> + return isImage1dT() || isImage1dArrayT() || isImage1dBufferT() ||
> + isImage2dT() || isImage2dArrayT() ||
> + isImage3dT();
> +}
>
> Start the check with 3d and 2d types (this will benefit OpenCL 1.1
> compilers):
>
> return isImage3dT() || isImage2dT() || isImage2dArrayT() ||
> isImage1dT() || isImage1dArrayT() || isImage1dBufferT();
>
>
> --- include/clang/Sema/DeclSpec.h (revision 165097)
> +++ include/clang/Sema/DeclSpec.h (working copy)
> // type-qualifiers
> @@ -306,7 +314,7 @@
> /*TSW*/unsigned TypeSpecWidth : 2;
> /*TSC*/unsigned TypeSpecComplex : 2;
> /*TSS*/unsigned TypeSpecSign : 2;
> - /*TST*/unsigned TypeSpecType : 5;
> + /*TST*/unsigned TypeSpecType : 6;
>
> We suspect that in addition to this change you also need to change:
>
> --- a/include/clang/Basic/Specifiers.h
> +++ b/include/clang/Basic/Specifiers.h
> @@ -72,7 +72,7 @@ namespace clang {
> /// \brief Structure that packs information about the type specifiers
> that
> /// were written in a particular type specifier sequence.
> struct WrittenBuiltinSpecs {
> - /*DeclSpec::TST*/ unsigned Type : 5;
> + /*DeclSpec::TST*/ unsigned Type : 6;
> /*DeclSpec::TSS*/ unsigned Sign : 2;
> /*DeclSpec::TSW*/ unsigned Width : 2;
> bool ModeAttr : 1;
>
>
> + Width = Target->getPointerWidth(0); // Currently these types are
> pointers
> + Align = Target->getPointerAlign(0); // to opaque types
> Width = Target->getPointerWidth(0); // Currently these types are
> Align = Target->getPointerAlign(0); // pointers to opaque types.
>
>
> + case tok::kw_image1d_t:
> + isInvalid = DS.SetTypeSpecType(DeclSpec::TST_image1d_t, Loc,
> + PrevSpec, DiagID);
> + break;
> Please check indentation after this code. Sometimes there's an extra space
> after 'Loc,'.
>
> + isInvalid = DS.SetTypeSpecType(DeclSpec::TST_image3d_t, Loc,
> + PrevSpec, DiagID);
> PrevSpec is misaligned.
>
>
>
>
> From: Benyei, Guy [mailto:guy.benyei at intel.com]
> Sent: 03 October 2012 16:06
> To: cfe-dev at cs.uiuc.edu
> Cc: Villmow, Micah; Anton Lokhmotov; Ouriel, Boaz
> Subject: OpenCL & SPIR specific types - proposal and patch
>
> I'd like to renew the discussion about making the OpenCL specific types
> first class citizens in Clang.
>
> I think this change is required by the OpenCL specifications, since these
> type names are keywords of the OpenCL C language.
> This change is also needed in order to enable efficient checking of OpenCL
> restrictions on these types (OpenCL 1.2 spec, section 6.9).
> Furthermore, the proposed change will turn these types to pointers to opaque
> types, which means that it will hide the actual (vendor specific)
> implementation, so the OpenCL vendors using Clang will be able to implement
> these types in their own way.
>
> This change would also be a basis for the implementation of SPIR generation
> by Clang. The SPIR discussion and spec can be found here:
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-September/024132.html
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-September/024178.html
>
> Earlier discussion about the OpenCL types was started by Anton Lokhmotov:
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-May/015297.html
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-April/014741.html
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-March/014118.html
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-March/014121.html
>
>
>
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
> <opencl_types.patch>
More information about the cfe-dev
mailing list