LGTM
> -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > Rebecca N. Palmer > Sent: Saturday, April 18, 2015 5:19 AM > To: [email protected] > Subject: [Beignet] [PATCH] utest_pow: don't fail on declared lack of > denormals > > (Resend: the first copy appears to have gone missing) > > 0.01**20.5 is denormal; at least Ivy Bridge does not support denormals and > hence returns 0. As this is allowed by the OpenCL standard, it shouldn't fail > the test. > > Signed-off-by: Rebecca Palmer <[email protected]> > > diff --git a/utests/builtin_pow.cpp b/utests/builtin_pow.cpp index > a18f31e..6e0f8dd 100644 > --- a/utests/builtin_pow.cpp > +++ b/utests/builtin_pow.cpp > @@ -37,6 +37,9 @@ static void builtin_pow(void) > input_data2[i*count_input_ori+k] = ori_data[k]; > } > > + cl_device_fp_config fp_config; > + clGetDeviceInfo(device, CL_DEVICE_SINGLE_FP_CONFIG, > + sizeof(cl_device_fp_config), &fp_config, 0); bool denormals_supported > + = fp_config & CL_FP_DENORM; > const char* env_strict = getenv("OCL_STRICT_CONFORMANCE"); > float ULPSIZE_FACTOR = 16.0; > if (env_strict == NULL || strcmp(env_strict, "0") == 0) @@ -75,7 +78,8 > @@ static void builtin_pow(void) > #if udebug > if ( (isinf(cpu_data[index_cur]) && !isinf(gpu_data[index_cur])) || > (isnan(cpu_data[index_cur]) && !isnan(gpu_data[index_cur])) > || > - (fabs(gpu_data[index_cur] - cpu_data[index_cur]) > > cl_FLT_ULP(cpu_data[index_cur]) * ULPSIZE_FACTOR) ) > + (fabs(gpu_data[index_cur] - cpu_data[index_cur]) > > cl_FLT_ULP(cpu_data[index_cur]) * ULPSIZE_FACTOR > + && (denormals_supported || gpu_data[index_cur]!=0 || > + std::fpclassify(cpu_data[index_cur])!=FP_SUBNORMAL) ) ) > { > printf_c("%d/%d: x:%f, y:%f -> gpu:%f cpu:%f\n", k, i, > input_data1[k], input_data2[k], gpu_data[index_cur], cpu_data[index_cur]); > } > @@ -88,7 +92,8 @@ static void builtin_pow(void) > OCL_ASSERT(isnan(gpu_data[index_cur])); > else > { > - OCL_ASSERT(fabs(gpu_data[index_cur] - cpu_data[index_cur]) < > cl_FLT_ULP(cpu_data[index_cur]) * ULPSIZE_FACTOR); > + OCL_ASSERT((fabs(gpu_data[index_cur] - cpu_data[index_cur]) < > cl_FLT_ULP(cpu_data[index_cur]) * ULPSIZE_FACTOR) || > + (!denormals_supported && gpu_data[index_cur]==0 && > + std::fpclassify(cpu_data[index_cur])==FP_SUBNORMAL) ); > } > #endif > } > > > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
