1*6467f958SSadaf Ebrahimi // 2*6467f958SSadaf Ebrahimi // Copyright (c) 2023 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 17*6467f958SSadaf Ebrahimi #include "harness/kernelHelpers.h" 18*6467f958SSadaf Ebrahimi #include "harness/testHarness.h" 19*6467f958SSadaf Ebrahimi #include "harness/errorHelpers.h" 20*6467f958SSadaf Ebrahimi #include "harness/typeWrappers.h" 21*6467f958SSadaf Ebrahimi #include "harness/conversions.h" 22*6467f958SSadaf Ebrahimi #include "harness/rounding_mode.h" 23*6467f958SSadaf Ebrahimi 24*6467f958SSadaf Ebrahimi extern int test_hostptr(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 25*6467f958SSadaf Ebrahimi extern int test_fpmath(cl_device_id deviceID, cl_context context, 26*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 27*6467f958SSadaf Ebrahimi extern int test_intmath_int(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 28*6467f958SSadaf Ebrahimi extern int test_intmath_int2(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 29*6467f958SSadaf Ebrahimi extern int test_intmath_int4(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 30*6467f958SSadaf Ebrahimi extern int test_intmath_long(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 31*6467f958SSadaf Ebrahimi extern int test_intmath_long2(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 32*6467f958SSadaf Ebrahimi extern int test_intmath_long4(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 33*6467f958SSadaf Ebrahimi extern int test_hiloeo(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 34*6467f958SSadaf Ebrahimi extern int test_if(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 35*6467f958SSadaf Ebrahimi extern int test_sizeof(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 36*6467f958SSadaf Ebrahimi extern int test_loop(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 37*6467f958SSadaf Ebrahimi extern int test_pointer_cast(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 38*6467f958SSadaf Ebrahimi extern int test_local_arg_def(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 39*6467f958SSadaf Ebrahimi extern int test_local_kernel_def(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 40*6467f958SSadaf Ebrahimi extern int test_local_kernel_scope(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 41*6467f958SSadaf Ebrahimi extern int test_constant(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 42*6467f958SSadaf Ebrahimi extern int test_constant_source(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 43*6467f958SSadaf Ebrahimi extern int test_readimage(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 44*6467f958SSadaf Ebrahimi extern int test_readimage_int16(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 45*6467f958SSadaf Ebrahimi extern int test_readimage_fp32(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 46*6467f958SSadaf Ebrahimi extern int test_writeimage(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 47*6467f958SSadaf Ebrahimi extern int test_writeimage_int16(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 48*6467f958SSadaf Ebrahimi extern int test_writeimage_fp32(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 49*6467f958SSadaf Ebrahimi extern int test_mri_one(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 50*6467f958SSadaf Ebrahimi extern int test_mri_multiple(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 51*6467f958SSadaf Ebrahimi extern int test_image_r8(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 52*6467f958SSadaf Ebrahimi extern int test_simplebarrier(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 53*6467f958SSadaf Ebrahimi extern int test_barrier(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 54*6467f958SSadaf Ebrahimi extern int test_wg_barrier(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 55*6467f958SSadaf Ebrahimi extern int test_int2fp(cl_device_id deviceID, cl_context context, 56*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 57*6467f958SSadaf Ebrahimi extern int test_fp2int(cl_device_id deviceID, cl_context context, 58*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 59*6467f958SSadaf Ebrahimi extern int test_imagearraycopy(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 60*6467f958SSadaf Ebrahimi extern int test_imagearraycopy3d(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 61*6467f958SSadaf Ebrahimi extern int test_imagereadwrite(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 62*6467f958SSadaf Ebrahimi extern int test_imagereadwrite3d(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 63*6467f958SSadaf Ebrahimi extern int test_readimage3d(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 64*6467f958SSadaf Ebrahimi extern int test_readimage3d_int16(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 65*6467f958SSadaf Ebrahimi extern int test_readimage3d_fp32(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 66*6467f958SSadaf Ebrahimi extern int test_bufferreadwriterect(cl_device_id device, cl_context context, cl_command_queue queue_, int num_elements); 67*6467f958SSadaf Ebrahimi extern int test_imagecopy(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 68*6467f958SSadaf Ebrahimi extern int test_imagecopy3d(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 69*6467f958SSadaf Ebrahimi extern int test_imagerandomcopy(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 70*6467f958SSadaf Ebrahimi extern int test_arraycopy(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems); 71*6467f958SSadaf Ebrahimi extern int test_arrayimagecopy(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 72*6467f958SSadaf Ebrahimi extern int test_arrayimagecopy3d(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 73*6467f958SSadaf Ebrahimi extern int test_imagenpot(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 74*6467f958SSadaf Ebrahimi extern int test_sampler_float(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 75*6467f958SSadaf Ebrahimi extern int test_sampler_int(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 76*6467f958SSadaf Ebrahimi extern int test_createkernelsinprogram(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 77*6467f958SSadaf Ebrahimi extern int test_single_large_allocation(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 78*6467f958SSadaf Ebrahimi extern int test_multiple_max_allocation(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 79*6467f958SSadaf Ebrahimi extern int test_arrayreadwrite(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 80*6467f958SSadaf Ebrahimi extern int test_imagedim_pow2(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 81*6467f958SSadaf Ebrahimi extern int test_imagedim_non_pow2(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 82*6467f958SSadaf Ebrahimi extern int test_image_param(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 83*6467f958SSadaf Ebrahimi extern int test_image_multipass_integer_coord(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 84*6467f958SSadaf Ebrahimi extern int test_image_multipass_float_coord(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 85*6467f958SSadaf Ebrahimi 86*6467f958SSadaf Ebrahimi extern int test_vload_global(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 87*6467f958SSadaf Ebrahimi extern int test_vload_local(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 88*6467f958SSadaf Ebrahimi extern int test_vload_constant(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 89*6467f958SSadaf Ebrahimi extern int test_vload_private(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 90*6467f958SSadaf Ebrahimi extern int test_vstore_global(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 91*6467f958SSadaf Ebrahimi extern int test_vstore_local(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 92*6467f958SSadaf Ebrahimi extern int test_vstore_private(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 93*6467f958SSadaf Ebrahimi 94*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_char(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 95*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_uchar(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 96*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_short(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 97*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_ushort(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 98*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_int(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 99*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_uint(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 100*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_long(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 101*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_ulong(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 102*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_float(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 103*6467f958SSadaf Ebrahimi extern int test_explicit_s2v_double(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 104*6467f958SSadaf Ebrahimi 105*6467f958SSadaf Ebrahimi extern int test_enqueue_map_buffer(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 106*6467f958SSadaf Ebrahimi extern int test_enqueue_map_image(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 107*6467f958SSadaf Ebrahimi 108*6467f958SSadaf Ebrahimi extern int test_work_item_functions(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 109*6467f958SSadaf Ebrahimi 110*6467f958SSadaf Ebrahimi extern int test_astype(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 111*6467f958SSadaf Ebrahimi 112*6467f958SSadaf Ebrahimi extern int test_native_kernel(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 113*6467f958SSadaf Ebrahimi 114*6467f958SSadaf Ebrahimi extern int test_async_copy_global_to_local(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 115*6467f958SSadaf Ebrahimi extern int test_async_copy_local_to_global(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 116*6467f958SSadaf Ebrahimi extern int test_async_strided_copy_global_to_local(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 117*6467f958SSadaf Ebrahimi extern int test_async_strided_copy_local_to_global(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 118*6467f958SSadaf Ebrahimi extern int test_async_copy_global_to_local2D(cl_device_id deviceID, 119*6467f958SSadaf Ebrahimi cl_context context, 120*6467f958SSadaf Ebrahimi cl_command_queue queue, 121*6467f958SSadaf Ebrahimi int num_elements); 122*6467f958SSadaf Ebrahimi extern int test_async_copy_local_to_global2D(cl_device_id deviceID, 123*6467f958SSadaf Ebrahimi cl_context context, 124*6467f958SSadaf Ebrahimi cl_command_queue queue, 125*6467f958SSadaf Ebrahimi int num_elements); 126*6467f958SSadaf Ebrahimi extern int test_async_copy_global_to_local3D(cl_device_id deviceID, 127*6467f958SSadaf Ebrahimi cl_context context, 128*6467f958SSadaf Ebrahimi cl_command_queue queue, 129*6467f958SSadaf Ebrahimi int num_elements); 130*6467f958SSadaf Ebrahimi extern int test_async_copy_local_to_global3D(cl_device_id deviceID, 131*6467f958SSadaf Ebrahimi cl_context context, 132*6467f958SSadaf Ebrahimi cl_command_queue queue, 133*6467f958SSadaf Ebrahimi int num_elements); 134*6467f958SSadaf Ebrahimi extern int test_async_work_group_copy_fence_import_after_export_aliased_local( 135*6467f958SSadaf Ebrahimi cl_device_id deviceID, cl_context context, cl_command_queue queue, 136*6467f958SSadaf Ebrahimi int num_elements); 137*6467f958SSadaf Ebrahimi extern int test_async_work_group_copy_fence_import_after_export_aliased_global( 138*6467f958SSadaf Ebrahimi cl_device_id deviceID, cl_context context, cl_command_queue queue, 139*6467f958SSadaf Ebrahimi int num_elements); 140*6467f958SSadaf Ebrahimi extern int 141*6467f958SSadaf Ebrahimi test_async_work_group_copy_fence_import_after_export_aliased_global_and_local( 142*6467f958SSadaf Ebrahimi cl_device_id deviceID, cl_context context, cl_command_queue queue, 143*6467f958SSadaf Ebrahimi int num_elements); 144*6467f958SSadaf Ebrahimi extern int test_async_work_group_copy_fence_export_after_import_aliased_local( 145*6467f958SSadaf Ebrahimi cl_device_id deviceID, cl_context context, cl_command_queue queue, 146*6467f958SSadaf Ebrahimi int num_elements); 147*6467f958SSadaf Ebrahimi extern int test_async_work_group_copy_fence_export_after_import_aliased_global( 148*6467f958SSadaf Ebrahimi cl_device_id deviceID, cl_context context, cl_command_queue queue, 149*6467f958SSadaf Ebrahimi int num_elements); 150*6467f958SSadaf Ebrahimi extern int 151*6467f958SSadaf Ebrahimi test_async_work_group_copy_fence_export_after_import_aliased_global_and_local( 152*6467f958SSadaf Ebrahimi cl_device_id deviceID, cl_context context, cl_command_queue queue, 153*6467f958SSadaf Ebrahimi int num_elements); 154*6467f958SSadaf Ebrahimi extern int test_prefetch(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 155*6467f958SSadaf Ebrahimi 156*6467f958SSadaf Ebrahimi extern int test_host_numeric_constants(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 157*6467f958SSadaf Ebrahimi extern int test_kernel_numeric_constants(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 158*6467f958SSadaf Ebrahimi extern int test_kernel_limit_constants(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 159*6467f958SSadaf Ebrahimi 160*6467f958SSadaf Ebrahimi extern int test_kernel_preprocessor_macros(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 161*6467f958SSadaf Ebrahimi 162*6467f958SSadaf Ebrahimi extern int test_kernel_call_kernel_function(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 163*6467f958SSadaf Ebrahimi 164*6467f958SSadaf Ebrahimi extern int test_parameter_types(cl_device_id device, cl_context context, cl_command_queue queue, int num_elements); 165*6467f958SSadaf Ebrahimi extern int test_vector_creation(cl_device_id deviceID, cl_context context, 166*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 167*6467f958SSadaf Ebrahimi extern int test_vector_swizzle(cl_device_id deviceID, cl_context context, 168*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 169*6467f958SSadaf Ebrahimi extern int test_vec_type_hint(cl_device_id deviceID, cl_context context, 170*6467f958SSadaf Ebrahimi cl_command_queue queue, int num_elements); 171*6467f958SSadaf Ebrahimi 172*6467f958SSadaf Ebrahimi 173*6467f958SSadaf Ebrahimi extern int test_kernel_memory_alignment_local(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 174*6467f958SSadaf Ebrahimi extern int test_kernel_memory_alignment_global(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 175*6467f958SSadaf Ebrahimi extern int test_kernel_memory_alignment_constant(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 176*6467f958SSadaf Ebrahimi extern int test_kernel_memory_alignment_private(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 177*6467f958SSadaf Ebrahimi 178*6467f958SSadaf Ebrahimi extern int test_progvar_prog_scope_misc(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 179*6467f958SSadaf Ebrahimi extern int test_progvar_prog_scope_uninit(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 180*6467f958SSadaf Ebrahimi extern int test_progvar_prog_scope_init(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 181*6467f958SSadaf Ebrahimi extern int test_progvar_func_scope(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 182*6467f958SSadaf Ebrahimi 183*6467f958SSadaf Ebrahimi extern int test_global_work_offsets(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 184*6467f958SSadaf Ebrahimi extern int test_get_global_offset(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 185*6467f958SSadaf Ebrahimi 186*6467f958SSadaf Ebrahimi extern int test_global_linear_id(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 187*6467f958SSadaf Ebrahimi extern int test_local_linear_id(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 188*6467f958SSadaf Ebrahimi extern int test_enqueued_local_size(cl_device_id device, cl_context context, cl_command_queue queue, int n_elems ); 189*6467f958SSadaf Ebrahimi 190*6467f958SSadaf Ebrahimi extern int test_simple_read_image_pitch(cl_device_id device, cl_context cl_context_, cl_command_queue q, int num_elements); 191*6467f958SSadaf Ebrahimi extern int test_simple_write_image_pitch(cl_device_id device, cl_context cl_context_, cl_command_queue q, int num_elements); 192*6467f958SSadaf Ebrahimi 193*6467f958SSadaf Ebrahimi #if defined( __APPLE__ ) 194*6467f958SSadaf Ebrahimi extern int test_queue_priority(cl_device_id device, cl_context context, cl_command_queue queue, int num_elements); 195*6467f958SSadaf Ebrahimi #endif 196*6467f958SSadaf Ebrahimi 197*6467f958SSadaf Ebrahimi extern int test_get_linear_ids(cl_device_id device, cl_context cl_context_, cl_command_queue q, int num_elements); 198*6467f958SSadaf Ebrahimi extern int test_rw_image_access_qualifier(cl_device_id device_id, cl_context context, cl_command_queue commands, int num_elements); 199*6467f958SSadaf Ebrahimi 200