1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2010-2014 Intel Corporation 3 */ 4 5 #ifndef _RTE_CPUFLAGS_X86_64_H_ 6 #define _RTE_CPUFLAGS_X86_64_H_ 7 8 enum rte_cpu_flag_t { 9 /* (EAX 01h) ECX features*/ 10 RTE_CPUFLAG_SSE3 = 0, /**< SSE3 */ 11 RTE_CPUFLAG_PCLMULQDQ, /**< PCLMULQDQ */ 12 RTE_CPUFLAG_DTES64, /**< DTES64 */ 13 RTE_CPUFLAG_MONITOR, /**< MONITOR */ 14 RTE_CPUFLAG_DS_CPL, /**< DS_CPL */ 15 RTE_CPUFLAG_VMX, /**< VMX */ 16 RTE_CPUFLAG_SMX, /**< SMX */ 17 RTE_CPUFLAG_EIST, /**< EIST */ 18 RTE_CPUFLAG_TM2, /**< TM2 */ 19 RTE_CPUFLAG_SSSE3, /**< SSSE3 */ 20 RTE_CPUFLAG_CNXT_ID, /**< CNXT_ID */ 21 RTE_CPUFLAG_FMA, /**< FMA */ 22 RTE_CPUFLAG_CMPXCHG16B, /**< CMPXCHG16B */ 23 RTE_CPUFLAG_XTPR, /**< XTPR */ 24 RTE_CPUFLAG_PDCM, /**< PDCM */ 25 RTE_CPUFLAG_PCID, /**< PCID */ 26 RTE_CPUFLAG_DCA, /**< DCA */ 27 RTE_CPUFLAG_SSE4_1, /**< SSE4_1 */ 28 RTE_CPUFLAG_SSE4_2, /**< SSE4_2 */ 29 RTE_CPUFLAG_X2APIC, /**< X2APIC */ 30 RTE_CPUFLAG_MOVBE, /**< MOVBE */ 31 RTE_CPUFLAG_POPCNT, /**< POPCNT */ 32 RTE_CPUFLAG_TSC_DEADLINE, /**< TSC_DEADLINE */ 33 RTE_CPUFLAG_AES, /**< AES */ 34 RTE_CPUFLAG_XSAVE, /**< XSAVE */ 35 RTE_CPUFLAG_OSXSAVE, /**< OSXSAVE */ 36 RTE_CPUFLAG_AVX, /**< AVX */ 37 RTE_CPUFLAG_F16C, /**< F16C */ 38 RTE_CPUFLAG_RDRAND, /**< RDRAND */ 39 RTE_CPUFLAG_HYPERVISOR, /**< Running in a VM */ 40 41 /* (EAX 01h) EDX features */ 42 RTE_CPUFLAG_FPU, /**< FPU */ 43 RTE_CPUFLAG_VME, /**< VME */ 44 RTE_CPUFLAG_DE, /**< DE */ 45 RTE_CPUFLAG_PSE, /**< PSE */ 46 RTE_CPUFLAG_TSC, /**< TSC */ 47 RTE_CPUFLAG_MSR, /**< MSR */ 48 RTE_CPUFLAG_PAE, /**< PAE */ 49 RTE_CPUFLAG_MCE, /**< MCE */ 50 RTE_CPUFLAG_CX8, /**< CX8 */ 51 RTE_CPUFLAG_APIC, /**< APIC */ 52 RTE_CPUFLAG_SEP, /**< SEP */ 53 RTE_CPUFLAG_MTRR, /**< MTRR */ 54 RTE_CPUFLAG_PGE, /**< PGE */ 55 RTE_CPUFLAG_MCA, /**< MCA */ 56 RTE_CPUFLAG_CMOV, /**< CMOV */ 57 RTE_CPUFLAG_PAT, /**< PAT */ 58 RTE_CPUFLAG_PSE36, /**< PSE36 */ 59 RTE_CPUFLAG_PSN, /**< PSN */ 60 RTE_CPUFLAG_CLFSH, /**< CLFSH */ 61 RTE_CPUFLAG_DS, /**< DS */ 62 RTE_CPUFLAG_ACPI, /**< ACPI */ 63 RTE_CPUFLAG_MMX, /**< MMX */ 64 RTE_CPUFLAG_FXSR, /**< FXSR */ 65 RTE_CPUFLAG_SSE, /**< SSE */ 66 RTE_CPUFLAG_SSE2, /**< SSE2 */ 67 RTE_CPUFLAG_SS, /**< SS */ 68 RTE_CPUFLAG_HTT, /**< HTT */ 69 RTE_CPUFLAG_TM, /**< TM */ 70 RTE_CPUFLAG_PBE, /**< PBE */ 71 72 /* (EAX 06h) EAX features */ 73 RTE_CPUFLAG_DIGTEMP, /**< DIGTEMP */ 74 RTE_CPUFLAG_TRBOBST, /**< TRBOBST */ 75 RTE_CPUFLAG_ARAT, /**< ARAT */ 76 RTE_CPUFLAG_PLN, /**< PLN */ 77 RTE_CPUFLAG_ECMD, /**< ECMD */ 78 RTE_CPUFLAG_PTM, /**< PTM */ 79 80 /* (EAX 06h) ECX features */ 81 RTE_CPUFLAG_MPERF_APERF_MSR, /**< MPERF_APERF_MSR */ 82 RTE_CPUFLAG_ACNT2, /**< ACNT2 */ 83 RTE_CPUFLAG_ENERGY_EFF, /**< ENERGY_EFF */ 84 85 /* (EAX 07h, ECX 0h) EBX features */ 86 RTE_CPUFLAG_FSGSBASE, /**< FSGSBASE */ 87 RTE_CPUFLAG_BMI1, /**< BMI1 */ 88 RTE_CPUFLAG_HLE, /**< Hardware Lock elision */ 89 RTE_CPUFLAG_AVX2, /**< AVX2 */ 90 RTE_CPUFLAG_SMEP, /**< SMEP */ 91 RTE_CPUFLAG_BMI2, /**< BMI2 */ 92 RTE_CPUFLAG_ERMS, /**< ERMS */ 93 RTE_CPUFLAG_INVPCID, /**< INVPCID */ 94 RTE_CPUFLAG_RTM, /**< Transactional memory */ 95 RTE_CPUFLAG_AVX512F, /**< AVX512F */ 96 RTE_CPUFLAG_RDSEED, /**< RDSEED instruction */ 97 98 /* (EAX 80000001h) ECX features */ 99 RTE_CPUFLAG_LAHF_SAHF, /**< LAHF_SAHF */ 100 RTE_CPUFLAG_LZCNT, /**< LZCNT */ 101 102 /* (EAX 80000001h) EDX features */ 103 RTE_CPUFLAG_SYSCALL, /**< SYSCALL */ 104 RTE_CPUFLAG_XD, /**< XD */ 105 RTE_CPUFLAG_1GB_PG, /**< 1GB_PG */ 106 RTE_CPUFLAG_RDTSCP, /**< RDTSCP */ 107 RTE_CPUFLAG_EM64T, /**< EM64T */ 108 109 /* (EAX 80000007h) EDX features */ 110 RTE_CPUFLAG_INVTSC, /**< INVTSC */ 111 112 RTE_CPUFLAG_AVX512DQ, /**< AVX512 Doubleword and Quadword */ 113 RTE_CPUFLAG_AVX512IFMA, /**< AVX512 Integer Fused Multiply-Add */ 114 RTE_CPUFLAG_AVX512CD, /**< AVX512 Conflict Detection*/ 115 RTE_CPUFLAG_AVX512BW, /**< AVX512 Byte and Word */ 116 RTE_CPUFLAG_AVX512VL, /**< AVX512 Vector Length */ 117 RTE_CPUFLAG_AVX512VBMI, /**< AVX512 Vector Bit Manipulation */ 118 RTE_CPUFLAG_AVX512VBMI2, /**< AVX512 Vector Bit Manipulation 2 */ 119 RTE_CPUFLAG_GFNI, /**< Galois Field New Instructions */ 120 RTE_CPUFLAG_VAES, /**< Vector AES */ 121 RTE_CPUFLAG_VPCLMULQDQ, /**< Vector Carry-less Multiply */ 122 RTE_CPUFLAG_AVX512VNNI, 123 /**< AVX512 Vector Neural Network Instructions */ 124 RTE_CPUFLAG_AVX512BITALG, /**< AVX512 Bit Algorithms */ 125 RTE_CPUFLAG_AVX512VPOPCNTDQ, /**< AVX512 Vector Popcount */ 126 RTE_CPUFLAG_CLDEMOTE, /**< Cache Line Demote */ 127 RTE_CPUFLAG_MOVDIRI, /**< Direct Store Instructions */ 128 RTE_CPUFLAG_MOVDIR64B, /**< Direct Store Instructions 64B */ 129 RTE_CPUFLAG_AVX512VP2INTERSECT, /**< AVX512 Two Register Intersection */ 130 131 RTE_CPUFLAG_WAITPKG, /**< UMONITOR/UMWAIT/TPAUSE */ 132 RTE_CPUFLAG_MONITORX, /**< MONITORX */ 133 }; 134 135 #include "generic/rte_cpuflags.h" 136 137 #endif /* _RTE_CPUFLAGS_X86_64_H_ */ 138