gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

detect_x86.go (1126B)


      1 // Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file.
      2 
      3 //go:build (386 && !gccgo && !noasm && !appengine) || (amd64 && !gccgo && !noasm && !appengine)
      4 // +build 386,!gccgo,!noasm,!appengine amd64,!gccgo,!noasm,!appengine
      5 
      6 package cpuid
      7 
      8 func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32)
      9 func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32)
     10 func asmXgetbv(index uint32) (eax, edx uint32)
     11 func asmRdtscpAsm() (eax, ebx, ecx, edx uint32)
     12 func asmDarwinHasAVX512() bool
     13 
     14 func initCPU() {
     15 	cpuid = asmCpuid
     16 	cpuidex = asmCpuidex
     17 	xgetbv = asmXgetbv
     18 	rdtscpAsm = asmRdtscpAsm
     19 	darwinHasAVX512 = asmDarwinHasAVX512
     20 }
     21 
     22 func addInfo(c *CPUInfo, safe bool) {
     23 	c.maxFunc = maxFunctionID()
     24 	c.maxExFunc = maxExtendedFunction()
     25 	c.BrandName = brandName()
     26 	c.CacheLine = cacheLine()
     27 	c.Family, c.Model, c.Stepping = familyModel()
     28 	c.featureSet = support()
     29 	c.SGX = hasSGX(c.featureSet.inSet(SGX), c.featureSet.inSet(SGXLC))
     30 	c.ThreadsPerCore = threadsPerCore()
     31 	c.LogicalCores = logicalCores()
     32 	c.PhysicalCores = physicalCores()
     33 	c.VendorID, c.VendorString = vendorID()
     34 	c.cacheSize()
     35 	c.frequencies()
     36 }