src/pkg/hash/crc32/crc32_amd64.go - The Go Programming Language

Golang

Source file src/pkg/hash/crc32/crc32_amd64.go

     1	// Copyright 2011 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	package crc32
     6	
     7	// This file contains the code to call the SSE 4.2 version of the Castagnoli
     8	// CRC.
     9	
    10	// haveSSE42 is defined in crc_amd64.s and uses CPUID to test for SSE 4.2
    11	// support.
    12	func haveSSE42() bool
    13	
    14	// castagnoliSSE42 is defined in crc_amd64.s and uses the SSE4.2 CRC32
    15	// instruction.
    16	func castagnoliSSE42(uint32, []byte) uint32
    17	
    18	var sse42 = haveSSE42()
    19	
    20	func updateCastagnoli(crc uint32, p []byte) uint32 {
    21		if sse42 {
    22			return castagnoliSSE42(crc, p)
    23		}
    24		return update(crc, castagnoliTable, p)
    25	}