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.