gmsm/zuc/eia_asm.go
2022-07-13 11:51:44 +08:00

25 lines
538 B
Go

//go:build (amd64 && !generic)
// +build amd64,!generic
package zuc
import "golang.org/x/sys/cpu"
var supportsGFMUL = cpu.X86.HasPCLMULQDQ || cpu.ARM64.HasPMULL
var useAVX2 = cpu.X86.HasAVX2 && cpu.X86.HasBMI2
//go:noescape
func eia3Round16B(t *uint32, keyStream *uint32, p *byte, tagSize int)
func block(m *ZUC128Mac, p []byte) {
if supportsGFMUL {
for len(p) >= chunk {
m.genKeywords(m.k0[4:])
eia3Round16B(&m.t, &m.k0[0], &p[0], m.tagSize)
p = p[chunk:]
}
} else {
blockGeneric(m, p)
}
}