macro_rules! smod {
    (
        $unsigned_fn:ident, // name of the unsigned division function
        $signed_fn:ident, // name of the signed division function
        $uX:ident, // unsigned integer type for the inputs and outputs of `$unsigned_name`
        $iX:ident, // signed integer type for the inputs and outputs of `$signed_name`
        $($attr:tt),* // attributes
    ) => { ... };
}