cpu_darwin.go 399 B

12345678910111213141516171819202122
  1. package blake3
  2. import (
  3. "syscall"
  4. "github.com/klauspost/cpuid/v2"
  5. )
  6. var (
  7. haveAVX2 bool
  8. haveAVX512 bool
  9. )
  10. func init() {
  11. haveAVX2 = cpuid.CPU.Supports(cpuid.AVX2)
  12. haveAVX512 = cpuid.CPU.Supports(cpuid.AVX512F)
  13. if !haveAVX512 {
  14. // On some Macs, AVX512 detection is buggy, so fallback to sysctl
  15. b, _ := syscall.Sysctl("hw.optional.avx512f")
  16. haveAVX512 = len(b) > 0 && b[0] == 1
  17. }
  18. }