mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
fix correctly rounded behavior for math bruteforce tests (#2397)
fixes #2387 Corrects the "correctly rounded" behavior for the math bruteforce tests. Specifically: * Only applies the `-cl-fp32-correctly-rounded-divide-sqrt` build option for the `divide_cr` and `sqrt_cr` tests. The other tests do not receive this build option. This means that there is a difference in the behavior of the `divide` and `divide_cr` tests and the `sqrt` and `sqrt_cr` tests, and the "correctly rounded" build option is not applied to the fp16 or fp64 tests. * Removes the build option to toggle testing the correctly rounded divide and square root tests since it no longer needed. Instead, the test names can be used to choose whether to test the correctly rounded functions or the non-correctly rounded functions. Additionally: * Relaxes the fp16 sqrt accuracy requirements to 1 ULP. This is needed to pass this test on some of our devices. This part is still under discussion, so I will keep this PR as a draft until it is settled.
This commit is contained in:
@@ -82,7 +82,6 @@ static int gTestFastRelaxed = 1;
|
||||
OpenCL 2.0 spec then it has to be changed through a command line argument.
|
||||
*/
|
||||
int gFastRelaxedDerived = 1;
|
||||
static int gToggleCorrectlyRoundedDivideSqrt = 0;
|
||||
int gHasHalf = 0;
|
||||
cl_device_fp_config gHalfCapabilities = 0;
|
||||
int gDeviceILogb0 = 1;
|
||||
@@ -469,8 +468,6 @@ static int ParseArgs(int argc, const char **argv)
|
||||
optionFound = 1;
|
||||
switch (*arg)
|
||||
{
|
||||
case 'c': gToggleCorrectlyRoundedDivideSqrt ^= 1; break;
|
||||
|
||||
case 'd': gHasDouble ^= 1; break;
|
||||
|
||||
case 'e': gFastRelaxedDerived ^= 1; break;
|
||||
@@ -629,8 +626,6 @@ static void PrintUsage(void)
|
||||
{
|
||||
vlog("%s [-cglsz]: <optional: math function names>\n", appName);
|
||||
vlog("\toptions:\n");
|
||||
vlog("\t\t-c\tToggle test fp correctly rounded divide and sqrt (Default: "
|
||||
"off)\n");
|
||||
vlog("\t\t-d\tToggle double precision testing. (Default: on iff khr_fp_64 "
|
||||
"on)\n");
|
||||
vlog("\t\t-f\tToggle float precision testing. (Default: on)\n");
|
||||
@@ -942,13 +937,6 @@ test_status InitCL(cl_device_id device)
|
||||
vlog("\tCorrectly rounded divide and sqrt supported for floats? %s\n",
|
||||
no_yes[0
|
||||
!= (CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT & gFloatCapabilities)]);
|
||||
if (gToggleCorrectlyRoundedDivideSqrt)
|
||||
{
|
||||
gFloatCapabilities ^= CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT;
|
||||
}
|
||||
vlog("\tTesting with correctly rounded float divide and sqrt? %s\n",
|
||||
no_yes[0
|
||||
!= (CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT & gFloatCapabilities)]);
|
||||
vlog("\tTesting with FTZ mode ON for floats? %s\n",
|
||||
no_yes[0 != gForceFTZ || 0 == (CL_FP_DENORM & gFloatCapabilities)]);
|
||||
vlog("\tTesting single precision? %s\n", no_yes[0 != gTestFloat]);
|
||||
|
||||
Reference in New Issue
Block a user