diff --git a/library/compiler-builtins/src/mul.rs b/library/compiler-builtins/src/mul.rs index b93fdb766391..77dba26ec3c7 100644 --- a/library/compiler-builtins/src/mul.rs +++ b/library/compiler-builtins/src/mul.rs @@ -19,7 +19,7 @@ macro_rules! mul { low += (t & lower_mask) << half_bits; high += t >> half_bits; high += (a.low() >> half_bits) * (b.low() >> half_bits); - high += a.high().wrapping_mul(b.low()) + a.low().wrapping_mul(b.high()); + high = high.wrapping_add(a.high().wrapping_mul(b.low()).wrapping_add(a.low().wrapping_mul(b.high()))); <$ty>::from_parts(low, high) } }