diff --git a/blake2b/blake2bAVX2_amd64.go b/blake2b/blake2bAVX2_amd64.go index a1e08d7..8c41cf6 100644 --- a/blake2b/blake2bAVX2_amd64.go +++ b/blake2b/blake2bAVX2_amd64.go @@ -6,23 +6,21 @@ package blake2b -import _ "unsafe" - -//go:linkname x86_HasAVX internal/cpu.X86.HasAVX -var x86_HasAVX bool - -//go:linkname x86_HasAVX2 internal/cpu.X86.HasAVX2 -var x86_HasAVX2 bool - -//go:linkname x86_HasAVX internal/cpu.X86.HasSSE4 -var x86_HasSSE4 bool - func init() { - useAVX2 = x86_HasAVX2 - useAVX = x86_HasAVX - useSSE4 = x86_HasSSE4 + useAVX2 = supportsAVX2() + useAVX = supportsAVX() + useSSE4 = supportsSSE4() } +//go:noescape +func supportsSSE4() bool + +//go:noescape +func supportsAVX() bool + +//go:noescape +func supportsAVX2() bool + //go:noescape func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) diff --git a/blake2b/blake2bAVX2_amd64.s b/blake2b/blake2bAVX2_amd64.s index 5593b1b..784bce6 100644 --- a/blake2b/blake2bAVX2_amd64.s +++ b/blake2b/blake2bAVX2_amd64.s @@ -748,3 +748,15 @@ noinc: MOVQ BP, SP RET + +// func supportsAVX2() bool +TEXT ·supportsAVX2(SB), 4, $0-1 + MOVQ runtime·support_avx2(SB), AX + MOVB AX, ret+0(FP) + RET + +// func supportsAVX() bool +TEXT ·supportsAVX(SB), 4, $0-1 + MOVQ runtime·support_avx(SB), AX + MOVB AX, ret+0(FP) + RET