Commit graph

78 commits

Author SHA1 Message Date
Evgenii
c3cfe63e64 Add possibility to use different implementations in cli
Also make API smaller and more consistent and fix typos in documentation.
2019-07-19 18:24:30 +03:00
fyrchik
826ed77561
Merge pull request #9 from nspcc-dev/feature/AVX2_inline
Inline asm function in loop for AVX2 implementation
2019-07-19 17:54:25 +03:00
Evgenii
c68e38b943 Inline asm function in loop for AVX2 implementation
Right now AVX2 implementation looses to C binding in speed.
This is probably, because of 2 things:
1. Go does not inline `mulBitRightx2` in loop iteration.
2. `minmax` is loaded every time from memory.

In this PR:
1. Unroll `mulBitRightx2` manually and use `mulByteRightx2` instead.
2. Generate `minmax` in place without `LOAD/LEA` instructions.
2019-07-19 16:11:06 +03:00
fyrchik
dd15c90530
Merge pull request #8 from nspcc-dev/pureGo
Add pure-go GF(2^127) implementation
2019-07-19 12:06:24 +03:00
Evgenii
5c2544cf3b Add pure-go GF(2^127) implementation 2019-07-19 12:04:16 +03:00
fyrchik
5c06a9fa8f
Merge pull request #7 from nspcc-dev/feat/mbpers
Report benchmark results in MB/s
2019-07-10 13:15:00 +03:00
Evgenii
bd43de6056 Report benchmark results in MB/s 2019-07-10 12:07:54 +03:00
fyrchik
62a3dafe71
Merge pull request #6 from nspcc-dev/fix/tests
Use testify/require for testing
2019-06-24 11:58:28 +03:00
Evgenii
9a258e8741 Add test for marshalling/unmarshalling 2019-06-24 11:02:42 +03:00
Evgenii
d9e26aa6de Use testify/require for testing 2019-06-24 10:56:15 +03:00
fyrchik
500c652dcc
Merge pull request #5 from nspcc-dev/feat/sl2avx2
Make use of AVX2 in Sum() by default

Add benchmarks regarding AVX vs. AVX2 performance.
2019-06-24 10:34:58 +03:00
Evgenii
ec6649ba1c Add benchmark result to README 2019-06-24 10:33:00 +03:00
Evgenii
ad8c7bce1b Fix type assertions 2019-06-24 10:07:16 +03:00
Evgenii
e1d9fc8058 Use testify in tests 2019-06-21 23:18:16 +03:00
Evgenii
4b11f50264 Fix error in AVX2 implementation 2019-06-21 23:10:08 +03:00
Evgenii
eaeceead2f Add benchmarks 2019-06-21 22:40:17 +03:00
Evgenii
9485f49f3b Get rid of unsafe usage and add tests 2019-06-21 22:32:32 +03:00
Evgenii
a967cc9d3d Make use of AVX2 in Sum() by default 2019-06-21 18:47:01 +03:00
fyrchik
f197b9e890
Merge pull request #4 from nspcc-dev/feat/avx2
Add partial AVX2 support (multiplication by 10 and 11)
2019-06-21 17:56:45 +03:00
Evgenii
4618e1484c Add partial AVX2 support (multiplication by 10 and 11)
AVX2 permits working with 256-bit registers. Thus we can
multiply 2 GF(2^127) elements in parallel.
This commit adds 2 such functions for multiplication by 10 and 11).
2019-06-21 17:45:49 +03:00
Evgeniy Kulikov
6b644651fa
Rewrite tests (#3)
- rewrite tests
- remove gomega from deps
2019-05-29 14:10:17 +03:00
Evgenii
d5efd8bdce add SubtractR/L operation on hashes
- add Inverse operation to sl2
- fix a bug in xN()
2019-01-29 16:11:50 +03:00
Evgenii
ebb124e812 add random GF(2^127)-element generator 2019-01-29 14:25:17 +03:00
Evgenii
b380bca1d2 add inversion function 2019-01-29 14:11:08 +03:00
Evgeniy Kulikov
79ebc0e583
Enable CircleCI (#2)
* Enable CircleCI

* fix working directory
2019-01-03 13:26:32 +03:00
Evgeniy Kulikov
460d68432a
Merge pull request #1 from nspcc-dev/fix/fmt
Fix formatting
2019-01-03 11:07:46 +03:00
Evgeniy Kulikov
42499b9eb0
Fix formatting 2019-01-03 11:04:43 +03:00
Evgeniy Kulikov
5cf44c62ac
Initial 2018-12-29 16:04:17 +03:00