[Bf-blender-cvs] [5cfbc722d09] master: Fix T78047: Fix failing denoiser tests on windows
Ray Molenkamp
noreply at git.blender.org
Wed Jun 24 18:42:05 CEST 2020
Commit: 5cfbc722d095664c3d2496f21d9deb21c47f2e12
Author: Ray Molenkamp
Date: Wed Jun 24 10:42:00 2020 -0600
Branches: master
https://developer.blender.org/rB5cfbc722d095664c3d2496f21d9deb21c47f2e12
Fix T78047: Fix failing denoiser tests on windows
When we switched to MSVC2019 and C++17 we seemingly
managed to trigger a code-gen bug with MSVC in the
AVX code-path.
This change works around the issue by (hopefully
temporary) disabling the optimizer for the fast_exp2f4
function, given it is only used in a single pass
of the denoiser and nowhere else, this is luckily
not as bad as it could have been.
Once the compiler is fixed or a different fix is
available we'll have to revisit this.
Details and link to the repro posted to MS is
available in T78047
===================================================================
M intern/cycles/util/util_math_fast.h
===================================================================
diff --git a/intern/cycles/util/util_math_fast.h b/intern/cycles/util/util_math_fast.h
index dbed83ab84d..1e0792859a2 100644
--- a/intern/cycles/util/util_math_fast.h
+++ b/intern/cycles/util/util_math_fast.h
@@ -446,6 +446,11 @@ ccl_device_inline float fast_expf(float x)
}
#ifndef __KERNEL_GPU__
+/* MSVC seems to have a codegen bug here in atleast SSE41/AVX
+ * see T78047 for details. */
+#ifdef _MSC_VER
+# pragma optimize( "", off )
+#endif
ccl_device float4 fast_exp2f4(float4 x)
{
const float4 one = make_float4(1.0f);
@@ -461,6 +466,9 @@ ccl_device float4 fast_exp2f4(float4 x)
r = madd4(x, r, make_float4(1.0f));
return __int4_as_float4(__float4_as_int4(r) + (m << 23));
}
+#ifdef _MSC_VER
+# pragma optimize( "", on )
+#endif
ccl_device_inline float4 fast_expf4(float4 x)
{
More information about the Bf-blender-cvs
mailing list