github.com/devops-filetransfer/sshego@v7.0.4+incompatible/_vendor/golang.org/x/crypto/blake2s/blake2s_amd64.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // +build amd64,!gccgo,!appengine
     6  
     7  package blake2s
     8  
     9  var (
    10  	useSSE4    = supportSSE4()
    11  	useSSSE3   = supportSSSE3()
    12  	useSSE2    = true // Always available on amd64
    13  	useGeneric = false
    14  )
    15  
    16  //go:noescape
    17  func supportSSSE3() bool
    18  
    19  //go:noescape
    20  func supportSSE4() bool
    21  
    22  //go:noescape
    23  func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte)
    24  
    25  //go:noescape
    26  func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte)
    27  
    28  //go:noescape
    29  func hashBlocksSSE4(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte)
    30  
    31  func hashBlocks(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) {
    32  	if useSSE4 {
    33  		hashBlocksSSE4(h, c, flag, blocks)
    34  	} else if useSSSE3 {
    35  		hashBlocksSSSE3(h, c, flag, blocks)
    36  	} else {
    37  		hashBlocksSSE2(h, c, flag, blocks)
    38  	}
    39  }