CNDP  22.08.0
cne_cpuflags.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (c) 2010-2022 Intel Corporation
3  */
4 
5 #ifndef _CNE_CPUFLAGS_H_
6 #define _CNE_CPUFLAGS_H_
7 
13 #include <stdbool.h> // for bool
14 
15 #include <errno.h>
16 
17 #include "cne_common.h"
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 // clang-format off
28  /* (EAX 01h) ECX features*/
60  /* (EAX 01h) EDX features */
91  /* (EAX 06h) EAX features */
99  /* (EAX 06h) ECX features */
104  /* (EAX 07h, ECX 0h) EBX features */
117  /* (EAX 80000001h) ECX features */
121  /* (EAX 80000001h) EDX features */
128  /* (EAX 80000007h) EDX features */
152  /* The last item */
154 };
155 // clang-format on
156 
160 __extension__ enum cne_cpu_flag_t;
161 
171 CNDP_API const char *cne_cpu_get_flag_name(enum cne_cpu_flag_t feature);
172 
183 CNDP_API int cne_cpu_get_flag_enabled(enum cne_cpu_flag_t feature);
184 
190 CNDP_API int cne_cpu_is_supported(void);
191 
202 CNDP_API unsigned long cne_cpu_getauxval(unsigned long type);
203 
218 CNDP_API int cne_cpu_strcmp_auxval(unsigned long type, const char *str);
219 
235 CNDP_API bool cne_cpu_rtm_is_supported(void);
236 
246 CNDP_API bool cne_cpu_waitpkg_is_supported(void);
247 
248 #ifdef __cplusplus
249 }
250 #endif
251 
252 #endif /* _CNE_CPUFLAGS_H_ */
cne_cpu_flag_t
Definition: cne_cpuflags.h:27
@ CNE_CPUFLAG_LAHF_SAHF
Definition: cne_cpuflags.h:118
@ CNE_CPUFLAG_DS
Definition: cne_cpuflags.h:80
@ CNE_CPUFLAG_F16C
Definition: cne_cpuflags.h:56
@ CNE_CPUFLAG_PCID
Definition: cne_cpuflags.h:44
@ CNE_CPUFLAG_HLE
Definition: cne_cpuflags.h:107
@ CNE_CPUFLAG_TM2
Definition: cne_cpuflags.h:37
@ CNE_CPUFLAG_CNXT_ID
Definition: cne_cpuflags.h:39
@ CNE_CPUFLAG_DTES64
Definition: cne_cpuflags.h:31
@ CNE_CPUFLAG_FPU
Definition: cne_cpuflags.h:61
@ CNE_CPUFLAG_XSAVE
Definition: cne_cpuflags.h:53
@ CNE_CPUFLAG_DCA
Definition: cne_cpuflags.h:45
@ CNE_CPUFLAG_DE
Definition: cne_cpuflags.h:63
@ CNE_CPUFLAG_VME
Definition: cne_cpuflags.h:62
@ CNE_CPUFLAG_VMX
Definition: cne_cpuflags.h:34
@ CNE_CPUFLAG_AVX512CD
Definition: cne_cpuflags.h:133
@ CNE_CPUFLAG_PBE
Definition: cne_cpuflags.h:89
@ CNE_CPUFLAG_SYSCALL
Definition: cne_cpuflags.h:122
@ CNE_CPUFLAG_SSE3
Definition: cne_cpuflags.h:29
@ CNE_CPUFLAG_EM64T
Definition: cne_cpuflags.h:126
@ CNE_CPUFLAG_LZCNT
Definition: cne_cpuflags.h:119
@ CNE_CPUFLAG_PCLMULQDQ
Definition: cne_cpuflags.h:30
@ CNE_CPUFLAG_ENERGY_EFF
Definition: cne_cpuflags.h:102
@ CNE_CPUFLAG_PDCM
Definition: cne_cpuflags.h:43
@ CNE_CPUFLAG_RDRAND
Definition: cne_cpuflags.h:57
@ CNE_CPUFLAG_AVX512DQ
Definition: cne_cpuflags.h:131
@ CNE_CPUFLAG_SMX
Definition: cne_cpuflags.h:35
@ CNE_CPUFLAG_MMX
Definition: cne_cpuflags.h:82
@ CNE_CPUFLAG_RTM
Definition: cne_cpuflags.h:113
@ CNE_CPUFLAG_TSC_DEADLINE
Definition: cne_cpuflags.h:51
@ CNE_CPUFLAG_TM
Definition: cne_cpuflags.h:88
@ CNE_CPUFLAG_PAT
Definition: cne_cpuflags.h:76
@ CNE_CPUFLAG_AVX512VBMI
Definition: cne_cpuflags.h:136
@ CNE_CPUFLAG_NUMFLAGS
Definition: cne_cpuflags.h:153
@ CNE_CPUFLAG_PTM
Definition: cne_cpuflags.h:97
@ CNE_CPUFLAG_INVPCID
Definition: cne_cpuflags.h:112
@ CNE_CPUFLAG_PSN
Definition: cne_cpuflags.h:78
@ CNE_CPUFLAG_TSC
Definition: cne_cpuflags.h:65
@ CNE_CPUFLAG_MOVDIR64B
Definition: cne_cpuflags.h:147
@ CNE_CPUFLAG_TRBOBST
Definition: cne_cpuflags.h:93
@ CNE_CPUFLAG_AVX512VPOPCNTDQ
Definition: cne_cpuflags.h:144
@ CNE_CPUFLAG_MCA
Definition: cne_cpuflags.h:74
@ CNE_CPUFLAG_CMOV
Definition: cne_cpuflags.h:75
@ CNE_CPUFLAG_GFNI
Definition: cne_cpuflags.h:138
@ CNE_CPUFLAG_FMA
Definition: cne_cpuflags.h:40
@ CNE_CPUFLAG_SS
Definition: cne_cpuflags.h:86
@ CNE_CPUFLAG_MCE
Definition: cne_cpuflags.h:68
@ CNE_CPUFLAG_CLFSH
Definition: cne_cpuflags.h:79
@ CNE_CPUFLAG_AVX512VP2INTERSECT
Definition: cne_cpuflags.h:148
@ CNE_CPUFLAG_SMEP
Definition: cne_cpuflags.h:109
@ CNE_CPUFLAG_AVX512VBMI2
Definition: cne_cpuflags.h:137
@ CNE_CPUFLAG_BMI1
Definition: cne_cpuflags.h:106
@ CNE_CPUFLAG_PAE
Definition: cne_cpuflags.h:67
@ CNE_CPUFLAG_FSGSBASE
Definition: cne_cpuflags.h:105
@ CNE_CPUFLAG_XTPR
Definition: cne_cpuflags.h:42
@ CNE_CPUFLAG_RDTSCP
Definition: cne_cpuflags.h:125
@ CNE_CPUFLAG_AVX2
Definition: cne_cpuflags.h:108
@ CNE_CPUFLAG_DS_CPL
Definition: cne_cpuflags.h:33
@ CNE_CPUFLAG_BMI2
Definition: cne_cpuflags.h:110
@ CNE_CPUFLAG_1GB_PG
Definition: cne_cpuflags.h:124
@ CNE_CPUFLAG_EIST
Definition: cne_cpuflags.h:36
@ CNE_CPUFLAG_POPCNT
Definition: cne_cpuflags.h:50
@ CNE_CPUFLAG_AVX512IFMA
Definition: cne_cpuflags.h:132
@ CNE_CPUFLAG_ERMS
Definition: cne_cpuflags.h:111
@ CNE_CPUFLAG_AVX512VNNI
Definition: cne_cpuflags.h:141
@ CNE_CPUFLAG_ARAT
Definition: cne_cpuflags.h:94
@ CNE_CPUFLAG_MOVBE
Definition: cne_cpuflags.h:49
@ CNE_CPUFLAG_DIGTEMP
Definition: cne_cpuflags.h:92
@ CNE_CPUFLAG_CX8
Definition: cne_cpuflags.h:69
@ CNE_CPUFLAG_MSR
Definition: cne_cpuflags.h:66
@ CNE_CPUFLAG_MTRR
Definition: cne_cpuflags.h:72
@ CNE_CPUFLAG_INVTSC
Definition: cne_cpuflags.h:129
@ CNE_CPUFLAG_ACNT2
Definition: cne_cpuflags.h:101
@ CNE_CPUFLAG_MOVDIRI
Definition: cne_cpuflags.h:146
@ CNE_CPUFLAG_AVX512VL
Definition: cne_cpuflags.h:135
@ CNE_CPUFLAG_ACPI
Definition: cne_cpuflags.h:81
@ CNE_CPUFLAG_ECMD
Definition: cne_cpuflags.h:96
@ CNE_CPUFLAG_SSE2
Definition: cne_cpuflags.h:85
@ CNE_CPUFLAG_FXSR
Definition: cne_cpuflags.h:83
@ CNE_CPUFLAG_PGE
Definition: cne_cpuflags.h:73
@ CNE_CPUFLAG_SSSE3
Definition: cne_cpuflags.h:38
@ CNE_CPUFLAG_PSE36
Definition: cne_cpuflags.h:77
@ CNE_CPUFLAG_X2APIC
Definition: cne_cpuflags.h:48
@ CNE_CPUFLAG_SEP
Definition: cne_cpuflags.h:71
@ CNE_CPUFLAG_HYPERVISOR
Definition: cne_cpuflags.h:58
@ CNE_CPUFLAG_AES
Definition: cne_cpuflags.h:52
@ CNE_CPUFLAG_SSE4_1
Definition: cne_cpuflags.h:46
@ CNE_CPUFLAG_AVX512BW
Definition: cne_cpuflags.h:134
@ CNE_CPUFLAG_APIC
Definition: cne_cpuflags.h:70
@ CNE_CPUFLAG_AVX512BITALG
Definition: cne_cpuflags.h:143
@ CNE_CPUFLAG_RDSEED
Definition: cne_cpuflags.h:115
@ CNE_CPUFLAG_PLN
Definition: cne_cpuflags.h:95
@ CNE_CPUFLAG_WAITPKG
Definition: cne_cpuflags.h:150
@ CNE_CPUFLAG_CLDEMOTE
Definition: cne_cpuflags.h:145
@ CNE_CPUFLAG_SSE
Definition: cne_cpuflags.h:84
@ CNE_CPUFLAG_AVX512F
Definition: cne_cpuflags.h:114
@ CNE_CPUFLAG_PSE
Definition: cne_cpuflags.h:64
@ CNE_CPUFLAG_CMPXCHG16B
Definition: cne_cpuflags.h:41
@ CNE_CPUFLAG_XD
Definition: cne_cpuflags.h:123
@ CNE_CPUFLAG_VAES
Definition: cne_cpuflags.h:139
@ CNE_CPUFLAG_AVX
Definition: cne_cpuflags.h:55
@ CNE_CPUFLAG_SSE4_2
Definition: cne_cpuflags.h:47
@ CNE_CPUFLAG_OSXSAVE
Definition: cne_cpuflags.h:54
@ CNE_CPUFLAG_MPERF_APERF_MSR
Definition: cne_cpuflags.h:100
@ CNE_CPUFLAG_HTT
Definition: cne_cpuflags.h:87
@ CNE_CPUFLAG_MONITOR
Definition: cne_cpuflags.h:32
@ CNE_CPUFLAG_VPCLMULQDQ
Definition: cne_cpuflags.h:140
CNDP_API const char * cne_cpu_get_flag_name(enum cne_cpu_flag_t feature)
CNDP_API int cne_cpu_get_flag_enabled(enum cne_cpu_flag_t feature)
CNDP_API unsigned long cne_cpu_getauxval(unsigned long type)
CNDP_API bool cne_cpu_waitpkg_is_supported(void)
CNDP_API int cne_cpu_strcmp_auxval(unsigned long type, const char *str)
CNDP_API bool cne_cpu_rtm_is_supported(void)
CNDP_API int cne_cpu_is_supported(void)