Commit graph

638 commits

Author SHA1 Message Date
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
89753e7274 for some reason stdsimd dep isn't picked up if it's optional 2017-12-15 13:57:01 -08:00
Henry de Valence
0f6171b788 Try to make stdsimd an optional dependency 2017-12-15 13:57:01 -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
34f44dcf5d Merge branch 'develop' into feature/avx2_r8 2017-12-15 11:37:10 -08:00
Henry de Valence
ad18f164bd Merge remote-tracking branch 'origin/develop' into develop 2017-12-15 11:13:37 -08:00
Henry de Valence
640888198e Eliminate a carry pass through tighter bounds checks 2017-12-14 14:17:34 -08:00
Isis Lovecruft
06d802b986
Merge remote-tracking branch 'hdevalence/feature/clear-memory' into develop 2017-12-13 00:13:17 +00:00
Henry de Valence
d6e93b6383 Merge branch 'feature/clear-memory_r2' into develop 2017-12-08 15:16:55 -08:00
Henry de Valence
a3f53c9134 Refactor select_precomputed_point into a LookupTable struct.
Originally this was for hygiene, so that we could erase points from
heap-allocated memory in multiscalar_mult, but it ends up providing a cleaner
API for scalar multiplication.

It's kept inside curve_models for now, but it could go somewhere else if that's a better place.
2017-12-07 12:46:57 -08:00
Henry de Valence
98a78d7a58 Clear scalar digits from memory in multiscalar_mult 2017-12-07 12:34:40 -08:00
Henry de Valence
d62fc7caf1 Rearrange signs to avoid a subtraction 2017-12-07 10:55:33 -08:00
Henry de Valence
1d39d2ec6e Implement Default for internal point types 2017-12-06 17:30:19 -08:00
Henry de Valence
7d2d87441b Connect double_scalar_mult_basepoint to AVX2 backend 2017-12-04 11:05:24 -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
fbd0e74357 Fix Cargo.toml to use upstream stdsimd 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
97fe2f0bf4 Try to connect the AVX2 backend to the ExtendedPoint frontend 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
841e0d5b64 Fix wrong feature for benchmarks 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
Henry de Valence
2b37a65d66 Remove debugging code 2017-12-04 10:37:37 -08:00
Henry de Valence
1ba7cb1e2c Add stub implementations of multiscalar mult 2017-12-04 10:37:37 -08:00
Henry de Valence
7354b569bb Add 32bit reduction code 2017-12-04 10:37:37 -08:00
Henry de Valence
e7ec5b3dd1 Add basepoint table code 2017-12-04 10:37:37 -08:00
Henry de Valence
34ae1b15e0 Add a squaring implementation 2017-12-04 10:37:37 -08:00
Henry de Valence
2f32f6355c Add doubling skeleton and scalar mult 2017-12-04 10:37:37 -08:00
Henry de Valence
9e383ffccb Add doubling test harness 2017-12-04 10:37:37 -08:00
Henry de Valence
e2a2b3a3b5 Add comment to mul draft 2017-12-04 10:37:37 -08:00
Henry de Valence
4f6788c72d First working version 2017-12-04 10:37:37 -08:00
Henry de Valence
15b88be2d2 Add serial implementation of the algorithm and a test 2017-12-04 10:37:37 -08:00
Henry de Valence
51f04d7cce first avx2 code 2017-12-04 10:37:37 -08:00
Henry de Valence
9422804e13 Merge remote-tracking branch 'origin/develop' into develop 2017-12-04 10:36:52 -08:00
Isis Lovecruft
97750474bd
Merge branch 'master' into develop 2017-12-04 02:10:42 +00:00