blob: 55d184a58ba0bce0a051ebb2f6796fe2a6d6e4be [file] [log] [blame]
// Copyright 2018 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.
package bytealg
import (
"internal/cpu"
"unsafe"
)
// Note: there's no equal_generic.go because every platform must implement at least memequal_varlen in assembly.
// Because equal_native.go is unconditional, it's a good place to compute asm constants.
// TODO: find a better way to do this?
// Offsets into internal/cpu records for use in assembly.
const (
x86_HasSSE2 = unsafe.Offsetof(cpu.X86.HasSSE2)
x86_HasAVX2 = unsafe.Offsetof(cpu.X86.HasAVX2)
x86_HasPOPCNT = unsafe.Offsetof(cpu.X86.HasPOPCNT)
s390x_HasVX = unsafe.Offsetof(cpu.S390X.HasVX)
)
//go:noescape
func Equal(a, b []byte) bool
// The compiler generates calls to runtime.memequal and runtime.memequal_varlen.
// In addition, the runtime calls runtime.memequal explicitly.
// Those functions are implemented in this package.