r269431 - [OpenCL] Add supported OpenCL extensions to target info.
Liu, Yaxun (Sam) via cfe-commits
cfe-commits at lists.llvm.org
Fri May 13 10:58:54 PDT 2016
BTW is there a way to turn on this warning with CMake? I could not see this warning in my own build.
Thanks.
Sam
-----Original Message-----
From: Liu, Yaxun (Sam)
Sent: Friday, May 13, 2016 1:33 PM
To: 'stevenwu at apple.com' <stevenwu at apple.com>
Cc: cfe-commits at lists.llvm.org
Subject: RE: r269431 - [OpenCL] Add supported OpenCL extensions to target info.
Thanks Steven.
I have reverted my change. I will apply your patch and re-commit.
Sam
-----Original Message-----
From: stevenwu at apple.com [mailto:stevenwu at apple.com]
Sent: Friday, May 13, 2016 1:27 PM
To: Liu, Yaxun (Sam) <Yaxun.Liu at amd.com>
Cc: cfe-commits at lists.llvm.org
Subject: Re: r269431 - [OpenCL] Add supported OpenCL extensions to target info.
Hi Yaxun
You seems missing some override keyword that triggers -Winconsistent-missing-override. See:
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/24442/warnings8Result/new/
Here is a patch to fix them:
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index b1b12e4..20f1e95 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -2087,7 +2087,7 @@ public:
return true;
}
- void setSupportedOpenCLOpts() {
+ void setSupportedOpenCLOpts() override {
auto &Opts = getSupportedOpenCLOpts();
Opts.cl_clang_storage_class_specifiers = 1;
Opts.cl_khr_gl_sharing = 1;
@@ -2731,7 +2731,7 @@ public:
return true;
}
- void setSupportedOpenCLOpts() {
+ void setSupportedOpenCLOpts() override {
getSupportedOpenCLOpts().setAll();
}
};
@@ -7877,7 +7877,7 @@ public:
return CC_SpirFunction;
}
- void setSupportedOpenCLOpts() {
+ void setSupportedOpenCLOpts() override {
// Assume all OpenCL extensions and optional core features are supported
// for SPIR since it is a generic target.
getSupportedOpenCLOpts().setAll();
Thanks
Steven
> On May 13, 2016, at 8:44 AM, Yaxun Liu via cfe-commits <cfe-commits at lists.llvm.org> wrote:
>
> Author: yaxunl
> Date: Fri May 13 10:44:37 2016
> New Revision: 269431
>
> URL: http://llvm.org/viewvc/llvm-project?rev=269431&view=rev
> Log:
> [OpenCL] Add supported OpenCL extensions to target info.
>
> Add supported OpenCL extensions to target info. It serves as default values to save the users of the burden setting each supported extensions and optional core features in command line.
>
> Differential Revision: http://reviews.llvm.org/D19484
>
> Added:
> cfe/trunk/include/clang/Basic/OpenCLOptions.h
> cfe/trunk/test/SemaOpenCL/extensions.cl
> Removed:
> cfe/trunk/test/SemaOpenCL/extension-fp64-cl1.1.cl
> cfe/trunk/test/SemaOpenCL/extension-fp64.cl
> cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl1.2.cl
> cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl2.0.cl
> Modified:
> cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
> cfe/trunk/include/clang/Basic/LangOptions.h
> cfe/trunk/include/clang/Basic/OpenCLExtensions.def
> cfe/trunk/include/clang/Basic/TargetInfo.h
> cfe/trunk/include/clang/Basic/TargetOptions.h
> cfe/trunk/lib/Basic/Targets.cpp
> cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> cfe/trunk/lib/Parse/ParsePragma.cpp
> cfe/trunk/lib/Sema/Sema.cpp
> cfe/trunk/test/CodeGenOpenCL/builtins-r600.cl
> cfe/trunk/test/CodeGenOpenCL/fpmath.cl
> cfe/trunk/test/CodeGenOpenCL/half.cl
> cfe/trunk/test/Lexer/opencl-half-literal.cl
> cfe/trunk/test/Misc/languageOptsOpenCL.cl
> cfe/trunk/test/PCH/opencl-extensions.cl
> cfe/trunk/test/Parser/opencl-astype.cl
> cfe/trunk/test/Parser/opencl-atomics-cl20.cl
> cfe/trunk/test/Parser/opencl-pragma.cl
> cfe/trunk/test/Parser/opencl-storage-class.cl
> cfe/trunk/test/SemaOpenCL/half.cl
> cfe/trunk/test/SemaOpenCL/invalid-kernel-parameters.cl
> cfe/trunk/test/SemaOpenCL/invalid-logical-ops-1.2.cl
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diag
> nosticParseKinds.td?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Fri May 13
> +++ 10:44:37 2016
> @@ -926,6 +926,10 @@ def warn_pragma_expected_enable_disable
> "expected 'enable' or 'disable' - ignoring">,
> InGroup<IgnoredPragmas>; def warn_pragma_unknown_extension : Warning<
> "unknown OpenCL extension %0 - ignoring">, InGroup<IgnoredPragmas>;
> +def warn_pragma_unsupported_extension : Warning<
> + "unsupported OpenCL extension %0 - ignoring">,
> +InGroup<IgnoredPragmas>; def warn_pragma_extension_is_core : Warning<
> + "OpenCL extension %0 is core feature or supported optional core
> +feature - ignoring">, InGroup<IgnoredPragmas>;
>
> // OpenCL errors.
> def err_opencl_taking_function_address_parser : Error<
>
> Modified: cfe/trunk/include/clang/Basic/LangOptions.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Lang
> Options.h?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/include/clang/Basic/LangOptions.h (original)
> +++ cfe/trunk/include/clang/Basic/LangOptions.h Fri May 13 10:44:37
> +++ 2016
> @@ -160,18 +160,6 @@ public:
> fp_contract(LangOpts.DefaultFPContract) {} };
>
> -/// \brief OpenCL volatile options
> -class OpenCLOptions {
> -public:
> -#define OPENCLEXT(nm) unsigned nm : 1; -#include
> "clang/Basic/OpenCLExtensions.def"
> -
> - OpenCLOptions() {
> -#define OPENCLEXT(nm) nm = 0;
> -#include "clang/Basic/OpenCLExtensions.def"
> - }
> -};
> -
> /// \brief Describes the kind of translation unit being processed.
> enum TranslationUnitKind {
> /// \brief The translation unit is a complete translation unit.
>
> Modified: cfe/trunk/include/clang/Basic/OpenCLExtensions.def
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Open
> CLExtensions.def?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/include/clang/Basic/OpenCLExtensions.def (original)
> +++ cfe/trunk/include/clang/Basic/OpenCLExtensions.def Fri May 13
> +++ 10:44:37 2016
> @@ -11,25 +11,67 @@
> //
> //===-----------------------------------------------------------------
> -----===//
>
> +// Macro OPENCLEXT or OPENCLEXT_INTERNAL can be defined to enumerate
> +the // OpenCL extensions listed in this file.
> +//
> +// If the extensions are to be enumerated without the supported
> +OpenCL version, // define OPENCLEXT(ext) where ext is the name of the extension.
> +//
> +// If the extensions are to be enumerated with supported OpenCL
> +version, // define OPENCLEXT_INTERNAL(ext, avail, core) where
> +// ext - name of the extension or optional core feature.
> +// avail - minimum OpenCL version supporting it.
> +// core - minimum OpenCL version when the extension becomes optional core
> +// feature or core feature. ~0U indicates not a core feature or an
> +// optional core feature.
> +
> +#ifndef OPENCLEXT_INTERNAL
> +#ifndef OPENCLEXT
> +#pragma error "macro OPENCLEXT or OPENCLEXT_INTERNAL is required"
> +#else
> +#define OPENCLEXT_INTERNAL(ext, ...) OPENCLEXT(ext) #endif //
> +OPENCLEXT #endif // OPENCLEXT_INTERNAL
> +
> +// OpenCL 1.0.
> +OPENCLEXT_INTERNAL(cl_khr_3d_image_writes, 100, 120)
> +OPENCLEXT_INTERNAL(cl_khr_byte_addressable_store, 100, 110)
> +OPENCLEXT_INTERNAL(cl_khr_fp16, 100, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_fp64, 100, 120)
> +OPENCLEXT_INTERNAL(cl_khr_global_int32_base_atomics, 100, 110)
> +OPENCLEXT_INTERNAL(cl_khr_global_int32_extended_atomics, 100, 110)
> +OPENCLEXT_INTERNAL(cl_khr_gl_sharing, 100, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_icd, 100, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_local_int32_base_atomics, 100, 110)
> +OPENCLEXT_INTERNAL(cl_khr_local_int32_extended_atomics, 100, 110)
> +
> // OpenCL 1.1.
> -OPENCLEXT(cl_khr_fp64)
> -OPENCLEXT(cl_khr_int64_base_atomics)
> -OPENCLEXT(cl_khr_int64_extended_atomics)
> -OPENCLEXT(cl_khr_fp16)
> -OPENCLEXT(cl_khr_gl_sharing)
> -OPENCLEXT(cl_khr_gl_event)
> -OPENCLEXT(cl_khr_d3d10_sharing)
> -OPENCLEXT(cl_khr_global_int32_base_atomics)
> -OPENCLEXT(cl_khr_global_int32_extended_atomics)
> -OPENCLEXT(cl_khr_local_int32_base_atomics)
> -OPENCLEXT(cl_khr_local_int32_extended_atomics)
> -OPENCLEXT(cl_khr_byte_addressable_store)
> -OPENCLEXT(cl_khr_3d_image_writes)
> +OPENCLEXT_INTERNAL(cl_khr_d3d10_sharing, 110, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_gl_event, 110, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_int64_base_atomics, 110, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_int64_extended_atomics, 110, ~0U)
> +
> +// OpenCL 1.2.
> +OPENCLEXT_INTERNAL(cl_khr_d3d11_sharing, 120, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_depth_images, 120, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_dx9_media_sharing, 120, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_gl_depth_images, 120, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_spir, 120, ~0U)
>
> -// OpenCL 2.0
> -OPENCLEXT(cl_khr_gl_msaa_sharing)
> +// OpenCL 2.0.
> +OPENCLEXT_INTERNAL(cl_khr_egl_event, 200, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_egl_image, 200, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_gl_msaa_sharing, 200, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_initialize_memory, 200, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_srgb_image_writes, 200, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_subgroups, 200, ~0U)
> +OPENCLEXT_INTERNAL(cl_khr_terminate_context, 200, ~0U)
>
> // Clang Extensions.
> -OPENCLEXT(cl_clang_storage_class_specifiers)
> +OPENCLEXT_INTERNAL(cl_clang_storage_class_specifiers, 100, ~0U)
> +
> +#undef OPENCLEXT_INTERNAL
>
> +#ifdef OPENCLEXT
> #undef OPENCLEXT
> +#endif
>
> Added: cfe/trunk/include/clang/Basic/OpenCLOptions.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Open
> CLOptions.h?rev=269431&view=auto
> ======================================================================
> ========
> --- cfe/trunk/include/clang/Basic/OpenCLOptions.h (added)
> +++ cfe/trunk/include/clang/Basic/OpenCLOptions.h Fri May 13 10:44:37
> +++ 2016
> @@ -0,0 +1,68 @@
> +//===--- OpenCLOptions.h ----------------------------------------*-
> +C++ -*-===// //
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open
> +Source // License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------
> +------===//
> +///
> +/// \file
> +/// \brief Defines the clang::OpenCLOptions class.
> +///
> +//===----------------------------------------------------------------
> +------===//
> +
> +#ifndef LLVM_CLANG_BASIC_OPENCLOPTIONS_H #define
> +LLVM_CLANG_BASIC_OPENCLOPTIONS_H
> +
> +#include <string>
> +#include <vector>
> +
> +namespace clang {
> +
> +/// \brief OpenCL supported extensions and optional core features
> +class OpenCLOptions {
> +public:
> +#define OPENCLEXT(nm) unsigned nm : 1; #include
> +"clang/Basic/OpenCLExtensions.def"
> +
> + OpenCLOptions() {
> +#define OPENCLEXT(nm) nm = 0;
> +#include "clang/Basic/OpenCLExtensions.def"
> + }
> +
> + // Enable all options.
> + void setAll() {
> +#define OPENCLEXT(nm) nm = 1;
> +#include "clang/Basic/OpenCLExtensions.def"
> + }
> +
> + // Is supported with OpenCL version \p OCLVer.
> +#define OPENCLEXT_INTERNAL(Ext, Avail, ...) \
> + bool is_##Ext##_supported(unsigned OCLVer) const { \
> + return Ext && OCLVer >= Avail; \
> + }
> +#include "clang/Basic/OpenCLExtensions.def"
> +
> +
> + // Is supported OpenCL extension with OpenCL version \p OCLVer.
> + // For supported optional core feature, return false.
> +#define OPENCLEXT_INTERNAL(Ext, Avail, Core) \
> + bool is_##Ext##_supported_extension(unsigned CLVer) const { \
> + return is_##Ext##_supported(CLVer) && (Core == ~0U || CLVer <
> +Core); \
> + }
> +#include "clang/Basic/OpenCLExtensions.def"
> +
> + // Is supported OpenCL core features with OpenCL version \p OCLVer.
> + // For supported extension, return false.
> +#define OPENCLEXT_INTERNAL(Ext, Avail, Core) \
> + bool is_##Ext##_supported_core(unsigned CLVer) const { \
> + return is_##Ext##_supported(CLVer) && Core != ~0U && CLVer >=
> +Core; \
> + }
> +#include "clang/Basic/OpenCLExtensions.def"
> +
> +};
> +
> +} // end namespace clang
> +
> +#endif
>
> Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Targ
> etInfo.h?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
> +++ cfe/trunk/include/clang/Basic/TargetInfo.h Fri May 13 10:44:37
> +++ 2016
> @@ -969,6 +969,19 @@ public:
> /// \brief Whether target allows to overalign ABI-specified prefered alignment
> virtual bool allowsLargerPreferedTypeAlignment() const { return
> true; }
>
> + /// \brief Set supported OpenCL extensions and optional core features.
> + virtual void setSupportedOpenCLOpts() {}
> +
> + /// \brief Get supported OpenCL extensions and optional core features.
> + OpenCLOptions &getSupportedOpenCLOpts() {
> + return getTargetOpts().SupportedOpenCLOptions;
> + }
> +
> + /// \brief Get const supported OpenCL extensions and optional core features.
> + const OpenCLOptions &getSupportedOpenCLOpts() const {
> + return getTargetOpts().SupportedOpenCLOptions;
> + }
> +
> protected:
> virtual uint64_t getPointerWidthV(unsigned AddrSpace) const {
> return PointerWidth;
>
> Modified: cfe/trunk/include/clang/Basic/TargetOptions.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Targ
> etOptions.h?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/include/clang/Basic/TargetOptions.h (original)
> +++ cfe/trunk/include/clang/Basic/TargetOptions.h Fri May 13 10:44:37
> +++ 2016
> @@ -17,6 +17,7 @@
>
> #include <string>
> #include <vector>
> +#include "clang/Basic/OpenCLOptions.h"
>
> namespace clang {
>
> @@ -54,6 +55,9 @@ public:
> std::vector<std::string> Features;
>
> std::vector<std::string> Reciprocals;
> +
> + /// Supported OpenCL extensions and optional core features.
> + OpenCLOptions SupportedOpenCLOptions;
> };
>
> } // end namespace clang
>
> Modified: cfe/trunk/lib/Basic/Targets.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?re
> v=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/lib/Basic/Targets.cpp (original)
> +++ cfe/trunk/lib/Basic/Targets.cpp Fri May 13 10:44:37 2016
> @@ -1999,17 +1999,6 @@ public:
> Builder.defineMacro("__HAS_FMAF__");
> if (hasLDEXPF)
> Builder.defineMacro("__HAS_LDEXPF__");
> - if (hasFP64 && Opts.OpenCL)
> - Builder.defineMacro("cl_khr_fp64");
> - if (Opts.OpenCL) {
> - if (GPU >= GK_NORTHERN_ISLANDS) {
> - Builder.defineMacro("cl_khr_byte_addressable_store");
> - Builder.defineMacro("cl_khr_global_int32_base_atomics");
> - Builder.defineMacro("cl_khr_global_int32_extended_atomics");
> - Builder.defineMacro("cl_khr_local_int32_base_atomics");
> - Builder.defineMacro("cl_khr_local_int32_extended_atomics");
> - }
> - }
> }
>
> BuiltinVaListKind getBuiltinVaListKind() const override { @@ -2097,6
> +2086,31 @@ public:
>
> return true;
> }
> +
> + void setSupportedOpenCLOpts() {
> + auto &Opts = getSupportedOpenCLOpts();
> + Opts.cl_clang_storage_class_specifiers = 1;
> + Opts.cl_khr_gl_sharing = 1;
> + Opts.cl_khr_gl_event = 1;
> + Opts.cl_khr_d3d10_sharing = 1;
> + Opts.cl_khr_subgroups = 1;
> +
> + if (hasFP64)
> + Opts.cl_khr_fp64 = 1;
> + if (GPU >= GK_NORTHERN_ISLANDS) {
> + Opts.cl_khr_byte_addressable_store = 1;
> + Opts.cl_khr_global_int32_base_atomics = 1;
> + Opts.cl_khr_global_int32_extended_atomics = 1;
> + Opts.cl_khr_local_int32_base_atomics = 1;
> + Opts.cl_khr_local_int32_extended_atomics = 1;
> + }
> + if (GPU >= GK_SOUTHERN_ISLANDS)
> + Opts.cl_khr_fp16 = 1;
> + Opts.cl_khr_int64_base_atomics = 1;
> + Opts.cl_khr_int64_extended_atomics = 1;
> + Opts.cl_khr_3d_image_writes = 1;
> + Opts.cl_khr_gl_msaa_sharing = 1; }
> };
>
> const Builtin::Info AMDGPUTargetInfo::BuiltinInfo[] = { @@ -2716,6
> +2730,10 @@ public:
> bool hasSjLjLowering() const override {
> return true;
> }
> +
> + void setSupportedOpenCLOpts() {
> + getSupportedOpenCLOpts().setAll();
> + }
> };
>
> bool X86TargetInfo::setFPMath(StringRef Name) { @@ -7858,6 +7876,12 @@
> public:
> CallingConv getDefaultCallingConv(CallingConvMethodType MT) const override {
> return CC_SpirFunction;
> }
> +
> + void setSupportedOpenCLOpts() {
> + // Assume all OpenCL extensions and optional core features are supported
> + // for SPIR since it is a generic target.
> + getSupportedOpenCLOpts().setAll();
> + }
> };
>
> class SPIR32TargetInfo : public SPIRTargetInfo { @@ -8458,5 +8482,7 @@
> TargetInfo::CreateTargetInfo(Diagnostics
> if (!Target->handleTargetFeatures(Opts->Features, Diags))
> return nullptr;
>
> + Target->setSupportedOpenCLOpts();
> +
> return Target.release();
> }
>
> Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreproc
> essor.cpp?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Fri May 13 10:44:37
> +++ 2016
> @@ -938,6 +938,15 @@ static void InitializePredefinedMacros(c
> Builder.defineMacro("__CUDA_ARCH__");
> }
>
> + // OpenCL definitions.
> + if (LangOpts.OpenCL) {
> +#define OPENCLEXT(Ext) \
> + if (TI.getSupportedOpenCLOpts().is_##Ext##_supported( \
> + LangOpts.OpenCLVersion)) \
> + Builder.defineMacro(#Ext);
> +#include "clang/Basic/OpenCLExtensions.def"
> + }
> +
> // Get other target #defines.
> TI.getTargetDefines(LangOpts, Builder); }
>
> Modified: cfe/trunk/lib/Parse/ParsePragma.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParsePragma.cp
> p?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/lib/Parse/ParsePragma.cpp (original)
> +++ cfe/trunk/lib/Parse/ParsePragma.cpp Fri May 13 10:44:37 2016
> @@ -468,14 +468,24 @@ void Parser::HandlePragmaOpenCLExtension
> ConsumeToken(); // The annotation token.
>
> OpenCLOptions &f = Actions.getOpenCLOptions();
> + auto CLVer = getLangOpts().OpenCLVersion; auto &Supp =
> + getTargetInfo().getSupportedOpenCLOpts();
> // OpenCL 1.1 9.1: "The all variant sets the behavior for all extensions,
> // overriding all previously issued extension directives, but only if the
> // behavior is set to disable."
> if (state == 0 && ename->isStr("all")) {
> -#define OPENCLEXT(nm) f.nm = 0;
> +#define OPENCLEXT(nm) \
> + if (Supp.is_##nm##_supported_extension(CLVer)) \
> + f.nm = 0;
> #include "clang/Basic/OpenCLExtensions.def"
> }
> -#define OPENCLEXT(nm) else if (ename->isStr(#nm)) { f.nm = state; }
> +#define OPENCLEXT(nm) else if (ename->isStr(#nm)) \
> + if (Supp.is_##nm##_supported_extension(CLVer)) \
> + f.nm = state; \
> + else if (Supp.is_##nm##_supported_core(CLVer)) \
> + PP.Diag(NameLoc, diag::warn_pragma_extension_is_core) << ename; \
> + else \
> + PP.Diag(NameLoc, diag::warn_pragma_unsupported_extension) <<
> +ename;
> #include "clang/Basic/OpenCLExtensions.def"
> else {
> PP.Diag(NameLoc, diag::warn_pragma_unknown_extension) << ename;
>
> Modified: cfe/trunk/lib/Sema/Sema.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=26
> 9431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/lib/Sema/Sema.cpp (original)
> +++ cfe/trunk/lib/Sema/Sema.cpp Fri May 13 10:44:37 2016
> @@ -207,8 +207,14 @@ void Sema::Initialize() {
> addImplicitTypedef("size_t", Context.getSizeType());
> }
>
> - // Initialize predefined OpenCL types.
> + // Initialize predefined OpenCL types and supported optional core features.
> if (getLangOpts().OpenCL) {
> +#define OPENCLEXT(Ext) \
> + if (Context.getTargetInfo().getSupportedOpenCLOpts().is_##Ext##_supported_core( \
> + getLangOpts().OpenCLVersion)) \
> + getOpenCLOptions().Ext = 1;
> +#include "clang/Basic/OpenCLExtensions.def"
> +
> addImplicitTypedef("sampler_t", Context.OCLSamplerTy);
> addImplicitTypedef("event_t", Context.OCLEventTy);
> if (getLangOpts().OpenCLVersion >= 200) {
>
> Modified: cfe/trunk/test/CodeGenOpenCL/builtins-r600.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/built
> ins-r600.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/CodeGenOpenCL/builtins-r600.cl (original)
> +++ cfe/trunk/test/CodeGenOpenCL/builtins-r600.cl Fri May 13 10:44:37
> +++ 2016
> @@ -1,5 +1,5 @@
> // REQUIRES: amdgpu-registered-target
> -// RUN: %clang_cc1 -triple r600-unknown-unknown -S -emit-llvm -o - %s
> | FileCheck %s
> +// RUN: %clang_cc1 -triple r600-unknown-unknown -target-cpu rv670 -S
> +-emit-llvm -o - %s | FileCheck %s
>
> #pragma OPENCL EXTENSION cl_khr_fp64 : enable
>
>
> Modified: cfe/trunk/test/CodeGenOpenCL/fpmath.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/fpmat
> h.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/CodeGenOpenCL/fpmath.cl (original)
> +++ cfe/trunk/test/CodeGenOpenCL/fpmath.cl Fri May 13 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
> +// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown |
> +FileCheck %s
>
> typedef __attribute__(( ext_vector_type(4) )) float float4;
>
>
> Modified: cfe/trunk/test/CodeGenOpenCL/half.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/half.
> cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/CodeGenOpenCL/half.cl (original)
> +++ cfe/trunk/test/CodeGenOpenCL/half.cl Fri May 13 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
> +// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown |
> +FileCheck %s
>
> #pragma OPENCL EXTENSION cl_khr_fp16 : enable
>
>
> Modified: cfe/trunk/test/Lexer/opencl-half-literal.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Lexer/opencl-half-l
> iteral.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/Lexer/opencl-half-literal.cl (original)
> +++ cfe/trunk/test/Lexer/opencl-half-literal.cl Fri May 13 10:44:37
> +++ 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -fsyntax-only -verify
> +// RUN: %clang_cc1 %s -fsyntax-only -verify -triple
> +spir-unknown-unknown
>
> #pragma OPENCL EXTENSION cl_khr_fp16 : enable
>
>
> Modified: cfe/trunk/test/Misc/languageOptsOpenCL.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/languageOptsOp
> enCL.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/Misc/languageOptsOpenCL.cl (original)
> +++ cfe/trunk/test/Misc/languageOptsOpenCL.cl Fri May 13 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 -x cl %s -verify
> +// RUN: %clang_cc1 -x cl %s -verify -triple spir-unknown-unknown
> // expected-no-diagnostics
>
> // Test the forced language options for OpenCL are set correctly.
>
> Modified: cfe/trunk/test/PCH/opencl-extensions.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/opencl-extensio
> ns.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/PCH/opencl-extensions.cl (original)
> +++ cfe/trunk/test/PCH/opencl-extensions.cl Fri May 13 10:44:37 2016
> @@ -1,5 +1,5 @@
> -// RUN: %clang_cc1 -emit-pch -o %t %s -// RUN: %clang_cc1
> -include-pch %t -fsyntax-only %s
> +// RUN: %clang_cc1 -emit-pch -o %t %s -triple spir-unknown-unknown //
> +RUN: %clang_cc1 -include-pch %t -fsyntax-only %s -triple
> +spir-unknown-unknown
>
> #ifndef HEADER
> #define HEADER
>
> Modified: cfe/trunk/test/Parser/opencl-astype.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/opencl-astyp
> e.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/Parser/opencl-astype.cl (original)
> +++ cfe/trunk/test/Parser/opencl-astype.cl Fri May 13 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 -fsyntax-only -verify %s
> +// RUN: %clang_cc1 -fsyntax-only -verify %s -triple
> +spir-unknown-unknown
> #pragma OPENCL EXTENSION cl_khr_fp64 : enable
>
> void test_astype() {
>
> Modified: cfe/trunk/test/Parser/opencl-atomics-cl20.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/opencl-atomi
> cs-cl20.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/Parser/opencl-atomics-cl20.cl (original)
> +++ cfe/trunk/test/Parser/opencl-atomics-cl20.cl Fri May 13 10:44:37
> +++ 2016
> @@ -1,11 +1,14 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -// RUN:
> %clang_cc1 %s -verify -fsyntax-only -cl-std=CL2.0 -DCL20 -// RUN:
> %clang_cc1 %s -verify -fsyntax-only -cl-std=CL2.0 -DCL20 -DEXT
> +// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic
> +-fsyntax-only // RUN: %clang_cc1 %s -triple spir-unknown-unknown
> +-verify -fsyntax-only -cl-std=CL2.0 -DCL20 // RUN: %clang_cc1 %s
> +-triple spir-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0
> +-DCL20 -DEXT
>
> #ifdef EXT
> #pragma OPENCL EXTENSION cl_khr_int64_base_atomics:enable #pragma
> OPENCL EXTENSION cl_khr_int64_extended_atomics:enable
> #pragma OPENCL EXTENSION cl_khr_fp64:enable
> +#if __OPENCL_C_VERSION__ >= CL_VERSION_1_2 //
> +expected-warning at -2{{OpenCL extension 'cl_khr_fp64' is core feature
> +or supported optional core feature - ignoring}} #endif
> #endif
>
> void atomic_types_test() {
> @@ -44,15 +47,14 @@ void atomic_types_test() { // expected-error at -28
> {{use of type 'atomic_ulong' (aka '_Atomic(unsigned long)') requires
> cl_khr_int64_extended_atomics extension to be enabled}} //
> expected-error at -27 {{use of type 'atomic_double' (aka
> '_Atomic(double)') requires cl_khr_int64_base_atomics extension to be
> enabled}} // expected-error at -28 {{use of type 'atomic_double' (aka
> '_Atomic(double)') requires cl_khr_int64_extended_atomics extension to
> be enabled}} -// expected-error at -29 {{use of type 'atomic_double' (aka
> '_Atomic(double)') requires cl_khr_fp64 extension to be enabled}} -//
> expected-error-re at -28 {{use of type 'atomic_intptr_t' (aka
> '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be
> enabled}} -// expected-error-re at -29 {{use of type 'atomic_intptr_t'
> (aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics
> extension to be enabled}} -// expected-error-re at -29 {{use of type
> 'atomic_uintptr_t' (aka '_Atomic({{.+}})') requires
> cl_khr_int64_base_atomics extension to be enabled}} -//
> expected-error-re at -30 {{use of type 'atomic_uintptr_t' (aka
> '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension to
> be enabled}} -// expected-error-re at -30 {{use of type 'atomic_size_t'
> (aka '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension
> to be enabled}} -// expected-error-re at -31 {{use of type
> 'atomic_size_t' (aka '_Atomic({{.+}})') requires
> cl_khr_int64_extended_atomics extension to be enabled}} -//
> expected-error-re at -31 {{use of type 'atomic_ptrdiff_t' (aka
> '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be
> enabled}} -// expected-error-re at -32 {{use of type 'atomic_ptrdiff_t'
> (aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics
> extension to be enabled}}
> +// expected-error-re at -27 {{use of type 'atomic_intptr_t' (aka
> +'_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be
> +enabled}} // expected-error-re at -28 {{use of type 'atomic_intptr_t'
> +(aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics
> +extension to be enabled}} // expected-error-re at -28 {{use of type
> +'atomic_uintptr_t' (aka '_Atomic({{.+}})') requires
> +cl_khr_int64_base_atomics extension to be enabled}} //
> +expected-error-re at -29 {{use of type 'atomic_uintptr_t' (aka
> +'_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension
> +to be enabled}} // expected-error-re at -29 {{use of type
> +'atomic_size_t' (aka '_Atomic({{.+}})') requires
> +cl_khr_int64_base_atomics extension to be enabled}} //
> +expected-error-re at -30 {{use of type 'atomic_size_t' (aka
> +'_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension
> +to be enabled}} // expected-error-re at -30 {{use of type
> +'atomic_ptrdiff_t' (aka '_Atomic({{.+}})') requires
> +cl_khr_int64_base_atomics extension to be enabled}} //
> +expected-error-re at -31 {{use of type 'atomic_ptrdiff_t' (aka
> +'_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension
> +to be enabled}}
> #endif
>
> #ifdef CL20
>
> Modified: cfe/trunk/test/Parser/opencl-pragma.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/opencl-pragm
> a.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/Parser/opencl-pragma.cl (original)
> +++ cfe/trunk/test/Parser/opencl-pragma.cl Fri May 13 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -Wno-empty-translation-unit
> -fsyntax-only
> +// RUN: %clang_cc1 %s -verify -pedantic -Wno-empty-translation-unit
> +-fsyntax-only -triple spir-unknown-unknown
>
> #pragma OPENCL EXTENSION cl_khr_fp16 : enable
>
>
> Modified: cfe/trunk/test/Parser/opencl-storage-class.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/opencl-stora
> ge-class.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/Parser/opencl-storage-class.cl (original)
> +++ cfe/trunk/test/Parser/opencl-storage-class.cl Fri May 13 10:44:37
> +++ 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -verify -fsyntax-only
> +// RUN: %clang_cc1 %s -verify -fsyntax-only -triple
> +spir-unknown-unknown
>
> void test_storage_class_specs()
> {
>
> Removed: cfe/trunk/test/SemaOpenCL/extension-fp64-cl1.1.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/extensio
> n-fp64-cl1.1.cl?rev=269430&view=auto
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/extension-fp64-cl1.1.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/extension-fp64-cl1.1.cl (removed)
> @@ -1,19 +0,0 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.1
> -
> -void f1(double da) { // expected-error {{type 'double' requires
> cl_khr_fp64 extension}}
> - double d; // expected-error {{type 'double' requires cl_khr_fp64
> extension}}
> - (void) 1.0; // expected-warning {{double precision constant
> requires cl_khr_fp64}} -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : enable
> -
> -void f2(void) {
> - double d;
> - (void) 1.0;
> -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : disable
> -
> -void f3(void) {
> - double d; // expected-error {{type 'double' requires cl_khr_fp64
> extension}} -}
>
> Removed: cfe/trunk/test/SemaOpenCL/extension-fp64.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/extensio
> n-fp64.cl?rev=269430&view=auto
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/extension-fp64.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/extension-fp64.cl (removed)
> @@ -1,19 +0,0 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
> -
> -void f1(double da) { // expected-error {{type 'double' requires
> cl_khr_fp64 extension}}
> - double d; // expected-error {{type 'double' requires cl_khr_fp64
> extension}}
> - (void) 1.0; // expected-warning {{double precision constant
> requires cl_khr_fp64}} -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : enable
> -
> -void f2(void) {
> - double d;
> - (void) 1.0;
> -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : disable
> -
> -void f3(void) {
> - double d; // expected-error {{type 'double' requires cl_khr_fp64
> extension}} -}
>
> Added: cfe/trunk/test/SemaOpenCL/extensions.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/extensio
> ns.cl?rev=269431&view=auto
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/extensions.cl (added)
> +++ cfe/trunk/test/SemaOpenCL/extensions.cl Fri May 13 10:44:37 2016
> @@ -0,0 +1,36 @@
> +// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic
> +-fsyntax-only // RUN: %clang_cc1 %s -triple spir-unknown-unknown
> +-verify -pedantic -fsyntax-only -cl-std=CL1.1
> +
> +// Test with a target not supporting fp64.
> +// RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600
> +-verify -pedantic -fsyntax-only -DNOFP64
> +
> +void f1(double da) { // expected-error {{type 'double' requires
> +cl_khr_fp64 extension}}
> + double d; // expected-error {{type 'double' requires cl_khr_fp64
> +extension}}
> + (void) 1.0; // expected-warning {{double precision constant
> +requires cl_khr_fp64}} }
> +
> +#pragma OPENCL EXTENSION cl_khr_fp64 : enable #ifdef NOFP64 //
> +expected-warning at -2{{unsupported OpenCL extension 'cl_khr_fp64' -
> +ignoring}} #endif
> +
> +void f2(void) {
> + double d;
> +#ifdef NOFP64
> +// expected-error at -2{{use of type 'double' requires cl_khr_fp64
> +extension to be enabled}} #endif
> +
> + (void) 1.0;
> +#ifdef NOFP64
> +// expected-warning at -2{{double precision constant requires
> +cl_khr_fp64, casting to single precision}} #endif }
> +
> +#pragma OPENCL EXTENSION cl_khr_fp64 : disable #ifdef NOFP64 //
> +expected-warning at -2{{unsupported OpenCL extension 'cl_khr_fp64' -
> +ignoring}} #endif
> +
> +void f3(void) {
> + double d; // expected-error {{type 'double' requires cl_khr_fp64
> +extension}} }
>
> Modified: cfe/trunk/test/SemaOpenCL/half.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/half.cl?
> rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/half.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/half.cl Fri May 13 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
> -Wno-unused-value
> +// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
> +-Wno-unused-value -triple spir-unknown-unknown
>
> #pragma OPENCL EXTENSION cl_khr_fp16 : disable constant float f =
> 1.0h; // expected-error{{half precision constant requires
> cl_khr_fp16}}
>
> Modified: cfe/trunk/test/SemaOpenCL/invalid-kernel-parameters.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/invalid-
> kernel-parameters.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/invalid-kernel-parameters.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/invalid-kernel-parameters.cl Fri May 13
> +++ 10:44:37 2016
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 -fsyntax-only -verify %s
> +// RUN: %clang_cc1 -fsyntax-only -verify %s -triple
> +spir-unknown-unknown
>
> #pragma OPENCL EXTENSION cl_khr_fp16 : enable
>
>
> Modified: cfe/trunk/test/SemaOpenCL/invalid-logical-ops-1.2.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/invalid-
> logical-ops-1.2.cl?rev=269431&r1=269430&r2=269431&view=diff
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/invalid-logical-ops-1.2.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/invalid-logical-ops-1.2.cl Fri May 13
> +++ 10:44:37 2016
> @@ -1,6 +1,7 @@
> // RUN: %clang_cc1 %s -verify -cl-std=CL1.2 -triple
> x86_64-unknown-linux-gnu
>
> -#pragma OPENCL EXTENSION cl_khr_fp64 : enable
> +#pragma OPENCL EXTENSION cl_khr_fp64 : enable //
> +expected-warning{{OpenCL extension 'cl_khr_fp64' is core feature or
> +supported optional core feature - ignoring}}
> +
> typedef __attribute__((ext_vector_type(4))) float float4; typedef
> __attribute__((ext_vector_type(4))) double double4; typedef
> __attribute__((ext_vector_type(4))) int int4;
>
> Removed: cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl1.2.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/optional
> -core-fp64-cl1.2.cl?rev=269430&view=auto
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl1.2.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl1.2.cl (removed)
> @@ -1,20 +0,0 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2
> -// expected-no-diagnostics
> -
> -void f1(double da) {
> - double d;
> - (void) 1.0;
> -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : enable
> -
> -void f2(void) {
> - double d;
> - (void) 1.0;
> -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : disable
> -
> -void f3(void) {
> - double d;
> -}
>
> Removed: cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl2.0.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/optional
> -core-fp64-cl2.0.cl?rev=269430&view=auto
> ======================================================================
> ========
> --- cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl2.0.cl (original)
> +++ cfe/trunk/test/SemaOpenCL/optional-core-fp64-cl2.0.cl (removed)
> @@ -1,20 +0,0 @@
> -// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL2.0
> -// expected-no-diagnostics
> -
> -void f1(double da) {
> - double d;
> - (void) 1.0;
> -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : enable
> -
> -void f2(void) {
> - double d;
> - (void) 1.0;
> -}
> -
> -#pragma OPENCL EXTENSION cl_khr_fp64 : disable
> -
> -void f3(void) {
> - double d;
> -}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list