gmsm/internal/sm3/sm3block_amd64.go

30 lines
539 B
Go
Raw Normal View History

2024-03-05 09:47:49 +08:00
//go:build !purego
2022-01-21 11:24:10 +08:00
package sm3
import "github.com/emmansun/gmsm/internal/deps/cpu"
2022-01-21 11:24:10 +08:00
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) {
2025-06-19 13:31:43 +08:00
switch {
case useAVX2:
2023-09-13 17:33:49 +08:00
blockAVX2(dig, p)
2025-06-19 13:31:43 +08:00
case useSSSE3, useAVX: // useSSSE3 or useAVX
2023-09-20 10:07:46 +08:00
blockSIMD(dig, p)
2025-06-19 13:31:43 +08:00
default:
2023-09-13 17:33:49 +08:00
blockAMD64(dig, p)
}
}