...
Run Format

Source file src/internal/cpu/cpu.go

Documentation: internal/cpu

  // Copyright 2017 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 cpu implements processor feature detection
  // used by the Go standard library.
  package cpu
  
  var X86 x86
  
  // The booleans in x86 contain the correspondingly named cpuid feature bit.
  // HasAVX and HasAVX2 are only set if the OS does support XMM and YMM registers
  // in addition to the cpuid feature bit being set.
  // The struct is padded to avoid false sharing.
  type x86 struct {
  	_            [CacheLineSize]byte
  	HasAES       bool
  	HasADX       bool
  	HasAVX       bool
  	HasAVX2      bool
  	HasBMI1      bool
  	HasBMI2      bool
  	HasERMS      bool
  	HasFMA       bool
  	HasOSXSAVE   bool
  	HasPCLMULQDQ bool
  	HasPOPCNT    bool
  	HasSSE2      bool
  	HasSSE3      bool
  	HasSSSE3     bool
  	HasSSE41     bool
  	HasSSE42     bool
  	_            [CacheLineSize]byte
  }
  
  var PPC64 ppc64
  
  // For ppc64x, it is safe to check only for ISA level starting on ISA v3.00,
  // since there are no optional categories. There are some exceptions that also
  // require kernel support to work (darn, scv), so there are capability bits for
  // those as well. The minimum processor requirement is POWER8 (ISA 2.07), so we
  // maintain some of the old capability checks for optional categories for
  // safety.
  // The struct is padded to avoid false sharing.
  type ppc64 struct {
  	_          [CacheLineSize]byte
  	HasVMX     bool // Vector unit (Altivec)
  	HasDFP     bool // Decimal Floating Point unit
  	HasVSX     bool // Vector-scalar unit
  	HasHTM     bool // Hardware Transactional Memory
  	HasISEL    bool // Integer select
  	HasVCRYPTO bool // Vector cryptography
  	HasHTMNOSC bool // HTM: kernel-aborted transaction in syscalls
  	HasDARN    bool // Hardware random number generator (requires kernel enablement)
  	HasSCV     bool // Syscall vectored (requires kernel enablement)
  	IsPOWER8   bool // ISA v2.07 (POWER8)
  	IsPOWER9   bool // ISA v3.00 (POWER9)
  	_          [CacheLineSize]byte
  }
  
  var ARM64 arm64
  
  // The booleans in arm64 contain the correspondingly named cpu feature bit.
  // The struct is padded to avoid false sharing.
  type arm64 struct {
  	_          [CacheLineSize]byte
  	HasFP      bool
  	HasASIMD   bool
  	HasEVTSTRM bool
  	HasAES     bool
  	HasPMULL   bool
  	HasSHA1    bool
  	HasSHA2    bool
  	HasCRC32   bool
  	HasATOMICS bool
  	_          [CacheLineSize]byte
  }
  

View as plain text