1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
// -*- mode: rust; -*- // // This file is part of curve25519-dalek. // Copyright (c) 2016-2018 Isis Lovecruft, Henry de Valence // See LICENSE for licensing information. // // Authors: // - Isis Agora Lovecruft <isis@patternsinthevoid.net> // - Henry de Valence <hdevalence@hdevalence.ca> //! 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. pub mod field; pub mod scalar; pub mod constants;