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