xref: /aosp_15_r20/external/clang/test/SemaOpenCL/extension-version.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
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