Macro specialized_div_rem::impl_trifecta[][src]

macro_rules! impl_trifecta {
    (
        $unsigned_name:ident, // name of the unsigned division function
        $signed_name:ident, // name of the signed division function
        $zero_div_fn:ident, // function called when division by zero is attempted
        $half_division:ident, // function for division of a $uX by a $uX
        $n_h:expr, // the number of bits in $iH or $uH
        $uH:ident, // unsigned integer with half the bit width of $uX
        $uX:ident, // unsigned integer with half the bit width of $uD
        $uD:ident, // unsigned integer type for the inputs and outputs of `$unsigned_name`
        $iD:ident, // signed integer type for the inputs and outputs of `$signed_name`
        $($unsigned_attr:meta),*; // attributes for the unsigned function
        $($signed_attr:meta),* // attributes for the signed function
    ) => { ... };
}
Expand description

Creates unsigned and signed division functions optimized for division of integers with bitwidths larger than the largest hardware integer division supported. These functions use large radix division algorithms that require both fast division and very fast widening multiplication on the target microarchitecture. Otherwise, impl_delegate should be used instead.