gmsm/sm3/sm3block_amd64.go
2023-09-13 17:33:49 +08:00

29 lines
498 B
Go

//go:build amd64 && !purego
// +build amd64,!purego
package sm3
import "golang.org/x/sys/cpu"
var useAVX2 = cpu.X86.HasAVX2 && cpu.X86.HasBMI2
var useAVX = cpu.X86.HasAVX && cpu.X86.HasBMI2
//go:noescape
func blockAMD64(dig *digest, p []byte)
//go:noescape
func blockAVX(dig *digest, p []byte)
//go:noescape
func blockAVX2(dig *digest, p []byte)
func block(dig *digest, p []byte) {
if useAVX2 {
blockAVX2(dig, p)
} else if useAVX {
blockAVX(dig, p)
} else {
blockAMD64(dig, p)
}
}