cpuid.x86_any

Common information for all x86 and x86_64 vendors.

$(GREEN This module is compatible with betterC compilation mode.)

Note: T.max value value is used to represent fully-associative Cache/TLB.

References: wikipedia:CPUID

Public Imports

cpuid.common
public import cpuid.common;

Members

Aliases

cpuid_x86_any_init
alias cpuid_x86_any_init = mir_cpuid_x86_any_init

Basic information about CPU.

Enums

VendorIndex
enum VendorIndex

Encoded vendors

Functions

_cpuid
CpuInfo _cpuid(uint eax, uint ecx)
mir_cpuid_x86_any_init
void mir_cpuid_x86_any_init()

Initialize basic x86 CPU information. It is safe to call this function multiple times.

Properties

acpi
bool acpi [@property getter]

Thermal Monitor and Clock Ctrl

adx
bool adx [@property getter]

Intel ADX (Multi-Precision Add-Carry Instruction Extensions)

aes
bool aes [@property getter]
apic
bool apic [@property getter]

APIC on Chip

avx
bool avx [@property getter]
avx2
bool avx2 [@property getter]

Advanced Vector Extensions 2

avx512bitalg
bool avx512bitalg [@property getter]
avx512bw
bool avx512bw [@property getter]

AVX-512 Byte and Word Instructions

avx512cd
bool avx512cd [@property getter]

AVX-512 Conflict Detection Instructions

avx512dq
bool avx512dq [@property getter]

AVX-512 Doubleword and Quadword Instructions

avx512er
bool avx512er [@property getter]

AVX-512 Exponential and Reciprocal Instructions

avx512f
bool avx512f [@property getter]

AVX-512 Foundation

avx512ifma
bool avx512ifma [@property getter]

AVX-512 Integer Fused Multiply-Add Instructions

avx512pf
bool avx512pf [@property getter]

AVX-512 Prefetch Instructions

avx512vbmi
bool avx512vbmi [@property getter]

AVX-512 Vector Bit Manipulation Instructions

avx512vbmi2
bool avx512vbmi2 [@property getter]
avx512vl
bool avx512vl [@property getter]

AVX-512 Vector Length Extensions

avx512vnni
bool avx512vnni [@property getter]
avx512vpopcntdq
bool avx512vpopcntdq [@property getter]
bmi1
bool bmi1 [@property getter]

Bit Manipulation Instruction Set 1

bmi2
bool bmi2 [@property getter]

Bit Manipulation Instruction Set 2

brand
size_t brand [@property getter]

Brand, e.g. Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz.

brandIndex
ubyte brandIndex [@property getter]

Brand Index

cet_ss
bool cet_ss [@property getter]

Supports CET shadow stack features if 1.

cldemote
bool cldemote [@property getter]

Supports cache line demote if 1.

clflushLineSize
ubyte clflushLineSize [@property getter]

CLFLUSH line size Note: Value ∗ 8 = cache line size in bytes; used also by CLFLUSHOPT.

clflushopt
bool clflushopt [@property getter]

CLFLUSHOPT instruction

clfsh
bool clfsh [@property getter]

CLFLUSH instruction

clwb
bool clwb [@property getter]

CLWB instruction

cmov
bool cmov [@property getter]

Conditional Move/Compare Instruction

cmpxchg16b
bool cmpxchg16b [@property getter]
cnxt_id
bool cnxt_id [@property getter]

L1 Context ID

cx8
bool cx8 [@property getter]

CMPXCHG8B Inst.

dca
bool dca [@property getter]

Direct Cache Access

de
bool de [@property getter]

Debugging Extensions

deprecates
bool deprecates [@property getter]

FPU CS and FPU DS values if 1.

ds
bool ds [@property getter]

Debug Store

ds_cpl
bool ds_cpl [@property getter]

CPL Qualified Debug Store

dtes64
bool dtes64 [@property getter]

64-bit DS Area

eist
bool eist [@property getter]

Enhanced Intel SpeedStep® Technology

extendedFamily
uint extendedFamily [@property getter]

Extended Family ID

extendedModel
uint extendedModel [@property getter]

Extended Model ID

f16c
bool f16c [@property getter]
family
uint family [@property getter]

Family ID

fdp_excptn_only
bool fdp_excptn_only [@property getter]

x87 FPU Data Pointer updated only on x87 exceptions if 1.

fma
bool fma [@property getter]

Fused Multiply Add

fpu
bool fpu [@property getter]

x87 FPU on Chip

fsgsbase
bool fsgsbase [@property getter]

Supports RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE if 1.

fxsr
bool fxsr [@property getter]

FXSAVE/FXRSTOR

gfni
bool gfni [@property getter]
hle
bool hle [@property getter]

Transactional Synchronization Extensions

htt
bool htt [@property getter]

Multi-threading

ia32_tsc_adjust
bool ia32_tsc_adjust [@property getter]

MSR is supported if 1.

initialAPIC
ubyte initialAPIC [@property getter]

Initial APIC ID

intel_pt
bool intel_pt [@property getter]

Intel Processor Trace.

invpcid
bool invpcid [@property getter]

If 1, supports INVPCID instruction for system software that manages process-context identifiers.

mawau
uint mawau [@property getter]

The value of MAWAU used by the BNDLDX and BNDSTX instructions in 64-bit mode.

max7SubLeafs
uint max7SubLeafs [@property getter]

Reports the maximum input value for supported leaf 7 sub-leaves.

maxBasicLeaf
uint maxBasicLeaf [@property getter]

Maximum Input Value for Basic CPUID Information

maxExtendedLeaf
uint maxExtendedLeaf [@property getter]

Maximum Input Value for Extended CPUID Information

maxLogicalProcessors
ubyte maxLogicalProcessors [@property getter]

Maximum number of addressable IDs for logical processors in this physical package.

mca
bool mca [@property getter]

Machine Check Architecture

mce
bool mce [@property getter]

Machine Check Exception

mmx
bool mmx [@property getter]

MMX Technology

model
uint model [@property getter]

Model

monitor
bool monitor [@property getter]

MONITOR/MWAIT

movbe
bool movbe [@property getter]
movdir64b
bool movdir64b [@property getter]

Supports MOVDIR64B if 1.

movdiri
bool movdiri [@property getter]

Supports MOVDIRI if 1.

mpx
bool mpx [@property getter]

Supports Intel® Memory Protection Extensions if 1.

msr
bool msr [@property getter]

RDMSR and WRMSR Support

mtrr
bool mtrr [@property getter]

Memory Type Range Registers

ospke
bool ospke [@property getter]

If 1, OS has set CR4.PKE to enable protection keys (and the RDPKRU/WRPKRU instructions).

osxsave
bool osxsave [@property getter]
pae
bool pae [@property getter]

Physical Address Extensions

pat
bool pat [@property getter]

Page Attribute Table

pbe
bool pbe [@property getter]

Pend. Brk. EN.

pcid
bool pcid [@property getter]

Process-context Identifiers

pclmulqdq
bool pclmulqdq [@property getter]

Carryless Multiplication

pcommit
bool pcommit [@property getter]

PCOMMIT instruction

pdcm
bool pdcm [@property getter]

Perf/Debug Capability MSR xTPR Update Control

pge
bool pge [@property getter]

PTE Global Bit

pku
bool pku [@property getter]

Memory Protection Keys for User-mode pages

popcnt
bool popcnt [@property getter]
prefetchwt1
bool prefetchwt1 [@property getter]

PREFETCHWT1 instruction

pse
bool pse [@property getter]

Page Size Extensions

pse36
bool pse36 [@property getter]

Page Size Extension

psn
bool psn [@property getter]

Processor Serial Number

rdpid
bool rdpid [@property getter]

RDPID and IA32_TSC_AUX are available if 1.

rdrand
bool rdrand [@property getter]
rdseed
bool rdseed [@property getter]

RDSEED instruction

rdt_a
bool rdt_a [@property getter]

Supports Intel® Resource Director Technology (Intel® RDT) Allocation capability if 1.

rdt_m
bool rdt_m [@property getter]

Supports Intel® Resource Director Technology (Intel® RDT) Monitoring capability if 1.

rtm
bool rtm [@property getter]

Transactional Synchronization Extensions

sdbg
bool sdbg [@property getter]
self_snoop
bool self_snoop [@property getter]

Self Snoop

sep
bool sep [@property getter]

SYSENTER and SYSEXIT

sgx
bool sgx [@property getter]

Supports Intel® Software Guard Extensions (Intel® SGX Extensions) if 1.

sgx_lc
bool sgx_lc [@property getter]

Supports SGX Launch Configuration if 1.

sha
bool sha [@property getter]

supports Intel® Secure Hash Algorithm Extens

smap
bool smap [@property getter]

Supports Supervisor-Mode Access Prevention (and the CLAC/STAC instructions) if 1.

smep
bool smep [@property getter]

Supports Supervisor-Mode Execution Prevention if 1.

smx
bool smx [@property getter]

Safer Mode Extensions

sse
bool sse [@property getter]

SSE Extensions

sse2
bool sse2 [@property getter]

SSE2 Extensions

sse3
bool sse3 [@property getter]

SSE3 Extensions

sse41
bool sse41 [@property getter]

SSE4.1

sse42
bool sse42 [@property getter]

SSE4.2

ssse3
bool ssse3 [@property getter]

SSSE3 Extensions

stepping
uint stepping [@property getter]

Stepping ID

supports
bool supports [@property getter]

Enhanced REP MOVSB/STOSB if 1.

therm_monitor
bool therm_monitor [@property getter]

Therm. Monitor

therm_monitor2
bool therm_monitor2 [@property getter]

Thermal Monitor 2

tsc
bool tsc [@property getter]

Time Stamp Counter

tsc_deadline
bool tsc_deadline [@property getter]
type
uint type [@property getter]

Processor Type, Specification: Intel

umip
bool umip [@property getter]

Supports user-mode instruction prevention if 1

vaes
bool vaes [@property getter]
vendor
string vendor [@property getter]

Vendor, e.g. GenuineIntel.

vendorIndex
VendorIndex vendorIndex [@property getter]

VendorIndex encoded value.

vendors
immutable(char)[12][] vendors [@property getter]

VendorIndex name

virtual
bool virtual [@property getter]

Virtual machine

virtualVendor
string virtualVendor [@property getter]

Virtual vendor, e.g. GenuineIntel or VMwareVMware.

virtualVendorIndex
VendorIndex virtualVendorIndex [@property getter]

VendorIndex encoded value for virtual machine.

vme
bool vme [@property getter]

Virtual-8086 Mode Enhancement

vmx
bool vmx [@property getter]

Virtual Machine Extensions

vpclmulqdq
bool vpclmulqdq [@property getter]
waitpkg
bool waitpkg [@property getter]
x2apic
bool x2apic [@property getter]
xsave
bool xsave [@property getter]
xtpr
bool xtpr [@property getter]

TPR Update Control

Structs

CpuInfo
struct CpuInfo

x86 CPU information

Templates

__asmtuple
template __asmtuple(T...)
Undocumented in source.

Unions

Leaf1Information
union Leaf1Information

Basic information about CPU.

Leaf7Information
union Leaf7Information

Extended information about CPU.

Meta

Authors

Ilya Yaroshenko