From b0697eccbea9adec5b7ba8008f4c33d98d733388 Mon Sep 17 00:00:00 2001 From: Andreas Auernhammer Date: Mon, 23 Apr 2018 15:30:03 +0200 Subject: [PATCH] blake2b: Revert "blake2b: use internal/cpu to determine AVX and SSE 4 support" This reverts commit d6449816ce06963d9d136eee5a56fca5b0616e7e because of golang/go#24828. Change-Id: I14b4e1265b2e75897fa12548dbdfb77c308afaaf Reviewed-on: https://go-review.googlesource.com/108795 Reviewed-by: Tobias Klauser Run-TryBot: Tobias Klauser --- blake2b/blake2bAVX2_amd64.go | 26 ++++++++++++-------------- blake2b/blake2bAVX2_amd64.s | 12 ++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) 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