emmansun / gmsm

ShangMi (SM) cipher suites for golang (Go语言商用密码软件)

Home Page:https://emmansun.github.io/gmsm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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