[][src]Module curve25519_dalek::backend::serial::u64

The u64 backend uses u64s 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.



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.