[][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.

Modules

constants

This module contains backend-specific constant values, such as the 64-bit limbs of curve constants.

field

Field arithmetic modulo p=225519p = 2^{255} - 19, using 6464-bit limbs with 128128-bit products.

scalar

Arithmetic mod 2252+277423177773723535358519377908836484932^{252} + 27742317777372353535851937790883648493 with five 5252-bit unsigned limbs.