blake2b: fix build on non-amd64 platforms
Change-Id: Ib9ebb1a2eff4b61f60453086be5c63ac7af1f7fc
Reviewed-on: https://go-review.googlesource.com/34672
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Adam Langley <agl@google.com>
Reviewed-by: Adam Langley <agl@golang.org>
diff --git a/blake2b/blake2b.go b/blake2b/blake2b.go
index b736632..fa9e48e 100644
--- a/blake2b/blake2b.go
+++ b/blake2b/blake2b.go
@@ -23,6 +23,12 @@
Size256 = 32
)
+var (
+ useAVX2 bool
+ useAVX bool
+ useSSE4 bool
+)
+
var errKeySize = errors.New("blake2b: invalid key size")
var iv = [8]uint64{
diff --git a/blake2b/blake2bAVX2_amd64.go b/blake2b/blake2bAVX2_amd64.go
index 422ba84..8c41cf6 100644
--- a/blake2b/blake2bAVX2_amd64.go
+++ b/blake2b/blake2bAVX2_amd64.go
@@ -6,18 +6,20 @@
package blake2b
-var useAVX2 = supportAVX2()
-var useAVX = supportAVX()
-var useSSE4 = supportSSE4()
+func init() {
+ useAVX2 = supportsAVX2()
+ useAVX = supportsAVX()
+ useSSE4 = supportsSSE4()
+}
//go:noescape
-func supportSSE4() bool
+func supportsSSE4() bool
//go:noescape
-func supportAVX() bool
+func supportsAVX() bool
//go:noescape
-func supportAVX2() bool
+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 86bc182..96a51d5 100644
--- a/blake2b/blake2bAVX2_amd64.s
+++ b/blake2b/blake2bAVX2_amd64.s
@@ -489,14 +489,14 @@
MOVQ BP, SP
RET
-// func supportAVX2() bool
-TEXT ·supportAVX2(SB), 4, $0-1
+// func supportsAVX2() bool
+TEXT ·supportsAVX2(SB), 4, $0-1
MOVQ runtime·support_avx2(SB), AX
MOVB AX, ret+0(FP)
RET
-// func supportAVX() bool
-TEXT ·supportAVX(SB), 4, $0-1
+// func supportsAVX() bool
+TEXT ·supportsAVX(SB), 4, $0-1
MOVQ runtime·support_avx(SB), AX
MOVB AX, ret+0(FP)
RET
diff --git a/blake2b/blake2b_amd64.go b/blake2b/blake2b_amd64.go
index c9a22fd..2ab7c30 100644
--- a/blake2b/blake2b_amd64.go
+++ b/blake2b/blake2b_amd64.go
@@ -6,12 +6,12 @@
package blake2b
-var useAVX2 = false
-var useAVX = false
-var useSSE4 = supportSSE4()
+func init() {
+ useSSE4 = supportsSSE4()
+}
//go:noescape
-func supportSSE4() bool
+func supportsSSE4() bool
//go:noescape
func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte)
diff --git a/blake2b/blake2b_amd64.s b/blake2b/blake2b_amd64.s
index 04e45be..6453074 100644
--- a/blake2b/blake2b_amd64.s
+++ b/blake2b/blake2b_amd64.s
@@ -280,8 +280,8 @@
MOVQ BP, SP
RET
-// func supportSSE4() bool
-TEXT ·supportSSE4(SB), 4, $0-1
+// func supportsSSE4() bool
+TEXT ·supportsSSE4(SB), 4, $0-1
MOVL $1, AX
CPUID
SHRL $19, CX // Bit 19 indicates SSE4 support
diff --git a/blake2b/blake2b_ref.go b/blake2b/blake2b_ref.go
index 2c3c68b..da156a1 100644
--- a/blake2b/blake2b_ref.go
+++ b/blake2b/blake2b_ref.go
@@ -6,9 +6,6 @@
package blake2b
-var useAVX2 = false
-var useSSE4 = false
-
func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) {
hashBlocksGeneric(h, c, flag, blocks)
}