llvmpipe: Expect increased exp precision on Windows
authorDaniel Stone <daniels@collabora.com>
Thu, 16 Apr 2020 22:27:41 +0000 (23:27 +0100)
committerMarge Bot <eric+marge@anholt.net>
Thu, 14 May 2020 06:40:54 +0000 (06:40 +0000)
'Newer' versions of MSVCRT than 2013 appear to have fixed the bug around expf
precision which caused bb9e8c5090f0. It's not clear when this was
changed, but at least on Windows 10 machines with Visual Studio 2019,
expf behaves in line with other implementations.

As there is no clear way to test for the version of the VCRT in use,
simply mark this test as expected-pass rather than xfail.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4946>

src/gallium/drivers/llvmpipe/lp_test_arit.c

index 184e50089f793346f401418daf68d507133e9ab1..be8cb0afb48210ac8deb9c4e3bcde7d25804e9ed 100644 (file)
@@ -468,9 +468,11 @@ test_unary(unsigned verbose, FILE *fp, const struct unary_test_t *test, unsigned
          }
 
          if (test->ref == &expf && util_inf_sign(testval) == -1) {
-            /* XXX: 64bits MSVCRT's expf(-inf) returns -inf instead of 0 */
+            /* Some older 64-bit MSVCRT versions return -inf instead of 0
+            * for expf(-inf). As detecting the VC runtime version is
+            * non-trivial, just ignore the test result. */
 #if defined(_MSC_VER) && defined(_WIN64)
-            expected_pass = FALSE;
+            expected_pass = pass;
 #endif
          }