diff options
author | Yaxun Liu <Yaxun.Liu@amd.com> | 2016-05-16 17:06:34 +0000 |
---|---|---|
committer | Yaxun Liu <Yaxun.Liu@amd.com> | 2016-05-16 17:06:34 +0000 |
commit | 39cf40f6b4c6deb66c3ff27f0cba73ed8b9d0cbc (patch) | |
tree | 2065265703a4521859685c00949c1a9f699a7e9d /clang/lib/Basic/Targets.cpp | |
parent | 46a256a3ebd0f03fa830ac5f26f8df3616494cf7 (diff) | |
download | bcm5719-llvm-39cf40f6b4c6deb66c3ff27f0cba73ed8b9d0cbc.tar.gz bcm5719-llvm-39cf40f6b4c6deb66c3ff27f0cba73ed8b9d0cbc.zip |
[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
llvm-svn: 269670
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 0d882bddf14..36def86cb7d 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -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(DiagnosticsEngine &Diags, if (!Target->handleTargetFeatures(Opts->Features, Diags)) return nullptr; + Target->setSupportedOpenCLOpts(); + return Target.release(); } |