xref: /aosp_15_r20/external/OpenCL-CTS/test_conformance/pipes/main.cpp (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/compat.h"
17*6467f958SSadaf Ebrahimi 
18*6467f958SSadaf Ebrahimi #include "harness/testHarness.h"
19*6467f958SSadaf Ebrahimi #include "procs.h"
20*6467f958SSadaf Ebrahimi #include <stdio.h>
21*6467f958SSadaf Ebrahimi #include <string.h>
22*6467f958SSadaf Ebrahimi 
InitCL(cl_device_id device)23*6467f958SSadaf Ebrahimi test_status InitCL(cl_device_id device) {
24*6467f958SSadaf Ebrahimi   auto version = get_device_cl_version(device);
25*6467f958SSadaf Ebrahimi   auto expected_min_version = Version(2, 0);
26*6467f958SSadaf Ebrahimi   if (version < expected_min_version)
27*6467f958SSadaf Ebrahimi   {
28*6467f958SSadaf Ebrahimi       version_expected_info("Test", "OpenCL",
29*6467f958SSadaf Ebrahimi                             expected_min_version.to_string().c_str(),
30*6467f958SSadaf Ebrahimi                             version.to_string().c_str());
31*6467f958SSadaf Ebrahimi       return TEST_SKIP;
32*6467f958SSadaf Ebrahimi   }
33*6467f958SSadaf Ebrahimi 
34*6467f958SSadaf Ebrahimi   int error;
35*6467f958SSadaf Ebrahimi   cl_uint max_packet_size;
36*6467f958SSadaf Ebrahimi   error = clGetDeviceInfo(device, CL_DEVICE_PIPE_MAX_PACKET_SIZE,
37*6467f958SSadaf Ebrahimi                           sizeof(max_packet_size), &max_packet_size, NULL);
38*6467f958SSadaf Ebrahimi   if (error != CL_SUCCESS) {
39*6467f958SSadaf Ebrahimi     print_error(error, "Unable to get pipe max packet size");
40*6467f958SSadaf Ebrahimi     return TEST_FAIL;
41*6467f958SSadaf Ebrahimi   }
42*6467f958SSadaf Ebrahimi 
43*6467f958SSadaf Ebrahimi   if ((max_packet_size == 0) && (version >= Version(3, 0)))
44*6467f958SSadaf Ebrahimi   {
45*6467f958SSadaf Ebrahimi       return TEST_SKIP;
46*6467f958SSadaf Ebrahimi   }
47*6467f958SSadaf Ebrahimi 
48*6467f958SSadaf Ebrahimi   return TEST_PASS;
49*6467f958SSadaf Ebrahimi }
50*6467f958SSadaf Ebrahimi 
51*6467f958SSadaf Ebrahimi test_definition test_list[] = {
52*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_int),
53*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_uint),
54*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_long),
55*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_ulong),
56*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_short),
57*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_ushort),
58*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_float),
59*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_half),
60*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_char),
61*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_uchar),
62*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_double),
63*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_struct),
64*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_int),
65*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_uint),
66*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_long),
67*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_ulong),
68*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_short),
69*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_ushort),
70*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_float),
71*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_half),
72*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_char),
73*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_uchar),
74*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_double),
75*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_workgroup_readwrite_struct),
76*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_int),
77*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_uint),
78*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_long),
79*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_ulong),
80*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_short),
81*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_ushort),
82*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_float),
83*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_half),
84*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_char),
85*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_uchar),
86*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_double),
87*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroup_readwrite_struct),
88*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_int),
89*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_uint),
90*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_long),
91*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_ulong),
92*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_short),
93*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_ushort),
94*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_float),
95*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_half),
96*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_char),
97*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_uchar),
98*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_double),
99*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_convenience_readwrite_struct),
100*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_info),
101*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_max_args),
102*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_max_packet_size),
103*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_max_active_reservations),
104*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_query_functions),
105*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_readwrite_errors),
106*6467f958SSadaf Ebrahimi     ADD_TEST(pipe_subgroups_divergence),
107*6467f958SSadaf Ebrahimi };
108*6467f958SSadaf Ebrahimi 
109*6467f958SSadaf Ebrahimi const int test_num = ARRAY_SIZE(test_list);
110*6467f958SSadaf Ebrahimi 
main(int argc,const char * argv[])111*6467f958SSadaf Ebrahimi int main(int argc, const char *argv[]) {
112*6467f958SSadaf Ebrahimi   return runTestHarnessWithCheck(argc, argv, test_num, test_list, false,
113*6467f958SSadaf Ebrahimi                                  0, InitCL);
114*6467f958SSadaf Ebrahimi }
115