vSMC
vSMC: Scalable Monte Carlo
Classes | Namespaces | Macros | Enumerations | Functions
cpuid.hpp File Reference
#include <vsmc/internal/common.hpp>
#include <vsmc/utility/array.hpp>

Go to the source code of this file.

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

Namespaces

 vsmc
 

Macros

#define VSMC_DEFINE_UTILITY_CPUID_FEATURE_INFO(feat, a, c, i, b)
 
#define VSMC_DEFINE_UTILITY_CPUID_FEATURE_INFO_EXT(feat, a, c, i, b)
 

Enumerations

enum  vsmc::CPUIDCacheType {
  vsmc::CPUIDCacheTypeNull,
  vsmc::CPUIDCacheTypeData,
  vsmc::CPUIDCacheTypeInstruction,
  vsmc::CPUIDCacheTypeUnified
}
 Type of CPU caches. More...
 
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...
 

Macro Definition Documentation

#define VSMC_DEFINE_UTILITY_CPUID_FEATURE_INFO (   feat,
  a,
  c,
  i,
 
)
Value:
template <> struct CPUIDFeatureInfo<CPUIDFeature##feat> \
{ \
static std::string str () {return std::string(#feat);} \
static VSMC_CONSTEXPR const unsigned eax = a##U; \
static VSMC_CONSTEXPR const unsigned ecx = c##U; \
static VSMC_CONSTEXPR const unsigned bit = b##U; \
static VSMC_CONSTEXPR const std::size_t index = i; \
};
#define VSMC_CONSTEXPR
constexpr
Definition: defines.hpp:55
CPUIDFeature
CPU features.
Definition: cpuid.hpp:90

Definition at line 42 of file cpuid.hpp.

#define VSMC_DEFINE_UTILITY_CPUID_FEATURE_INFO_EXT (   feat,
  a,
  c,
  i,
 
)
Value:
template <> struct CPUIDFeatureInfo<CPUIDFeatureExt##feat> \
{ \
static std::string str () {return std::string(#feat);} \
static VSMC_CONSTEXPR const unsigned eax = 0x80000000U + a##U; \
static VSMC_CONSTEXPR const unsigned ecx = c##U; \
static VSMC_CONSTEXPR const unsigned bit = b##U; \
static VSMC_CONSTEXPR const std::size_t index = i; \
};
#define VSMC_CONSTEXPR
constexpr
Definition: defines.hpp:55

Definition at line 52 of file cpuid.hpp.