clang 22.0.0git
cpuid.h File Reference

Go to the source code of this file.

Macros

#define signature_AMD_ebx   0x68747541
#define signature_AMD_edx   0x69746e65
#define signature_AMD_ecx   0x444d4163
#define signature_CENTAUR_ebx   0x746e6543
#define signature_CENTAUR_edx   0x48727561
#define signature_CENTAUR_ecx   0x736c7561
#define signature_CYRIX_ebx   0x69727943
#define signature_CYRIX_edx   0x736e4978
#define signature_CYRIX_ecx   0x64616574
#define signature_HYGON_ebx   0x6f677948
#define signature_HYGON_edx   0x6e65476e
#define signature_HYGON_ecx   0x656e6975
#define signature_INTEL_ebx   0x756e6547
#define signature_INTEL_edx   0x49656e69
#define signature_INTEL_ecx   0x6c65746e
#define signature_TM1_ebx   0x6e617254
#define signature_TM1_edx   0x74656d73
#define signature_TM1_ecx   0x55504361
#define signature_TM2_ebx   0x756e6547
#define signature_TM2_edx   0x54656e69
#define signature_TM2_ecx   0x3638784d
#define signature_NSC_ebx   0x646f6547
#define signature_NSC_edx   0x79622065
#define signature_NSC_ecx   0x43534e20
#define signature_NEXGEN_ebx   0x4778654e
#define signature_NEXGEN_edx   0x72446e65
#define signature_NEXGEN_ecx   0x6e657669
#define signature_RISE_ebx   0x65736952
#define signature_RISE_edx   0x65736952
#define signature_RISE_ecx   0x65736952
#define signature_SIS_ebx   0x20536953
#define signature_SIS_edx   0x20536953
#define signature_SIS_ecx   0x20536953
#define signature_UMC_ebx   0x20434d55
#define signature_UMC_edx   0x20434d55
#define signature_UMC_ecx   0x20434d55
#define signature_VIA_ebx   0x20414956
#define signature_VIA_edx   0x20414956
#define signature_VIA_ecx   0x20414956
#define signature_VORTEX_ebx   0x74726f56
#define signature_VORTEX_edx   0x36387865
#define signature_VORTEX_ecx   0x436f5320
#define bit_SSE3   0x00000001
#define bit_PCLMULQDQ   0x00000002
#define bit_PCLMUL   bit_PCLMULQDQ /* for gcc compat */
#define bit_DTES64   0x00000004
#define bit_MONITOR   0x00000008
#define bit_DSCPL   0x00000010
#define bit_VMX   0x00000020
#define bit_SMX   0x00000040
#define bit_EIST   0x00000080
#define bit_TM2   0x00000100
#define bit_SSSE3   0x00000200
#define bit_CNXTID   0x00000400
#define bit_FMA   0x00001000
#define bit_CMPXCHG16B   0x00002000
#define bit_xTPR   0x00004000
#define bit_PDCM   0x00008000
#define bit_PCID   0x00020000
#define bit_DCA   0x00040000
#define bit_SSE41   0x00080000
#define bit_SSE4_1   bit_SSE41 /* for gcc compat */
#define bit_SSE42   0x00100000
#define bit_SSE4_2   bit_SSE42 /* for gcc compat */
#define bit_x2APIC   0x00200000
#define bit_MOVBE   0x00400000
#define bit_POPCNT   0x00800000
#define bit_TSCDeadline   0x01000000
#define bit_AESNI   0x02000000
#define bit_AES   bit_AESNI /* for gcc compat */
#define bit_XSAVE   0x04000000
#define bit_OSXSAVE   0x08000000
#define bit_AVX   0x10000000
#define bit_F16C   0x20000000
#define bit_RDRND   0x40000000
#define bit_FPU   0x00000001
#define bit_VME   0x00000002
#define bit_DE   0x00000004
#define bit_PSE   0x00000008
#define bit_TSC   0x00000010
#define bit_MSR   0x00000020
#define bit_PAE   0x00000040
#define bit_MCE   0x00000080
#define bit_CX8   0x00000100
#define bit_CMPXCHG8B   bit_CX8 /* for gcc compat */
#define bit_APIC   0x00000200
#define bit_SEP   0x00000800
#define bit_MTRR   0x00001000
#define bit_PGE   0x00002000
#define bit_MCA   0x00004000
#define bit_CMOV   0x00008000
#define bit_PAT   0x00010000
#define bit_PSE36   0x00020000
#define bit_PSN   0x00040000
#define bit_CLFSH   0x00080000
#define bit_DS   0x00200000
#define bit_ACPI   0x00400000
#define bit_MMX   0x00800000
#define bit_FXSR   0x01000000
#define bit_FXSAVE   bit_FXSR /* for gcc compat */
#define bit_SSE   0x02000000
#define bit_SSE2   0x04000000
#define bit_SS   0x08000000
#define bit_HTT   0x10000000
#define bit_TM   0x20000000
#define bit_PBE   0x80000000
#define bit_FSGSBASE   0x00000001
#define bit_SGX   0x00000004
#define bit_BMI   0x00000008
#define bit_HLE   0x00000010
#define bit_AVX2   0x00000020
#define bit_SMEP   0x00000080
#define bit_BMI2   0x00000100
#define bit_ENH_MOVSB   0x00000200
#define bit_INVPCID   0x00000400
#define bit_RTM   0x00000800
#define bit_MPX   0x00004000
#define bit_AVX512F   0x00010000
#define bit_AVX512DQ   0x00020000
#define bit_RDSEED   0x00040000
#define bit_ADX   0x00080000
#define bit_AVX512IFMA   0x00200000
#define bit_CLFLUSHOPT   0x00800000
#define bit_CLWB   0x01000000
#define bit_AVX512PF   0x04000000
#define bit_AVX512ER   0x08000000
#define bit_AVX512CD   0x10000000
#define bit_SHA   0x20000000
#define bit_AVX512BW   0x40000000
#define bit_AVX512VL   0x80000000
#define bit_PREFTCHWT1   0x00000001
#define bit_AVX512VBMI   0x00000002
#define bit_PKU   0x00000004
#define bit_OSPKE   0x00000010
#define bit_WAITPKG   0x00000020
#define bit_AVX512VBMI2   0x00000040
#define bit_SHSTK   0x00000080
#define bit_GFNI   0x00000100
#define bit_VAES   0x00000200
#define bit_VPCLMULQDQ   0x00000400
#define bit_AVX512VNNI   0x00000800
#define bit_AVX512BITALG   0x00001000
#define bit_AVX512VPOPCNTDQ   0x00004000
#define bit_RDPID   0x00400000
#define bit_CLDEMOTE   0x02000000
#define bit_MOVDIRI   0x08000000
#define bit_MOVDIR64B   0x10000000
#define bit_ENQCMD   0x20000000
#define bit_AVX5124VNNIW   0x00000004
#define bit_AVX5124FMAPS   0x00000008
#define bit_UINTR   0x00000020
#define bit_AVX512VP2INTERSECT   0x00000100
#define bit_SERIALIZE   0x00004000
#define bit_TSXLDTRK   0x00010000
#define bit_PCONFIG   0x00040000
#define bit_IBT   0x00100000
#define bit_AMXBF16   0x00400000
#define bit_AVX512FP16   0x00800000
#define bit_AMXTILE   0x01000000
#define bit_AMXINT8   0x02000000
#define bit_SHA512   0x00000001
#define bit_SM3   0x00000002
#define bit_SM4   0x00000004
#define bit_RAOINT   0x00000008
#define bit_AVXVNNI   0x00000010
#define bit_AVX512BF16   0x00000020
#define bit_CMPCCXADD   0x00000080
#define bit_AMXFP16   0x00200000
#define bit_HRESET   0x00400000
#define bit_AVXIFMA   0x00800000
#define bit_AVXVNNIINT8   0x00000010
#define bit_AVXNECONVERT   0x00000020
#define bit_AMXCOMPLEX   0x00000100
#define bit_AVXVNNIINT16   0x00000400
#define bit_PREFETCHI   0x00004000
#define bit_USERMSR   0x00008000
#define bit_AVX10   0x00080000
#define bit_APXF   0x00200000
#define bit_XSAVEOPT   0x00000001
#define bit_XSAVEC   0x00000002
#define bit_XSAVES   0x00000008
#define bit_PTWRITE   0x00000010
#define bit_LAHF_LM   0x00000001
#define bit_ABM   0x00000020
#define bit_LZCNT   bit_ABM /* for gcc compat */
#define bit_SSE4a   0x00000040
#define bit_PRFCHW   0x00000100
#define bit_XOP   0x00000800
#define bit_LWP   0x00008000
#define bit_FMA4   0x00010000
#define bit_TBM   0x00200000
#define bit_MWAITX   0x20000000
#define bit_MMXEXT   0x00400000
#define bit_LM   0x20000000
#define bit_3DNOWP   0x40000000
#define bit_3DNOW   0x80000000
#define bit_CLZERO   0x00000001
#define bit_RDPRU   0x00000010
#define bit_WBNOINVD   0x00000200
#define __cpuid(__leaf, __eax, __ebx, __ecx, __edx)
#define __cpuid_count(__leaf, __count, __eax, __ebx, __ecx, __edx)

Functions

static __inline unsigned int __get_cpuid_max (unsigned int __leaf, unsigned int *__sig)
 Queries the processor to determine the highest supported CPUID leaf.
static __inline int __get_cpuid (unsigned int __leaf, unsigned int *__eax, unsigned int *__ebx, unsigned int *__ecx, unsigned int *__edx)
 For the requested CPUID leaf, queries the processor for information about the CPU type and CPU features (such as processor vendor, supported instruction sets, CPU capabilities, cache sizes, CPU model and family, and other hardware details).
static __inline int __get_cpuid_count (unsigned int __leaf, unsigned int __subleaf, unsigned int *__eax, unsigned int *__ebx, unsigned int *__ecx, unsigned int *__edx)
 For the requested CPUID leaf and subleaf, queries the processor for information about the CPU type and CPU features (such as processor vendor, supported instruction sets, CPU capabilities, cache sizes, CPU model and family, and other hardware details).
static __inline void __cpuidex (int __cpu_info[4], int __leaf, int __subleaf)
 Executes the CPUID instruction with the specified leaf and subleaf values, and returns the results from the CPU's registers.

Macro Definition Documentation

◆ __cpuid

#define __cpuid ( __leaf,
__eax,
__ebx,
__ecx,
__edx )
Value:
__asm(" xchg{q|} {%%|}rbx,%q1\n" \
" cpuid\n" \
" xchg{q|} {%%|}rbx,%q1" \
: "=a"(__eax), "=r"(__ebx), "=c"(__ecx), "=d"(__edx) \
: "0"(__leaf))

Definition at line 266 of file cpuid.h.

Referenced by __get_cpuid(), and __get_cpuid_max().

◆ __cpuid_count

#define __cpuid_count ( __leaf,
__count,
__eax,
__ebx,
__ecx,
__edx )
Value:
__asm(" xchg{q|} {%%|}rbx,%q1\n" \
" cpuid\n" \
" xchg{q|} {%%|}rbx,%q1" \
: "=a"(__eax), "=r"(__ebx), "=c"(__ecx), "=d"(__edx) \
: "0"(__leaf), "2"(__count))

Definition at line 273 of file cpuid.h.

Referenced by __cpuidex(), and __get_cpuid_count().

◆ bit_3DNOW

#define bit_3DNOW   0x80000000

Definition at line 249 of file cpuid.h.

◆ bit_3DNOWP

#define bit_3DNOWP   0x40000000

Definition at line 248 of file cpuid.h.

◆ bit_ABM

#define bit_ABM   0x00000020

Definition at line 235 of file cpuid.h.

◆ bit_ACPI

#define bit_ACPI   0x00400000

Definition at line 132 of file cpuid.h.

◆ bit_ADX

#define bit_ADX   0x00080000

Definition at line 158 of file cpuid.h.

◆ bit_AES

#define bit_AES   bit_AESNI /* for gcc compat */

Definition at line 103 of file cpuid.h.

◆ bit_AESNI

#define bit_AESNI   0x02000000

Definition at line 102 of file cpuid.h.

◆ bit_AMXBF16

#define bit_AMXBF16   0x00400000

Definition at line 198 of file cpuid.h.

◆ bit_AMXCOMPLEX

#define bit_AMXCOMPLEX   0x00000100

Definition at line 218 of file cpuid.h.

◆ bit_AMXFP16

#define bit_AMXFP16   0x00200000

Definition at line 211 of file cpuid.h.

◆ bit_AMXINT8

#define bit_AMXINT8   0x02000000

Definition at line 201 of file cpuid.h.

◆ bit_AMXTILE

#define bit_AMXTILE   0x01000000

Definition at line 200 of file cpuid.h.

◆ bit_APIC

#define bit_APIC   0x00000200

Definition at line 121 of file cpuid.h.

◆ bit_APXF

#define bit_APXF   0x00200000

Definition at line 223 of file cpuid.h.

◆ bit_AVX

#define bit_AVX   0x10000000

Definition at line 106 of file cpuid.h.

◆ bit_AVX10

#define bit_AVX10   0x00080000

Definition at line 222 of file cpuid.h.

◆ bit_AVX2

#define bit_AVX2   0x00000020

Definition at line 148 of file cpuid.h.

◆ bit_AVX5124FMAPS

#define bit_AVX5124FMAPS   0x00000008

Definition at line 191 of file cpuid.h.

◆ bit_AVX5124VNNIW

#define bit_AVX5124VNNIW   0x00000004

Definition at line 190 of file cpuid.h.

◆ bit_AVX512BF16

#define bit_AVX512BF16   0x00000020

Definition at line 209 of file cpuid.h.

◆ bit_AVX512BITALG

#define bit_AVX512BITALG   0x00001000

Definition at line 181 of file cpuid.h.

◆ bit_AVX512BW

#define bit_AVX512BW   0x40000000

Definition at line 166 of file cpuid.h.

◆ bit_AVX512CD

#define bit_AVX512CD   0x10000000

Definition at line 164 of file cpuid.h.

◆ bit_AVX512DQ

#define bit_AVX512DQ   0x00020000

Definition at line 156 of file cpuid.h.

◆ bit_AVX512ER

#define bit_AVX512ER   0x08000000

Definition at line 163 of file cpuid.h.

◆ bit_AVX512F

#define bit_AVX512F   0x00010000

Definition at line 155 of file cpuid.h.

◆ bit_AVX512FP16

#define bit_AVX512FP16   0x00800000

Definition at line 199 of file cpuid.h.

◆ bit_AVX512IFMA

#define bit_AVX512IFMA   0x00200000

Definition at line 159 of file cpuid.h.

◆ bit_AVX512PF

#define bit_AVX512PF   0x04000000

Definition at line 162 of file cpuid.h.

◆ bit_AVX512VBMI

#define bit_AVX512VBMI   0x00000002

Definition at line 171 of file cpuid.h.

◆ bit_AVX512VBMI2

#define bit_AVX512VBMI2   0x00000040

Definition at line 175 of file cpuid.h.

◆ bit_AVX512VL

#define bit_AVX512VL   0x80000000

Definition at line 167 of file cpuid.h.

◆ bit_AVX512VNNI

#define bit_AVX512VNNI   0x00000800

Definition at line 180 of file cpuid.h.

◆ bit_AVX512VP2INTERSECT

#define bit_AVX512VP2INTERSECT   0x00000100

Definition at line 193 of file cpuid.h.

◆ bit_AVX512VPOPCNTDQ

#define bit_AVX512VPOPCNTDQ   0x00004000

Definition at line 182 of file cpuid.h.

◆ bit_AVXIFMA

#define bit_AVXIFMA   0x00800000

Definition at line 213 of file cpuid.h.

◆ bit_AVXNECONVERT

#define bit_AVXNECONVERT   0x00000020

Definition at line 217 of file cpuid.h.

◆ bit_AVXVNNI

#define bit_AVXVNNI   0x00000010

Definition at line 208 of file cpuid.h.

◆ bit_AVXVNNIINT16

#define bit_AVXVNNIINT16   0x00000400

Definition at line 219 of file cpuid.h.

◆ bit_AVXVNNIINT8

#define bit_AVXVNNIINT8   0x00000010

Definition at line 216 of file cpuid.h.

◆ bit_BMI

#define bit_BMI   0x00000008

Definition at line 146 of file cpuid.h.

◆ bit_BMI2

#define bit_BMI2   0x00000100

Definition at line 150 of file cpuid.h.

◆ bit_CLDEMOTE

#define bit_CLDEMOTE   0x02000000

Definition at line 184 of file cpuid.h.

◆ bit_CLFLUSHOPT

#define bit_CLFLUSHOPT   0x00800000

Definition at line 160 of file cpuid.h.

◆ bit_CLFSH

#define bit_CLFSH   0x00080000

Definition at line 130 of file cpuid.h.

◆ bit_CLWB

#define bit_CLWB   0x01000000

Definition at line 161 of file cpuid.h.

◆ bit_CLZERO

#define bit_CLZERO   0x00000001

Definition at line 252 of file cpuid.h.

◆ bit_CMOV

#define bit_CMOV   0x00008000

Definition at line 126 of file cpuid.h.

◆ bit_CMPCCXADD

#define bit_CMPCCXADD   0x00000080

Definition at line 210 of file cpuid.h.

◆ bit_CMPXCHG16B

#define bit_CMPXCHG16B   0x00002000

Definition at line 89 of file cpuid.h.

◆ bit_CMPXCHG8B

#define bit_CMPXCHG8B   bit_CX8 /* for gcc compat */

Definition at line 120 of file cpuid.h.

◆ bit_CNXTID

#define bit_CNXTID   0x00000400

Definition at line 87 of file cpuid.h.

◆ bit_CX8

#define bit_CX8   0x00000100

Definition at line 119 of file cpuid.h.

◆ bit_DCA

#define bit_DCA   0x00040000

Definition at line 93 of file cpuid.h.

◆ bit_DE

#define bit_DE   0x00000004

Definition at line 113 of file cpuid.h.

◆ bit_DS

#define bit_DS   0x00200000

Definition at line 131 of file cpuid.h.

◆ bit_DSCPL

#define bit_DSCPL   0x00000010

Definition at line 81 of file cpuid.h.

◆ bit_DTES64

#define bit_DTES64   0x00000004

Definition at line 79 of file cpuid.h.

◆ bit_EIST

#define bit_EIST   0x00000080

Definition at line 84 of file cpuid.h.

◆ bit_ENH_MOVSB

#define bit_ENH_MOVSB   0x00000200

Definition at line 151 of file cpuid.h.

◆ bit_ENQCMD

#define bit_ENQCMD   0x20000000

Definition at line 187 of file cpuid.h.

◆ bit_F16C

#define bit_F16C   0x20000000

Definition at line 107 of file cpuid.h.

◆ bit_FMA

#define bit_FMA   0x00001000

Definition at line 88 of file cpuid.h.

◆ bit_FMA4

#define bit_FMA4   0x00010000

Definition at line 241 of file cpuid.h.

◆ bit_FPU

#define bit_FPU   0x00000001

Definition at line 111 of file cpuid.h.

◆ bit_FSGSBASE

#define bit_FSGSBASE   0x00000001

Definition at line 144 of file cpuid.h.

◆ bit_FXSAVE

#define bit_FXSAVE   bit_FXSR /* for gcc compat */

Definition at line 135 of file cpuid.h.

◆ bit_FXSR

#define bit_FXSR   0x01000000

Definition at line 134 of file cpuid.h.

◆ bit_GFNI

#define bit_GFNI   0x00000100

Definition at line 177 of file cpuid.h.

◆ bit_HLE

#define bit_HLE   0x00000010

Definition at line 147 of file cpuid.h.

◆ bit_HRESET

#define bit_HRESET   0x00400000

Definition at line 212 of file cpuid.h.

◆ bit_HTT

#define bit_HTT   0x10000000

Definition at line 139 of file cpuid.h.

◆ bit_IBT

#define bit_IBT   0x00100000

Definition at line 197 of file cpuid.h.

◆ bit_INVPCID

#define bit_INVPCID   0x00000400

Definition at line 152 of file cpuid.h.

◆ bit_LAHF_LM

#define bit_LAHF_LM   0x00000001

Definition at line 234 of file cpuid.h.

◆ bit_LM

#define bit_LM   0x20000000

Definition at line 247 of file cpuid.h.

◆ bit_LWP

#define bit_LWP   0x00008000

Definition at line 240 of file cpuid.h.

◆ bit_LZCNT

#define bit_LZCNT   bit_ABM /* for gcc compat */

Definition at line 236 of file cpuid.h.

◆ bit_MCA

#define bit_MCA   0x00004000

Definition at line 125 of file cpuid.h.

◆ bit_MCE

#define bit_MCE   0x00000080

Definition at line 118 of file cpuid.h.

◆ bit_MMX

#define bit_MMX   0x00800000

Definition at line 133 of file cpuid.h.

◆ bit_MMXEXT

#define bit_MMXEXT   0x00400000

Definition at line 246 of file cpuid.h.

◆ bit_MONITOR

#define bit_MONITOR   0x00000008

Definition at line 80 of file cpuid.h.

◆ bit_MOVBE

#define bit_MOVBE   0x00400000

Definition at line 99 of file cpuid.h.

◆ bit_MOVDIR64B

#define bit_MOVDIR64B   0x10000000

Definition at line 186 of file cpuid.h.

◆ bit_MOVDIRI

#define bit_MOVDIRI   0x08000000

Definition at line 185 of file cpuid.h.

◆ bit_MPX

#define bit_MPX   0x00004000

Definition at line 154 of file cpuid.h.

◆ bit_MSR

#define bit_MSR   0x00000020

Definition at line 116 of file cpuid.h.

◆ bit_MTRR

#define bit_MTRR   0x00001000

Definition at line 123 of file cpuid.h.

◆ bit_MWAITX

#define bit_MWAITX   0x20000000

Definition at line 243 of file cpuid.h.

◆ bit_OSPKE

#define bit_OSPKE   0x00000010

Definition at line 173 of file cpuid.h.

◆ bit_OSXSAVE

#define bit_OSXSAVE   0x08000000

Definition at line 105 of file cpuid.h.

◆ bit_PAE

#define bit_PAE   0x00000040

Definition at line 117 of file cpuid.h.

◆ bit_PAT

#define bit_PAT   0x00010000

Definition at line 127 of file cpuid.h.

◆ bit_PBE

#define bit_PBE   0x80000000

Definition at line 141 of file cpuid.h.

◆ bit_PCID

#define bit_PCID   0x00020000

Definition at line 92 of file cpuid.h.

◆ bit_PCLMUL

#define bit_PCLMUL   bit_PCLMULQDQ /* for gcc compat */

Definition at line 78 of file cpuid.h.

◆ bit_PCLMULQDQ

#define bit_PCLMULQDQ   0x00000002

Definition at line 77 of file cpuid.h.

◆ bit_PCONFIG

#define bit_PCONFIG   0x00040000

Definition at line 196 of file cpuid.h.

◆ bit_PDCM

#define bit_PDCM   0x00008000

Definition at line 91 of file cpuid.h.

◆ bit_PGE

#define bit_PGE   0x00002000

Definition at line 124 of file cpuid.h.

◆ bit_PKU

#define bit_PKU   0x00000004

Definition at line 172 of file cpuid.h.

◆ bit_POPCNT

#define bit_POPCNT   0x00800000

Definition at line 100 of file cpuid.h.

◆ bit_PREFETCHI

#define bit_PREFETCHI   0x00004000

Definition at line 220 of file cpuid.h.

◆ bit_PREFTCHWT1

#define bit_PREFTCHWT1   0x00000001

Definition at line 170 of file cpuid.h.

◆ bit_PRFCHW

#define bit_PRFCHW   0x00000100

Definition at line 238 of file cpuid.h.

◆ bit_PSE

#define bit_PSE   0x00000008

Definition at line 114 of file cpuid.h.

◆ bit_PSE36

#define bit_PSE36   0x00020000

Definition at line 128 of file cpuid.h.

◆ bit_PSN

#define bit_PSN   0x00040000

Definition at line 129 of file cpuid.h.

◆ bit_PTWRITE

#define bit_PTWRITE   0x00000010

Definition at line 231 of file cpuid.h.

◆ bit_RAOINT

#define bit_RAOINT   0x00000008

Definition at line 207 of file cpuid.h.

◆ bit_RDPID

#define bit_RDPID   0x00400000

Definition at line 183 of file cpuid.h.

◆ bit_RDPRU

#define bit_RDPRU   0x00000010

Definition at line 253 of file cpuid.h.

◆ bit_RDRND

#define bit_RDRND   0x40000000

Definition at line 108 of file cpuid.h.

◆ bit_RDSEED

#define bit_RDSEED   0x00040000

Definition at line 157 of file cpuid.h.

◆ bit_RTM

#define bit_RTM   0x00000800

Definition at line 153 of file cpuid.h.

◆ bit_SEP

#define bit_SEP   0x00000800

Definition at line 122 of file cpuid.h.

◆ bit_SERIALIZE

#define bit_SERIALIZE   0x00004000

Definition at line 194 of file cpuid.h.

◆ bit_SGX

#define bit_SGX   0x00000004

Definition at line 145 of file cpuid.h.

◆ bit_SHA

#define bit_SHA   0x20000000

Definition at line 165 of file cpuid.h.

◆ bit_SHA512

#define bit_SHA512   0x00000001

Definition at line 204 of file cpuid.h.

◆ bit_SHSTK

#define bit_SHSTK   0x00000080

Definition at line 176 of file cpuid.h.

◆ bit_SM3

#define bit_SM3   0x00000002

Definition at line 205 of file cpuid.h.

◆ bit_SM4

#define bit_SM4   0x00000004

Definition at line 206 of file cpuid.h.

◆ bit_SMEP

#define bit_SMEP   0x00000080

Definition at line 149 of file cpuid.h.

◆ bit_SMX

#define bit_SMX   0x00000040

Definition at line 83 of file cpuid.h.

◆ bit_SS

#define bit_SS   0x08000000

Definition at line 138 of file cpuid.h.

◆ bit_SSE

#define bit_SSE   0x02000000

Definition at line 136 of file cpuid.h.

◆ bit_SSE2

#define bit_SSE2   0x04000000

Definition at line 137 of file cpuid.h.

◆ bit_SSE3

#define bit_SSE3   0x00000001

Definition at line 76 of file cpuid.h.

◆ bit_SSE41

#define bit_SSE41   0x00080000

Definition at line 94 of file cpuid.h.

◆ bit_SSE42

#define bit_SSE42   0x00100000

Definition at line 96 of file cpuid.h.

◆ bit_SSE4_1

#define bit_SSE4_1   bit_SSE41 /* for gcc compat */

Definition at line 95 of file cpuid.h.

◆ bit_SSE4_2

#define bit_SSE4_2   bit_SSE42 /* for gcc compat */

Definition at line 97 of file cpuid.h.

◆ bit_SSE4a

#define bit_SSE4a   0x00000040

Definition at line 237 of file cpuid.h.

◆ bit_SSSE3

#define bit_SSSE3   0x00000200

Definition at line 86 of file cpuid.h.

◆ bit_TBM

#define bit_TBM   0x00200000

Definition at line 242 of file cpuid.h.

◆ bit_TM

#define bit_TM   0x20000000

Definition at line 140 of file cpuid.h.

◆ bit_TM2

#define bit_TM2   0x00000100

Definition at line 85 of file cpuid.h.

◆ bit_TSC

#define bit_TSC   0x00000010

Definition at line 115 of file cpuid.h.

◆ bit_TSCDeadline

#define bit_TSCDeadline   0x01000000

Definition at line 101 of file cpuid.h.

◆ bit_TSXLDTRK

#define bit_TSXLDTRK   0x00010000

Definition at line 195 of file cpuid.h.

◆ bit_UINTR

#define bit_UINTR   0x00000020

Definition at line 192 of file cpuid.h.

◆ bit_USERMSR

#define bit_USERMSR   0x00008000

Definition at line 221 of file cpuid.h.

◆ bit_VAES

#define bit_VAES   0x00000200

Definition at line 178 of file cpuid.h.

◆ bit_VME

#define bit_VME   0x00000002

Definition at line 112 of file cpuid.h.

◆ bit_VMX

#define bit_VMX   0x00000020

Definition at line 82 of file cpuid.h.

◆ bit_VPCLMULQDQ

#define bit_VPCLMULQDQ   0x00000400

Definition at line 179 of file cpuid.h.

◆ bit_WAITPKG

#define bit_WAITPKG   0x00000020

Definition at line 174 of file cpuid.h.

◆ bit_WBNOINVD

#define bit_WBNOINVD   0x00000200

Definition at line 254 of file cpuid.h.

◆ bit_x2APIC

#define bit_x2APIC   0x00200000

Definition at line 98 of file cpuid.h.

◆ bit_XOP

#define bit_XOP   0x00000800

Definition at line 239 of file cpuid.h.

◆ bit_XSAVE

#define bit_XSAVE   0x04000000

Definition at line 104 of file cpuid.h.

◆ bit_XSAVEC

#define bit_XSAVEC   0x00000002

Definition at line 227 of file cpuid.h.

◆ bit_XSAVEOPT

#define bit_XSAVEOPT   0x00000001

Definition at line 226 of file cpuid.h.

◆ bit_XSAVES

#define bit_XSAVES   0x00000008

Definition at line 228 of file cpuid.h.

◆ bit_xTPR

#define bit_xTPR   0x00004000

Definition at line 90 of file cpuid.h.

◆ signature_AMD_ebx

#define signature_AMD_ebx   0x68747541

Definition at line 19 of file cpuid.h.

◆ signature_AMD_ecx

#define signature_AMD_ecx   0x444d4163

Definition at line 21 of file cpuid.h.

◆ signature_AMD_edx

#define signature_AMD_edx   0x69746e65

Definition at line 20 of file cpuid.h.

◆ signature_CENTAUR_ebx

#define signature_CENTAUR_ebx   0x746e6543

Definition at line 23 of file cpuid.h.

◆ signature_CENTAUR_ecx

#define signature_CENTAUR_ecx   0x736c7561

Definition at line 25 of file cpuid.h.

◆ signature_CENTAUR_edx

#define signature_CENTAUR_edx   0x48727561

Definition at line 24 of file cpuid.h.

◆ signature_CYRIX_ebx

#define signature_CYRIX_ebx   0x69727943

Definition at line 27 of file cpuid.h.

◆ signature_CYRIX_ecx

#define signature_CYRIX_ecx   0x64616574

Definition at line 29 of file cpuid.h.

◆ signature_CYRIX_edx

#define signature_CYRIX_edx   0x736e4978

Definition at line 28 of file cpuid.h.

◆ signature_HYGON_ebx

#define signature_HYGON_ebx   0x6f677948

Definition at line 31 of file cpuid.h.

◆ signature_HYGON_ecx

#define signature_HYGON_ecx   0x656e6975

Definition at line 33 of file cpuid.h.

◆ signature_HYGON_edx

#define signature_HYGON_edx   0x6e65476e

Definition at line 32 of file cpuid.h.

◆ signature_INTEL_ebx

#define signature_INTEL_ebx   0x756e6547

Definition at line 35 of file cpuid.h.

◆ signature_INTEL_ecx

#define signature_INTEL_ecx   0x6c65746e

Definition at line 37 of file cpuid.h.

◆ signature_INTEL_edx

#define signature_INTEL_edx   0x49656e69

Definition at line 36 of file cpuid.h.

◆ signature_NEXGEN_ebx

#define signature_NEXGEN_ebx   0x4778654e

Definition at line 51 of file cpuid.h.

◆ signature_NEXGEN_ecx

#define signature_NEXGEN_ecx   0x6e657669

Definition at line 53 of file cpuid.h.

◆ signature_NEXGEN_edx

#define signature_NEXGEN_edx   0x72446e65

Definition at line 52 of file cpuid.h.

◆ signature_NSC_ebx

#define signature_NSC_ebx   0x646f6547

Definition at line 47 of file cpuid.h.

◆ signature_NSC_ecx

#define signature_NSC_ecx   0x43534e20

Definition at line 49 of file cpuid.h.

◆ signature_NSC_edx

#define signature_NSC_edx   0x79622065

Definition at line 48 of file cpuid.h.

◆ signature_RISE_ebx

#define signature_RISE_ebx   0x65736952

Definition at line 55 of file cpuid.h.

◆ signature_RISE_ecx

#define signature_RISE_ecx   0x65736952

Definition at line 57 of file cpuid.h.

◆ signature_RISE_edx

#define signature_RISE_edx   0x65736952

Definition at line 56 of file cpuid.h.

◆ signature_SIS_ebx

#define signature_SIS_ebx   0x20536953

Definition at line 59 of file cpuid.h.

◆ signature_SIS_ecx

#define signature_SIS_ecx   0x20536953

Definition at line 61 of file cpuid.h.

◆ signature_SIS_edx

#define signature_SIS_edx   0x20536953

Definition at line 60 of file cpuid.h.

◆ signature_TM1_ebx

#define signature_TM1_ebx   0x6e617254

Definition at line 39 of file cpuid.h.

◆ signature_TM1_ecx

#define signature_TM1_ecx   0x55504361

Definition at line 41 of file cpuid.h.

◆ signature_TM1_edx

#define signature_TM1_edx   0x74656d73

Definition at line 40 of file cpuid.h.

◆ signature_TM2_ebx

#define signature_TM2_ebx   0x756e6547

Definition at line 43 of file cpuid.h.

◆ signature_TM2_ecx

#define signature_TM2_ecx   0x3638784d

Definition at line 45 of file cpuid.h.

◆ signature_TM2_edx

#define signature_TM2_edx   0x54656e69

Definition at line 44 of file cpuid.h.

◆ signature_UMC_ebx

#define signature_UMC_ebx   0x20434d55

Definition at line 63 of file cpuid.h.

◆ signature_UMC_ecx

#define signature_UMC_ecx   0x20434d55

Definition at line 65 of file cpuid.h.

◆ signature_UMC_edx

#define signature_UMC_edx   0x20434d55

Definition at line 64 of file cpuid.h.

◆ signature_VIA_ebx

#define signature_VIA_ebx   0x20414956

Definition at line 67 of file cpuid.h.

◆ signature_VIA_ecx

#define signature_VIA_ecx   0x20414956

Definition at line 69 of file cpuid.h.

◆ signature_VIA_edx

#define signature_VIA_edx   0x20414956

Definition at line 68 of file cpuid.h.

◆ signature_VORTEX_ebx

#define signature_VORTEX_ebx   0x74726f56

Definition at line 71 of file cpuid.h.

◆ signature_VORTEX_ecx

#define signature_VORTEX_ecx   0x436f5320

Definition at line 73 of file cpuid.h.

◆ signature_VORTEX_edx

#define signature_VORTEX_edx   0x36387865

Definition at line 72 of file cpuid.h.

Function Documentation

◆ __cpuidex()

__inline void __cpuidex ( int __cpu_info[4],
int __leaf,
int __subleaf )
static

Executes the CPUID instruction with the specified leaf and subleaf values, and returns the results from the CPU's registers.

This intrinsic is only available on x86 and x64.

This intrinsic corresponds to the CPUID instruction.

Parameters
__cpu_infoAn output array of four integers:
  • __cpuInfo[0] receives the value of the EAX register.
  • __cpuInfo[1] receives the value of the EBX register.
  • __cpuInfo[2] receives the value of the ECX register.
  • __cpuInfo[3] receives the value of the EDX register.
__leafAn unsigned integer that identifies the level (also called the "leaf") at which the CPUID instruction will be executed.
__subleafAn unsigned integer that identifies the sublevel (also called the "subleaf") at which the CPUID instruction will be executed.

Definition at line 444 of file cpuid.h.

References __cpuid_count.

◆ __get_cpuid()

__inline int __get_cpuid ( unsigned int __leaf,
unsigned int * __eax,
unsigned int * __ebx,
unsigned int * __ecx,
unsigned int * __edx )
static

For the requested CPUID leaf, queries the processor for information about the CPU type and CPU features (such as processor vendor, supported instruction sets, CPU capabilities, cache sizes, CPU model and family, and other hardware details).

This intrinsic is only available on x86 and x64.

This intrinsic corresponds to the CPUID instruction.

Parameters
__leafAn unsigned integer that identifies the level (also called "leaf") at which the CPUID instruction will be executed.
__eaxA pointer to an integer that corresponds to the EAX register where CPUID stores output results.
__ebxA pointer to an integer that corresponds to the EBX register where CPUID stores output results.
__ecxA pointer to an integer that corresponds to the ECX register where CPUID stores output results.
__edxA pointer to an integer that corresponds to the EDX register where CPUID stores output results.
Returns
Returns 1 if the requested CPUID leaf is supported; otherwise returns 0.

Definition at line 358 of file cpuid.h.

References __cpuid, and __get_cpuid_max().

◆ __get_cpuid_count()

__inline int __get_cpuid_count ( unsigned int __leaf,
unsigned int __subleaf,
unsigned int * __eax,
unsigned int * __ebx,
unsigned int * __ecx,
unsigned int * __edx )
static

For the requested CPUID leaf and subleaf, queries the processor for information about the CPU type and CPU features (such as processor vendor, supported instruction sets, CPU capabilities, cache sizes, CPU model and family, and other hardware details).

This intrinsic is only available on x86 and x64.

This intrinsic corresponds to the CPUID instruction.

Parameters
__leafAn unsigned integer that identifies the level (also called "leaf") at which the CPUID instruction will be executed.
__subleafAn unsigned integer that identifies the sublevel (also called "subleaf") at which the CPUID instruction will be executed.
__eaxA pointer to an integer that corresponds to the EAX register where CPUID stores output results.
__ebxA pointer to an integer that corresponds to the EBX register where CPUID stores output results.
__ecxA pointer to an integer that corresponds to the ECX register where CPUID stores output results.
__edxA pointer to an integer that corresponds to the EDX register where CPUID stores output results.
Returns
Returns 1 if the requested CPUID leaf is supported; otherwise returns 0.

Definition at line 401 of file cpuid.h.

References __cpuid_count, and __get_cpuid_max().

◆ __get_cpuid_max()

__inline unsigned int __get_cpuid_max ( unsigned int __leaf,
unsigned int * __sig )
static

Queries the processor to determine the highest supported CPUID leaf.

This intrinsic is only available on x86 and x64.

This intrinsic corresponds to the CPUID instruction.

Parameters
__leaf__leaf can be either 0x0 or 0x8000000. If __leaf == 0x0, the highest supported value for basic CPUID information is returned. If __leaf == 0x8000000, the highest supported value for extended CPUID information is returned.
__sigIf the __sig pointer is non-null, the first four bytes of the signature (as found in the EBX register) are returned in the location pointed to by __sig.
Returns
Returns 0 if CPUID is supported; otherwise returns the value that CPUID returns in the EAX register.

Definition at line 299 of file cpuid.h.

References __cpuid.

Referenced by __get_cpuid(), and __get_cpuid_count().