Module curve25519_dalek::backend::serial::u64
source · Available on
curve25519_dalek_bits="64"
only.Expand description
The u64
backend uses u64
s and a (u64, u64) -> u128
multiplier.
On x86_64, the idiom (x as u128) * (y as u128)
lowers to MUL
instructions taking 64-bit inputs and producing 128-bit outputs. On
other platforms, this implementation is not recommended.
On Haswell and newer, the BMI2 extension provides MULX
, and on
Broadwell and newer, the ADX extension provides ADCX
and ADOX
(allowing the CPU to compute two carry chains in parallel). These
will be used if available.
Modules
This module contains backend-specific constant values, such as the 64-bit limbs of curve constants.
Field arithmetic modulo \(p = 2^{255} - 19\), using \(64\)-bit
limbs with \(128\)-bit products.
Arithmetic mod \(2^{252} + 27742317777372353535851937790883648493\)
with five \(52\)-bit unsigned limbs.