Henry de Valence
15f97221ba
Suppress extraneous warnings
2018-06-15 13:44:31 -07:00
Henry de Valence
7198719419
Document bounds on FieldElement32x4 functions
2018-06-15 13:36:38 -07:00
Henry de Valence
9f5bd8c4c0
Rename reduce32 to reduce and have it return its result.
...
This means that all FieldElement32x4 operations return values, vs mutating interior state.
2018-06-14 15:54:36 -07:00
Henry de Valence
bab1ebbeb8
Replace scale_by_curve_constants by a Mul<(u32,u32,u32,u32)> impl
2018-06-14 15:42:20 -07:00
Henry de Valence
6ef9e9dcfb
Make publicity a little more consistent
2018-06-14 15:22:16 -07:00
Henry de Valence
97292fef91
Move packing functions to top of the module
2018-06-14 15:21:51 -07:00
Henry de Valence
4dc219910a
Move blend_lanes into the blend function
2018-06-14 15:13:53 -07:00
Henry de Valence
64b1b481ba
Rewrite diff_sum in terms of shuffle, blend, negate
2018-06-14 14:59:11 -07:00
Henry de Valence
fe51adad31
Don't expose u32x8 unpacking functions
2018-06-14 14:32:13 -07:00
Henry de Valence
c46ec9638c
Add documentation
2018-06-14 14:23:24 -07:00
Henry de Valence
eea3eadf5b
Replace special-case swap_{AB,CD} methods with general shuffles
2018-06-14 14:23:24 -07:00
Henry de Valence
25d9f3f6ca
Eliminate vector constants from edwards module
2018-06-14 14:23:24 -07:00
Henry de Valence
cc8728b2a6
Add comment about rustc-constant-info to blend function
2018-06-14 14:23:24 -07:00
Henry de Valence
28f10bc183
Change Lanes::ALL to Lanes::ABCD for consistency
2018-06-14 14:23:24 -07:00
Henry de Valence
30a2b01c05
Add more selectors to the Lanes enum
2018-06-14 14:19:46 -07:00
Henry de Valence
64cb999866
Make platform-vector lanes constants private
2018-06-14 14:19:26 -07:00
Henry de Valence
00d8b6ea4f
Change negate_D, negate_D_lazy to impl Neg, negate_lazy
2018-06-14 14:17:36 -07:00
Henry de Valence
14ce6d3da6
Add a shuffling abstraction for FieldElement32x4
2018-06-14 14:10:37 -07:00
Henry de Valence
c8dc2a6418
Implement addition for FieldElement32x4
2018-06-14 14:10:32 -07:00
Henry de Valence
bd1e3c5f3e
some rustfmt changes
2018-06-14 14:05:52 -07:00
Henry de Valence
5f136fbd0c
Remove some warnings.
...
Not all of the warnings are removed, since although this code works, it still
needs a significant amount of cleanup, editing, and polish.
2018-04-04 10:25:42 -07:00
Henry de Valence
b0bda0278c
Drop the stdsimd crate in favor of core::{simd, arch}.
...
This change required some work, because the to-be-stabilized SIMD functions
don't allow non-constant `imm8`s. Previously, the `stdsimd` functions had a
constifying macro that ensured that the immediates were known. The dalek code
used this to build helper functions which would be inlined into different
places where the immediates were known. Unfortunately, since constexprs aren't
fully supported in Rust yet, this is done by a hidden compiler attribute, and
there's no way to propagate "constness".
To deal with this, some of the functions are specialized (e.g.,
`square_and_negate_D` instead of taking a mask), and others use an enum.
2018-04-03 17:58:23 -07:00
Henry de Valence
d6b8389428
Use criterion.rs instead of libtest for benchmarks.
...
Since Criterion can only benchmark public API, these changes just drop
all internal benchmarks (e.g., benchmarks for field operations). But
those are usually microbenchmarks whose meaning is kind of questionable
anyways, so I don't think this is a big loss.
The `bench` feature disappears, since Criterion works on stable Rust.
2018-03-25 17:14:37 -07:00
Henry de Valence
792ac0775e
Change to the updated subtle API.
2018-03-22 11:13:26 -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
Isis Lovecruft
cd112afff5
Whitespace EOL fixes.
2018-01-31 02:19:53 +00: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
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
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
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
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
9213dc0bbb
Implement point subtraction
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
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