Report a bug
If you spot a problem with this page, click here to create a GitHub issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
cpuid.x86_any
Common information for all x86 and x86_64 vendors.
This module is compatible with betterC compilation mode.
Note T.max value value is used to represent fully-associative Cache/TLB.
References wikipedia:CPUID
License:
Authors:
Ilya Yaroshenko
- export nothrow @nogc void
mir_cpuid_x86_any_init(); - Initialize basic x86 CPU information. It is safe to call this function multiple times.
- union
Leaf1Information;
aliascpuid_x86_any_init= mir_cpuid_x86_any_init; - Basic information about CPU.
- CpuInfo
info; - CPUID payload
- const pure nothrow @nogc @property @trusted uint
stepping(); - Stepping ID
- const pure nothrow @nogc @property @trusted uint
model(); - Model
- const pure nothrow @nogc @property @trusted uint
family(); - Family ID
- const pure nothrow @nogc @property @trusted uint
type(); - Processor Type, Specification: Intel
- const pure nothrow @nogc @property @trusted uint
extendedModel(); - Extended Model ID
- const pure nothrow @nogc @property @trusted uint
extendedFamily(); - Extended Family ID
- const ubyte
brandIndex; - Brand Index
- const ubyte
clflushLineSize; - clflush line size
- const ubyte
maxLogicalProcessors; - maximal number of logical processors
- const ubyte
initialAPIC; - initial APIC
- const pure nothrow @nogc @property @trusted bool
sse3(); - SSE3 Extensions
- const pure nothrow @nogc @property @trusted bool
pclmulqdq(); - Carryless Multiplication
- const pure nothrow @nogc @property @trusted bool
dtes64(); - 64-bit DS Area
- const pure nothrow @nogc @property @trusted bool
monitor(); - MONITOR/MWAIT
- const pure nothrow @nogc @property @trusted bool
ds_cpl(); - (); /// CPL Qualified Debug Store
- const pure nothrow @nogc @property @trusted bool
vmx(); - Virtual Machine Extensions
- const pure nothrow @nogc @property @trusted bool
smx(); - Safer Mode Extensions
- const pure nothrow @nogc @property @trusted bool
eist(); - Enhanced Intel SpeedStep® Technology
- const pure nothrow @nogc @property @trusted bool
therm_monitor2(); - Thermal Monitor 2
- const pure nothrow @nogc @property @trusted bool
ssse3(); - SSSE3 Extensions
- const pure nothrow @nogc @property @trusted bool
cnxt_id(); - L1 Context ID
- const pure nothrow @nogc @property @trusted bool
sdbg(); - const pure nothrow @nogc @property @trusted bool
fma(); - Fused Multiply Add
- const pure nothrow @nogc @property @trusted bool
cmpxchg16b(); - const pure nothrow @nogc @property @trusted bool
xtpr(); - TPR Update Control
- const pure nothrow @nogc @property @trusted bool
pdcm(); - Perf/Debug Capability MSR xTPR Update Control
- const pure nothrow @nogc @property @trusted bool
pcid(); - Process-context Identifiers
- const pure nothrow @nogc @property @trusted bool
dca(); - Direct Cache Access
- const pure nothrow @nogc @property @trusted bool
sse41(); - SSE4.1
- const pure nothrow @nogc @property @trusted bool
sse42(); - SSE4.2
- const pure nothrow @nogc @property @trusted bool
x2apic(); - const pure nothrow @nogc @property @trusted bool
movbe(); - const pure nothrow @nogc @property @trusted bool
popcnt(); - const pure nothrow @nogc @property @trusted bool
tsc_deadline(); - const pure nothrow @nogc @property @trusted bool
aes(); - const pure nothrow @nogc @property @trusted bool
xsave(); - const pure nothrow @nogc @property @trusted bool
osxsave(); - const pure nothrow @nogc @property @trusted bool
avx(); - const pure nothrow @nogc @property @trusted bool
f16c(); - const pure nothrow @nogc @property @trusted bool
rdrand(); - const pure nothrow @nogc @property @trusted bool
virtual(); - const pure nothrow @nogc @property @trusted bool
fpu(); - x87 FPU on Chip
- const pure nothrow @nogc @property @trusted bool
vme(); - Virtual-8086 Mode Enhancement
- const pure nothrow @nogc @property @trusted bool
de(); - Debugging Extensions
- const pure nothrow @nogc @property @trusted bool
pse(); - Page Size Extensions
- const pure nothrow @nogc @property @trusted bool
tsc(); - Time Stamp Counter
- const pure nothrow @nogc @property @trusted bool
msr(); - RDMSR and WRMSR Support
- const pure nothrow @nogc @property @trusted bool
pae(); - Physical Address Extensions
- const pure nothrow @nogc @property @trusted bool
mce(); - Machine Check Exception
- const pure nothrow @nogc @property @trusted bool
cx8(); - CMPXCHG8B Inst.
- const pure nothrow @nogc @property @trusted bool
apic(); - APIC on Chip
- const pure nothrow @nogc @property @trusted bool
sep(); - SYSENTER and SYSEXIT
- const pure nothrow @nogc @property @trusted bool
mtrr(); - Memory Type Range Registers
- const pure nothrow @nogc @property @trusted bool
pge(); - PTE Global Bit
- const pure nothrow @nogc @property @trusted bool
mca(); - Machine Check Architecture
- const pure nothrow @nogc @property @trusted bool
cmov(); - Conditional Move/Compare Instruction
- const pure nothrow @nogc @property @trusted bool
pat(); - Page Attribute Table
- const pure nothrow @nogc @property @trusted bool
pse36(); - Page Size Extension
- const pure nothrow @nogc @property @trusted bool
psn(); - Processor Serial Number
- const pure nothrow @nogc @property @trusted bool
clfsh(); - CLFLUSH instruction
- const pure nothrow @nogc @property @trusted bool
ds(); - Debug Store
- const pure nothrow @nogc @property @trusted bool
acpi(); - Thermal Monitor and Clock Ctrl
- const pure nothrow @nogc @property @trusted bool
mmx(); - MMX Technology
- const pure nothrow @nogc @property @trusted bool
fxsr(); - FXSAVE/FXRSTOR
- const pure nothrow @nogc @property @trusted bool
sse(); - SSE Extensions
- const pure nothrow @nogc @property @trusted bool
sse2(); - SSE2 Extensions
- const pure nothrow @nogc @property @trusted bool
self_snoop(); - Self Snoop
- const pure nothrow @nogc @property @trusted bool
htt(); - Multi-threading
- const pure nothrow @nogc @property @trusted bool
therm_monitor(); - Therm. Monitor
- const pure nothrow @nogc @property @trusted bool
pbe(); - Pend. Brk. EN.
- union
Leaf7Information; - Extended information about CPU.
- CpuInfo
info; - CPUID payload
- uint
max7SubLeafs; - Reports the maximum input value for supported leaf 7 sub-leaves
- const pure nothrow @nogc @property @trusted bool
fsgsbase(); - Supports RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE if 1.
- const pure nothrow @nogc @property @trusted bool
ia32_tsc_adjust(); - MSR is supported if 1.
- const pure nothrow @nogc @property @trusted bool
sgx(); - Supports Intel® Software Guard Extensions (Intel® SGX Extensions) if 1.
- const pure nothrow @nogc @property @trusted bool
bmi1(); - Bit Manipulation Instruction Set 1
- const pure nothrow @nogc @property @trusted bool
hle(); - Transactional Synchronization Extensions
- const pure nothrow @nogc @property @trusted bool
avx2(); - Advanced Vector Extensions 2
- const pure nothrow @nogc @property @trusted bool
fdp_excptn_only(); - x87 FPU Data Pointer updated only on x87 exceptions if 1.
- const pure nothrow @nogc @property @trusted bool
smep(); - Supports Supervisor-Mode Execution Prevention if 1.
- const pure nothrow @nogc @property @trusted bool
bmi2(); - Bit Manipulation Instruction Set 2
- const pure nothrow @nogc @property @trusted bool
supports(); - Enhanced REP MOVSB/STOSB if 1.
- const pure nothrow @nogc @property @trusted bool
invpcid(); - If 1, supports INVPCID instruction for system software that manages process-context identifiers.
- const pure nothrow @nogc @property @trusted bool
rtm(); - Transactional Synchronization Extensions
- const pure nothrow @nogc @property @trusted bool
rdt_m(); - Supports Intel® Resource Director Technology (Intel® RDT) Monitoring capability if 1.
- const pure nothrow @nogc @property @trusted bool
deprecates(); - FPU CS and FPU DS values if 1.
- const pure nothrow @nogc @property @trusted bool
mpx(); - Supports Intel® Memory Protection Extensions if 1.
- const pure nothrow @nogc @property @trusted bool
rdt_a(); - Supports Intel® Resource Director Technology (Intel® RDT) Allocation capability if 1.
- const pure nothrow @nogc @property @trusted bool
avx512f(); - AVX-512 Foundation
- const pure nothrow @nogc @property @trusted bool
avx512dq(); - AVX-512 Doubleword and Quadword Instructions
- const pure nothrow @nogc @property @trusted bool
rdseed(); - RDSEED instruction
- const pure nothrow @nogc @property @trusted bool
adx(); - Intel ADX (Multi-Precision Add-Carry Instruction Extensions)
- const pure nothrow @nogc @property @trusted bool
smap(); - Supports Supervisor-Mode Access Prevention (and the CLAC/STAC instructions) if 1.
- const pure nothrow @nogc @property @trusted bool
avx512ifma(); - AVX-512 Integer Fused Multiply-Add Instructions
- const pure nothrow @nogc @property @trusted bool
pcommit(); - PCOMMIT instruction
- const pure nothrow @nogc @property @trusted bool
clflushopt(); - CLFLUSHOPT instruction
- const pure nothrow @nogc @property @trusted bool
clwb(); - CLWB instruction
- const pure nothrow @nogc @property @trusted bool
intel_pt(); - Intel Processor Trace.
- const pure nothrow @nogc @property @trusted bool
avx512pf(); - AVX-512 Prefetch Instructions
- const pure nothrow @nogc @property @trusted bool
avx512er(); - AVX-512 Exponential and Reciprocal Instructions
- const pure nothrow @nogc @property @trusted bool
avx512cd(); - AVX-512 Conflict Detection Instructions
- const pure nothrow @nogc @property @trusted bool
sha(); - supports Intel® Secure Hash Algorithm Extens
- const pure nothrow @nogc @property @trusted bool
avx512bw(); - AVX-512 Byte and Word Instructions
- const pure nothrow @nogc @property @trusted bool
avx512vl(); - AVX-512 Vector Length Extensions
- const pure nothrow @nogc @property @trusted bool
prefetchwt1(); - PREFETCHWT1 instruction
- const pure nothrow @nogc @property @trusted bool
avx512vbmi(); - AVX-512 Vector Bit Manipulation Instructions
- const pure nothrow @nogc @property @trusted bool
umip(); - Supports user-mode instruction prevention if 1
- const pure nothrow @nogc @property @trusted bool
pku(); - Memory Protection Keys for User-mode pages
- const pure nothrow @nogc @property @trusted bool
ospke(); - If 1, OS has set CR4.PKE to enable protection keys (and the RDPKRU/WRPKRU instructions).
- const pure nothrow @nogc @property @trusted bool
waitpkg(); - const pure nothrow @nogc @property @trusted bool
avx512vbmi2(); - const pure nothrow @nogc @property @trusted bool
cet_ss(); - Supports CET shadow stack features if 1.
- const pure nothrow @nogc @property @trusted bool
gfni(); - const pure nothrow @nogc @property @trusted bool
vaes(); - const pure nothrow @nogc @property @trusted bool
vpclmulqdq(); - const pure nothrow @nogc @property @trusted bool
avx512vnni(); - const pure nothrow @nogc @property @trusted bool
avx512bitalg(); - const pure nothrow @nogc @property @trusted bool
avx512vpopcntdq(); - const pure nothrow @nogc @property @trusted uint
mawau(); - The value of MAWAU used by the BNDLDX and BNDSTX instructions in 64-bit mode.
- const pure nothrow @nogc @property @trusted bool
rdpid(); - RDPID and IA32_TSC_AUX are available if 1.
- const pure nothrow @nogc @property @trusted bool
cldemote(); - Supports cache line demote if 1.
- const pure nothrow @nogc @property @trusted bool
movdiri(); - Supports MOVDIRI if 1.
- const pure nothrow @nogc @property @trusted bool
movdir64b(); - Supports MOVDIR64B if 1.
- const pure nothrow @nogc @property @trusted bool
sgx_lc(); - Supports SGX Launch Configuration if 1.
- struct
CpuInfo; - x86 CPU information
- uint
a; - EAX
- uint
b; - EBX
- uint
c; - ECX
- uint
d; - EDX
- pure nothrow @nogc @trusted CpuInfo
_cpuid()(uinteax, uintecx= 0); - Parameters:
uint eaxfunction id uint ecxsub-function id - immutable(char)[12][]
vendors()(); - VendorIndex nameExamples:
assert(vendors[VendorIndex.intel] == "GenuineIntel");
- VendorIndex
vendorIndex()(); - VendorIndex encoded value.
- VendorIndex
virtualVendorIndex()(); - VendorIndex encoded value for virtual machine.
- uint
maxBasicLeaf()(); - Maximum Input Value for Basic CPUID Information
- uint
maxExtendedLeaf()(); - Maximum Input Value for Extended CPUID Information
- uint
max7SubLeafs()(); - Reports the maximum input value for supported leaf 7 sub-leaves.
- enum
VendorIndex: int; - Encoded vendors
intel- Intel
amd- AMD
sis- SiS
umc- UMC
via- VIA
amd_old- early engineering samples of AMD K5 processor
centaur- Centaur (Including some VIA CPU)
cyrix- Cyrix
hygon- Hygon CPU (AMD like)
transmeta- Transmeta
nsc- National Semiconductor
nexgen- NexGen
rise- Rise
transmeta_old- Transmeta
vortex- Vortex
undefined- undefined
kvm- KVM
parallels- Parallels
microsoft- Microsoft Hyper-V or Windows Virtual PC
vmware- VMware
xen- Xen HVM
undefinedvm- undefined virtual machine
- size_t
brand()(ref char[48]brand); - Brand, e.g. Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz.Returns:brand lengthParameters:
char[48] brandfixed length string to initiate - string
vendor()(); - Vendor, e.g. GenuineIntel.
- string
virtualVendor()(); - Virtual vendor, e.g. GenuineIntel or VMwareVMware.
- ubyte
brandIndex()(); - Brand Index
- ubyte
clflushLineSize()(); - CLFLUSH line size
Note Value ∗ 8 = cache line size in bytes; used also by CLFLUSHOPT.
- ubyte
maxLogicalProcessors()(); - Maximum number of addressable IDs for logical processors in this physical package.
- ubyte
initialAPIC()(); - Initial APIC ID
- uint
stepping()(); - Stepping ID
- uint
model()(); - Model
- uint
family()(); - Family ID
- uint
type()(); - Processor Type, Specification: Intel
- uint
extendedModel()(); - Extended Model ID
- uint
extendedFamily()(); - Extended Family ID
- bool
sse3()(); - SSE3 Extensions
- bool
pclmulqdq()(); - Carryless Multiplication
- bool
dtes64()(); - 64-bit DS Area
- bool
monitor()(); - MONITOR/MWAIT
- bool
ds_cpl()(); - CPL Qualified Debug Store
- bool
vmx()(); - Virtual Machine Extensions
- bool
smx()(); - Safer Mode Extensions
- bool
eist()(); - Enhanced Intel SpeedStep® Technology
- bool
therm_monitor2()(); - Thermal Monitor 2
- bool
ssse3()(); - SSSE3 Extensions
- bool
cnxt_id()(); - L1 Context ID
- bool
sdbg()(); - bool
fma()(); - Fused Multiply Add
- bool
cmpxchg16b()(); - bool
xtpr()(); - TPR Update Control
- bool
pdcm()(); - Perf/Debug Capability MSR xTPR Update Control
- bool
pcid()(); - Process-context Identifiers
- bool
dca()(); - Direct Cache Access
- bool
sse41()(); - SSE4.1
- bool
sse42()(); - SSE4.2
- bool
x2apic()(); - bool
movbe()(); - bool
popcnt()(); - bool
tsc_deadline()(); - bool
aes()(); - bool
xsave()(); - bool
osxsave()(); - bool
avx()(); - bool
f16c()(); - bool
rdrand()(); - bool
virtual()(); - Virtual machine
- bool
fpu()(); - x87 FPU on Chip
- bool
vme()(); - Virtual-8086 Mode Enhancement
- bool
de()(); - Debugging Extensions
- bool
pse()(); - Page Size Extensions
- bool
tsc()(); - Time Stamp Counter
- bool
msr()(); - RDMSR and WRMSR Support
- bool
pae()(); - Physical Address Extensions
- bool
mce()(); - Machine Check Exception
- bool
cx8()(); - CMPXCHG8B Inst.
- bool
apic()(); - APIC on Chip
- bool
sep()(); - SYSENTER and SYSEXIT
- bool
mtrr()(); - Memory Type Range Registers
- bool
pge()(); - PTE Global Bit
- bool
mca()(); - Machine Check Architecture
- bool
cmov()(); - Conditional Move/Compare Instruction
- bool
pat()(); - Page Attribute Table
- bool
pse36()(); - Page Size Extension
- bool
psn()(); - Processor Serial Number
- bool
clfsh()(); - CLFLUSH instruction
- bool
ds()(); - Debug Store
- bool
acpi()(); - Thermal Monitor and Clock Ctrl
- bool
mmx()(); - MMX Technology
- bool
fxsr()(); - FXSAVE/FXRSTOR
- bool
sse()(); - SSE Extensions
- bool
sse2()(); - SSE2 Extensions
- bool
self_snoop()(); - Self Snoop
- bool
htt()(); - Multi-threading
- bool
therm_monitor()(); - Therm. Monitor
- bool
pbe()(); - Pend. Brk. EN.
- bool
fsgsbase()(); - Supports RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE if 1.
- bool
ia32_tsc_adjust()(); - MSR is supported if 1.
- bool
sgx()(); - Supports Intel® Software Guard Extensions (Intel® SGX Extensions) if 1.
- bool
bmi1()(); - Bit Manipulation Instruction Set 1
- bool
hle()(); - Transactional Synchronization Extensions
- bool
avx2()(); - Advanced Vector Extensions 2
- bool
fdp_excptn_only()(); - x87 FPU Data Pointer updated only on x87 exceptions if 1.
- bool
smep()(); - Supports Supervisor-Mode Execution Prevention if 1.
- bool
bmi2()(); - Bit Manipulation Instruction Set 2
- bool
supports()(); - Enhanced REP MOVSB/STOSB if 1.
- bool
invpcid()(); - If 1, supports INVPCID instruction for system software that manages process-context identifiers.
- bool
rtm()(); - Transactional Synchronization Extensions
- bool
rdt_m()(); - Supports Intel® Resource Director Technology (Intel® RDT) Monitoring capability if 1.
- bool
deprecates()(); - FPU CS and FPU DS values if 1.
- bool
mpx()(); - Supports Intel® Memory Protection Extensions if 1.
- bool
rdt_a()(); - Supports Intel® Resource Director Technology (Intel® RDT) Allocation capability if 1.
- bool
avx512f()(); - AVX-512 Foundation
- bool
avx512dq()(); - AVX-512 Doubleword and Quadword Instructions
- bool
rdseed()(); - RDSEED instruction
- bool
adx()(); - Intel ADX (Multi-Precision Add-Carry Instruction Extensions)
- bool
smap()(); - Supports Supervisor-Mode Access Prevention (and the CLAC/STAC instructions) if 1.
- bool
avx512ifma()(); - AVX-512 Integer Fused Multiply-Add Instructions
- bool
pcommit()(); - PCOMMIT instruction
- bool
clflushopt()(); - CLFLUSHOPT instruction
- bool
clwb()(); - CLWB instruction
- bool
intel_pt()(); - Intel Processor Trace.
- bool
avx512pf()(); - AVX-512 Prefetch Instructions
- bool
avx512er()(); - AVX-512 Exponential and Reciprocal Instructions
- bool
avx512cd()(); - AVX-512 Conflict Detection Instructions
- bool
sha()(); - supports Intel® Secure Hash Algorithm Extens
- bool
avx512bw()(); - AVX-512 Byte and Word Instructions
- bool
avx512vl()(); - AVX-512 Vector Length Extensions
- bool
prefetchwt1()(); - PREFETCHWT1 instruction
- bool
avx512vbmi()(); - AVX-512 Vector Bit Manipulation Instructions
- bool
umip()(); - Supports user-mode instruction prevention if 1
- bool
pku()(); - Memory Protection Keys for User-mode pages
- bool
ospke()(); - If 1, OS has set CR4.PKE to enable protection keys (and the RDPKRU/WRPKRU instructions).
- bool
waitpkg()(); - bool
avx512vbmi2()(); - bool
cet_ss()(); - Supports CET shadow stack features if 1.
- bool
gfni()(); - bool
vaes()(); - bool
vpclmulqdq()(); - bool
avx512vnni()(); - bool
avx512bitalg()(); - bool
avx512vpopcntdq()(); - uint
mawau()(); - The value of MAWAU used by the BNDLDX and BNDSTX instructions in 64-bit mode.
- nothrow @nogc @property bool
rdpid(); - RDPID and IA32_TSC_AUX are available if 1.
- bool
cldemote()(); - Supports cache line demote if 1.
- bool
movdiri()(); - Supports MOVDIRI if 1.
- bool
movdir64b()(); - Supports MOVDIR64B if 1.
- bool
sgx_lc()(); - Supports SGX Launch Configuration if 1.
Copyright © 2016-2020 by Ilya Yaroshenko | Page generated by
Ddoc on Sun Oct 4 11:50:09 2020