...
1
2
3
4
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.AVX10Level = c.supportAVX10()
35 c.cacheSize()
36 c.frequencies()
37 }
38
View as plain text