diff options
author | Martin Kraft <martinkraft@gmail.com> | 2018-05-02 07:45:20 -0400 |
---|---|---|
committer | Martin Kraft <martinkraft@gmail.com> | 2018-05-02 07:45:20 -0400 |
commit | 7d5e85e4136b0e2e6cf902c48b186d99f0698d13 (patch) | |
tree | 84f7256de28eed0fd932f43532c218b385e09642 /vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go | |
parent | f4dcb4edf2aafca85c9af631131a77888da24bc7 (diff) | |
parent | 529807c1ba0c6b5e697d95d35b46865e22b0e62a (diff) | |
download | chat-7d5e85e4136b0e2e6cf902c48b186d99f0698d13.tar.gz chat-7d5e85e4136b0e2e6cf902c48b186d99f0698d13.tar.bz2 chat-7d5e85e4136b0e2e6cf902c48b186d99f0698d13.zip |
Merge remote-tracking branch 'origin/master' into advanced-permissions-phase-2
Diffstat (limited to 'vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go')
-rw-r--r-- | vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go new file mode 100644 index 000000000..a1e08d7ef --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go @@ -0,0 +1,45 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.7,amd64,!gccgo,!appengine + +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 +} + +//go:noescape +func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +//go:noescape +func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +//go:noescape +func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + if useAVX2 { + hashBlocksAVX2(h, c, flag, blocks) + } else if useAVX { + hashBlocksAVX(h, c, flag, blocks) + } else if useSSE4 { + hashBlocksSSE4(h, c, flag, blocks) + } else { + hashBlocksGeneric(h, c, flag, blocks) + } +} |