about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-08-14 06:31:10 +0000
committerbors <bors@rust-lang.org>2018-08-14 06:31:10 +0000
commita8763b5370ed044b6e703981217f074e8ddf1e7c (patch)
tree129c91d0df032b03a6c1bcd05a64f16598084d36
parent3e05f80a3790bb96247e9325fe54e484086f77f5 (diff)
parent78a1c45d83bf93025ceed25e933f6e51f8efdc37 (diff)
downloadrust-a8763b5370ed044b6e703981217f074e8ddf1e7c.tar.gz
rust-a8763b5370ed044b6e703981217f074e8ddf1e7c.zip
Auto merge of #52895 - draganmladjenovic:minmax_qnan, r=alexcrichton
run-pass/simd-intrinsic-float-minmax: Force use of qNaN on Mips

Workaround for #52746.
r? @gnzlbg
-rw-r--r--src/test/run-pass/simd-intrinsic-float-minmax.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/test/run-pass/simd-intrinsic-float-minmax.rs b/src/test/run-pass/simd-intrinsic-float-minmax.rs
index 71c0139bb03..d35123e2235 100644
--- a/src/test/run-pass/simd-intrinsic-float-minmax.rs
+++ b/src/test/run-pass/simd-intrinsic-float-minmax.rs
@@ -29,7 +29,14 @@ extern "platform-intrinsic" {
 fn main() {
     let x = f32x4(1.0, 2.0, 3.0, 4.0);
     let y = f32x4(2.0, 1.0, 4.0, 3.0);
+
+    #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
     let nan = ::std::f32::NAN;
+    // MIPS hardware treats f32::NAN as SNAN. Clear the signaling bit.
+    // See https://github.com/rust-lang/rust/issues/52746.
+    #[cfg(any(target_arch = "mips", target_arch = "mips64"))]
+    let nan = f32::from_bits(::std::f32::NAN.to_bits() - 1);
+
     let n = f32x4(nan, nan, nan, nan);
 
     unsafe {