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 }