mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-05 11:33:04 +00:00
Optimise min/max
Swapping the conditions generates more efficient x86 assembly. See https://github.com/rust-lang/rust/pull/46926#issuecomment-354567412.
This commit is contained in:
parent
0296b7165b
commit
fba16d3f0b
@ -263,7 +263,7 @@ impl Float for f32 {
|
||||
// Since we do not support sNaN in Rust yet, we do not need to handle them.
|
||||
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
|
||||
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
|
||||
(if self < other || self.is_nan() { other } else { self }) * 1.0
|
||||
(if self.is_nan() || self < other { other } else { self }) * 1.0
|
||||
}
|
||||
|
||||
/// Returns the minimum of the two numbers.
|
||||
@ -277,6 +277,6 @@ impl Float for f32 {
|
||||
// Since we do not support sNaN in Rust yet, we do not need to handle them.
|
||||
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
|
||||
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
|
||||
(if self < other || other.is_nan() { self } else { other }) * 1.0
|
||||
(if other.is_nan() || self < other { self } else { other }) * 1.0
|
||||
}
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ impl Float for f64 {
|
||||
// Since we do not support sNaN in Rust yet, we do not need to handle them.
|
||||
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
|
||||
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
|
||||
(if self < other || self.is_nan() { other } else { self }) * 1.0
|
||||
(if self.is_nan() || self < other { other } else { self }) * 1.0
|
||||
}
|
||||
|
||||
/// Returns the minimum of the two numbers.
|
||||
@ -275,6 +275,6 @@ impl Float for f64 {
|
||||
// Since we do not support sNaN in Rust yet, we do not need to handle them.
|
||||
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
|
||||
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
|
||||
(if self < other || other.is_nan() { self } else { other }) * 1.0
|
||||
(if other.is_nan() || self < other { self } else { other }) * 1.0
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user