subgroups: Fix setting cl_halfs and progress check. (#1278)

* subgroups: Fix setting cl_halfs and progress check.

cl_float testing uses set_value such that a generated cl_ulong of 1 is
stored as 1.0F in a logical sense. However, cl_half values aren't
intrinsic to C++ and generated cl_ulongs less than 1024 in particular
are interpreted bitwise as subnormals. The test fails on compute devices
lacking subnormal support. Perform the logical conversion to cl_half.

Fix independent forward progress check.

* subgroups_half: Address review comments

* subgroups_half: Formatting fixes required by check-format

* subgroups_half: Modified to query and use rounding mode supported by device

Co-authored-by: spauls <spauls@qti.qualcomm.com>
This commit is contained in:
Sreelakshmi Haridas Maruthur
2021-07-21 01:51:29 -06:00
committed by GitHub
parent 12637114ac
commit 79f692d8e5
4 changed files with 36 additions and 13 deletions

View File

@@ -360,17 +360,21 @@ int test_ifp_ext(cl_device_id device, cl_context context,
}
// ifp only in subgroup functions tests:
test_status error;
error = checkIFPSupport(device, ifpSupport);
if (error != TEST_PASS)
auto device_cl_version = get_device_cl_version(device);
if (device_cl_version >= Version(2, 1))
{
return error;
}
if (ifpSupport == false)
{
log_info(
"Error reason: the extension cl_khr_subgroups requires that "
"Independed forward progress has to be supported by device.\n");
return TEST_FAIL;
error = checkIFPSupport(device, ifpSupport);
if (error != TEST_PASS)
{
return error;
}
if (ifpSupport == false)
{
log_info(
"Error reason: the extension cl_khr_subgroups requires that "
"Independed forward progress has to be supported by device.\n");
return TEST_FAIL;
}
}
return test_ifp(device, context, queue, num_elements, false);
}
}