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