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
This commit is contained in:
parent
c2ab069dfc
commit
5cfbc722d0
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user