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