1
Fork 0

improve performance of signed saturating_mul

Reciprocal throughput is improved from 2.3 to 1.7.
https://godbolt.org/z/ROMiX6
This commit is contained in:
Trevor Spiteri 2019-10-11 17:13:19 +02:00
parent 000d90b11f
commit 57aae75ce3

View file

@ -1058,7 +1058,7 @@ $EndFeature, "
#[inline] #[inline]
pub fn saturating_mul(self, rhs: Self) -> Self { pub fn saturating_mul(self, rhs: Self) -> Self {
self.checked_mul(rhs).unwrap_or_else(|| { self.checked_mul(rhs).unwrap_or_else(|| {
if (self < 0 && rhs < 0) || (self > 0 && rhs > 0) { if (self < 0) == (rhs < 0) {
Self::max_value() Self::max_value()
} else { } else {
Self::min_value() Self::min_value()