mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
fix several compile issues with Visual Studio toolchains (#2219)
Fixes several compile issues I am seeing for my version of Visual Studio related to an ambiguous call to `fpclassify`, which is called by `isnan` and other similar functions, specifically for the `cl_half` type: ``` 19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(401,1): error C2668: 'fpclassify': ambiguous call to overloaded function 19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(298,31): message : could be 'int fpclassify(long double) throw()' 19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(293,31): message : or 'int fpclassify(double) throw()' 19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(288,31): message : or 'int fpclassify(float) throw()' 19>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(401,1): message : while trying to match the argument list '(_Ty)' ``` Some of these issues seem like differences in compiler behavior, but at least one appears to have identified a legitimate bug. Specifically, this change: * Removes the special-case checks for finite half numbers for commonfns, since this is already handled by `UlpFn`. (test with: `test_commonfns degrees radians`) * Assigns to temporary variables to eliminate the ambiguous function call for relationals. (test with: `test_relationals relational*`) * Properly converts from half to float when checking for NaNs for select. This is the one that seems like a legitimate bug. (test with: `test_select select_half_ushort select_half_short`) * Uses `std::enable_if` to disambiguate a function call for spirv_new. (test with: `test_spirv_new decorate_saturated*`) If it's helpful, my specific Visual Studio version is: ``` Microsoft Visual Studio Professional 2019 Version 16.11.20 VisualStudio.16.Release/16.11.20+32929.386 ``` I also have the Windows Software Development Kit 10.0.19041.685 installed.
This commit is contained in:
@@ -65,10 +65,6 @@ int verify_degrees(const T *const inptr, const T *const outptr, int n)
|
||||
{
|
||||
r = (180.0 / M_PI) * conv_to_dbl(inptr[i]);
|
||||
|
||||
if (std::is_same<T, half>::value)
|
||||
if (!isfinite_fp(conv_to_half(r)) && !isfinite_fp(outptr[i]))
|
||||
continue;
|
||||
|
||||
error = UlpFn(outptr[i], r);
|
||||
|
||||
if (fabsf(error) > max_error)
|
||||
@@ -115,10 +111,6 @@ int verify_radians(const T *const inptr, const T *const outptr, int n)
|
||||
{
|
||||
r = (M_PI / 180.0) * conv_to_dbl(inptr[i]);
|
||||
|
||||
if (std::is_same<T, half>::value)
|
||||
if (!isfinite_fp(conv_to_half(r)) && !isfinite_fp(outptr[i]))
|
||||
continue;
|
||||
|
||||
error = UlpFn(outptr[i], r);
|
||||
|
||||
if (fabsf(error) > max_error)
|
||||
|
||||
Reference in New Issue
Block a user