packed_simd: {i686,x86_64}-pc-windows-gnu Appveyor builds failing
It appears that incorrect results are produced on windows when the gnu toolchain is used and NaNs are involved.
failures:
---- v64::f32x2_math_cos::cos stdout ----
thread 'v64::f32x2_math_cos::cos' panicked at 'assertion failed: `(left == right)`
left: `f32x2(-0.00000004371139, -0.00000004371139)`,
right: `f32x2(NaN, -0.00000004371139)`', src\v64.rs:43:1
---- v64::f32x2_math_fma::fma stdout ----
thread 'v64::f32x2_math_fma::fma' panicked at 'assertion failed: `(left == right)`
left: `f32x2(1.0, 1.0)`,
right: `f32x2(NaN, NaN)`', src\v64.rs:43:1
---- v64::f32x2_math_sin::sin stdout ----
thread 'v64::f32x2_math_sin::sin' panicked at 'assertion failed: `(left == right)`
left: `f32x2(1.0, 1.0)`,
right: `f32x2(NaN, 1.0)`', src\v64.rs:43:1
---- v64::f32x2_ops_scalar_arith::ops_scalar_arithmetic stdout ----
thread 'v64::f32x2_ops_scalar_arith::ops_scalar_arithmetic' panicked at 'assertion failed: `(left == right)`
left: `f32x2(NaN, 0.0)`,
right: `f32x2(0.0, 0.0)`', src\v64.rs:43:1
---- v64::f32x2_ops_vector_arith::ops_vector_arithmetic stdout ----
thread 'v64::f32x2_ops_vector_arith::ops_vector_arithmetic' panicked at 'assertion failed: `(left == right)`
left: `f32x2(NaN, 0.0)`,
right: `f32x2(0.0, 0.0)`', src\v64.rs:43:1
failures:
v64::f32x2_math_cos::cos
v64::f32x2_math_fma::fma
v64::f32x2_math_sin::sin
v64::f32x2_ops_scalar_arith::ops_scalar_arithmetic
v64::f32x2_ops_vector_arith::ops_vector_arithmetic
test result: FAILED. 1436 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out
cc @retep007
About this issue
- Original URL
- State: open
- Created 6 years ago
- Comments: 28 (26 by maintainers)
So I haven’t been able to reproduce this yet. Can you replace the
asserts with a macro like this:? And remove the
Debugimpls, etc.That would remove all the formatting code and hopefully leave only what matters (compile with
-C debuginfo=0 -C panic=abortetc. ). It would also be interesting to know if it only reproduces with-C opt-level=0or if it also reproduces with-C opt-level=1.Seems to be a Rust2018 related bug: https://github.com/rust-lang/rust/issues/55344
Rust’s llvm already has this fix. I’ll see if I can reproduce it later on today.