diff options
author | Guy Benyei <guy.benyei@intel.com> | 2013-02-07 10:55:47 +0000 |
---|---|---|
committer | Guy Benyei <guy.benyei@intel.com> | 2013-02-07 10:55:47 +0000 |
commit | 21f18c4fda167dc5f72feddbd6a7ac1b63200a0d (patch) | |
tree | 80c1b120c64d3066fd4f5799174a16d8ed49eca0 /include/clang | |
parent | f5a6aefa37d73fff3c47953e2c447f074e726a0e (diff) |
Add OpenCL samplers as Clang builtin types and check sampler related restrictions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174601 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
-rw-r--r-- | include/clang/AST/ASTContext.h | 2 | ||||
-rw-r--r-- | include/clang/AST/BuiltinTypes.def | 3 | ||||
-rw-r--r-- | include/clang/AST/Type.h | 8 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 4 | ||||
-rw-r--r-- | include/clang/Basic/Specifiers.h | 1 | ||||
-rw-r--r-- | include/clang/Basic/TokenKinds.def | 1 | ||||
-rw-r--r-- | include/clang/Sema/DeclSpec.h | 1 | ||||
-rw-r--r-- | include/clang/Sema/Initialization.h | 6 | ||||
-rw-r--r-- | include/clang/Serialization/ASTBitCodes.h | 5 |
9 files changed, 28 insertions, 3 deletions
diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index eb14ff5b04..0e8f2b61a4 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -721,7 +721,7 @@ public: CanQualType OCLImage1dTy, OCLImage1dArrayTy, OCLImage1dBufferTy; CanQualType OCLImage2dTy, OCLImage2dArrayTy; CanQualType OCLImage3dTy; - CanQualType OCLEventTy; + CanQualType OCLSamplerTy, OCLEventTy; // Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand. mutable QualType AutoDeductTy; // Deduction against 'auto'. diff --git a/include/clang/AST/BuiltinTypes.def b/include/clang/AST/BuiltinTypes.def index 503d963eca..488cacef0a 100644 --- a/include/clang/AST/BuiltinTypes.def +++ b/include/clang/AST/BuiltinTypes.def @@ -162,6 +162,9 @@ BUILTIN_TYPE(OCLImage2d, OCLImage2dTy) BUILTIN_TYPE(OCLImage2dArray, OCLImage2dArrayTy) BUILTIN_TYPE(OCLImage3d, OCLImage3dTy) +// OpenCL sampler_t. +BUILTIN_TYPE(OCLSampler, OCLSamplerTy) + // OpenCL event_t. BUILTIN_TYPE(OCLEvent, OCLEventTy) diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h index 1469746d43..3e6297aeb8 100644 --- a/include/clang/AST/Type.h +++ b/include/clang/AST/Type.h @@ -1584,6 +1584,7 @@ public: bool isImageType() const; // Any OpenCL image type + bool isSamplerT() const; // OpenCL sampler_t bool isEventT() const; // OpenCL event_t bool isOpenCLSpecificType() const; // Any OpenCL specific type @@ -4918,6 +4919,11 @@ inline bool Type::isImage2dArrayT() const { inline bool Type::isImage3dT() const { return isSpecificBuiltinType(BuiltinType::OCLImage3d); } + +inline bool Type::isSamplerT() const { + return isSpecificBuiltinType(BuiltinType::OCLSampler); +} + inline bool Type::isEventT() const { return isSpecificBuiltinType(BuiltinType::OCLEvent); } @@ -4929,7 +4935,7 @@ inline bool Type::isImageType() const { } inline bool Type::isOpenCLSpecificType() const { - return isImageType() || isEventT(); + return isSamplerT() || isEventT() || isImageType(); } inline bool Type::isTemplateTypeParmType() const { diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index bcc33d1982..e190d7b5a6 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -6139,6 +6139,10 @@ def err_event_t_addr_space_qual : Error< "the event_t type can only be used with __private address space qualifier">; def err_expected_kernel_void_return_type : Error< "kernel must have void return type">; +def err_sampler_argument_required : Error< + "sampler_t variable required - got %0">; +def err_wrong_sampler_addressspace: Error< + "sampler type cannot be used with the __local and __global address space qualifiers">; } // end of sema category diff --git a/include/clang/Basic/Specifiers.h b/include/clang/Basic/Specifiers.h index 533cefeaae..8706179a17 100644 --- a/include/clang/Basic/Specifiers.h +++ b/include/clang/Basic/Specifiers.h @@ -68,6 +68,7 @@ namespace clang { TST_image2d_t, // OpenCL image2d_t TST_image2d_array_t, // OpenCL image2d_array_t TST_image3d_t, // OpenCL image3d_t + TST_sampler_t, // OpenCL sampler_t TST_event_t, // OpenCL event_t TST_error // erroneous type }; diff --git a/include/clang/Basic/TokenKinds.def b/include/clang/Basic/TokenKinds.def index 8008ca60a8..6850bd5a52 100644 --- a/include/clang/Basic/TokenKinds.def +++ b/include/clang/Basic/TokenKinds.def @@ -455,6 +455,7 @@ KEYWORD(image1d_buffer_t , KEYOPENCL) KEYWORD(image2d_t , KEYOPENCL) KEYWORD(image2d_array_t , KEYOPENCL) KEYWORD(image3d_t , KEYOPENCL) +KEYWORD(sampler_t , KEYOPENCL) KEYWORD(event_t , KEYOPENCL) // Borland Extensions. diff --git a/include/clang/Sema/DeclSpec.h b/include/clang/Sema/DeclSpec.h index fc43ed66fb..867c654435 100644 --- a/include/clang/Sema/DeclSpec.h +++ b/include/clang/Sema/DeclSpec.h @@ -282,6 +282,7 @@ public: static const TST TST_image2d_t = clang::TST_image2d_t; static const TST TST_image2d_array_t = clang::TST_image2d_array_t; static const TST TST_image3d_t = clang::TST_image3d_t; + static const TST TST_sampler_t = clang::TST_sampler_t; static const TST TST_event_t = clang::TST_event_t; static const TST TST_error = clang::TST_error; diff --git a/include/clang/Sema/Initialization.h b/include/clang/Sema/Initialization.h index 002a12605d..e1773748dc 100644 --- a/include/clang/Sema/Initialization.h +++ b/include/clang/Sema/Initialization.h @@ -625,6 +625,8 @@ public: SK_ProduceObjCObject, /// \brief Construct a std::initializer_list from an initializer list. SK_StdInitializerList, + /// \brief Initialize an OpenCL sampler from an integer. + SK_OCLSamplerInit, /// \brief Passing zero to a function where OpenCL event_t is expected. SK_OCLZeroEvent }; @@ -955,6 +957,10 @@ public: /// initializer list. void AddStdInitializerListConstructionStep(QualType T); + /// \brief Add a step to initialize an OpenCL sampler from an integer + /// constant. + void AddOCLSamplerInitStep(QualType T); + /// \brief Add a step to initialize an OpenCL event_t from a NULL /// constant. void AddOCLZeroEventStep(QualType T); diff --git a/include/clang/Serialization/ASTBitCodes.h b/include/clang/Serialization/ASTBitCodes.h index 6f76367342..a672c7e149 100644 --- a/include/clang/Serialization/ASTBitCodes.h +++ b/include/clang/Serialization/ASTBitCodes.h @@ -720,7 +720,10 @@ namespace clang { PREDEF_TYPE_IMAGE2D_ARR_ID = 42, /// \brief OpenCL 3d image type. PREDEF_TYPE_IMAGE3D_ID = 43, - PREDEF_TYPE_EVENT_ID = 44 + /// \brief OpenCL event type. + PREDEF_TYPE_EVENT_ID = 44, + /// \brief OpenCL sampler type. + PREDEF_TYPE_SAMPLER_ID = 45 }; /// \brief The number of predefined type IDs that are reserved for |