xref: /aosp_15_r20/external/OpenCL-ICD-Loader/test/loader_test/test_kernel.c (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1 #ifndef CL_USE_DEPRECATED_OPENCL_1_1_APIS
2 #define CL_USE_DEPRECATED_OPENCL_1_1_APIS
3 #endif
4 
5 #ifndef CL_USE_DEPRECATED_OPENCL_1_2_APIS
6 #define CL_USE_DEPRECATED_OPENCL_1_2_APIS
7 #endif
8 
9 #include <CL/cl.h>
10 #include "param_struct.h"
11 #include <platform/icd_test_log.h>
12 
13 extern cl_kernel kernel;
14 extern cl_event event;
15 extern cl_context  context;
16 extern cl_command_queue command_queue;
17 extern cl_device_id devices;
18 static int ret_val;
19 extern void CL_CALLBACK setevent_callback(cl_event _a, cl_int _b, void* _c);
20 extern void CL_CALLBACK setprintf_callback(cl_context _a, cl_uint _b, char* _c, void* _d );
21 
22 struct clRetainKernel_st clRetainKernelData[NUM_ITEMS_clRetainKernel] =
23 {
24 	{NULL}
25 };
26 
test_clRetainKernel(const struct clRetainKernel_st * data)27 int test_clRetainKernel(const struct clRetainKernel_st* data)
28 {
29     (void)data;
30     test_icd_app_log("clRetainKernel(%p)\n", kernel);
31 
32     ret_val=clRetainKernel(kernel);
33 
34     test_icd_app_log("Value returned: %d\n", ret_val);
35 
36     return 0;
37 }
38 
39 struct clSetKernelArg_st clSetKernelArgData[NUM_ITEMS_clSetKernelArg] =
40 {
41 	{NULL, 0, 0, NULL}
42 };
43 
test_clSetKernelArg(const struct clSetKernelArg_st * data)44 int test_clSetKernelArg(const struct clSetKernelArg_st* data)
45 {
46     test_icd_app_log("clSetKernelArg(%p, %u, %u, %p)\n",
47                      kernel,
48                      data->arg_index,
49                      data->arg_size,
50                      data->arg_value);
51 
52     ret_val=clSetKernelArg(kernel,
53                            data->arg_index,
54                            data->arg_size,
55                            data->arg_value);
56 
57     test_icd_app_log("Value returned: %d\n", ret_val);
58 
59     return 0;
60 }
61 
62 struct clGetKernelInfo_st clGetKernelInfoData[NUM_ITEMS_clGetKernelInfo] =
63 {
64 	{NULL, 0, 0, NULL, NULL}
65 };
66 
test_clGetKernelInfo(const struct clGetKernelInfo_st * data)67 int test_clGetKernelInfo(const struct clGetKernelInfo_st* data)
68 {
69     test_icd_app_log("clGetKernelInfo(%p, %u, %u, %p, %p)\n",
70                      kernel,
71                      data->param_name,
72                      data->param_value_size,
73                      data->param_value,
74                      data->param_value_size_ret);
75 
76     ret_val=clGetKernelInfo(kernel,
77                                     data->param_name,
78                                     data->param_value_size,
79                                     data->param_value,
80                                     data->param_value_size_ret);
81 
82     test_icd_app_log("Value returned: %d\n", ret_val);
83 
84         return 0;
85 }
86 
87 struct clGetKernelArgInfo_st clGetKernelArgInfoData[NUM_ITEMS_clGetKernelArgInfo] =
88 {
89     {NULL, 0, 0, 0, NULL, NULL}
90 };
91 
test_clGetKernelArgInfo(const struct clGetKernelArgInfo_st * data)92 int test_clGetKernelArgInfo(const struct clGetKernelArgInfo_st* data)
93 {
94     test_icd_app_log("clGetKernelArgInfo(%p, %u, %u, %u, %p, %p)\n",
95                      kernel,
96                      data->arg_indx,
97                      data->param_name,
98                      data->param_value_size,
99                      data->param_value,
100                      data->param_value_size_ret);
101 
102     ret_val=clGetKernelArgInfo(kernel,
103             data->arg_indx,
104             data->param_name,
105             data->param_value_size,
106             data->param_value,
107             data->param_value_size_ret);
108 
109     test_icd_app_log("Value returned: %d\n", ret_val);
110 
111     return 0;
112 }
113 
114 struct clGetKernelWorkGroupInfo_st clGetKernelWorkGroupInfoData[NUM_ITEMS_clGetKernelWorkGroupInfo] =
115 {
116     {NULL, NULL, 0, 0, NULL, NULL}
117 };
118 
test_clGetKernelWorkGroupInfo(const struct clGetKernelWorkGroupInfo_st * data)119 int test_clGetKernelWorkGroupInfo(const struct clGetKernelWorkGroupInfo_st* data)
120 {
121     test_icd_app_log("clGetKernelWorkGroupInfo(%p, %p, %u, %u, %p, %p)\n",
122                      kernel,
123                      devices,
124                      data->param_name,
125                      data->param_value_size,
126                      data->param_value,
127                      data->param_value_size_ret);
128 
129     ret_val=clGetKernelWorkGroupInfo(kernel,
130             devices,
131             data->param_name,
132             data->param_value_size,
133             data->param_value,
134             data->param_value_size_ret);
135 
136     test_icd_app_log("Value returned: %d\n", ret_val);
137 
138     return 0;
139 }
140 
141 struct clEnqueueMigrateMemObjects_st clEnqueueMigrateMemObjectsData[NUM_ITEMS_clEnqueueMigrateMemObjects] =
142 {
143     {NULL, 0, NULL, 0x0, 0, NULL, NULL}
144 };
145 
test_clEnqueueMigrateMemObjects(const struct clEnqueueMigrateMemObjects_st * data)146 int test_clEnqueueMigrateMemObjects(const struct clEnqueueMigrateMemObjects_st* data)
147 {
148     test_icd_app_log("clEnqueueMigrateMemObjects(%p, %u, %p, %x, %u, %p, %p)\n",
149                      command_queue,
150                      data->num_mem_objects,
151                      data->mem_objects,
152                      data->flags,
153                      data->num_events_in_wait_list,
154                      data->event_wait_list,
155                      &event);
156 
157     ret_val=clEnqueueMigrateMemObjects(command_queue,
158             data->num_mem_objects,
159             data->mem_objects,
160             data->flags,
161             data->num_events_in_wait_list,
162             data->event_wait_list,
163             &event);
164 
165     test_icd_app_log("Value returned: %d\n", ret_val);
166 
167     return 0;
168 }
169 
170 struct clEnqueueNDRangeKernel_st clEnqueueNDRangeKernelData[NUM_ITEMS_clEnqueueNDRangeKernel] =
171 {
172     {NULL, NULL, 0, NULL, NULL, NULL, 0, NULL, NULL}
173 };
174 
test_clEnqueueNDRangeKernel(const struct clEnqueueNDRangeKernel_st * data)175 int test_clEnqueueNDRangeKernel(const struct clEnqueueNDRangeKernel_st* data)
176 {
177     test_icd_app_log("clEnqueueNDRangeKernel(%p, %p, %u, %p, %p, %p, %u, %p, %p)\n",
178                      command_queue,
179                      kernel,
180                      data->work_dim,
181                      data->global_work_offset,
182                      data->global_work_size,
183                      data->local_work_size,
184                      data->num_events_in_wait_list,
185                      data->event_wait_list,
186                      &event);
187 
188     ret_val=clEnqueueNDRangeKernel(command_queue,
189             kernel,
190             data->work_dim,
191             data->global_work_offset,
192             data->global_work_size,
193             data->local_work_size,
194             data->num_events_in_wait_list,
195             data->event_wait_list,
196             &event);
197 
198     test_icd_app_log("Value returned: %d\n", ret_val);
199 
200     return 0;
201 }
202 
203 struct clEnqueueTask_st clEnqueueTaskData[NUM_ITEMS_clEnqueueTask] =
204 {
205     {NULL, NULL, 0, NULL, NULL}
206 };
207 
test_clEnqueueTask(const struct clEnqueueTask_st * data)208 int test_clEnqueueTask(const struct clEnqueueTask_st* data)
209 {
210     test_icd_app_log("clEnqueueTask(%p, %p, %u, %p, %p)\n",
211                      command_queue,
212                      kernel,
213                      data->num_events_in_wait_list,
214                      data->event_wait_list,
215                      &event);
216 
217     ret_val=clEnqueueTask(command_queue,
218             kernel,
219             data->num_events_in_wait_list,
220             data->event_wait_list,
221             &event);
222 
223     test_icd_app_log("Value returned: %d\n", ret_val);
224 
225     return 0;
226 }
227 struct clEnqueueNativeKernel_st clEnqueueNativeKernelData[NUM_ITEMS_clEnqueueNativeKernel] =
228 {
229     {NULL, NULL, NULL, 0, 0, NULL, NULL, 0, NULL, NULL}
230 };
231 
test_clEnqueueNativeKernel(const struct clEnqueueNativeKernel_st * data)232 int test_clEnqueueNativeKernel(const struct clEnqueueNativeKernel_st* data) {
233     test_icd_app_log("clEnqueueNativeKernel(%p, %p, %p, %u, %u, %p, %p, %u, %p, %p)\n",
234                      command_queue,
235                      data->user_func,
236                      data->args,
237                      data->cb_args,
238                      data->num_mem_objects,
239                      data->mem_list,
240                      data->args_mem_loc,
241                      data->num_events_in_wait_list,
242                      data->event_wait_list,
243                      &event);
244 
245     ret_val=clEnqueueNativeKernel(command_queue,
246             data->user_func,
247             data->args,
248             data->cb_args,
249             data->num_mem_objects,
250             data->mem_list,
251             data->args_mem_loc,
252             data->num_events_in_wait_list,
253             data->event_wait_list,
254             &event);
255 
256     test_icd_app_log("Value returned: %d\n", ret_val);
257     return 0;
258 }
259 
260 struct clSetUserEventStatus_st clSetUserEventStatusData[NUM_ITEMS_clSetUserEventStatus] =
261 {
262     {NULL, 0}
263 };
264 
test_clSetUserEventStatus(const struct clSetUserEventStatus_st * data)265 int test_clSetUserEventStatus(const struct clSetUserEventStatus_st* data)
266 {
267     test_icd_app_log("clSetUserEventStatus(%p, %d)\n",
268                      event,
269                      data->execution_status);
270 
271     ret_val=clSetUserEventStatus(event,
272             data->execution_status);
273 
274     test_icd_app_log("Value returned: %d\n", ret_val);
275     return 0;
276 }
277 
278 struct clWaitForEvents_st clWaitForEventsData[NUM_ITEMS_clWaitForEvents] =
279 {
280     {1, NULL}
281 };
282 
test_clWaitForEvents(const struct clWaitForEvents_st * data)283 int test_clWaitForEvents(const struct clWaitForEvents_st* data)
284 {
285     test_icd_app_log("clWaitForEvents(%u, %p)\n",
286                      data->num_events,
287                      &event);
288 
289     ret_val=clWaitForEvents(data->num_events,
290             &event);
291 
292     test_icd_app_log("Value returned: %d\n", ret_val);
293     return 0;
294 }
295 
296 struct clGetEventInfo_st clGetEventInfoData[NUM_ITEMS_clGetEventInfo] =
297 {
298     {NULL, 0, 0, NULL, NULL}
299 };
300 
test_clGetEventInfo(const struct clGetEventInfo_st * data)301 int test_clGetEventInfo(const struct clGetEventInfo_st* data){
302     test_icd_app_log("clGetEventInfo(%p, %u, %u, %p, %p)\n",
303                      event,
304                      data->param_name,
305                      data->param_value_size,
306                      data->param_value,
307                      data->param_value_size_ret);
308 
309     ret_val=clGetEventInfo(event,
310             data->param_name,
311             data->param_value_size,
312             data->param_value,
313             data->param_value_size_ret);
314 
315     test_icd_app_log("Value returned: %d\n", ret_val);
316 
317     return 0;
318 }
319 
320 struct clSetEventCallback_st clSetEventCallbackData[NUM_ITEMS_clSetEventCallback] =
321 {
322     {NULL, 0, setevent_callback, NULL}
323 };
324 
test_clSetEventCallback(const struct clSetEventCallback_st * data)325 int test_clSetEventCallback(const struct clSetEventCallback_st* data)
326 {
327     test_icd_app_log("clSetEventCallback(%p, %d, %p, %p)\n",
328                      event,
329                      data->command_exec_callback_type,
330                      data->pfn_event_notify,
331                      data->user_data);
332 
333     ret_val=clSetEventCallback(event,
334             data->command_exec_callback_type,
335             data->pfn_event_notify,
336             data->user_data);
337 
338     test_icd_app_log("Value returned: %d\n", ret_val);
339     return 0;
340 }
341 
342 struct clRetainEvent_st clRetainEventData[NUM_ITEMS_clRetainEvent] =
343 {
344     {NULL}
345 };
346 
test_clRetainEvent(const struct clRetainEvent_st * data)347 int test_clRetainEvent(const struct clRetainEvent_st* data)
348 {
349     (void)data;
350     test_icd_app_log("clRetainEvent(%p)\n", event);
351 
352     ret_val=clRetainEvent(event);
353 
354     test_icd_app_log("Value returned: %d\n", ret_val);
355 
356     return 0;
357 }
358 
359 struct clEnqueueMarker_st clEnqueueMarkerData[NUM_ITEMS_clEnqueueMarker] =
360 {
361     {NULL, NULL}
362 };
363 
test_clEnqueueMarker(const struct clEnqueueMarker_st * data)364 int test_clEnqueueMarker(const struct clEnqueueMarker_st* data)
365 {
366     (void)data;
367     test_icd_app_log("clEnqueueMarker(%p, %p)\n", command_queue, &event);
368 
369     ret_val = clEnqueueMarker(command_queue, &event);
370 
371     test_icd_app_log("Value returned: %d\n", ret_val);
372 
373     return 0;
374 }
375 
376 struct clEnqueueMarkerWithWaitList_st clEnqueueMarkerWithWaitListData[NUM_ITEMS_clEnqueueMarkerWithWaitList] =
377 {
378     {NULL, 0, NULL, NULL}
379 };
380 
test_clEnqueueMarkerWithWaitList(const struct clEnqueueMarkerWithWaitList_st * data)381 int test_clEnqueueMarkerWithWaitList(const struct clEnqueueMarkerWithWaitList_st* data)
382 {
383     test_icd_app_log("clEnqueueMarkerWithWaitList(%p, %u, %p, %p)\n",
384                      command_queue,
385                      data->num_events_in_wait_list,
386                      data->event_wait_list,
387                      &event);
388 
389     ret_val=clEnqueueMarkerWithWaitList(command_queue,
390             data->num_events_in_wait_list,
391             data->event_wait_list,
392             &event);
393 
394     test_icd_app_log("Value returned: %d\n", ret_val);
395 
396     return 0;
397 }
398 
399 struct clEnqueueBarrierWithWaitList_st clEnqueueBarrierWithWaitListData[NUM_ITEMS_clEnqueueBarrierWithWaitList] =
400 {
401     {NULL, 0, NULL, NULL}
402 };
test_clEnqueueBarrierWithWaitList(const struct clEnqueueBarrierWithWaitList_st * data)403 int test_clEnqueueBarrierWithWaitList(const struct clEnqueueBarrierWithWaitList_st* data)
404 {
405     test_icd_app_log("clEnqueueBarrierWithWaitList(%p, %u, %p, %p)\n",
406                      command_queue,
407                      data->num_events_in_wait_list,
408                      data->event_wait_list,
409                      &event);
410 
411     ret_val=clEnqueueBarrierWithWaitList(command_queue,
412             data->num_events_in_wait_list,
413             data->event_wait_list,
414             &event);
415 
416     test_icd_app_log("Value returned: %d\n", ret_val);
417 
418     return 0;
419 }
420 
421 struct clEnqueueWaitForEvents_st clEnqueueWaitForEventsData[NUM_ITEMS_clEnqueueWaitForEvents] =
422 {
423     {NULL, 0, NULL}
424 };
425 
test_clEnqueueWaitForEvents(const struct clEnqueueWaitForEvents_st * data)426 int test_clEnqueueWaitForEvents(const struct clEnqueueWaitForEvents_st* data)
427 {
428     test_icd_app_log("clEnqueueWaitForEvents(%p, %u, %p)\n",
429                      command_queue,
430                      data->num_events,
431                      data->event_list);
432 
433     ret_val = clEnqueueWaitForEvents(command_queue,
434             data->num_events,
435             data->event_list);
436 
437     test_icd_app_log("Value returned: %d\n", ret_val);
438 
439     return 0;
440 }
441 
442 struct clEnqueueBarrier_st clEnqueueBarrierData[NUM_ITEMS_clEnqueueBarrier] =
443 {
444     {NULL}
445 };
446 
test_clEnqueueBarrier(const struct clEnqueueBarrier_st * data)447 int test_clEnqueueBarrier(const struct clEnqueueBarrier_st* data)
448 {
449     (void)data;
450     test_icd_app_log("clEnqueueBarrier(%p)\n", command_queue);
451 
452     ret_val = clEnqueueBarrier(command_queue);
453 
454     test_icd_app_log("Value returned: %d\n", ret_val);
455 
456     return 0;
457 }
458 struct clGetEventProfilingInfo_st clGetEventProfilingInfoData[NUM_ITEMS_clGetEventProfilingInfo] =
459 {
460     {NULL, 0, 0, NULL, NULL}
461 };
462 
test_clGetEventProfilingInfo(const struct clGetEventProfilingInfo_st * data)463 int test_clGetEventProfilingInfo(const struct clGetEventProfilingInfo_st* data)
464 {
465     test_icd_app_log("clGetEventProfilingInfo(%p, %u, %u, %p, %p)\n",
466                      event,
467                      data->param_name,
468                      data->param_value_size,
469                      data->param_value,
470                      data->param_value_size_ret);
471 
472     ret_val=clGetEventProfilingInfo(event,
473             data->param_name,
474             data->param_value_size,
475             data->param_value,
476             data->param_value_size_ret);
477 
478     test_icd_app_log("Value returned: %d\n", ret_val);
479 
480     return 0;
481 }
482 
483 struct clFlush_st clFlushData[NUM_ITEMS_clFlush] =
484 {
485     {NULL}
486 };
487 
test_clFlush(const struct clFlush_st * data)488 int test_clFlush(const struct clFlush_st* data)
489 {
490     (void)data;
491     test_icd_app_log("clFlush(%p)\n", command_queue);
492 
493     ret_val=clFlush(command_queue);
494 
495     test_icd_app_log("Value returned: %d\n", ret_val);
496 
497     return 0;
498 }
499 
500 struct clFinish_st clFinishData[NUM_ITEMS_clFinish] =
501 {
502     {NULL}
503 };
504 
test_clFinish(const struct clFinish_st * data)505 int test_clFinish(const struct clFinish_st* data)
506 {
507     (void)data;
508     test_icd_app_log("clFinish(%p)\n", command_queue);
509 
510     ret_val=clFinish(command_queue);
511 
512     test_icd_app_log("Value returned: %d\n", ret_val);
513 
514     return 0;
515 }
516 
test_kernel()517 int test_kernel()
518 {
519     int i;
520 
521     for (i=0; i<NUM_ITEMS_clRetainKernel; i++) {
522         test_clRetainKernel(&clRetainKernelData[i]);
523     }
524 
525     for (i=0; i<NUM_ITEMS_clSetKernelArg; i++) {
526         test_clSetKernelArg(&clSetKernelArgData[i]);
527     }
528 
529     for (i=0; i<NUM_ITEMS_clGetKernelInfo; i++) {
530         test_clGetKernelInfo(&clGetKernelInfoData[i]);
531     }
532 
533     for (i=0; i<NUM_ITEMS_clGetKernelArgInfo; i++) {
534         test_clGetKernelArgInfo(&clGetKernelArgInfoData[i]);
535     }
536 
537     for (i=0; i<NUM_ITEMS_clGetKernelWorkGroupInfo; i++) {
538         test_clGetKernelWorkGroupInfo(&clGetKernelWorkGroupInfoData[i]);
539     }
540 
541     for (i=0; i<NUM_ITEMS_clEnqueueMigrateMemObjects; i++) {
542         test_clEnqueueMigrateMemObjects(&clEnqueueMigrateMemObjectsData[i]);
543     }
544 
545     for (i=0; i<NUM_ITEMS_clEnqueueNDRangeKernel; i++) {
546         test_clEnqueueNDRangeKernel(&clEnqueueNDRangeKernelData[i]);
547     }
548 
549     for (i=0; i<NUM_ITEMS_clEnqueueTask; i++) {
550         test_clEnqueueTask(&clEnqueueTaskData[i]);
551     }
552 
553     for (i=0; i<NUM_ITEMS_clEnqueueNativeKernel; i++) {
554         test_clEnqueueNativeKernel(&clEnqueueNativeKernelData[i]);
555     }
556 
557     for (i=0; i<NUM_ITEMS_clSetUserEventStatus; i++) {
558         test_clSetUserEventStatus(&clSetUserEventStatusData[i]);
559     }
560 
561     for (i=0; i<NUM_ITEMS_clWaitForEvents; i++) {
562         test_clWaitForEvents(&clWaitForEventsData[i]);
563     }
564 
565     for (i=0; i<NUM_ITEMS_clGetEventInfo; i++) {
566         test_clGetEventInfo(&clGetEventInfoData[i]);
567     }
568 
569     for (i=0; i<NUM_ITEMS_clSetEventCallback; i++) {
570         test_clSetEventCallback(&clSetEventCallbackData[i]);
571     }
572 
573     for (i=0; i<NUM_ITEMS_clRetainEvent; i++) {
574         test_clRetainEvent(&clRetainEventData[i]);
575     }
576 
577     for (i=0; i<NUM_ITEMS_clEnqueueMarker; i++) {
578         test_clEnqueueMarker(&clEnqueueMarkerData[i]);
579     }
580 
581     for (i=0; i<NUM_ITEMS_clEnqueueBarrier; i++) {
582         test_clEnqueueBarrier(&clEnqueueBarrierData[i]);
583     }
584 
585     for (i=0; i<NUM_ITEMS_clEnqueueMarkerWithWaitList; i++) {
586         test_clEnqueueMarkerWithWaitList(&clEnqueueMarkerWithWaitListData[i]);
587     }
588 
589     for (i=0; i<NUM_ITEMS_clEnqueueBarrierWithWaitList; i++) {
590         test_clEnqueueBarrierWithWaitList(&clEnqueueBarrierWithWaitListData[i]);
591     }
592 
593     for (i=0; i<NUM_ITEMS_clGetEventProfilingInfo; i++) {
594         test_clGetEventProfilingInfo(&clGetEventProfilingInfoData[i]);
595     }
596 
597     for (i=0; i<NUM_ITEMS_clFlush; i++) {
598         test_clFlush(&clFlushData[i]);
599     }
600 
601     for (i=0; i<NUM_ITEMS_clFinish; i++) {
602         test_clFinish(&clFinishData[i]);
603     }
604 
605     return 0;
606 }
607