diff --git a/test_conformance/subgroups/test_workgroup.cpp b/test_conformance/subgroups/test_workgroup.cpp index bc9d6190..779d30f6 100644 --- a/test_conformance/subgroups/test_workgroup.cpp +++ b/test_conformance/subgroups/test_workgroup.cpp @@ -621,6 +621,64 @@ template struct BC } }; +#define G 2000 +#define L 200 +struct run_for_type +{ + run_for_type(cl_device_id device, cl_context context, + cl_command_queue queue, int num_elements, + bool useCoreSubgroups) + { + device_ = device; + context_ = context; + queue_ = queue; + num_elements_ = num_elements; + useCoreSubgroups_ = useCoreSubgroups; + } + + template cl_int run() + { + cl_int error; + error = test, G, L>::run(device_, context_, queue_, + num_elements_, "test_bcast", + bcast_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_redadd", + redadd_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_redmax", + redmax_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_redmin", + redmin_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_scinadd", + scinadd_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_scinmax", + scinmax_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_scinmin", + scinmin_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_scexadd", + scexadd_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_scexmax", + scexmax_source, 0, useCoreSubgroups_); + error |= test, G, L>::run( + device_, context_, queue_, num_elements_, "test_scexmin", + scexmin_source, 0, useCoreSubgroups_); + return error; + } + +private: + cl_device_id device_; + cl_context context_; + cl_command_queue queue_; + int num_elements_; + bool useCoreSubgroups_; +}; // Entry point from main int test_work_group_functions(cl_device_id device, cl_context context, @@ -628,227 +686,21 @@ int test_work_group_functions(cl_device_id device, cl_context context, bool useCoreSubgroups) { int error; - - // Adjust these individually below if desired/needed -#define G 2000 -#define L 200 - error = test, G, L>::run(device, context, queue, num_elements, "test_any", any_source, 0, useCoreSubgroups); error |= test, G, L>::run(device, context, queue, num_elements, "test_all", all_source, 0, useCoreSubgroups); + run_for_type rft(device, context, queue, num_elements, useCoreSubgroups); + error |= rft.run(); + error |= rft.run(); + error |= rft.run(); + error |= rft.run(); + error |= rft.run(); + error |= rft.run(); + // error |= rft.run(); - // error |= test, G, L>::run(device, context, queue, - // num_elements, "test_bcast", bcast_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_bcast", bcast_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_bcast", bcast_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_bcast", bcast_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_bcast", bcast_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_bcast", bcast_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_bcast", bcast_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, queue, - // num_elements, "test_redadd", redadd_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redadd", redadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redadd", redadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redadd", redadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redadd", redadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redadd", redadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redadd", redadd_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, queue, - // num_elements, "test_redmax", redmax_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmax", redmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmax", redmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmax", redmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmax", redmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmax", redmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmax", redmax_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, queue, - // num_elements, "test_redmin", redmin_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmin", redmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmin", redmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmin", redmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmin", redmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmin", redmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_redmin", redmin_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, - // queue, num_elements, "test_scinadd", scinadd_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinadd", scinadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinadd", scinadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinadd", scinadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinadd", scinadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinadd", scinadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinadd", scinadd_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, - // queue, num_elements, "test_scinmax", scinmax_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmax", scinmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmax", scinmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmax", scinmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmax", scinmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmax", scinmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmax", scinmax_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, - // queue, num_elements, "test_scinmin", scinmin_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmin", scinmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmin", scinmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmin", scinmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmin", scinmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmin", scinmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scinmin", scinmin_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, - // queue, num_elements, "test_scexadd", scexadd_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexadd", scexadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexadd", scexadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexadd", scexadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexadd", scexadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexadd", scexadd_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexadd", scexadd_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, - // queue, num_elements, "test_scexmax", scexmax_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmax", scexmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmax", scexmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmax", scexmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmax", scexmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmax", scexmax_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmax", scexmax_source, 0, - useCoreSubgroups); - - // error |= test, G, L>::run(device, context, - // queue, num_elements, "test_scexmin", scexmin_source); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmin", scexmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmin", scexmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmin", scexmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmin", scexmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmin", scexmin_source, 0, - useCoreSubgroups); - error |= test, G, L>::run( - device, context, queue, num_elements, "test_scexmin", scexmin_source, 0, - useCoreSubgroups); return error; }