Sorry, that was my bad. I forgot to set my editor back to llvm indentation settings and it inserted tabs instead of spaces.
Line 1000 of SemaTypes is 79 characters long, which is the largest (longest) line in the patch. It is the same length of line 981 from where I copy-pasted the code (by your suggestion). Grep claims the attached patch has no tabs now :) On Wed, 17 Jun 2015 at 14:47 Anastasia Stulova <anastasia.stul...@arm.com> wrote: > I think there are still lines that are too long (especially in > SemaType.cpp). Have you run clang-format on your changes? > > > > Otherwise, no further comments from my side. > > > > Anastasia > > > > *From:* Pedro Ferreira [mailto:arkang...@gmail.com] > *Sent:* 15 June 2015 09:16 > *To:* Eric Christopher; Anastasia Stulova; cfe-commits@cs.uiuc.edu > > > *Subject:* Re: [PATCH] OpenCL: Add new types for OpenCL 2.0 > > > > There were a couple lines with > 80 columns, and this new patch version > fixes them. > > > > > > On Fri, 12 Jun 2015 at 21:03 Eric Christopher <echri...@gmail.com> wrote: > > Drive by review here. > > > > I was making sure there was debug info support for the bits, thanks for > adding it though I'm not seeing any tests ;) > > > > I'm pretty sure you have some 80-column violations and other formatting > things, could you clang-format your patch? > > > > Thanks! > > > > -eric > > On Fri, Jun 12, 2015 at 4:20 AM Pedro Ferreira <arkang...@gmail.com> > wrote: > > Awesome, thanks for the tips. > Updated version attached. > > > > Pedro > > > > On Thu, 11 Jun 2015 at 19:23 Anastasia Stulova <anastasia.stul...@arm.com> > wrote: > > CodeGen tests looks good! > > Regarding the extension, could you diagnose it during the type checking > instead. That way it will be cover all cases. You can look at the CL2.0 > atomic type implementation in SemaType.cpp ConvertDeclSpecToType. Also > please reuse the same error err_type_requires_extension instead of adding > the new one. Please, add Sema test demonstating the error handling works > correctly. > > Thanks, > Anastasia > ________________________________________ > From: Pedro Ferreira [arkang...@gmail.com] > Sent: Thursday, June 11, 2015 12:50 PM > To: Anastasia Stulova; cfe-commits@cs.uiuc.edu > Subject: Re: [PATCH] OpenCL: Add new types for OpenCL 2.0 > > Ok, found out the right place to diagnose the extension and added the > tests. > I am not particularly convinced that was the best way to do it; comments > welcome. > > Pedro > > On Thu, 11 Jun 2015 at 11:43 Pedro Ferreira <arkang...@gmail.com<mailto: > arkang...@gmail.com>> wrote: > Actually, I spoke too soon - I found a test with -cl-std=CL2.0. I missed > that. > > On Thu, 11 Jun 2015 at 11:40 Pedro Ferreira <arkang...@gmail.com<mailto: > arkang...@gmail.com>> wrote: > The codegen test would imply adding a -cl-std=2.0 option to Clang, which > it currently does not have. This is because the types should only be > recognised if the CL 2.0 standard is explicitly asked for (the default is > to operate on 1.2 mode). Adding that option is a peripheral issue. I've > added the types on the header test under the appropriate "#if defined" but > when I tried to do the same on the .cl file, I found out that the test > parser does not recognise the preprocessor macro and therefore was causing > the test to (incorrectly) fail. As such, I reverted the test. > > As for the AS for the other types, I copy-pasted the code from event_t. > That's the reason why I'm actually using the "0". Are you suggesting I > should change event_t to use something else, and by consequence the new > types too? That would be a separate issue. > My guess is that these types are allocated on the stack, which by llvm > convention will always be 0. > > The new types are used by new builtins. I don't think there are any other > special semantics to it. > > I've added extension checks on the MSAA types, but I'm not sure if this is > the right place. New patch attached. > > Pedro > > On Thu, 11 Jun 2015 at 10:33 Anastasia Stulova <anastasia.stul...@arm.com > <mailto:anastasia.stul...@arm.com>> wrote: > Hi Pedro, > > Could we also add a Codegen test? Also it would be better not to use > constant directly as address space as the mapping could ideally be changed. > Is there any reason why you generate pointers to private AS? > > Are there any operations allowed on new types? Any semantical checks > needed? > > If MSAA types are part of an extension and not a part of the general > standard we should ideally diagnose that extension is enabled when they are > being used. > > Regards, > Anastasia > ________________________________________ > From: cfe-commits-boun...@cs.uiuc.edu<mailto: > cfe-commits-boun...@cs.uiuc.edu> [cfe-commits-boun...@cs.uiuc.edu<mailto: > cfe-commits-boun...@cs.uiuc.edu>] On Behalf Of Pedro Ferreira [ > arkang...@gmail.com<mailto:arkang...@gmail.com>] > Sent: Thursday, June 11, 2015 8:18 AM > To: cfe-commits@cs.uiuc.edu<mailto:cfe-commits@cs.uiuc.edu> > Subject: [PATCH] OpenCL: Add new types for OpenCL 2.0 > > Hi all, > > This patch adds the new OpenCL types for 2.0 described at > https://www.khronos.org/registry/cl/sdk/2.0/docs/man/xhtml/otherDataTypes.html > <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.khronos.org_registry_cl_sdk_2.0_docs_man_xhtml_otherDataTypes.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=9Bdb39VF2l8sby_fS5dvbUnJSVMkbUEkua5v-UqAuGY&s=5Dqa4a6V-GRZkKn3l59ia5wJtJJzBqEjUrQlOV-8t-w&e=> > < > https://urldefense.proofpoint.com/v2/url?u=https-3A__www.khronos.org_registry_cl_sdk_2.0_docs_man_xhtml_otherDataTypes.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=42YnWExwxwpeU6GPDY2_3RFxCqQakUbj_CXZsMsQ2jU&s=REOBNoaDio7qDyIDCqmXhxFvZYjMOK6vuXAttjOVsNI&e= > > > I also opened https://llvm.org/bugs/show_bug.cgi?id=23794 > <https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23794&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=9Bdb39VF2l8sby_fS5dvbUnJSVMkbUEkua5v-UqAuGY&s=DaxUQk4vxUwKYs93ZTAVu1S6Hdg2CQ1J96KmGJWtfDg&e=> > < > https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23794&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=42YnWExwxwpeU6GPDY2_3RFxCqQakUbj_CXZsMsQ2jU&s=TAV4suAMaHgdIPA83Da3pQl7c68On7bAFWtnrUbt_Uk&e=> > for this. I keep forgetting you prefer patches sent to this mailing list. > This also adds lldb entries (fixes switch warnings). > > The types are: > > image2d_depth_t > image2d_array_depth_t > image2d_msaa_t > image2d_array_msaa_t > image2d_msaa_depth_t > image2d_array_msaa_depth_t > queue_t > ndrange_t > clk_event_t > reserve_id_t > > let me know if something looks wrong, > Pedro > > -- IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > > ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2557590 > ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2548782 > > > -- IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > > ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2557590 > ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, > Registered in England & Wales, Company No: 2548782 > > _______________________________________________ > cfe-commits mailing list > cfe-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >
Index: include/clang/AST/ASTContext.h =================================================================== --- include/clang/AST/ASTContext.h (revision 239721) +++ include/clang/AST/ASTContext.h (working copy) @@ -829,9 +829,12 @@ CanQualType ObjCBuiltinIdTy, ObjCBuiltinClassTy, ObjCBuiltinSelTy; CanQualType ObjCBuiltinBoolTy; CanQualType OCLImage1dTy, OCLImage1dArrayTy, OCLImage1dBufferTy; - CanQualType OCLImage2dTy, OCLImage2dArrayTy; + CanQualType OCLImage2dTy, OCLImage2dArrayTy, OCLImage2dDepthTy; + CanQualType OCLImage2dArrayDepthTy, OCLImage2dMSAATy, OCLImage2dArrayMSAATy; + CanQualType OCLImage2dMSAADepthTy, OCLImage2dArrayMSAADepthTy; CanQualType OCLImage3dTy; - CanQualType OCLSamplerTy, OCLEventTy; + CanQualType OCLSamplerTy, OCLEventTy, OCLClkEventTy; + CanQualType OCLQueueTy, OCLNDRangeTy, OCLReserveIDTy; // Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand. mutable QualType AutoDeductTy; // Deduction against 'auto'. Index: include/clang/AST/BuiltinTypes.def =================================================================== --- include/clang/AST/BuiltinTypes.def (revision 239721) +++ include/clang/AST/BuiltinTypes.def (working copy) @@ -160,6 +160,12 @@ BUILTIN_TYPE(OCLImage1dBuffer, OCLImage1dBufferTy) BUILTIN_TYPE(OCLImage2d, OCLImage2dTy) BUILTIN_TYPE(OCLImage2dArray, OCLImage2dArrayTy) +BUILTIN_TYPE(OCLImage2dDepth, OCLImage2dDepthTy) +BUILTIN_TYPE(OCLImage2dArrayDepth, OCLImage2dArrayDepthTy) +BUILTIN_TYPE(OCLImage2dMSAA, OCLImage2dMSAATy) +BUILTIN_TYPE(OCLImage2dArrayMSAA, OCLImage2dArrayMSAATy) +BUILTIN_TYPE(OCLImage2dMSAADepth, OCLImage2dMSAADepthTy) +BUILTIN_TYPE(OCLImage2dArrayMSAADepth, OCLImage2dArrayMSAADepthTy) BUILTIN_TYPE(OCLImage3d, OCLImage3dTy) // OpenCL sampler_t. @@ -168,6 +174,18 @@ // OpenCL event_t. BUILTIN_TYPE(OCLEvent, OCLEventTy) +// OpenCL clk_event_t. +BUILTIN_TYPE(OCLClkEvent, OCLClkEventTy) + +// OpenCL queue_t. +BUILTIN_TYPE(OCLQueue, OCLQueueTy) + +// OpenCL ndrange_t. +BUILTIN_TYPE(OCLNDRange, OCLNDRangeTy) + +// OpenCL reserve_id_t. +BUILTIN_TYPE(OCLReserveID, OCLReserveIDTy) + // This represents the type of an expression whose type is // totally unknown, e.g. 'T::foo'. It is permitted for this to // appear in situations where the structure of the type is Index: include/clang/AST/Type.h =================================================================== --- include/clang/AST/Type.h (revision 239721) +++ include/clang/AST/Type.h (working copy) @@ -1598,6 +1598,12 @@ bool isImage1dBufferT() const; // OpenCL image1d_buffer_t bool isImage2dT() const; // OpenCL image2d_t bool isImage2dArrayT() const; // OpenCL image2d_array_t + bool isImage2dDepthT() const; // Opencl image_2d_depth_t + bool isImage2dArrayDepthT() const; // Opencl image_2d_array_depth_t + bool isImage2dMSAAT() const; // Opencl image_2d_msaa_t + bool isImage2dArrayMSAAT() const; // Opencl image_2d_array_msaa_t + bool isImage2dMSAATDepth() const; // Opencl image_2d_msaa_depth_t + bool isImage2dArrayMSAATDepth() const; // Opencl image_2d_array_msaa_depth_t bool isImage3dT() const; // OpenCL image3d_t bool isImageType() const; // Any OpenCL image type @@ -1604,6 +1610,10 @@ bool isSamplerT() const; // OpenCL sampler_t bool isEventT() const; // OpenCL event_t + bool isClkEventT() const; // OpenCL clk_event_t + bool isQueueT() const; // OpenCL queue_t + bool isNDRangeT() const; // OpenCL ndrange_t + bool isReserveIDT() const; // OpenCL reserve_id_t bool isOpenCLSpecificType() const; // Any OpenCL specific type @@ -5064,6 +5074,30 @@ return isSpecificBuiltinType(BuiltinType::OCLImage2dArray); } +inline bool Type::isImage2dDepthT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dDepth); +} + +inline bool Type::isImage2dArrayDepthT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dArrayDepth); +} + +inline bool Type::isImage2dMSAAT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dMSAA); +} + +inline bool Type::isImage2dArrayMSAAT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dArrayMSAA); +} + +inline bool Type::isImage2dMSAATDepth() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dMSAADepth); +} + +inline bool Type::isImage2dArrayMSAATDepth() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dArrayMSAADepth); +} + inline bool Type::isImage3dT() const { return isSpecificBuiltinType(BuiltinType::OCLImage3d); } @@ -5076,14 +5110,35 @@ return isSpecificBuiltinType(BuiltinType::OCLEvent); } +inline bool Type::isClkEventT() const { + return isSpecificBuiltinType(BuiltinType::OCLClkEvent); +} + +inline bool Type::isQueueT() const { + return isSpecificBuiltinType(BuiltinType::OCLQueue); +} + +inline bool Type::isNDRangeT() const { + return isSpecificBuiltinType(BuiltinType::OCLNDRange); +} + +inline bool Type::isReserveIDT() const { + return isSpecificBuiltinType(BuiltinType::OCLReserveID); +} + inline bool Type::isImageType() const { return isImage3dT() || - isImage2dT() || isImage2dArrayT() || + isImage2dT() || isImage2dArrayT() || isImage2dDepthT() || + isImage2dArrayDepthT() || isImage2dMSAAT() || + isImage2dArrayMSAAT() || isImage2dMSAATDepth() || + isImage2dArrayMSAATDepth() || isImage1dT() || isImage1dArrayT() || isImage1dBufferT(); } inline bool Type::isOpenCLSpecificType() const { - return isSamplerT() || isEventT() || isImageType(); + return isSamplerT() || isEventT() || isImageType() || + isClkEventT() || isQueueT() || isNDRangeT() || + isReserveIDT(); } inline bool Type::isTemplateTypeParmType() const { Index: include/clang/Basic/OpenCLExtensions.def =================================================================== --- include/clang/Basic/OpenCLExtensions.def (revision 239721) +++ include/clang/Basic/OpenCLExtensions.def (working copy) @@ -26,6 +26,9 @@ OPENCLEXT(cl_khr_byte_addressable_store) OPENCLEXT(cl_khr_3d_image_writes) +// OpenCL 2.0 +OPENCLEXT(cl_khr_gl_msaa_sharing) + // Clang Extensions. OPENCLEXT(cl_clang_storage_class_specifiers) Index: include/clang/Serialization/ASTBitCodes.h =================================================================== --- include/clang/Serialization/ASTBitCodes.h (revision 239721) +++ include/clang/Serialization/ASTBitCodes.h (working copy) @@ -769,15 +769,35 @@ /// \brief OpenCL 1d image buffer type. PREDEF_TYPE_IMAGE1D_BUFF_ID = 40, /// \brief OpenCL 2d image type. - PREDEF_TYPE_IMAGE2D_ID = 41, + PREDEF_TYPE_IMAGE2D_ID = 41, /// \brief OpenCL 2d image array type. PREDEF_TYPE_IMAGE2D_ARR_ID = 42, + /// \brief OpenCL 2d image depth type. + PREDEF_TYPE_IMAGE2D_DEP_ID = 43, + /// \brief OpenCL 2d image array depth type. + PREDEF_TYPE_IMAGE2D_ARR_DEP_ID = 44, + /// \brief OpenCL 2d image MSAA type. + PREDEF_TYPE_IMAGE2D_MSAA_ID = 45, + /// \brief OpenCL 2d image array MSAA type. + PREDEF_TYPE_IMAGE2D_ARR_MSAA_ID = 46, + /// \brief OpenCL 2d image MSAA depth type. + PREDEF_TYPE_IMAGE2D_MSAA_DEP_ID = 47, + /// \brief OpenCL 2d image array MSAA depth type. + PREDEF_TYPE_IMAGE2D_ARR_MSAA_DEPTH_ID = 48, /// \brief OpenCL 3d image type. - PREDEF_TYPE_IMAGE3D_ID = 43, + PREDEF_TYPE_IMAGE3D_ID = 49, /// \brief OpenCL event type. - PREDEF_TYPE_EVENT_ID = 44, + PREDEF_TYPE_EVENT_ID = 50, + /// \brief OpenCL clk event type. + PREDEF_TYPE_CLK_EVENT_ID = 51, /// \brief OpenCL sampler type. - PREDEF_TYPE_SAMPLER_ID = 45 + PREDEF_TYPE_SAMPLER_ID = 52, + /// \brief OpenCL queue type. + PREDEF_TYPE_QUEUE_ID = 53, + /// \brief OpenCL ndrange type. + PREDEF_TYPE_NDRANGE_ID = 54, + /// \brief OpenCL reserve_id type. + PREDEF_TYPE_RESERVE_ID_ID = 55 }; /// \brief The number of predefined type IDs that are reserved for Index: lib/AST/ASTContext.cpp =================================================================== --- lib/AST/ASTContext.cpp (revision 239721) +++ lib/AST/ASTContext.cpp (working copy) @@ -1059,10 +1059,21 @@ InitBuiltinType(OCLImage1dBufferTy, BuiltinType::OCLImage1dBuffer); InitBuiltinType(OCLImage2dTy, BuiltinType::OCLImage2d); InitBuiltinType(OCLImage2dArrayTy, BuiltinType::OCLImage2dArray); + InitBuiltinType(OCLImage2dDepthTy, BuiltinType::OCLImage2dDepth); + InitBuiltinType(OCLImage2dArrayDepthTy, BuiltinType::OCLImage2dArrayDepth); + InitBuiltinType(OCLImage2dMSAATy, BuiltinType::OCLImage2dMSAA); + InitBuiltinType(OCLImage2dArrayMSAATy, BuiltinType::OCLImage2dArrayMSAA); + InitBuiltinType(OCLImage2dMSAADepthTy, BuiltinType::OCLImage2dMSAADepth); + InitBuiltinType(OCLImage2dArrayMSAADepthTy, + BuiltinType::OCLImage2dArrayMSAADepth); InitBuiltinType(OCLImage3dTy, BuiltinType::OCLImage3d); InitBuiltinType(OCLSamplerTy, BuiltinType::OCLSampler); InitBuiltinType(OCLEventTy, BuiltinType::OCLEvent); + InitBuiltinType(OCLClkEventTy, BuiltinType::OCLClkEvent); + InitBuiltinType(OCLQueueTy, BuiltinType::OCLQueue); + InitBuiltinType(OCLNDRangeTy, BuiltinType::OCLNDRange); + InitBuiltinType(OCLReserveIDTy, BuiltinType::OCLReserveID); } // Builtin type for __objc_yes and __objc_no @@ -1629,11 +1640,21 @@ Align = Target->getIntAlign(); break; case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::OCLImage1d: case BuiltinType::OCLImage1dArray: case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: // Currently these types are pointers to opaque types. Width = Target->getPointerWidth(0); @@ -5303,8 +5324,18 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::OCLSampler: case BuiltinType::Dependent: #define BUILTIN_TYPE(KIND, ID) Index: lib/AST/ItaniumMangle.cpp =================================================================== --- lib/AST/ItaniumMangle.cpp (revision 239721) +++ lib/AST/ItaniumMangle.cpp (working copy) @@ -2031,9 +2031,23 @@ case BuiltinType::OCLImage1dBuffer: Out << "17ocl_image1dbuffer"; break; case BuiltinType::OCLImage2d: Out << "11ocl_image2d"; break; case BuiltinType::OCLImage2dArray: Out << "16ocl_image2darray"; break; + case BuiltinType::OCLImage2dDepth: Out << "16ocl_image2ddepth"; break; + case BuiltinType::OCLImage2dArrayDepth: + Out << "21ocl_image2darraydepth"; + break; + case BuiltinType::OCLImage2dMSAA: Out << "15ocl_image2dmsaa"; break; + case BuiltinType::OCLImage2dArrayMSAA: Out << "20ocl_image2darraymsaa"; break; + case BuiltinType::OCLImage2dMSAADepth: Out << "20ocl_image2dmsaadepth"; break; + case BuiltinType::OCLImage2dArrayMSAADepth: + Out << "35ocl_image2darraymsaadepth"; + break; case BuiltinType::OCLImage3d: Out << "11ocl_image3d"; break; case BuiltinType::OCLSampler: Out << "11ocl_sampler"; break; case BuiltinType::OCLEvent: Out << "9ocl_event"; break; + case BuiltinType::OCLClkEvent: Out << "12ocl_clkevent"; break; + case BuiltinType::OCLQueue: Out << "9ocl_queue"; break; + case BuiltinType::OCLNDRange: Out << "11ocl_ndrange"; break; + case BuiltinType::OCLReserveID: Out << "13ocl_reserveid"; break; } } Index: lib/AST/MicrosoftMangle.cpp =================================================================== --- lib/AST/MicrosoftMangle.cpp (revision 239721) +++ lib/AST/MicrosoftMangle.cpp (working copy) @@ -1564,9 +1564,27 @@ case BuiltinType::OCLImage1dBuffer: Out << "PAUocl_image1dbuffer@@"; break; case BuiltinType::OCLImage2d: Out << "PAUocl_image2d@@"; break; case BuiltinType::OCLImage2dArray: Out << "PAUocl_image2darray@@"; break; + case BuiltinType::OCLImage2dDepth: Out << "PAUocl_image2ddepth@@"; break; + case BuiltinType::OCLImage2dArrayDepth: + Out << "PAUocl_image2darraydepth@@"; + break; + case BuiltinType::OCLImage2dMSAA: Out << "PAUocl_image2dmsaa@@"; break; + case BuiltinType::OCLImage2dArrayMSAA: + Out << "PAUocl_image2darraymsaa@@"; + break; + case BuiltinType::OCLImage2dMSAADepth: + Out << "PAUocl_image2dmsaadepth@@"; + break; + case BuiltinType::OCLImage2dArrayMSAADepth: + Out << "PAUocl_image2darraymsaadepth@@"; + break; case BuiltinType::OCLImage3d: Out << "PAUocl_image3d@@"; break; case BuiltinType::OCLSampler: Out << "PAUocl_sampler@@"; break; case BuiltinType::OCLEvent: Out << "PAUocl_event@@"; break; + case BuiltinType::OCLClkEvent: Out << "PAUocl_clkevent@@"; break; + case BuiltinType::OCLQueue: Out << "PAUocl_queue@@"; break; + case BuiltinType::OCLNDRange: Out << "PAUocl_ndrange@@"; break; + case BuiltinType::OCLReserveID: Out << "PAUocl_reserveid@@"; break; case BuiltinType::NullPtr: Out << "$$T"; break; Index: lib/AST/NSAPI.cpp =================================================================== --- lib/AST/NSAPI.cpp (revision 239721) +++ lib/AST/NSAPI.cpp (working copy) @@ -449,9 +449,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::BoundMember: case BuiltinType::Dependent: case BuiltinType::Overload: Index: lib/AST/Type.cpp =================================================================== --- lib/AST/Type.cpp (revision 239721) +++ lib/AST/Type.cpp (working copy) @@ -1543,9 +1543,19 @@ case OCLImage1dBuffer: return "image1d_buffer_t"; case OCLImage2d: return "image2d_t"; case OCLImage2dArray: return "image2d_array_t"; + case OCLImage2dDepth: return "image2d_depth_t"; + case OCLImage2dArrayDepth: return "image2d_array_depth_t"; + case OCLImage2dMSAA: return "image2d_msaa_t"; + case OCLImage2dArrayMSAA: return "image2d_array_msaa_t"; + case OCLImage2dMSAADepth: return "image2d_msaa_depth_t"; + case OCLImage2dArrayMSAADepth: return "image2d_array_msaa_depth_t"; case OCLImage3d: return "image3d_t"; case OCLSampler: return "sampler_t"; case OCLEvent: return "event_t"; + case OCLClkEvent: return "clk_event_t"; + case OCLQueue: return "queue_t"; + case OCLNDRange: return "event_t"; + case OCLReserveID: return "reserve_id_t"; } llvm_unreachable("Invalid builtin type."); Index: lib/AST/TypeLoc.cpp =================================================================== --- lib/AST/TypeLoc.cpp (revision 239721) +++ lib/AST/TypeLoc.cpp (working copy) @@ -296,9 +296,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::BuiltinFn: return TST_unspecified; } Index: lib/CodeGen/CGDebugInfo.cpp =================================================================== --- lib/CodeGen/CGDebugInfo.cpp (revision 239721) +++ lib/CodeGen/CGDebugInfo.cpp (working copy) @@ -453,6 +453,24 @@ case BuiltinType::OCLImage2dArray: return getOrCreateStructPtrType("opencl_image2d_array_t", OCLImage2dArrayDITy); + case BuiltinType::OCLImage2dDepth: + return getOrCreateStructPtrType("opencl_image2d_depth_t", + OCLImage2dDepthDITy); + case BuiltinType::OCLImage2dArrayDepth: + return getOrCreateStructPtrType("opencl_image2d_array_depth_t", + OCLImage2dArrayDepthDITy); + case BuiltinType::OCLImage2dMSAA: + return getOrCreateStructPtrType("opencl_image2d_msaa_t", + OCLImage2dMSAADITy); + case BuiltinType::OCLImage2dArrayMSAA: + return getOrCreateStructPtrType("opencl_image2d_array_msaa_t", + OCLImage2dArrayMSAADITy); + case BuiltinType::OCLImage2dMSAADepth: + return getOrCreateStructPtrType("opencl_image2d_msaa_depth_t", + OCLImage2dMSAADepthDITy); + case BuiltinType::OCLImage2dArrayMSAADepth: + return getOrCreateStructPtrType("opencl_image2d_array_msaa_depth_t", + OCLImage2dArrayMSAADepthDITy); case BuiltinType::OCLImage3d: return getOrCreateStructPtrType("opencl_image3d_t", OCLImage3dDITy); case BuiltinType::OCLSampler: @@ -461,6 +479,14 @@ CGM.getContext().getTypeAlign(BT), llvm::dwarf::DW_ATE_unsigned); case BuiltinType::OCLEvent: return getOrCreateStructPtrType("opencl_event_t", OCLEventDITy); + case BuiltinType::OCLClkEvent: + return getOrCreateStructPtrType("opencl_clk_event_t", OCLClkEventDITy); + case BuiltinType::OCLQueue: + return getOrCreateStructPtrType("opencl_queue_t", OCLQueueDITy); + case BuiltinType::OCLNDRange: + return getOrCreateStructPtrType("opencl_ndrange_t", OCLNDRangeDITy); + case BuiltinType::OCLReserveID: + return getOrCreateStructPtrType("opencl_reserve_id_t", OCLReserveIDDITy); case BuiltinType::UChar: case BuiltinType::Char_U: Index: lib/CodeGen/CGDebugInfo.h =================================================================== --- lib/CodeGen/CGDebugInfo.h (revision 239721) +++ lib/CodeGen/CGDebugInfo.h (working copy) @@ -63,8 +63,18 @@ llvm::DIType *OCLImage1dBufferDITy = nullptr; llvm::DIType *OCLImage2dDITy = nullptr; llvm::DIType *OCLImage2dArrayDITy = nullptr; + llvm::DIType *OCLImage2dDepthDITy = nullptr; + llvm::DIType *OCLImage2dArrayDepthDITy = nullptr; + llvm::DIType *OCLImage2dMSAADITy = nullptr; + llvm::DIType *OCLImage2dArrayMSAADITy = nullptr; + llvm::DIType *OCLImage2dMSAADepthDITy = nullptr; + llvm::DIType *OCLImage2dArrayMSAADepthDITy = nullptr; llvm::DIType *OCLImage3dDITy = nullptr; llvm::DIType *OCLEventDITy = nullptr; + llvm::DIType *OCLClkEventDITy = nullptr; + llvm::DIType *OCLQueueDITy = nullptr; + llvm::DIType *OCLNDRangeDITy = nullptr; + llvm::DIType *OCLReserveIDDITy = nullptr; llvm::DIType *BlockLiteralGeneric = nullptr; /// \brief Cache of previously constructed Types. Index: lib/CodeGen/CGOpenCLRuntime.cpp =================================================================== --- lib/CodeGen/CGOpenCLRuntime.cpp (revision 239721) +++ lib/CodeGen/CGOpenCLRuntime.cpp (working copy) @@ -55,6 +55,28 @@ case BuiltinType::OCLImage2dArray: return llvm::PointerType::get(llvm::StructType::create( Ctx, "opencl.image2d_array_t"), ImgAddrSpc); + case BuiltinType::OCLImage2dDepth: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.image2d_depth_t"), ImgAddrSpc); + case BuiltinType::OCLImage2dArrayDepth: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.image2d_array_depth_t"), + ImgAddrSpc); + case BuiltinType::OCLImage2dMSAA: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.image2d_msaa_t"), ImgAddrSpc); + case BuiltinType::OCLImage2dArrayMSAA: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.image2d_array_msaa_t"), + ImgAddrSpc); + case BuiltinType::OCLImage2dMSAADepth: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.image2d_msaa_depth_t"), + ImgAddrSpc); + case BuiltinType::OCLImage2dArrayMSAADepth: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.image2d_array_msaa_depth_t"), + ImgAddrSpc); case BuiltinType::OCLImage3d: return llvm::PointerType::get(llvm::StructType::create( Ctx, "opencl.image3d_t"), ImgAddrSpc); @@ -63,5 +85,17 @@ case BuiltinType::OCLEvent: return llvm::PointerType::get(llvm::StructType::create( Ctx, "opencl.event_t"), 0); + case BuiltinType::OCLClkEvent: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.clk_event_t"), 0); + case BuiltinType::OCLQueue: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.queue_t"), 0); + case BuiltinType::OCLNDRange: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.ndrange_t"), 0); + case BuiltinType::OCLReserveID: + return llvm::PointerType::get(llvm::StructType::create( + Ctx, "opencl.reserve_id_t"), 0); } } Index: lib/CodeGen/CodeGenTypes.cpp =================================================================== --- lib/CodeGen/CodeGenTypes.cpp (revision 239721) +++ lib/CodeGen/CodeGenTypes.cpp (working copy) @@ -387,9 +387,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: ResultType = CGM.getOpenCLRuntime().convertOpenCLSpecificType(Ty); break; Index: lib/CodeGen/ItaniumCXXABI.cpp =================================================================== --- lib/CodeGen/ItaniumCXXABI.cpp (revision 239721) +++ lib/CodeGen/ItaniumCXXABI.cpp (working copy) @@ -2341,9 +2341,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: return true; case BuiltinType::Dependent: Index: lib/Index/USRGeneration.cpp =================================================================== --- lib/Index/USRGeneration.cpp (revision 239721) +++ lib/Index/USRGeneration.cpp (working copy) @@ -613,8 +613,18 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::OCLSampler: IgnoreResults = true; return; Index: lib/Sema/Sema.cpp =================================================================== --- lib/Sema/Sema.cpp (revision 239721) +++ lib/Sema/Sema.cpp (working copy) @@ -214,6 +214,16 @@ addImplicitTypedef("sampler_t", Context.OCLSamplerTy); addImplicitTypedef("event_t", Context.OCLEventTy); if (getLangOpts().OpenCLVersion >= 200) { + addImplicitTypedef("image2d_depth_t", Context.OCLImage2dDepthTy); + addImplicitTypedef("image2d_array_depth_t", Context.OCLImage2dArrayDepthTy); + addImplicitTypedef("image2d_msaa_t", Context.OCLImage2dMSAATy); + addImplicitTypedef("image2d_array_msaa_t", Context.OCLImage2dArrayMSAATy); + addImplicitTypedef("image2d_msaa_depth_t", Context.OCLImage2dMSAADepthTy); + addImplicitTypedef("image2d_array_msaa_depth_t", Context.OCLImage2dArrayMSAADepthTy); + addImplicitTypedef("clk_event_t", Context.OCLClkEventTy); + addImplicitTypedef("queue_t", Context.OCLQueueTy); + addImplicitTypedef("ndrange_t", Context.OCLNDRangeTy); + addImplicitTypedef("reserve_id_t", Context.OCLReserveIDTy); addImplicitTypedef("atomic_int", Context.getAtomicType(Context.IntTy)); addImplicitTypedef("atomic_uint", Context.getAtomicType(Context.UnsignedIntTy)); Index: lib/Sema/SemaType.cpp =================================================================== --- lib/Sema/SemaType.cpp (revision 239721) +++ lib/Sema/SemaType.cpp (working copy) @@ -996,6 +996,13 @@ << Result << "cl_khr_fp64"; declarator.setInvalidType(true); } + } else if (!S.getOpenCLOptions().cl_khr_gl_msaa_sharing) && + (Result->isImage2dMSAAT() || Result->isImage2dArrayMSAAT() || + Result->isImage2dArrayMSAATDepth() || + Result->isImage2dMSAATDepth())) { + S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) + << Result << "cl_khr_gl_msaa_sharing"; + declarator.setInvalidType(true); } } Index: lib/Serialization/ASTCommon.cpp =================================================================== --- lib/Serialization/ASTCommon.cpp (revision 239721) +++ lib/Serialization/ASTCommon.cpp (working copy) @@ -67,9 +67,19 @@ case BuiltinType::OCLImage1dBuffer: ID = PREDEF_TYPE_IMAGE1D_BUFF_ID; break; case BuiltinType::OCLImage2d: ID = PREDEF_TYPE_IMAGE2D_ID; break; case BuiltinType::OCLImage2dArray: ID = PREDEF_TYPE_IMAGE2D_ARR_ID; break; + case BuiltinType::OCLImage2dDepth: ID = PREDEF_TYPE_IMAGE2D_DEP_ID; break; + case BuiltinType::OCLImage2dArrayDepth: ID = PREDEF_TYPE_IMAGE2D_ARR_DEP_ID; break; + case BuiltinType::OCLImage2dMSAA: ID = PREDEF_TYPE_IMAGE2D_MSAA_ID; break; + case BuiltinType::OCLImage2dArrayMSAA: ID = PREDEF_TYPE_IMAGE2D_ARR_MSAA_ID; break; + case BuiltinType::OCLImage2dMSAADepth: ID = PREDEF_TYPE_IMAGE2D_MSAA_DEP_ID; break; + case BuiltinType::OCLImage2dArrayMSAADepth: ID = PREDEF_TYPE_IMAGE2D_ARR_MSAA_DEPTH_ID; break; case BuiltinType::OCLImage3d: ID = PREDEF_TYPE_IMAGE3D_ID; break; case BuiltinType::OCLSampler: ID = PREDEF_TYPE_SAMPLER_ID; break; case BuiltinType::OCLEvent: ID = PREDEF_TYPE_EVENT_ID; break; + case BuiltinType::OCLClkEvent: ID = PREDEF_TYPE_CLK_EVENT_ID; break; + case BuiltinType::OCLQueue: ID = PREDEF_TYPE_QUEUE_ID; break; + case BuiltinType::OCLNDRange: ID = PREDEF_TYPE_NDRANGE_ID; break; + case BuiltinType::OCLReserveID: ID = PREDEF_TYPE_RESERVE_ID_ID; break; case BuiltinType::BuiltinFn: ID = PREDEF_TYPE_BUILTIN_FN; break; Index: lib/Serialization/ASTReader.cpp =================================================================== --- lib/Serialization/ASTReader.cpp (revision 239721) +++ lib/Serialization/ASTReader.cpp (working copy) @@ -5716,9 +5716,19 @@ case PREDEF_TYPE_IMAGE1D_BUFF_ID: T = Context.OCLImage1dBufferTy; break; case PREDEF_TYPE_IMAGE2D_ID: T = Context.OCLImage2dTy; break; case PREDEF_TYPE_IMAGE2D_ARR_ID: T = Context.OCLImage2dArrayTy; break; + case PREDEF_TYPE_IMAGE2D_DEP_ID: T = Context.OCLImage2dDepthTy; break; + case PREDEF_TYPE_IMAGE2D_ARR_DEP_ID: T = Context.OCLImage2dArrayDepthTy; break; + case PREDEF_TYPE_IMAGE2D_MSAA_ID: T = Context.OCLImage2dMSAATy; break; + case PREDEF_TYPE_IMAGE2D_ARR_MSAA_ID: T = Context.OCLImage2dArrayMSAATy; break; + case PREDEF_TYPE_IMAGE2D_MSAA_DEP_ID: T = Context.OCLImage2dMSAADepthTy; break; + case PREDEF_TYPE_IMAGE2D_ARR_MSAA_DEPTH_ID: T = Context.OCLImage2dArrayMSAADepthTy; break; case PREDEF_TYPE_IMAGE3D_ID: T = Context.OCLImage3dTy; break; case PREDEF_TYPE_SAMPLER_ID: T = Context.OCLSamplerTy; break; case PREDEF_TYPE_EVENT_ID: T = Context.OCLEventTy; break; + case PREDEF_TYPE_CLK_EVENT_ID: T = Context.OCLClkEventTy; break; + case PREDEF_TYPE_QUEUE_ID: T = Context.OCLQueueTy; break; + case PREDEF_TYPE_NDRANGE_ID: T = Context.OCLNDRangeTy; break; + case PREDEF_TYPE_RESERVE_ID_ID: T = Context.OCLReserveIDTy; break; case PREDEF_TYPE_AUTO_DEDUCT: T = Context.getAutoDeductType(); break; case PREDEF_TYPE_AUTO_RREF_DEDUCT: Index: test/CodeGenOpenCL/opencl_20_types.cl =================================================================== --- test/CodeGenOpenCL/opencl_20_types.cl (revision 0) +++ test/CodeGenOpenCL/opencl_20_types.cl (working copy) @@ -0,0 +1,32 @@ +// RUN: %clang_cc1 %s -emit-llvm -cl-std=CL2.0 -o - -O0 | FileCheck %s + +void fnc2depth(image2d_depth_t img) {} +// CHECK: @fnc2depth(%opencl.image2d_depth_t* + +void fnc2arraydepth(image2d_array_depth_t img) {} +// CHECK: @fnc2arraydepth(%opencl.image2d_array_depth_t* + +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable + +void fnc2msaa(image2d_msaa_t img) {} +// CHECK: @fnc2msaa(%opencl.image2d_msaa_t* + +void fnc2arraymsaa(image2d_array_msaa_t img) {} +// CHECK: @fnc2arraymsaa(%opencl.image2d_array_msaa_t* + +void fnc2msaadepth(image2d_msaa_depth_t img) {} +// CHECK: @fnc2msaadepth(%opencl.image2d_msaa_depth_t* + +void fnc2arraymsaadepth(image2d_array_msaa_depth_t img) {} +// CHECK: @fnc2arraymsaadepth(%opencl.image2d_array_msaa_depth_t* + +kernel void other_types(image2d_array_msaa_depth_t img) { + clk_event_t clevt; +// CHECK: alloca %opencl.clk_event_t* + queue_t q; +// CHECK: alloca %opencl.queue_t* + ndrange_t range; +// CHECK: alloca %opencl.ndrange_t* + reserve_id_t res; +// CHECK: alloca %opencl.reserve_id_t* +} Index: test/PCH/ocl_types.h =================================================================== --- test/PCH/ocl_types.h (revision 239721) +++ test/PCH/ocl_types.h (working copy) @@ -23,3 +23,37 @@ // event_t typedef event_t evt_t; + +#if __OPENCL_VERSION__ >= 200 + +// clk_event_t +typedef clk_event_t clkevt_t; + +// queue_t +typedef queue_t q_t; + +// ndrange_t +typedef ndrange_t range_t; + +// reserve_id_t +typedef reserve_id_t reserveid_t; + +// image2d_depth_t +typedef image2d_depth_t img2ddep_t; + +// image2d_array_depth_t +typedef image2d_array_depth_t img2darr_dep_t; + +// image2d_msaa_t +typedef image2d_msaa_t img2dmsaa_t; + +// image2d_array_msaa_t +typedef image2d_array_msaa_t img2darrmsaa_t; + +// image2d_msaa_depth_t +typedef image2d_msaa_depth_t img2dmsaadep_t; + +// image2d_array_msaa_depth_t +typedef image2d_array_msaa_depth_t img2darrmsaadep_t; + +#endif Index: test/SemaOpenCL/msaa_types.cl =================================================================== --- test/SemaOpenCL/msaa_types.cl (revision 0) +++ test/SemaOpenCL/msaa_types.cl (working copy) @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 %s -cl-std=CL2.0 -verify -pedantic -fsyntax-only -Wno-unused-value + +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : disable + +void half_disabled(image2d_msaa_t one, // expected-error{{use of type 'image2d_msaa_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} + image2d_array_msaa_t two, // expected-error{{use of type 'image2d_array_msaa_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} + image2d_msaa_depth_t three, // expected-error{{use of type 'image2d_msaa_depth_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} + image2d_array_msaa_depth_t four) // expected-error{{use of type 'image2d_array_msaa_depth_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} +{ + +} + +// Exactly the same as above but with the cl_khr_gl_msaa_sharing extension enabled. +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable +void msaa_enabled(image2d_msaa_t one, image2d_array_msaa_t two, + image2d_msaa_depth_t three, image2d_array_msaa_depth_t four) +{ + +} Index: tools/libclang/CIndex.cpp =================================================================== --- tools/libclang/CIndex.cpp (revision 239721) +++ tools/libclang/CIndex.cpp (working copy) @@ -1423,9 +1423,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: #define BUILTIN_TYPE(Id, SingletonId) #define SIGNED_TYPE(Id, SingletonId) case BuiltinType::Id: #define UNSIGNED_TYPE(Id, SingletonId) case BuiltinType::Id:
_______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits