1*67e74705SXin Li// REQUIRES: nvptx-registered-target 2*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx-unknown-unknown 3*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx-unknown-unknown 4*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx-unknown-unknown 5*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx-unknown-unknown 6*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 7*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 8*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 9*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 10*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx64-unknown-unknown 11*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx64-unknown-unknown 12*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx64-unknown-unknown 13*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx64-unknown-unknown 14*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 15*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 16*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 17*67e74705SXin Li// RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple nvptx64-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES 18*67e74705SXin Li 19*67e74705SXin Li// Extensions in all versions 20*67e74705SXin Li#ifndef cl_clang_storage_class_specifiers 21*67e74705SXin Li#error "Missing cl_clang_storage_class_specifiers define" 22*67e74705SXin Li#endif 23*67e74705SXin Li#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable 24*67e74705SXin Li 25*67e74705SXin Li#ifdef cl_khr_fp16 26*67e74705SXin Li#error "Incorrect cl_khr_fp16 define" 27*67e74705SXin Li#endif 28*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_fp16: enable 29*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_fp16' - ignoring}} 30*67e74705SXin Li 31*67e74705SXin Li#ifdef cl_khr_int64_base_atomics 32*67e74705SXin Li#error "Incorrect cl_khr_int64_base_atomics define" 33*67e74705SXin Li#endif 34*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_int64_base_atomics: enable 35*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_base_atomics' - ignoring}} 36*67e74705SXin Li 37*67e74705SXin Li#ifdef cl_khr_int64_extended_atomics 38*67e74705SXin Li#error "Incorrect cl_khr_int64_extended_atomics define" 39*67e74705SXin Li#endif 40*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable 41*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_extended_atomics' - ignoring}} 42*67e74705SXin Li 43*67e74705SXin Li#ifndef cl_khr_gl_sharing 44*67e74705SXin Li#error "Missing cl_khr_gl_sharing define" 45*67e74705SXin Li#endif 46*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable 47*67e74705SXin Li 48*67e74705SXin Li#ifndef cl_khr_icd 49*67e74705SXin Li#error "Missing cl_khr_icd define" 50*67e74705SXin Li#endif 51*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_icd: enable 52*67e74705SXin Li 53*67e74705SXin Li// Core features in CL 1.1 54*67e74705SXin Li 55*67e74705SXin Li#ifndef cl_khr_byte_addressable_store 56*67e74705SXin Li#error "Missing cl_khr_byte_addressable_store define" 57*67e74705SXin Li#endif 58*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable 59*67e74705SXin Li#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES 60*67e74705SXin Li// expected-warning@-2{{OpenCL extension 'cl_khr_byte_addressable_store' is core feature or supported optional core feature - ignoring}} 61*67e74705SXin Li#endif 62*67e74705SXin Li 63*67e74705SXin Li#ifndef cl_khr_global_int32_base_atomics 64*67e74705SXin Li#error "Missing cl_khr_global_int32_base_atomics define" 65*67e74705SXin Li#endif 66*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable 67*67e74705SXin Li#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES 68*67e74705SXin Li// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_base_atomics' is core feature or supported optional core feature - ignoring}} 69*67e74705SXin Li#endif 70*67e74705SXin Li 71*67e74705SXin Li#ifndef cl_khr_global_int32_extended_atomics 72*67e74705SXin Li#error "Missing cl_khr_global_int32_extended_atomics define" 73*67e74705SXin Li#endif 74*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable 75*67e74705SXin Li#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES 76*67e74705SXin Li// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} 77*67e74705SXin Li#endif 78*67e74705SXin Li 79*67e74705SXin Li#ifndef cl_khr_local_int32_base_atomics 80*67e74705SXin Li#error "Missing cl_khr_local_int32_base_atomics define" 81*67e74705SXin Li#endif 82*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable 83*67e74705SXin Li#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES 84*67e74705SXin Li// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_base_atomics' is core feature or supported optional core feature - ignoring}} 85*67e74705SXin Li#endif 86*67e74705SXin Li 87*67e74705SXin Li#ifndef cl_khr_local_int32_extended_atomics 88*67e74705SXin Li#error "Missing cl_khr_local_int32_extended_atomics define" 89*67e74705SXin Li#endif 90*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable 91*67e74705SXin Li#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES 92*67e74705SXin Li// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}} 93*67e74705SXin Li#endif 94*67e74705SXin Li 95*67e74705SXin Li#if (__OPENCL_C_VERSION__ < 110) 96*67e74705SXin Li// Deprecated above 1.0 97*67e74705SXin Li#ifdef cl_khr_select_fprounding_mode 98*67e74705SXin Li#error "Incorrect cl_khr_select_fprounding_mode define" 99*67e74705SXin Li#endif 100*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable 101*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}} 102*67e74705SXin Li#endif 103*67e74705SXin Li 104*67e74705SXin Li 105*67e74705SXin Li// Core feature in CL 1.2 106*67e74705SXin Li#ifndef cl_khr_fp64 107*67e74705SXin Li#error "Missing cl_khr_fp64 define" 108*67e74705SXin Li#endif 109*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_fp64: enable 110*67e74705SXin Li#if (__OPENCL_C_VERSION__ >= 120) && defined TEST_CORE_FEATURES 111*67e74705SXin Li// expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}} 112*67e74705SXin Li#endif 113*67e74705SXin Li 114*67e74705SXin Li// Core feature in CL 2.0, but not supported on nvptx 115*67e74705SXin Li#ifdef cl_khr_3d_image_writes 116*67e74705SXin Li#error "Incorrect cl_khr_3d_image_writes define" 117*67e74705SXin Li#endif 118*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable 119*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_3d_image_writes' - ignoring}} 120*67e74705SXin Li 121*67e74705SXin Li 122*67e74705SXin Li 123*67e74705SXin Li#ifdef cl_khr_gl_event 124*67e74705SXin Li#error "Incorrect cl_khr_gl_event define" 125*67e74705SXin Li#endif 126*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_gl_event: enable 127*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}} 128*67e74705SXin Li 129*67e74705SXin Li#ifdef cl_khr_d3d10_sharing 130*67e74705SXin Li#error "Incorrect cl_khr_d3d10_sharing define" 131*67e74705SXin Li#endif 132*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable 133*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}} 134*67e74705SXin Li 135*67e74705SXin Li#ifdef cl_khr_context_abort 136*67e74705SXin Li#error "Incorrect cl_context_abort define" 137*67e74705SXin Li#endif 138*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_context_abort: enable 139*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}} 140*67e74705SXin Li 141*67e74705SXin Li#ifdef cl_khr_d3d11_sharing 142*67e74705SXin Li#error "Incorrect cl_khr_d3d11_sharing define" 143*67e74705SXin Li#endif 144*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable 145*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}} 146*67e74705SXin Li 147*67e74705SXin Li#ifdef cl_khr_dx9_media_sharing 148*67e74705SXin Li#error "Incorrect cl_khr_dx9_media_sharing define" 149*67e74705SXin Li#endif 150*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable 151*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}} 152*67e74705SXin Li 153*67e74705SXin Li#ifdef cl_khr_image2d_from_buffer 154*67e74705SXin Li#error "Incorrect cl_khr_image2d_from_buffer define" 155*67e74705SXin Li#endif 156*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable 157*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}} 158*67e74705SXin Li 159*67e74705SXin Li#ifdef cl_khr_initialize_memory 160*67e74705SXin Li#error "Incorrect cl_khr_initialize_memory define" 161*67e74705SXin Li#endif 162*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable 163*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}} 164*67e74705SXin Li 165*67e74705SXin Li#ifdef cl_khr_gl_depth_images 166*67e74705SXin Li#error "Incorrect cl_khr_gl_depth_images define" 167*67e74705SXin Li#endif 168*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable 169*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}} 170*67e74705SXin Li 171*67e74705SXin Li#ifdef cl_khr_gl_msaa_sharing 172*67e74705SXin Li#error "Incorrect cl_khr_gl_msaa_sharing define" 173*67e74705SXin Li#endif 174*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable 175*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}} 176*67e74705SXin Li 177*67e74705SXin Li#ifdef cl_khr_spir 178*67e74705SXin Li#error "Incorrect cl_khr_spir define" 179*67e74705SXin Li#endif 180*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_spir: enable 181*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}} 182*67e74705SXin Li 183*67e74705SXin Li#ifdef cl_khr_egl_event 184*67e74705SXin Li#error "Incorrect cl_khr_egl_event define" 185*67e74705SXin Li#endif 186*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_egl_event: enable 187*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}} 188*67e74705SXin Li 189*67e74705SXin Li#ifdef cl_khr_egl_image 190*67e74705SXin Li#error "Missing cl_khr_egl_image define" 191*67e74705SXin Li#endif 192*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_egl_image: enable 193*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}} 194*67e74705SXin Li 195*67e74705SXin Li#ifdef cl_khr_srgb_image_writes 196*67e74705SXin Li#error "Incorrect cl_khr_srgb_image_writes define" 197*67e74705SXin Li#endif 198*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_srgb_image_writes: enable 199*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_srgb_image_writes' - ignoring}} 200*67e74705SXin Li 201*67e74705SXin Li#ifdef cl_khr_subgroups 202*67e74705SXin Li#error "Incorrect cl_khr_subgroups define" 203*67e74705SXin Li#endif 204*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_subgroups: enable 205*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_subgroups' - ignoring}} 206*67e74705SXin Li 207*67e74705SXin Li#ifdef cl_khr_terminate_context 208*67e74705SXin Li#error "Incorrect cl_khr_terminate_context define" 209*67e74705SXin Li#endif 210*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_terminate_context: enable 211*67e74705SXin Li// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}} 212