Index: lib/Basic/Targets.cpp =================================================================== --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -1840,6 +1840,21 @@ return GPU != GK_NONE; } + 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; + + Opts.cl_khr_fp64 = 1; + 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; + } }; const Builtin::Info NVPTXTargetInfo::BuiltinInfo[] = { Index: test/Misc/nvptx.languageOptsOpenCL.cl =================================================================== --- /dev/null +++ test/Misc/nvptx.languageOptsOpenCL.cl @@ -0,0 +1,16 @@ +// REQUIRES: nvptx-registered-target +// RUN: %clang_cc1 -x cl %s -verify -triple nvptx-unknown-unknown -Werror +// RUN: %clang_cc1 -x cl %s -verify -triple nvptx64-unknown-unknown -Werror +// expected-no-diagnostics + +#pragma EXTENSION cl_clang_storage_class_specifiers: enabled +#pragma EXTENSION cl_khr_gl_event: enabled +#pragma EXTENSION cl_khr_gl_sharing: enabled +#pragma EXTENSION cl_khr_subgroups: enabled + +#pragma EXTENSION cl_khr_fp64: enabled +#pragma EXTENSION cl_khr_byte_addressable_storage: enabled +#pragma EXTENSION cl_khr_global_int32_base_atomics: enabled +#pragma EXTENSION cl_khr_global_int32_extended_atomics: enabled +#pragma EXTENSION cl_khr_local_int32_base_atomics: enabled +#pragma EXTENSION cl_khr_local_int32_extended_atomics: enabled