Function compiler_builtins::int::specialized_div_rem::delegate::u128_divide_sparc
source · pub(crate) fn u128_divide_sparc(duo: u128, div: u128, rem: &mut u128) -> u128
Expand description
Returns n / d
and sets *rem = n % d
.
This specialization exists because:
- The LLVM backend for 32-bit SPARC cannot compile functions that return
(u128, u128)
, so we have to use an old fashioned&mut u128
argument to return the remainder. - 64-bit SPARC does not have u64 * u64 => u128 widening multiplication, which makes the
delegate algorithm strategy the only reasonably fast way to perform
u128
division.