vSMC
vSMC: Scalable Monte Carlo
Classes | Enumerations | Functions
CPUID

Query CPUID information. More...

Classes

class  vsmc::CPUID
 Query CPUID information. More...
 
struct  vsmc::CPUID::cache_param_type
 Structure of deterministic cache parameter. More...
 
struct  vsmc::CPUIDFeatureInfo< CPUIDFeature >
 CPU feature information. More...
 

Enumerations

enum  vsmc::CPUIDFeature {
  vsmc::CPUIDFeatureSSE3,
  vsmc::CPUIDFeaturePCLMULQDQ,
  vsmc::CPUIDFeatureDTES64,
  vsmc::CPUIDFeatureMONITOR,
  vsmc::CPUIDFeatureDS_CPL,
  vsmc::CPUIDFeatureVMX,
  vsmc::CPUIDFeatureSMX,
  vsmc::CPUIDFeatureEST,
  vsmc::CPUIDFeatureTM2,
  vsmc::CPUIDFeatureSSSE3,
  vsmc::CPUIDFeatureCNXT_ID,
  vsmc::CPUIDFeatureFMA,
  vsmc::CPUIDFeatureCX16,
  vsmc::CPUIDFeatureXTPR,
  vsmc::CPUIDFeaturePDCM,
  vsmc::CPUIDFeaturePCID,
  vsmc::CPUIDFeatureDCA,
  vsmc::CPUIDFeatureSSE4_1,
  vsmc::CPUIDFeatureSSE4_2,
  vsmc::CPUIDFeatureX2APIC,
  vsmc::CPUIDFeatureMOVBE,
  vsmc::CPUIDFeaturePOPCNT,
  vsmc::CPUIDFeatureTSC_DEADLINE,
  vsmc::CPUIDFeatureAES,
  vsmc::CPUIDFeatureXSAVE,
  vsmc::CPUIDFeatureOSXSAVE,
  vsmc::CPUIDFeatureAVX,
  vsmc::CPUIDFeatureF16C,
  vsmc::CPUIDFeatureRDRAND,
  vsmc::CPUIDFeatureHYPERVISOR,
  vsmc::CPUIDFeatureFPU,
  vsmc::CPUIDFeatureVME,
  vsmc::CPUIDFeatureDE,
  vsmc::CPUIDFeaturePSE,
  vsmc::CPUIDFeatureTSC,
  vsmc::CPUIDFeatureMSR,
  vsmc::CPUIDFeaturePAE,
  vsmc::CPUIDFeatureMCE,
  vsmc::CPUIDFeatureCX8,
  vsmc::CPUIDFeatureAPIC,
  vsmc::CPUIDFeatureSEP,
  vsmc::CPUIDFeatureMTRR,
  vsmc::CPUIDFeaturePGE,
  vsmc::CPUIDFeatureMCA,
  vsmc::CPUIDFeatureCMOV,
  vsmc::CPUIDFeaturePAT,
  vsmc::CPUIDFeaturePSE_36,
  vsmc::CPUIDFeaturePSN,
  vsmc::CPUIDFeatureCLFSH,
  vsmc::CPUIDFeatureDS,
  vsmc::CPUIDFeatureACPI,
  vsmc::CPUIDFeatureMMX,
  vsmc::CPUIDFeatureFXSR,
  vsmc::CPUIDFeatureSSE,
  vsmc::CPUIDFeatureSSE2,
  vsmc::CPUIDFeatureSS,
  vsmc::CPUIDFeatureHTT,
  vsmc::CPUIDFeatureTM,
  vsmc::CPUIDFeatureIA64,
  vsmc::CPUIDFeaturePBE,
  vsmc::CPUIDFeatureFSGSBASE,
  vsmc::CPUIDFeatureBMI1,
  vsmc::CPUIDFeatureHLE,
  vsmc::CPUIDFeatureAVX2,
  vsmc::CPUIDFeatureSMEP,
  vsmc::CPUIDFeatureBMI2,
  vsmc::CPUIDFeatureERMS,
  vsmc::CPUIDFeatureINVPCID,
  vsmc::CPUIDFeatureRTM,
  vsmc::CPUIDFeatureMPX,
  vsmc::CPUIDFeatureAVX512F,
  vsmc::CPUIDFeatureAVX512DQ,
  vsmc::CPUIDFeatureRDSEED,
  vsmc::CPUIDFeatureADX,
  vsmc::CPUIDFeatureSMAP,
  vsmc::CPUIDFeatureAVX512IFMA52,
  vsmc::CPUIDFeatureCLFLUSHOPT,
  vsmc::CPUIDFeatureINTEL_TRACE,
  vsmc::CPUIDFeatureAVX512PF,
  vsmc::CPUIDFeatureAVX512ER,
  vsmc::CPUIDFeatureAVX512CD,
  vsmc::CPUIDFeatureSHA,
  vsmc::CPUIDFeatureAVX512BW,
  vsmc::CPUIDFeatureAVX512VL,
  vsmc::CPUIDFeaturePREFETCHWT1,
  vsmc::CPUIDFeatureAVX512VBMI,
  vsmc::CPUIDFeatureExtLAHF_LM,
  vsmc::CPUIDFeatureExtCMP_LEGACY,
  vsmc::CPUIDFeatureExtSVM,
  vsmc::CPUIDFeatureExtEXTAPIC,
  vsmc::CPUIDFeatureExtCR8_LEGACY,
  vsmc::CPUIDFeatureExtABM,
  vsmc::CPUIDFeatureExtSSE4A,
  vsmc::CPUIDFeatureExtMISALIGNSSE,
  vsmc::CPUIDFeatureExt3DNOWPREFETCH,
  vsmc::CPUIDFeatureExtOSVW,
  vsmc::CPUIDFeatureExtIBS,
  vsmc::CPUIDFeatureExtXOP,
  vsmc::CPUIDFeatureExtSKINIT,
  vsmc::CPUIDFeatureExtWDT,
  vsmc::CPUIDFeatureExtLWP,
  vsmc::CPUIDFeatureExtFMA4,
  vsmc::CPUIDFeatureExtTCE,
  vsmc::CPUIDFeatureExtNODEID_MSR,
  vsmc::CPUIDFeatureExtTBM,
  vsmc::CPUIDFeatureExtTOPOEXT,
  vsmc::CPUIDFeatureExtPERFCTR_CORE,
  vsmc::CPUIDFeatureExtPERFCTR_NB,
  vsmc::CPUIDFeatureExtDBX,
  vsmc::CPUIDFeatureExtPERFTSC,
  vsmc::CPUIDFeatureExtPCX_L2I,
  vsmc::CPUIDFeatureExtFPU,
  vsmc::CPUIDFeatureExtVME,
  vsmc::CPUIDFeatureExtDE,
  vsmc::CPUIDFeatureExtPSE,
  vsmc::CPUIDFeatureExtTSC,
  vsmc::CPUIDFeatureExtMSR,
  vsmc::CPUIDFeatureExtPAE,
  vsmc::CPUIDFeatureExtMCE,
  vsmc::CPUIDFeatureExtCX8,
  vsmc::CPUIDFeatureExtAPIC,
  vsmc::CPUIDFeatureExtSYSCALL,
  vsmc::CPUIDFeatureExtMTRR,
  vsmc::CPUIDFeatureExtPGE,
  vsmc::CPUIDFeatureExtMCA,
  vsmc::CPUIDFeatureExtCMOV,
  vsmc::CPUIDFeatureExtPAT,
  vsmc::CPUIDFeatureExtPSE36,
  vsmc::CPUIDFeatureExtMP,
  vsmc::CPUIDFeatureExtNX,
  vsmc::CPUIDFeatureExtMMX,
  vsmc::CPUIDFeatureExtMMXEXT,
  vsmc::CPUIDFeatureExtFXSR,
  vsmc::CPUIDFeatureExtFXSR_OPT,
  vsmc::CPUIDFeatureExtGBPAGES,
  vsmc::CPUIDFeatureExtRDTSCP,
  vsmc::CPUIDFeatureExtLM,
  vsmc::CPUIDFeatureExt3DNOWEXT,
  vsmc::CPUIDFeatureExt3DNOW
}
 CPU features. More...
 

Functions

void vsmc::cpuid (unsigned eax, unsigned ecx, unsigned *reg)
 Get the CPUID information stored in EAX, EBX, ECX and EDX, given input EAX and ECX values. More...
 
template<typename CharT , typename Traits >
std::basic_ostream< CharT, Traits > & vsmc::operator<< (std::basic_ostream< CharT, Traits > &os, const CPUID &)
 Query CPU information using CPUID. More...
 

Detailed Description

Query CPUID information.

Enumeration Type Documentation

CPU features.

Enumerator
CPUIDFeatureSSE3 

EAX = 0x01, ECX = 0x00; ECX[00].

CPUIDFeaturePCLMULQDQ 

EAX = 0x01, ECX = 0x00; ECX[01].

CPUIDFeatureDTES64 

EAX = 0x01, ECX = 0x00; ECX[02].

CPUIDFeatureMONITOR 

EAX = 0x01, ECX = 0x00; ECX[03].

CPUIDFeatureDS_CPL 

EAX = 0x01, ECX = 0x00; ECX[04].

CPUIDFeatureVMX 

EAX = 0x01, ECX = 0x00; ECX[05].

CPUIDFeatureSMX 

EAX = 0x01, ECX = 0x00; ECX[06].

CPUIDFeatureEST 

EAX = 0x01, ECX = 0x00; ECX[07].

CPUIDFeatureTM2 

EAX = 0x01, ECX = 0x00; ECX[08].

CPUIDFeatureSSSE3 

EAX = 0x01, ECX = 0x00; ECX[09].

CPUIDFeatureCNXT_ID 

EAX = 0x01, ECX = 0x00; ECX[10].

CPUIDFeatureFMA 

EAX = 0x01, ECX = 0x00; ECX[12].

CPUIDFeatureCX16 

EAX = 0x01, ECX = 0x00; ECX[13].

CPUIDFeatureXTPR 

EAX = 0x01, ECX = 0x00; ECX[14].

CPUIDFeaturePDCM 

EAX = 0x01, ECX = 0x00; ECX[15].

CPUIDFeaturePCID 

EAX = 0x01, ECX = 0x00; ECX[17].

CPUIDFeatureDCA 

EAX = 0x01, ECX = 0x00; ECX[18].

CPUIDFeatureSSE4_1 

EAX = 0x01, ECX = 0x00; ECX[19].

CPUIDFeatureSSE4_2 

EAX = 0x01, ECX = 0x00; ECX[20].

CPUIDFeatureX2APIC 

EAX = 0x01, ECX = 0x00; ECX[21].

CPUIDFeatureMOVBE 

EAX = 0x01, ECX = 0x00; ECX[22].

CPUIDFeaturePOPCNT 

EAX = 0x01, ECX = 0x00; ECX[23].

CPUIDFeatureTSC_DEADLINE 

EAX = 0x01, ECX = 0x00; ECX[24].

CPUIDFeatureAES 

EAX = 0x01, ECX = 0x00; ECX[25].

CPUIDFeatureXSAVE 

EAX = 0x01, ECX = 0x00; ECX[26].

CPUIDFeatureOSXSAVE 

EAX = 0x01, ECX = 0x00; ECX[27].

CPUIDFeatureAVX 

EAX = 0x01, ECX = 0x00; ECX[28].

CPUIDFeatureF16C 

EAX = 0x01, ECX = 0x00; ECX[29].

CPUIDFeatureRDRAND 

EAX = 0x01, ECX = 0x00; ECX[30].

CPUIDFeatureHYPERVISOR 

EAX = 0x01, ECX = 0x00; ECX[31].

CPUIDFeatureFPU 

EAX = 0x01, ECX = 0x00; EDX[00].

CPUIDFeatureVME 

EAX = 0x01, ECX = 0x00; EDX[01].

CPUIDFeatureDE 

EAX = 0x01, ECX = 0x00; EDX[02].

CPUIDFeaturePSE 

EAX = 0x01, ECX = 0x00; EDX[03].

CPUIDFeatureTSC 

EAX = 0x01, ECX = 0x00; EDX[04].

CPUIDFeatureMSR 

EAX = 0x01, ECX = 0x00; EDX[05].

CPUIDFeaturePAE 

EAX = 0x01, ECX = 0x00; EDX[06].

CPUIDFeatureMCE 

EAX = 0x01, ECX = 0x00; EDX[07].

CPUIDFeatureCX8 

EAX = 0x01, ECX = 0x00; EDX[08].

CPUIDFeatureAPIC 

EAX = 0x01, ECX = 0x00; EDX[09].

CPUIDFeatureSEP 

EAX = 0x01, ECX = 0x00; EDX[11].

CPUIDFeatureMTRR 

EAX = 0x01, ECX = 0x00; EDX[12].

CPUIDFeaturePGE 

EAX = 0x01, ECX = 0x00; EDX[13].

CPUIDFeatureMCA 

EAX = 0x01, ECX = 0x00; EDX[14].

CPUIDFeatureCMOV 

EAX = 0x01, ECX = 0x00; EDX[15].

CPUIDFeaturePAT 

EAX = 0x01, ECX = 0x00; EDX[16].

CPUIDFeaturePSE_36 

EAX = 0x01, ECX = 0x00; EDX[17].

CPUIDFeaturePSN 

EAX = 0x01, ECX = 0x00; EDX[18].

CPUIDFeatureCLFSH 

EAX = 0x01, ECX = 0x00; EDX[19].

CPUIDFeatureDS 

EAX = 0x01, ECX = 0x00; EDX[21].

CPUIDFeatureACPI 

EAX = 0x01, ECX = 0x00; EDX[22].

CPUIDFeatureMMX 

EAX = 0x01, ECX = 0x00; EDX[23].

CPUIDFeatureFXSR 

EAX = 0x01, ECX = 0x00; EDX[24].

CPUIDFeatureSSE 

EAX = 0x01, ECX = 0x00; EDX[25].

CPUIDFeatureSSE2 

EAX = 0x01, ECX = 0x00; EDX[26].

CPUIDFeatureSS 

EAX = 0x01, ECX = 0x00; EDX[27].

CPUIDFeatureHTT 

EAX = 0x01, ECX = 0x00; EDX[28].

CPUIDFeatureTM 

EAX = 0x01, ECX = 0x00; EDX[29].

CPUIDFeatureIA64 

EAX = 0x01, ECX = 0x00; EDX[30].

CPUIDFeaturePBE 

EAX = 0x01, ECX = 0x00; EDX[31].

CPUIDFeatureFSGSBASE 

EAX = 0x07, ECX = 0x00; EBX[00].

CPUIDFeatureBMI1 

EAX = 0x07, ECX = 0x00; EBX[03].

CPUIDFeatureHLE 

EAX = 0x07, ECX = 0x00; EBX[04].

CPUIDFeatureAVX2 

EAX = 0x07, ECX = 0x00; EBX[05].

CPUIDFeatureSMEP 

EAX = 0x07, ECX = 0x00; EBX[07].

CPUIDFeatureBMI2 

EAX = 0x07, ECX = 0x00; EBX[08].

CPUIDFeatureERMS 

EAX = 0x07, ECX = 0x00; EBX[09].

CPUIDFeatureINVPCID 

EAX = 0x07, ECX = 0x00; EBX[10].

CPUIDFeatureRTM 

EAX = 0x07, ECX = 0x00; EBX[11].

CPUIDFeatureMPX 

EAX = 0x07, ECX = 0x00; EBX[14].

CPUIDFeatureAVX512F 

EAX = 0x07, ECX = 0x00; EBX[16].

CPUIDFeatureAVX512DQ 

EAX = 0x07, ECX = 0x00; EBX[17].

CPUIDFeatureRDSEED 

EAX = 0x07, ECX = 0x00; EBX[18].

CPUIDFeatureADX 

EAX = 0x07, ECX = 0x00; EBX[19].

CPUIDFeatureSMAP 

EAX = 0x07, ECX = 0x00; EBX[20].

CPUIDFeatureAVX512IFMA52 

EAX = 0x07, ECX = 0x00; EBX[21].

CPUIDFeatureCLFLUSHOPT 

EAX = 0x07, ECX = 0x00; EBX[23].

CPUIDFeatureINTEL_TRACE 

EAX = 0x07, ECX = 0x00; EBX[25].

CPUIDFeatureAVX512PF 

EAX = 0x07, ECX = 0x00; EBX[26].

CPUIDFeatureAVX512ER 

EAX = 0x07, ECX = 0x00; EBX[27].

CPUIDFeatureAVX512CD 

EAX = 0x07, ECX = 0x00; EBX[28].

CPUIDFeatureSHA 

EAX = 0x07, ECX = 0x00; EBX[29].

CPUIDFeatureAVX512BW 

EAX = 0x07, ECX = 0x00; EBX[30].

CPUIDFeatureAVX512VL 

EAX = 0x07, ECX = 0x00; EBX[31].

CPUIDFeaturePREFETCHWT1 

EAX = 0x07, ECX = 0x00; ECX[00].

CPUIDFeatureAVX512VBMI 

EAX = 0x07, ECX = 0x00; ECX[01].

CPUIDFeatureExtLAHF_LM 

EAX = 0x80000001, ECX = 0x00; ECX[00].

CPUIDFeatureExtCMP_LEGACY 

EAX = 0x80000001, ECX = 0x00; ECX[01].

CPUIDFeatureExtSVM 

EAX = 0x80000001, ECX = 0x00; ECX[02].

CPUIDFeatureExtEXTAPIC 

EAX = 0x80000001, ECX = 0x00; ECX[03].

CPUIDFeatureExtCR8_LEGACY 

EAX = 0x80000001, ECX = 0x00; ECX[04].

CPUIDFeatureExtABM 

EAX = 0x80000001, ECX = 0x00; ECX[05].

CPUIDFeatureExtSSE4A 

EAX = 0x80000001, ECX = 0x00; ECX[06].

CPUIDFeatureExtMISALIGNSSE 

EAX = 0x80000001, ECX = 0x00; ECX[07].

CPUIDFeatureExt3DNOWPREFETCH 

EAX = 0x80000001, ECX = 0x00; ECX[08].

CPUIDFeatureExtOSVW 

EAX = 0x80000001, ECX = 0x00; ECX[09].

CPUIDFeatureExtIBS 

EAX = 0x80000001, ECX = 0x00; ECX[10].

CPUIDFeatureExtXOP 

EAX = 0x80000001, ECX = 0x00; ECX[11].

CPUIDFeatureExtSKINIT 

EAX = 0x80000001, ECX = 0x00; ECX[12].

CPUIDFeatureExtWDT 

EAX = 0x80000001, ECX = 0x00; ECX[13].

CPUIDFeatureExtLWP 

EAX = 0x80000001, ECX = 0x00; ECX[15].

CPUIDFeatureExtFMA4 

EAX = 0x80000001, ECX = 0x00; ECX[16].

CPUIDFeatureExtTCE 

EAX = 0x80000001, ECX = 0x00; ECX[17].

CPUIDFeatureExtNODEID_MSR 

EAX = 0x80000001, ECX = 0x00; ECX[19].

CPUIDFeatureExtTBM 

EAX = 0x80000001, ECX = 0x00; ECX[21].

CPUIDFeatureExtTOPOEXT 

EAX = 0x80000001, ECX = 0x00; ECX[22].

CPUIDFeatureExtPERFCTR_CORE 

EAX = 0x80000001, ECX = 0x00; ECX[23].

CPUIDFeatureExtPERFCTR_NB 

EAX = 0x80000001, ECX = 0x00; ECX[24].

CPUIDFeatureExtDBX 

EAX = 0x80000001, ECX = 0x00; ECX[26].

CPUIDFeatureExtPERFTSC 

EAX = 0x80000001, ECX = 0x00; ECX[27].

CPUIDFeatureExtPCX_L2I 

EAX = 0x80000001, ECX = 0x00; ECX[28].

CPUIDFeatureExtFPU 

EAX = 0x80000001, ECX = 0x00; EDX[00].

CPUIDFeatureExtVME 

EAX = 0x80000001, ECX = 0x00; EDX[01].

CPUIDFeatureExtDE 

EAX = 0x80000001, ECX = 0x00; EDX[02].

CPUIDFeatureExtPSE 

EAX = 0x80000001, ECX = 0x00; EDX[03].

CPUIDFeatureExtTSC 

EAX = 0x80000001, ECX = 0x00; EDX[04].

CPUIDFeatureExtMSR 

EAX = 0x80000001, ECX = 0x00; EDX[05].

CPUIDFeatureExtPAE 

EAX = 0x80000001, ECX = 0x00; EDX[06].

CPUIDFeatureExtMCE 

EAX = 0x80000001, ECX = 0x00; EDX[07].

CPUIDFeatureExtCX8 

EAX = 0x80000001, ECX = 0x00; EDX[08].

CPUIDFeatureExtAPIC 

EAX = 0x80000001, ECX = 0x00; EDX[09].

CPUIDFeatureExtSYSCALL 

EAX = 0x80000001, ECX = 0x00; EDX[11].

CPUIDFeatureExtMTRR 

EAX = 0x80000001, ECX = 0x00; EDX[12].

CPUIDFeatureExtPGE 

EAX = 0x80000001, ECX = 0x00; EDX[13].

CPUIDFeatureExtMCA 

EAX = 0x80000001, ECX = 0x00; EDX[14].

CPUIDFeatureExtCMOV 

EAX = 0x80000001, ECX = 0x00; EDX[15].

CPUIDFeatureExtPAT 

EAX = 0x80000001, ECX = 0x00; EDX[16].

CPUIDFeatureExtPSE36 

EAX = 0x80000001, ECX = 0x00; EDX[17].

CPUIDFeatureExtMP 

EAX = 0x80000001, ECX = 0x00; EDX[19].

CPUIDFeatureExtNX 

EAX = 0x80000001, ECX = 0x00; EDX[20].

CPUIDFeatureExtMMX 

EAX = 0x80000001, ECX = 0x00; EDX[22].

CPUIDFeatureExtMMXEXT 

EAX = 0x80000001, ECX = 0x00; EDX[23].

CPUIDFeatureExtFXSR 

EAX = 0x80000001, ECX = 0x00; EDX[24].

CPUIDFeatureExtFXSR_OPT 

EAX = 0x80000001, ECX = 0x00; EDX[25].

CPUIDFeatureExtGBPAGES 

EAX = 0x80000001, ECX = 0x00; EDX[26].

CPUIDFeatureExtRDTSCP 

EAX = 0x80000001, ECX = 0x00; EDX[27].

CPUIDFeatureExtLM 

EAX = 0x80000001, ECX = 0x00; EDX[29].

CPUIDFeatureExt3DNOWEXT 

EAX = 0x80000001, ECX = 0x00; EDX[30].

CPUIDFeatureExt3DNOW 

EAX = 0x80000001, ECX = 0x00; EDX[31].

Definition at line 90 of file cpuid.hpp.

Function Documentation

void vsmc::cpuid ( unsigned  eax,
unsigned  ecx,
unsigned *  reg 
)
inline

Get the CPUID information stored in EAX, EBX, ECX and EDX, given input EAX and ECX values.

Definition at line 67 of file cpuid.hpp.

template<typename CharT , typename Traits >
std::basic_ostream<CharT, Traits>& vsmc::operator<< ( std::basic_ostream< CharT, Traits > &  os,
const CPUID  
)
inline

Query CPU information using CPUID.

Definition at line 1060 of file cpuid.hpp.