package xxh3

import (
	

	
)

var (
	hasAVX2   = cpuid.CPU.Has(cpuid.AVX2)
	hasSSE2   = cpuid.CPU.Has(cpuid.SSE2) // Always true on amd64
	hasAVX512 = cpuid.CPU.Has(cpuid.AVX512F)
)

//go:noescape
func accumAVX2( *[8]u64, ,  unsafe.Pointer,  u64)

//go:noescape
func accumAVX512( *[8]u64, ,  unsafe.Pointer,  u64)

//go:noescape
func accumSSE( *[8]u64, ,  unsafe.Pointer,  u64)

//go:noescape
func accumBlockAVX2( *[8]u64, ,  unsafe.Pointer)

//go:noescape
func accumBlockSSE( *[8]u64, ,  unsafe.Pointer)

func withOverrides(, ,  bool,  func()) {
	, ,  := hasAVX512, hasAVX2, hasSSE2
	hasAVX512, hasAVX2, hasSSE2 = , , 
	defer func() { hasAVX512, hasAVX2, hasSSE2 = , ,  }()
	()
}

func withAVX512( func())  { withOverrides(hasAVX512, false, false, ) }
func withAVX2( func())    { withOverrides(false, hasAVX2, false, ) }
func withSSE2( func())    { withOverrides(false, false, hasSSE2, ) }
func withGeneric( func()) { withOverrides(false, false, false, ) }