xref: /aosp_15_r20/external/OpenCL-CTS/test_conformance/compiler/procs.h (revision 6467f958c7de8070b317fc65bcb0f6472e388d82)
1*6467f958SSadaf Ebrahimi //
2*6467f958SSadaf Ebrahimi // Copyright (c) 2017 The Khronos Group Inc.
3*6467f958SSadaf Ebrahimi //
4*6467f958SSadaf Ebrahimi // Licensed under the Apache License, Version 2.0 (the "License");
5*6467f958SSadaf Ebrahimi // you may not use this file except in compliance with the License.
6*6467f958SSadaf Ebrahimi // You may obtain a copy of the License at
7*6467f958SSadaf Ebrahimi //
8*6467f958SSadaf Ebrahimi //    http://www.apache.org/licenses/LICENSE-2.0
9*6467f958SSadaf Ebrahimi //
10*6467f958SSadaf Ebrahimi // Unless required by applicable law or agreed to in writing, software
11*6467f958SSadaf Ebrahimi // distributed under the License is distributed on an "AS IS" BASIS,
12*6467f958SSadaf Ebrahimi // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*6467f958SSadaf Ebrahimi // See the License for the specific language governing permissions and
14*6467f958SSadaf Ebrahimi // limitations under the License.
15*6467f958SSadaf Ebrahimi //
16*6467f958SSadaf Ebrahimi #include "harness/conversions.h"
17*6467f958SSadaf Ebrahimi #include "harness/errorHelpers.h"
18*6467f958SSadaf Ebrahimi #include "harness/kernelHelpers.h"
19*6467f958SSadaf Ebrahimi #include "harness/mt19937.h"
20*6467f958SSadaf Ebrahimi #include "harness/typeWrappers.h"
21*6467f958SSadaf Ebrahimi 
22*6467f958SSadaf Ebrahimi // This is a macro rather than a function to be able to use and act like the
23*6467f958SSadaf Ebrahimi // existing test_error macro.
24*6467f958SSadaf Ebrahimi //
25*6467f958SSadaf Ebrahimi // Not all compiler tests need to use this macro, only those that don't use the
26*6467f958SSadaf Ebrahimi // test harness compiler helpers.
27*6467f958SSadaf Ebrahimi #define check_compiler_available(DEVICE)                                       \
28*6467f958SSadaf Ebrahimi     {                                                                          \
29*6467f958SSadaf Ebrahimi         cl_bool compilerAvailable = CL_FALSE;                                  \
30*6467f958SSadaf Ebrahimi         cl_int error = clGetDeviceInfo((DEVICE), CL_DEVICE_COMPILER_AVAILABLE, \
31*6467f958SSadaf Ebrahimi                                        sizeof(compilerAvailable),              \
32*6467f958SSadaf Ebrahimi                                        &compilerAvailable, NULL);              \
33*6467f958SSadaf Ebrahimi         test_error(error, "Unable to query CL_DEVICE_COMPILER_AVAILABLE");     \
34*6467f958SSadaf Ebrahimi         if (compilerAvailable == CL_FALSE)                                     \
35*6467f958SSadaf Ebrahimi         {                                                                      \
36*6467f958SSadaf Ebrahimi             log_info("Skipping test - no compiler is available.\n");           \
37*6467f958SSadaf Ebrahimi             return TEST_SKIPPED_ITSELF;                                        \
38*6467f958SSadaf Ebrahimi         }                                                                      \
39*6467f958SSadaf Ebrahimi     }
40*6467f958SSadaf Ebrahimi 
41*6467f958SSadaf Ebrahimi extern int test_load_program_source(cl_device_id deviceID, cl_context context,
42*6467f958SSadaf Ebrahimi                                     cl_command_queue queue, int num_elements);
43*6467f958SSadaf Ebrahimi extern int test_load_multistring_source(cl_device_id deviceID,
44*6467f958SSadaf Ebrahimi                                         cl_context context,
45*6467f958SSadaf Ebrahimi                                         cl_command_queue queue,
46*6467f958SSadaf Ebrahimi                                         int num_elements);
47*6467f958SSadaf Ebrahimi extern int test_load_two_kernel_source(cl_device_id deviceID,
48*6467f958SSadaf Ebrahimi                                        cl_context context,
49*6467f958SSadaf Ebrahimi                                        cl_command_queue queue,
50*6467f958SSadaf Ebrahimi                                        int num_elements);
51*6467f958SSadaf Ebrahimi extern int test_load_null_terminated_source(cl_device_id deviceID,
52*6467f958SSadaf Ebrahimi                                             cl_context context,
53*6467f958SSadaf Ebrahimi                                             cl_command_queue queue,
54*6467f958SSadaf Ebrahimi                                             int num_elements);
55*6467f958SSadaf Ebrahimi extern int test_load_null_terminated_multi_line_source(cl_device_id deviceID,
56*6467f958SSadaf Ebrahimi                                                        cl_context context,
57*6467f958SSadaf Ebrahimi                                                        cl_command_queue queue,
58*6467f958SSadaf Ebrahimi                                                        int num_elements);
59*6467f958SSadaf Ebrahimi extern int test_load_null_terminated_partial_multi_line_source(
60*6467f958SSadaf Ebrahimi     cl_device_id deviceID, cl_context context, cl_command_queue queue,
61*6467f958SSadaf Ebrahimi     int num_elements);
62*6467f958SSadaf Ebrahimi extern int test_load_discreet_length_source(cl_device_id deviceID,
63*6467f958SSadaf Ebrahimi                                             cl_context context,
64*6467f958SSadaf Ebrahimi                                             cl_command_queue queue,
65*6467f958SSadaf Ebrahimi                                             int num_elements);
66*6467f958SSadaf Ebrahimi extern int test_get_program_source(cl_device_id deviceID, cl_context context,
67*6467f958SSadaf Ebrahimi                                    cl_command_queue queue, int num_elements);
68*6467f958SSadaf Ebrahimi extern int test_get_program_build_info(cl_device_id deviceID,
69*6467f958SSadaf Ebrahimi                                        cl_context context,
70*6467f958SSadaf Ebrahimi                                        cl_command_queue queue,
71*6467f958SSadaf Ebrahimi                                        int num_elements);
72*6467f958SSadaf Ebrahimi extern int test_get_program_info(cl_device_id deviceID, cl_context context,
73*6467f958SSadaf Ebrahimi                                  cl_command_queue queue, int num_elements);
74*6467f958SSadaf Ebrahimi 
75*6467f958SSadaf Ebrahimi extern int test_large_compile(cl_device_id deviceID, cl_context context,
76*6467f958SSadaf Ebrahimi                               cl_command_queue queue, int num_elements);
77*6467f958SSadaf Ebrahimi extern int test_async_build(cl_device_id deviceID, cl_context context,
78*6467f958SSadaf Ebrahimi                             cl_command_queue queue, int num_elements);
79*6467f958SSadaf Ebrahimi 
80*6467f958SSadaf Ebrahimi extern int test_options_build_optimizations(cl_device_id deviceID,
81*6467f958SSadaf Ebrahimi                                             cl_context context,
82*6467f958SSadaf Ebrahimi                                             cl_command_queue queue,
83*6467f958SSadaf Ebrahimi                                             int num_elements);
84*6467f958SSadaf Ebrahimi extern int test_options_build_macro(cl_device_id deviceID, cl_context context,
85*6467f958SSadaf Ebrahimi                                     cl_command_queue queue, int num_elements);
86*6467f958SSadaf Ebrahimi extern int test_options_build_macro_existence(cl_device_id deviceID,
87*6467f958SSadaf Ebrahimi                                               cl_context context,
88*6467f958SSadaf Ebrahimi                                               cl_command_queue queue,
89*6467f958SSadaf Ebrahimi                                               int num_elements);
90*6467f958SSadaf Ebrahimi extern int test_options_include_directory(cl_device_id deviceID,
91*6467f958SSadaf Ebrahimi                                           cl_context context,
92*6467f958SSadaf Ebrahimi                                           cl_command_queue queue,
93*6467f958SSadaf Ebrahimi                                           int num_elements);
94*6467f958SSadaf Ebrahimi extern int test_options_denorm_cache(cl_device_id deviceID, cl_context context,
95*6467f958SSadaf Ebrahimi                                      cl_command_queue queue, int num_elements);
96*6467f958SSadaf Ebrahimi 
97*6467f958SSadaf Ebrahimi extern int test_preprocessor_define_udef(cl_device_id deviceID,
98*6467f958SSadaf Ebrahimi                                          cl_context context,
99*6467f958SSadaf Ebrahimi                                          cl_command_queue queue,
100*6467f958SSadaf Ebrahimi                                          int num_elements);
101*6467f958SSadaf Ebrahimi extern int test_preprocessor_include(cl_device_id deviceID, cl_context context,
102*6467f958SSadaf Ebrahimi                                      cl_command_queue queue, int num_elements);
103*6467f958SSadaf Ebrahimi extern int test_preprocessor_line_error(cl_device_id deviceID,
104*6467f958SSadaf Ebrahimi                                         cl_context context,
105*6467f958SSadaf Ebrahimi                                         cl_command_queue queue,
106*6467f958SSadaf Ebrahimi                                         int num_elements);
107*6467f958SSadaf Ebrahimi extern int test_preprocessor_pragma(cl_device_id deviceID, cl_context context,
108*6467f958SSadaf Ebrahimi                                     cl_command_queue queue, int num_elements);
109*6467f958SSadaf Ebrahimi 
110*6467f958SSadaf Ebrahimi extern int test_opencl_c_versions(cl_device_id device, cl_context context,
111*6467f958SSadaf Ebrahimi                                   cl_command_queue queue, int num_elements);
112*6467f958SSadaf Ebrahimi extern int test_compiler_defines_for_extensions(cl_device_id device,
113*6467f958SSadaf Ebrahimi                                                 cl_context context,
114*6467f958SSadaf Ebrahimi                                                 cl_command_queue queue,
115*6467f958SSadaf Ebrahimi                                                 int n_elems);
116*6467f958SSadaf Ebrahimi extern int test_image_macro(cl_device_id deviceID, cl_context context,
117*6467f958SSadaf Ebrahimi                             cl_command_queue queue, int num_elements);
118*6467f958SSadaf Ebrahimi 
119*6467f958SSadaf Ebrahimi extern int test_simple_compile_only(cl_device_id deviceID, cl_context context,
120*6467f958SSadaf Ebrahimi                                     cl_command_queue queue, int num_elements);
121*6467f958SSadaf Ebrahimi extern int test_simple_static_compile_only(cl_device_id deviceID,
122*6467f958SSadaf Ebrahimi                                            cl_context context,
123*6467f958SSadaf Ebrahimi                                            cl_command_queue queue,
124*6467f958SSadaf Ebrahimi                                            int num_elements);
125*6467f958SSadaf Ebrahimi extern int test_simple_extern_compile_only(cl_device_id deviceID,
126*6467f958SSadaf Ebrahimi                                            cl_context context,
127*6467f958SSadaf Ebrahimi                                            cl_command_queue queue,
128*6467f958SSadaf Ebrahimi                                            int num_elements);
129*6467f958SSadaf Ebrahimi extern int test_simple_compile_with_callback(cl_device_id deviceID,
130*6467f958SSadaf Ebrahimi                                              cl_context context,
131*6467f958SSadaf Ebrahimi                                              cl_command_queue queue,
132*6467f958SSadaf Ebrahimi                                              int num_elements);
133*6467f958SSadaf Ebrahimi extern int test_simple_embedded_header_compile(cl_device_id deviceID,
134*6467f958SSadaf Ebrahimi                                                cl_context context,
135*6467f958SSadaf Ebrahimi                                                cl_command_queue queue,
136*6467f958SSadaf Ebrahimi                                                int num_elements);
137*6467f958SSadaf Ebrahimi 
138*6467f958SSadaf Ebrahimi extern int test_simple_link_only(cl_device_id deviceID, cl_context context,
139*6467f958SSadaf Ebrahimi                                  cl_command_queue queue, int num_elements);
140*6467f958SSadaf Ebrahimi extern int test_two_file_regular_variable_access(cl_device_id deviceID,
141*6467f958SSadaf Ebrahimi                                                  cl_context context,
142*6467f958SSadaf Ebrahimi                                                  cl_command_queue queue,
143*6467f958SSadaf Ebrahimi                                                  int num_elements);
144*6467f958SSadaf Ebrahimi extern int test_two_file_regular_struct_access(cl_device_id deviceID,
145*6467f958SSadaf Ebrahimi                                                cl_context context,
146*6467f958SSadaf Ebrahimi                                                cl_command_queue queue,
147*6467f958SSadaf Ebrahimi                                                int num_elements);
148*6467f958SSadaf Ebrahimi extern int test_two_file_regular_function_access(cl_device_id deviceID,
149*6467f958SSadaf Ebrahimi                                                  cl_context context,
150*6467f958SSadaf Ebrahimi                                                  cl_command_queue queue,
151*6467f958SSadaf Ebrahimi                                                  int num_elements);
152*6467f958SSadaf Ebrahimi 
153*6467f958SSadaf Ebrahimi extern int test_simple_link_with_callback(cl_device_id deviceID,
154*6467f958SSadaf Ebrahimi                                           cl_context context,
155*6467f958SSadaf Ebrahimi                                           cl_command_queue queue,
156*6467f958SSadaf Ebrahimi                                           int num_elements);
157*6467f958SSadaf Ebrahimi extern int test_simple_embedded_header_link(cl_device_id deviceID,
158*6467f958SSadaf Ebrahimi                                             cl_context context,
159*6467f958SSadaf Ebrahimi                                             cl_command_queue queue,
160*6467f958SSadaf Ebrahimi                                             int num_elements);
161*6467f958SSadaf Ebrahimi 
162*6467f958SSadaf Ebrahimi extern int test_execute_after_simple_compile_and_link(cl_device_id deviceID,
163*6467f958SSadaf Ebrahimi                                                       cl_context context,
164*6467f958SSadaf Ebrahimi                                                       cl_command_queue queue,
165*6467f958SSadaf Ebrahimi                                                       int num_elements);
166*6467f958SSadaf Ebrahimi extern int test_execute_after_simple_compile_and_link_no_device_info(
167*6467f958SSadaf Ebrahimi     cl_device_id deviceID, cl_context context, cl_command_queue queue,
168*6467f958SSadaf Ebrahimi     int num_elements);
169*6467f958SSadaf Ebrahimi extern int test_execute_after_simple_compile_and_link_with_defines(
170*6467f958SSadaf Ebrahimi     cl_device_id deviceID, cl_context context, cl_command_queue queue,
171*6467f958SSadaf Ebrahimi     int num_elements);
172*6467f958SSadaf Ebrahimi extern int test_execute_after_simple_compile_and_link_with_callbacks(
173*6467f958SSadaf Ebrahimi     cl_device_id deviceID, cl_context context, cl_command_queue queue,
174*6467f958SSadaf Ebrahimi     int num_elements);
175*6467f958SSadaf Ebrahimi extern int test_execute_after_simple_library_with_link(cl_device_id deviceID,
176*6467f958SSadaf Ebrahimi                                                        cl_context context,
177*6467f958SSadaf Ebrahimi                                                        cl_command_queue queue,
178*6467f958SSadaf Ebrahimi                                                        int num_elements);
179*6467f958SSadaf Ebrahimi extern int test_execute_after_two_file_link(cl_device_id deviceID,
180*6467f958SSadaf Ebrahimi                                             cl_context context,
181*6467f958SSadaf Ebrahimi                                             cl_command_queue queue,
182*6467f958SSadaf Ebrahimi                                             int num_elements);
183*6467f958SSadaf Ebrahimi extern int test_execute_after_embedded_header_link(cl_device_id deviceID,
184*6467f958SSadaf Ebrahimi                                                    cl_context context,
185*6467f958SSadaf Ebrahimi                                                    cl_command_queue queue,
186*6467f958SSadaf Ebrahimi                                                    int num_elements);
187*6467f958SSadaf Ebrahimi extern int test_execute_after_included_header_link(cl_device_id deviceID,
188*6467f958SSadaf Ebrahimi                                                    cl_context context,
189*6467f958SSadaf Ebrahimi                                                    cl_command_queue queue,
190*6467f958SSadaf Ebrahimi                                                    int num_elements);
191*6467f958SSadaf Ebrahimi extern int test_execute_after_serialize_reload_object(cl_device_id deviceID,
192*6467f958SSadaf Ebrahimi                                                       cl_context context,
193*6467f958SSadaf Ebrahimi                                                       cl_command_queue queue,
194*6467f958SSadaf Ebrahimi                                                       int num_elements);
195*6467f958SSadaf Ebrahimi extern int test_execute_after_serialize_reload_library(cl_device_id deviceID,
196*6467f958SSadaf Ebrahimi                                                        cl_context context,
197*6467f958SSadaf Ebrahimi                                                        cl_command_queue queue,
198*6467f958SSadaf Ebrahimi                                                        int num_elements);
199*6467f958SSadaf Ebrahimi 
200*6467f958SSadaf Ebrahimi extern int test_simple_library_only(cl_device_id deviceID, cl_context context,
201*6467f958SSadaf Ebrahimi                                     cl_command_queue queue, int num_elements);
202*6467f958SSadaf Ebrahimi extern int test_simple_library_with_callback(cl_device_id deviceID,
203*6467f958SSadaf Ebrahimi                                              cl_context context,
204*6467f958SSadaf Ebrahimi                                              cl_command_queue queue,
205*6467f958SSadaf Ebrahimi                                              int num_elements);
206*6467f958SSadaf Ebrahimi extern int test_simple_library_with_link(cl_device_id deviceID,
207*6467f958SSadaf Ebrahimi                                          cl_context context,
208*6467f958SSadaf Ebrahimi                                          cl_command_queue queue,
209*6467f958SSadaf Ebrahimi                                          int num_elements);
210*6467f958SSadaf Ebrahimi extern int test_two_file_link(cl_device_id deviceID, cl_context context,
211*6467f958SSadaf Ebrahimi                               cl_command_queue queue, int num_elements);
212*6467f958SSadaf Ebrahimi extern int test_multi_file_libraries(cl_device_id deviceID, cl_context context,
213*6467f958SSadaf Ebrahimi                                      cl_command_queue queue, int num_elements);
214*6467f958SSadaf Ebrahimi extern int test_multiple_libraries(cl_device_id deviceID, cl_context context,
215*6467f958SSadaf Ebrahimi                                    cl_command_queue queue, int num_elements);
216*6467f958SSadaf Ebrahimi extern int test_multiple_files(cl_device_id deviceID, cl_context context,
217*6467f958SSadaf Ebrahimi                                cl_command_queue queue, int num_elements);
218*6467f958SSadaf Ebrahimi extern int test_multiple_files_multiple_libraries(cl_device_id deviceID,
219*6467f958SSadaf Ebrahimi                                                   cl_context context,
220*6467f958SSadaf Ebrahimi                                                   cl_command_queue queue,
221*6467f958SSadaf Ebrahimi                                                   int num_elements);
222*6467f958SSadaf Ebrahimi extern int test_multiple_embedded_headers(cl_device_id deviceID,
223*6467f958SSadaf Ebrahimi                                           cl_context context,
224*6467f958SSadaf Ebrahimi                                           cl_command_queue queue,
225*6467f958SSadaf Ebrahimi                                           int num_elements);
226*6467f958SSadaf Ebrahimi 
227*6467f958SSadaf Ebrahimi extern int test_program_binary_type(cl_device_id deviceID, cl_context context,
228*6467f958SSadaf Ebrahimi                                     cl_command_queue queue, int num_elements);
229*6467f958SSadaf Ebrahimi extern int test_compile_and_link_status_options_log(cl_device_id deviceID,
230*6467f958SSadaf Ebrahimi                                                     cl_context context,
231*6467f958SSadaf Ebrahimi                                                     cl_command_queue queue,
232*6467f958SSadaf Ebrahimi                                                     int num_elements);
233*6467f958SSadaf Ebrahimi 
234*6467f958SSadaf Ebrahimi extern int test_pragma_unroll(cl_device_id deviceID, cl_context context,
235*6467f958SSadaf Ebrahimi                               cl_command_queue queue, int num_elements);
236*6467f958SSadaf Ebrahimi extern int test_features_macro(cl_device_id deviceID, cl_context context,
237*6467f958SSadaf Ebrahimi                                cl_command_queue queue, int num_elements);
238*6467f958SSadaf Ebrahimi extern int test_unload_valid(cl_device_id deviceID, cl_context context,
239*6467f958SSadaf Ebrahimi                              cl_command_queue queue, int num_elements);
240*6467f958SSadaf Ebrahimi extern int test_unload_invalid(cl_device_id deviceID, cl_context context,
241*6467f958SSadaf Ebrahimi                                cl_command_queue queue, int num_elements);
242*6467f958SSadaf Ebrahimi extern int test_unload_repeated(cl_device_id deviceID, cl_context context,
243*6467f958SSadaf Ebrahimi                                 cl_command_queue queue, int num_elements);
244*6467f958SSadaf Ebrahimi extern int test_unload_compile_unload_link(cl_device_id deviceID,
245*6467f958SSadaf Ebrahimi                                            cl_context context,
246*6467f958SSadaf Ebrahimi                                            cl_command_queue queue,
247*6467f958SSadaf Ebrahimi                                            int num_elements);
248*6467f958SSadaf Ebrahimi extern int test_unload_build_unload_create_kernel(cl_device_id deviceID,
249*6467f958SSadaf Ebrahimi                                                   cl_context context,
250*6467f958SSadaf Ebrahimi                                                   cl_command_queue queue,
251*6467f958SSadaf Ebrahimi                                                   int num_elements);
252*6467f958SSadaf Ebrahimi extern int test_unload_link_different(cl_device_id deviceID, cl_context context,
253*6467f958SSadaf Ebrahimi                                       cl_command_queue queue, int num_elements);
254*6467f958SSadaf Ebrahimi extern int test_unload_build_threaded(cl_device_id deviceID, cl_context context,
255*6467f958SSadaf Ebrahimi                                       cl_command_queue queue, int num_elements);
256*6467f958SSadaf Ebrahimi extern int test_unload_build_info(cl_device_id deviceID, cl_context context,
257*6467f958SSadaf Ebrahimi                                   cl_command_queue queue, int num_elements);
258*6467f958SSadaf Ebrahimi extern int test_unload_program_binaries(cl_device_id deviceID,
259*6467f958SSadaf Ebrahimi                                         cl_context context,
260*6467f958SSadaf Ebrahimi                                         cl_command_queue queue,
261*6467f958SSadaf Ebrahimi                                         int num_elements);
262