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.