[SM3] implement amd64 AVX version
emmansun opened this issue · comments
AVX2版本一次虽然可以处理两个blocks(64x2),但只是消息扩展可以快一点,消息压缩不能优化。
- 第一个块压缩,同时处理两个块的消息扩展(AVX2);
- 第二个块消息压缩。
AVX版本的话,就是每次处理一个block,消息扩展用AVX指令。
- 块压缩,同时处理这个块的消息扩展(AVX)
AVX2:
goos: windows
goarch: amd64
pkg: github.com/emmansun/gmsm/sm3
cpu: Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz
BenchmarkHash1K
BenchmarkHash1K-6
404734 2852 ns/op 359.03 MB/s 0 B/op 0 allocs/op
AVX:
goos: windows
goarch: amd64
pkg: github.com/emmansun/gmsm/sm3
cpu: Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz
BenchmarkHash1K
BenchmarkHash1K-6
374119 2910 ns/op 351.93 MB/s 0 B/op 0 allocs/op
Do NOT use the RORX according https://stackoverflow.com/questions/76428057/do-all-cpus-that-support-avx2-also-support-bmi2-or-popcnt