Index: lib/Basic/Targets.cpp =================================================================== --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -2109,29 +2109,25 @@ 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; + void setSupportedOpenCLOpts() override { + auto &Opts = getSupportedOpenCLOpts(); + Opts.cl_clang_storage_class_specifiers = 1; + + if (hasFP64) + Opts.cl_khr_fp64 = 1; + if (GPU >= GK_EVERGREEN) { + 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; + } } }; Index: test/Misc/amdgcn.languageOptsOpenCL.cl =================================================================== --- /dev/null +++ test/Misc/amdgcn.languageOptsOpenCL.cl @@ -0,0 +1,61 @@ +// REQUIRES: amdgpu-registered-target +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple amdgcn-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple amdgcn-unknown-unknown +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple amdgcn-unknown-unknown +// expected-no-diagnostics + +#ifndef cl_clang_storage_class_specifiers +#error "Missing cl_clang_storage_class_specifiers define" +#endif +#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable + +#ifndef cl_khr_fp64 +#error "Missing cl_khr_fp64 define" +#endif + +#ifndef cl_khr_3d_image_writes +#error "Missing cl_khr_3d_image_writes define" +#endif + +#if (__OPENCL_C_VERSION__ < 120) +#pragma OPENCL EXTENSION cl_khr_fp64: enable +#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable +#endif + +#ifndef cl_khr_byte_addressable_store +#error "Missing cl_khr_byte_addressable_store define" +#endif + +#ifndef cl_khr_global_int32_base_atomics +#error "Missing cl_khr_global_int32_base_atomics define" +#endif + +#ifndef cl_khr_global_int32_extended_atomics +#error "Missing cl_khr_global_int32_extended_atomics define" +#endif + +#ifndef cl_khr_local_int32_base_atomics +#error "Missing cl_khr_local_int32_base_atomics define" +#endif + +#ifndef cl_khr_local_int32_extended_atomics +#error "Missing cl_khr_local_int32_extended_atomics define" +#endif + +#if (__OPENCL_C_VERSION__ == 100) +#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable +#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable +#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable +#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable +#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable +#endif + +#ifndef cl_khr_int64_base_atomics +#error "Missing cl_khr_int64_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics: enable + +#ifndef cl_khr_int64_extended_atomics +#error "Missing cl_khr_int64_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable Index: test/Misc/r600.languageOptsOpenCL.cl =================================================================== --- /dev/null +++ test/Misc/r600.languageOptsOpenCL.cl @@ -0,0 +1,63 @@ +// REQUIRES: amdgpu-registered-target +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple r600-unknown-unknown -target-cpu turks -DTURKS +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple r600-unknown-unknown -target-cpu turks -DTURKS +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -target-cpu cayman +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -target-cpu cypress +// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple r600-unknown-unknown -target-cpu turks -DTURKS +// expected-no-diagnostics + +#ifndef cl_clang_storage_class_specifiers +#error "Missing cl_clang_storage_class_specifiers define" +#endif +#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable + +#if (__OPENCL_C_VERSION__ < 120) && !defined TURKS +#ifndef cl_khr_fp64 +#error "Missing cl_khr_fp64 define" +#endif +#pragma OPENCL EXTENSION cl_khr_fp64: enable +#endif + +#if (__OPENCL_C_VERSION__ == 100) +#ifndef cl_khr_byte_addressable_store +#error "Missing cl_khr_byte_addressable_store define" +#endif +#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable + +#ifndef cl_khr_global_int32_base_atomics +#error "Missing cl_khr_global_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable + +#ifndef cl_khr_global_int32_extended_atomics +#error "Missing cl_khr_global_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable + +#ifndef cl_khr_local_int32_base_atomics +#error "Missing cl_khr_local_int32_base_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable + +#ifndef cl_khr_local_int32_extended_atomics +#error "Missing cl_khr_local_int32_extended_atomics define" +#endif +#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable + +#endif + +#if (__OPENCL_C_VERSION__ >= 110) +#ifndef cl_khr_gl_sharing +#error "Missing cl_khr_gl_sharing define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable + +#ifndef cl_khr_gl_event +#error "Missing cl_khr_gl_event define" +#endif +#pragma OPENCL EXTENSION cl_khr_gl_event: enable +#endif