xref: /aosp_15_r20/external/clang/test/Misc/nvptx.languageOptsOpenCL.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
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