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