Henry de Valence
70eee5208a
Rename double_scalar_mult_basepoint to double_scalar_mul_basepoint for consistency
2018-03-22 11:39:47 -07:00
Henry de Valence
8de3d7576a
Rename mult_by_pow_2 to mul_by_pow_2 for consistency
2018-03-22 11:35:42 -07:00
Henry de Valence
792ac0775e
Change to the updated subtle API.
2018-03-22 11:13:26 -07:00
Henry de Valence
c20e09f6cc
Rename multiscalar_mult->multiscalar_mul to match Mul traits
2018-03-19 14:28:21 -07:00
Henry de Valence
c5fcc6602d
Fix build for AVX2 backend.
...
A missing import of the Borrow trait caused the build to break with the
"yolocrypto" feature enabled; this was't caught by CI because the CI machine
that Travis used didn't have AVX2, so the code was never built.
This commit adds the missing import and changes `std` to `core` so that the
AVX2 backend builds with no_std, but this isn't tested and is, actually,
"yolocrypto".
2018-03-19 11:15:52 -07:00
Henry de Valence
0f185d3e28
Generalize trait bounds on multiscalar multiplication.
...
This allows iterators returning either &Scalars or Scalars, so that it's
possible to use map() and friends to adjust scalars as they're being fed into
the multiscalar multiplication.
2018-02-20 18:31:23 -08:00
Isis Lovecruft
cd112afff5
Whitespace EOL fixes.
2018-01-31 02:19:53 +00:00
Henry de Valence
06994e8139
Tidy docs for public constants in backends
2018-01-29 12:38:58 -08:00
Henry de Valence
576e27982f
Tweak module header names
2018-01-26 10:44:48 -08:00
Henry de Valence
3f7923b628
Keep the AVX2 point type named as ExtendedPoint.
2018-01-25 12:00:40 -08:00
Isis Lovecruft
4f37785f0e
Rename ExtendedPoint to EdwardsPoint.
2018-01-25 02:56:38 +00:00
Henry de Valence
86fd06db00
s/eps/epsilon/ for clarity
2018-01-24 12:42:57 -08:00
Henry de Valence
0e9b8e0a6e
Refactor multiply implementation to eliminate reduce() call
2018-01-19 18:23:41 -08:00
Henry de Valence
ec50ec96f7
Use parallel carry-ins and carry-outs in FieldElement64::reduce()
2018-01-19 17:50:48 -08:00
Henry de Valence
d8d235fb48
Move pow2k into the backends and use it to implement square()
2018-01-19 17:50:48 -08:00
Henry de Valence
f816083575
Use >> instead of srl intrinsic
2018-01-03 14:04:27 -08:00
Henry de Valence
4cbff3983d
Remove fixme notes
2018-01-03 14:01:48 -08:00
Henry de Valence
628af18a1d
Suppress some warnings
2018-01-03 13:57:50 -08:00
Henry de Valence
3686562b2f
Clear memory from avx2 multiscalar mult
2018-01-03 13:37:12 -08:00
Henry de Valence
d41dbb1fe4
Replace some binary constants with named constants
2018-01-03 12:34:25 -08:00
Henry de Valence
dd80421094
Move field constants to constants module
2018-01-03 12:13:52 -08:00
Henry de Valence
ce68b8d72b
Document bounds yoga in doubling
2017-12-18 14:48:44 -08:00
Henry de Valence
af3c2b2821
Document readdition
2017-12-18 13:58:37 -08:00
Henry de Valence
c0f64009a7
Implement readdition using a CachedPoint type
2017-12-18 11:42:53 -08:00
Henry de Valence
80813e81b1
make diff_sum maskable
2017-12-15 15:24:13 -08:00
Henry de Valence
caf296a546
Try to make target_feature work on stable
2017-12-15 13:57:01 -08:00
Henry de Valence
70f710eafe
Use the LookupTable struct in AVX2 code
2017-12-15 13:57:01 -08:00
Henry de Valence
640888198e
Eliminate a carry pass through tighter bounds checks
2017-12-14 14:17:34 -08:00
Henry de Valence
d62fc7caf1
Rearrange signs to avoid a subtraction
2017-12-07 10:55:33 -08:00
Henry de Valence
2c29d9a2ad
tweak docs
2017-12-04 10:37:37 -08:00
Henry de Valence
3814beeafe
Fix typo and add note on AVX512VL
2017-12-04 10:37:37 -08:00
Henry de Valence
bf5e3581d2
Update AVX2 docs
2017-12-04 10:37:37 -08:00
Henry de Valence
1103c5c43a
Implement Sub by pre-negating the point
2017-12-04 10:37:37 -08:00
Henry de Valence
e3579995c0
Add double-base scalar vartime for AVX2
2017-12-04 10:37:37 -08:00
Henry de Valence
9213dc0bbb
Implement point subtraction
2017-12-04 10:37:37 -08:00
Henry de Valence
3094866442
Fix up after Scalar API changes
2017-12-04 10:37:37 -08:00
Henry de Valence
ba071f12aa
Write up notes on the AVX2 backend
2017-12-04 10:37:37 -08:00
Henry de Valence
3d435a1f4f
Fix up tests to use new Scalar API
2017-12-04 10:37:37 -08:00
Henry de Valence
b5305b4e30
Connect multiscalar_mult to the AVX2 backend
2017-12-04 10:37:37 -08:00
Henry de Valence
912fc5d412
Never build avx2 without avx2
2017-12-04 10:37:37 -08:00
Henry de Valence
77766b3422
Add benchmark for conversion to avx2 format
2017-12-04 10:37:37 -08:00
Henry de Valence
208180dc72
Simplify mul, square implementations
2017-12-04 10:37:37 -08:00
Henry de Valence
f28635ab4e
Add a new 'avx2_backend' yolocrypto feature
2017-12-04 10:37:37 -08:00
Henry de Valence
81ecef89ee
Connect AVX2 and u64 backends
2017-12-04 10:37:37 -08:00
Henry de Valence
ed24d1c5fa
Move AVX2 code into a backend
2017-12-04 10:37:37 -08:00
Isis Lovecruft
c71d41ddcc
Whitespace fixes.
2017-12-04 01:17:17 +00:00
Henry de Valence
c0633ae2d7
KaTeXify some backend documentation
2017-12-01 11:46:36 -08:00
Henry de Valence
e196f8347c
Move 32/64-bit code into submodules in a backend module.
...
See the doc comment in `backend/mod.rs` for motivation on naming.
2017-11-16 16:07:55 -08:00