gmsm/sm3/sm3block_amd64.go

30 lines
525 B
Go
Raw Normal View History

2023-09-07 17:42:55 +08:00
//go:build amd64 && !purego
// +build amd64,!purego
2022-01-21 11:24:10 +08:00
package sm3
import "golang.org/x/sys/cpu"
var useAVX2 = cpu.X86.HasAVX2 && cpu.X86.HasBMI2
var useAVX = cpu.X86.HasAVX
2023-09-20 10:07:46 +08:00
var useSSSE3 = cpu.X86.HasSSSE3
2022-04-27 10:36:10 +08:00
//go:noescape
2023-09-13 17:33:49 +08:00
func blockAMD64(dig *digest, p []byte)
//go:noescape
2023-09-20 10:07:46 +08:00
func blockSIMD(dig *digest, p []byte)
2023-09-13 17:33:49 +08:00
//go:noescape
func blockAVX2(dig *digest, p []byte)
func block(dig *digest, p []byte) {
if useAVX2 {
blockAVX2(dig, p)
2023-09-20 10:07:46 +08:00
} else if useSSSE3 || useAVX {
blockSIMD(dig, p)
2023-09-13 17:33:49 +08:00
} else {
blockAMD64(dig, p)
}
}