Hi Anastasia, My apologies for my slow reply. My main issue was that the defaults have changed, which is somewhat annoying. However, digging deeper into this I’m noticing two serious problems:
* When I do: #pragma OPENCL EXTENSION cl_khr_fp16 : disable the cl_khr_fp16 macro stays defined in code I compile down to the SPIR target, which means I cannot do conditional compilation based on which extensions are enabled/disabled. This means I now need to start pulling additional manual tricks to do conditional compilation of half precision code. * If I understand the patch correctly, it allows me to enable extensions for targets that do not support it. There does not seem a check against the initially enabled extensions, just a check for what is or isn’t supported in a particular version of OpenCL. This means I can now, e.g., enable sharing with Direct3D 11 for the nvptx target even though this target does not support this functionality. On top of the above, I do not understand why this patch introduces code for extensions like ICD, which is an OpenCL API concept and not a OpenCL C concept. Jeroen > On 20 May 2016, at 21:01, Anastasia Stulova <anastasia.stul...@arm.com> wrote: > > Thanks Sam! > > @Jeroen, could you give us more details about your problem. > > Anastasia > > -----Original Message----- > From: Liu, Yaxun (Sam) [mailto:yaxun....@amd.com] > Sent: 20 May 2016 20:52 > To: Anastasia Stulova; Jeroen Ketema > Cc: Clang Commits; nd > Subject: RE: r269670 - [OpenCL] Add supported OpenCL extensions to target > info. > > I think this feature can be implemented by keeping a record of enabled OpenCL > extensions by user's program. > > For optional core feature cl_khr_fp64, we just need to detect if double type > is used by user's program. > > Sam > > -----Original Message----- > From: Liu, Yaxun (Sam) > Sent: Friday, May 20, 2016 3:45 PM > To: 'Anastasia Stulova' <anastasia.stul...@arm.com>; Jeroen Ketema > <j.ket...@imperial.ac.uk> > Cc: Clang Commits <cfe-commits@lists.llvm.org>; nd <n...@arm.com> > Subject: RE: r269670 - [OpenCL] Add supported OpenCL extensions to target > info. > > Currently Clang does not emit opencl.used.extensions metadata, so the issue > mentioned does not exist. > > Also extensions supported by a target and extensions used by an OpenCL > program is different concept. > > I'd say Clang currently miss a feature to detect used extensions and emit the > metadata. > > Sam > > -----Original Message----- > From: Anastasia Stulova [mailto:anastasia.stul...@arm.com] > Sent: Friday, May 20, 2016 3:23 PM > To: Liu, Yaxun (Sam) <yaxun....@amd.com>; Jeroen Ketema > <j.ket...@imperial.ac.uk> > Cc: Clang Commits <cfe-commits@lists.llvm.org>; nd <n...@arm.com> > Subject: Re: r269670 - [OpenCL] Add supported OpenCL extensions to target > info. > > Hi Sam, > > Has this been addressed? > > @Jeroen, as far as I am aware adding supported extensions is completely new > to Clang and shouldn't be braking any existing functionality that are related > to that. Could you elaborate on the problem. Would creating new Clang target > help? Otherwise, do you have any other proposal for the solution? > > Thanks, > Anastasia > > > ________________________________________ > From: cfe-commits <cfe-commits-boun...@lists.llvm.org> on behalf of Jeroen > Ketema via cfe-commits <cfe-commits@lists.llvm.org> > Sent: 17 May 2016 12:49 > To: Yaxun Liu via cfe-commits > Subject: Re: r269670 - [OpenCL] Add supported OpenCL extensions to target > info. > > Hi, > > The below commit enables all OpenCL extensions for the SPIR target by > default. This incorrect, as SPIR allows you to specify which extensions are > enabled/disabled its metadata. This means that any SPIR generated by Clang > may now be rejected by specific OpenCL platforms, because they might not > support all extensions. > > If possible I would like to see this commit reverted until that problem has > been addressed. > > Regards, > > Jeroen > >> On 16 May 2016, at 18:06, Yaxun Liu via cfe-commits <cfe-commits at >> lists.llvm.org> wrote: >> >> Author: yaxunl >> Date: Mon May 16 12:06:34 2016 >> New Revision: 269670 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=269670&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. >> >> Re-commit after fixing build error due to missing override attribute. >> >> 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original) >> +++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Mon May 16 >> +++ 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/include/clang/Basic/LangOptions.h (original) >> +++ cfe/trunk/include/clang/Basic/LangOptions.h Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/include/clang/Basic/OpenCLExtensions.def (original) >> +++ cfe/trunk/include/clang/Basic/OpenCLExtensions.def Mon May 16 >> +++ 12:06:34 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=269670&view=auto >> ====================================================================== >> ======== >> --- cfe/trunk/include/clang/Basic/OpenCLOptions.h (added) >> +++ cfe/trunk/include/clang/Basic/OpenCLOptions.h Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/include/clang/Basic/TargetInfo.h (original) >> +++ cfe/trunk/include/clang/Basic/TargetInfo.h Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/include/clang/Basic/TargetOptions.h (original) >> +++ cfe/trunk/include/clang/Basic/TargetOptions.h Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/lib/Basic/Targets.cpp (original) >> +++ cfe/trunk/lib/Basic/Targets.cpp Mon May 16 12:06:34 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() override { >> + 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() override { >> + getSupportedOpenCLOpts().setAll(); >> + } >> }; >> >> bool X86TargetInfo::setFPMath(StringRef Name) { @@ -7858,6 +7876,12 @@ >> public: >> CallingConv getDefaultCallingConv(CallingConvMethodType MT) const override { >> return CC_SpirFunction; >> } >> + >> + void setSupportedOpenCLOpts() override { >> + // 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original) >> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/lib/Parse/ParsePragma.cpp (original) >> +++ cfe/trunk/lib/Parse/ParsePragma.cpp Mon May 16 12:06:34 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 >> 9670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/lib/Sema/Sema.cpp (original) >> +++ cfe/trunk/lib/Sema/Sema.cpp Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/CodeGenOpenCL/builtins-r600.cl (original) >> +++ cfe/trunk/test/CodeGenOpenCL/builtins-r600.cl Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/CodeGenOpenCL/fpmath.cl (original) >> +++ cfe/trunk/test/CodeGenOpenCL/fpmath.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/CodeGenOpenCL/half.cl (original) >> +++ cfe/trunk/test/CodeGenOpenCL/half.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/Lexer/opencl-half-literal.cl (original) >> +++ cfe/trunk/test/Lexer/opencl-half-literal.cl Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/Misc/languageOptsOpenCL.cl (original) >> +++ cfe/trunk/test/Misc/languageOptsOpenCL.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/PCH/opencl-extensions.cl (original) >> +++ cfe/trunk/test/PCH/opencl-extensions.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/Parser/opencl-astype.cl (original) >> +++ cfe/trunk/test/Parser/opencl-astype.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/Parser/opencl-atomics-cl20.cl (original) >> +++ cfe/trunk/test/Parser/opencl-atomics-cl20.cl Mon May 16 12:06:34 >> +++ 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/Parser/opencl-pragma.cl (original) >> +++ cfe/trunk/test/Parser/opencl-pragma.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/Parser/opencl-storage-class.cl (original) >> +++ cfe/trunk/test/Parser/opencl-storage-class.cl Mon May 16 12:06:34 >> +++ 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=269669&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=269669&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=269670&view=auto >> ====================================================================== >> ======== >> --- cfe/trunk/test/SemaOpenCL/extensions.cl (added) >> +++ cfe/trunk/test/SemaOpenCL/extensions.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/SemaOpenCL/half.cl (original) >> +++ cfe/trunk/test/SemaOpenCL/half.cl Mon May 16 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/SemaOpenCL/invalid-kernel-parameters.cl (original) >> +++ cfe/trunk/test/SemaOpenCL/invalid-kernel-parameters.cl Mon May 16 >> +++ 12:06:34 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=269670&r1=269669&r2=269670&view=diff >> ====================================================================== >> ======== >> --- cfe/trunk/test/SemaOpenCL/invalid-logical-ops-1.2.cl (original) >> +++ cfe/trunk/test/SemaOpenCL/invalid-logical-ops-1.2.cl Mon May 16 >> +++ 12:06:34 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=269669&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=269669&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@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits