| 1 | /* Constants and data structures for x86 CPU features. |
| 2 | This file is part of the GNU C Library. |
| 3 | Copyright (C) 2008-2026 Free Software Foundation, Inc. |
| 4 | |
| 5 | The GNU C Library is free software; you can redistribute it and/or |
| 6 | modify it under the terms of the GNU Lesser General Public |
| 7 | License as published by the Free Software Foundation; either |
| 8 | version 2.1 of the License, or (at your option) any later version. |
| 9 | |
| 10 | The GNU C Library is distributed in the hope that it will be useful, |
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 13 | Lesser General Public License for more details. |
| 14 | |
| 15 | You should have received a copy of the GNU Lesser General Public |
| 16 | License along with the GNU C Library; if not, see |
| 17 | <https://www.gnu.org/licenses/>. */ |
| 18 | |
| 19 | #ifndef _SYS_PLATFORM_X86_H |
| 20 | # error "Never include <bits/platform/x86.h> directly; use <sys/platform/x86.h> instead." |
| 21 | #endif |
| 22 | |
| 23 | enum |
| 24 | { |
| 25 | CPUID_INDEX_1 = 0, |
| 26 | CPUID_INDEX_7, |
| 27 | CPUID_INDEX_80000001, |
| 28 | CPUID_INDEX_D_ECX_1, |
| 29 | CPUID_INDEX_80000007, |
| 30 | CPUID_INDEX_80000008, |
| 31 | CPUID_INDEX_7_ECX_1, |
| 32 | CPUID_INDEX_19, |
| 33 | CPUID_INDEX_14_ECX_0, |
| 34 | CPUID_INDEX_24_ECX_0 |
| 35 | }; |
| 36 | |
| 37 | struct cpuid_feature |
| 38 | { |
| 39 | unsigned int cpuid_array[4]; |
| 40 | unsigned int active_array[4]; |
| 41 | }; |
| 42 | |
| 43 | enum cpuid_register_index |
| 44 | { |
| 45 | cpuid_register_index_eax = 0, |
| 46 | cpuid_register_index_ebx, |
| 47 | cpuid_register_index_ecx, |
| 48 | cpuid_register_index_edx |
| 49 | }; |
| 50 | |
| 51 | /* CPU features. */ |
| 52 | |
| 53 | enum |
| 54 | { |
| 55 | x86_cpu_index_1_ecx |
| 56 | = (CPUID_INDEX_1 * 8 * 4 * sizeof (unsigned int) |
| 57 | + cpuid_register_index_ecx * 8 * sizeof (unsigned int)), |
| 58 | |
| 59 | x86_cpu_SSE3			= x86_cpu_index_1_ecx, |
| 60 | x86_cpu_PCLMULQDQ		= x86_cpu_index_1_ecx + 1, |
| 61 | x86_cpu_DTES64		= x86_cpu_index_1_ecx + 2, |
| 62 | x86_cpu_MONITOR		= x86_cpu_index_1_ecx + 3, |
| 63 | x86_cpu_DS_CPL		= x86_cpu_index_1_ecx + 4, |
| 64 | x86_cpu_VMX			= x86_cpu_index_1_ecx + 5, |
| 65 | x86_cpu_SMX			= x86_cpu_index_1_ecx + 6, |
| 66 | x86_cpu_EIST			= x86_cpu_index_1_ecx + 7, |
| 67 | x86_cpu_TM2			= x86_cpu_index_1_ecx + 8, |
| 68 | x86_cpu_SSSE3			= x86_cpu_index_1_ecx + 9, |
| 69 | x86_cpu_CNXT_ID		= x86_cpu_index_1_ecx + 10, |
| 70 | x86_cpu_SDBG			= x86_cpu_index_1_ecx + 11, |
| 71 | x86_cpu_FMA			= x86_cpu_index_1_ecx + 12, |
| 72 | x86_cpu_CMPXCHG16B		= x86_cpu_index_1_ecx + 13, |
| 73 | x86_cpu_XTPRUPDCTRL		= x86_cpu_index_1_ecx + 14, |
| 74 | x86_cpu_PDCM			= x86_cpu_index_1_ecx + 15, |
| 75 | x86_cpu_INDEX_1_ECX_16	= x86_cpu_index_1_ecx + 16, |
| 76 | x86_cpu_PCID			= x86_cpu_index_1_ecx + 17, |
| 77 | x86_cpu_DCA			= x86_cpu_index_1_ecx + 18, |
| 78 | x86_cpu_SSE4_1		= x86_cpu_index_1_ecx + 19, |
| 79 | x86_cpu_SSE4_2		= x86_cpu_index_1_ecx + 20, |
| 80 | x86_cpu_X2APIC		= x86_cpu_index_1_ecx + 21, |
| 81 | x86_cpu_MOVBE			= x86_cpu_index_1_ecx + 22, |
| 82 | x86_cpu_POPCNT		= x86_cpu_index_1_ecx + 23, |
| 83 | x86_cpu_TSC_DEADLINE		= x86_cpu_index_1_ecx + 24, |
| 84 | x86_cpu_AES			= x86_cpu_index_1_ecx + 25, |
| 85 | x86_cpu_XSAVE			= x86_cpu_index_1_ecx + 26, |
| 86 | x86_cpu_OSXSAVE		= x86_cpu_index_1_ecx + 27, |
| 87 | x86_cpu_AVX			= x86_cpu_index_1_ecx + 28, |
| 88 | x86_cpu_F16C			= x86_cpu_index_1_ecx + 29, |
| 89 | x86_cpu_RDRAND		= x86_cpu_index_1_ecx + 30, |
| 90 | x86_cpu_INDEX_1_ECX_31	= x86_cpu_index_1_ecx + 31, |
| 91 | |
| 92 | x86_cpu_index_1_edx |
| 93 | = (CPUID_INDEX_1 * 8 * 4 * sizeof (unsigned int) |
| 94 | + cpuid_register_index_edx * 8 * sizeof (unsigned int)), |
| 95 | |
| 96 | x86_cpu_FPU			= x86_cpu_index_1_edx, |
| 97 | x86_cpu_VME			= x86_cpu_index_1_edx + 1, |
| 98 | x86_cpu_DE			= x86_cpu_index_1_edx + 2, |
| 99 | x86_cpu_PSE			= x86_cpu_index_1_edx + 3, |
| 100 | x86_cpu_TSC			= x86_cpu_index_1_edx + 4, |
| 101 | x86_cpu_MSR			= x86_cpu_index_1_edx + 5, |
| 102 | x86_cpu_PAE			= x86_cpu_index_1_edx + 6, |
| 103 | x86_cpu_MCE			= x86_cpu_index_1_edx + 7, |
| 104 | x86_cpu_CX8			= x86_cpu_index_1_edx + 8, |
| 105 | x86_cpu_APIC			= x86_cpu_index_1_edx + 9, |
| 106 | x86_cpu_INDEX_1_EDX_10	= x86_cpu_index_1_edx + 10, |
| 107 | x86_cpu_SEP			= x86_cpu_index_1_edx + 11, |
| 108 | x86_cpu_MTRR			= x86_cpu_index_1_edx + 12, |
| 109 | x86_cpu_PGE			= x86_cpu_index_1_edx + 13, |
| 110 | x86_cpu_MCA			= x86_cpu_index_1_edx + 14, |
| 111 | x86_cpu_CMOV			= x86_cpu_index_1_edx + 15, |
| 112 | x86_cpu_PAT			= x86_cpu_index_1_edx + 16, |
| 113 | x86_cpu_PSE_36		= x86_cpu_index_1_edx + 17, |
| 114 | x86_cpu_PSN			= x86_cpu_index_1_edx + 18, |
| 115 | x86_cpu_CLFSH			= x86_cpu_index_1_edx + 19, |
| 116 | x86_cpu_INDEX_1_EDX_20	= x86_cpu_index_1_edx + 20, |
| 117 | x86_cpu_DS			= x86_cpu_index_1_edx + 21, |
| 118 | x86_cpu_ACPI			= x86_cpu_index_1_edx + 22, |
| 119 | x86_cpu_MMX			= x86_cpu_index_1_edx + 23, |
| 120 | x86_cpu_FXSR			= x86_cpu_index_1_edx + 24, |
| 121 | x86_cpu_SSE			= x86_cpu_index_1_edx + 25, |
| 122 | x86_cpu_SSE2			= x86_cpu_index_1_edx + 26, |
| 123 | x86_cpu_SS			= x86_cpu_index_1_edx + 27, |
| 124 | x86_cpu_HTT			= x86_cpu_index_1_edx + 28, |
| 125 | x86_cpu_TM			= x86_cpu_index_1_edx + 29, |
| 126 | x86_cpu_INDEX_1_EDX_30	= x86_cpu_index_1_edx + 30, |
| 127 | x86_cpu_PBE			= x86_cpu_index_1_edx + 31, |
| 128 | |
| 129 | x86_cpu_index_7_ebx |
| 130 | = (CPUID_INDEX_7 * 8 * 4 * sizeof (unsigned int) |
| 131 | + cpuid_register_index_ebx * 8 * sizeof (unsigned int)), |
| 132 | |
| 133 | x86_cpu_FSGSBASE		= x86_cpu_index_7_ebx, |
| 134 | x86_cpu_TSC_ADJUST		= x86_cpu_index_7_ebx + 1, |
| 135 | x86_cpu_SGX			= x86_cpu_index_7_ebx + 2, |
| 136 | x86_cpu_BMI1			= x86_cpu_index_7_ebx + 3, |
| 137 | x86_cpu_HLE			= x86_cpu_index_7_ebx + 4, |
| 138 | x86_cpu_AVX2			= x86_cpu_index_7_ebx + 5, |
| 139 | x86_cpu_INDEX_7_EBX_6		= x86_cpu_index_7_ebx + 6, |
| 140 | x86_cpu_SMEP			= x86_cpu_index_7_ebx + 7, |
| 141 | x86_cpu_BMI2			= x86_cpu_index_7_ebx + 8, |
| 142 | x86_cpu_ERMS			= x86_cpu_index_7_ebx + 9, |
| 143 | x86_cpu_INVPCID		= x86_cpu_index_7_ebx + 10, |
| 144 | x86_cpu_RTM			= x86_cpu_index_7_ebx + 11, |
| 145 | x86_cpu_RDT_M			= x86_cpu_index_7_ebx + 12, |
| 146 | x86_cpu_DEPR_FPU_CS_DS	= x86_cpu_index_7_ebx + 13, |
| 147 | x86_cpu_MPX			= x86_cpu_index_7_ebx + 14, |
| 148 | x86_cpu_RDT_A			= x86_cpu_index_7_ebx + 15, |
| 149 | x86_cpu_AVX512F		= x86_cpu_index_7_ebx + 16, |
| 150 | x86_cpu_AVX512DQ		= x86_cpu_index_7_ebx + 17, |
| 151 | x86_cpu_RDSEED		= x86_cpu_index_7_ebx + 18, |
| 152 | x86_cpu_ADX			= x86_cpu_index_7_ebx + 19, |
| 153 | x86_cpu_SMAP			= x86_cpu_index_7_ebx + 20, |
| 154 | x86_cpu_AVX512_IFMA		= x86_cpu_index_7_ebx + 21, |
| 155 | x86_cpu_INDEX_7_EBX_22	= x86_cpu_index_7_ebx + 22, |
| 156 | x86_cpu_CLFLUSHOPT		= x86_cpu_index_7_ebx + 23, |
| 157 | x86_cpu_CLWB			= x86_cpu_index_7_ebx + 24, |
| 158 | x86_cpu_TRACE			= x86_cpu_index_7_ebx + 25, |
| 159 | x86_cpu_AVX512PF		= x86_cpu_index_7_ebx + 26, |
| 160 | x86_cpu_AVX512ER		= x86_cpu_index_7_ebx + 27, |
| 161 | x86_cpu_AVX512CD		= x86_cpu_index_7_ebx + 28, |
| 162 | x86_cpu_SHA			= x86_cpu_index_7_ebx + 29, |
| 163 | x86_cpu_AVX512BW		= x86_cpu_index_7_ebx + 30, |
| 164 | x86_cpu_AVX512VL		= x86_cpu_index_7_ebx + 31, |
| 165 | |
| 166 | x86_cpu_index_7_ecx |
| 167 | = (CPUID_INDEX_7 * 8 * 4 * sizeof (unsigned int) |
| 168 | + cpuid_register_index_ecx * 8 * sizeof (unsigned int)), |
| 169 | |
| 170 | x86_cpu_PREFETCHWT1		= x86_cpu_index_7_ecx, |
| 171 | x86_cpu_AVX512_VBMI		= x86_cpu_index_7_ecx + 1, |
| 172 | x86_cpu_UMIP			= x86_cpu_index_7_ecx + 2, |
| 173 | x86_cpu_PKU			= x86_cpu_index_7_ecx + 3, |
| 174 | x86_cpu_OSPKE			= x86_cpu_index_7_ecx + 4, |
| 175 | x86_cpu_WAITPKG		= x86_cpu_index_7_ecx + 5, |
| 176 | x86_cpu_AVX512_VBMI2		= x86_cpu_index_7_ecx + 6, |
| 177 | x86_cpu_SHSTK			= x86_cpu_index_7_ecx + 7, |
| 178 | x86_cpu_GFNI			= x86_cpu_index_7_ecx + 8, |
| 179 | x86_cpu_VAES			= x86_cpu_index_7_ecx + 9, |
| 180 | x86_cpu_VPCLMULQDQ		= x86_cpu_index_7_ecx + 10, |
| 181 | x86_cpu_AVX512_VNNI		= x86_cpu_index_7_ecx + 11, |
| 182 | x86_cpu_AVX512_BITALG		= x86_cpu_index_7_ecx + 12, |
| 183 | x86_cpu_INDEX_7_ECX_13	= x86_cpu_index_7_ecx + 13, |
| 184 | x86_cpu_AVX512_VPOPCNTDQ	= x86_cpu_index_7_ecx + 14, |
| 185 | x86_cpu_INDEX_7_ECX_15	= x86_cpu_index_7_ecx + 15, |
| 186 | x86_cpu_LA57			= x86_cpu_index_7_ecx + 16, |
| 187 | /* Note: Bits 17-21: The value of MAWAU used by the BNDLDX and BNDSTX |
| 188 | instructions in 64-bit mode. */ |
| 189 | x86_cpu_RDPID			= x86_cpu_index_7_ecx + 22, |
| 190 | x86_cpu_KL			= x86_cpu_index_7_ecx + 23, |
| 191 | x86_cpu_BUS_LOCK_DETECT	= x86_cpu_index_7_ecx + 24, |
| 192 | x86_cpu_CLDEMOTE		= x86_cpu_index_7_ecx + 25, |
| 193 | x86_cpu_INDEX_7_ECX_26	= x86_cpu_index_7_ecx + 26, |
| 194 | x86_cpu_MOVDIRI		= x86_cpu_index_7_ecx + 27, |
| 195 | x86_cpu_MOVDIR64B		= x86_cpu_index_7_ecx + 28, |
| 196 | x86_cpu_ENQCMD		= x86_cpu_index_7_ecx + 29, |
| 197 | x86_cpu_SGX_LC		= x86_cpu_index_7_ecx + 30, |
| 198 | x86_cpu_PKS			= x86_cpu_index_7_ecx + 31, |
| 199 | |
| 200 | x86_cpu_index_7_edx |
| 201 | = (CPUID_INDEX_7 * 8 * 4 * sizeof (unsigned int) |
| 202 | + cpuid_register_index_edx * 8 * sizeof (unsigned int)), |
| 203 | |
| 204 | x86_cpu_INDEX_7_EDX_0		= x86_cpu_index_7_edx, |
| 205 | x86_cpu_SGX_KEYS		= x86_cpu_index_7_edx + 1, |
| 206 | x86_cpu_AVX512_4VNNIW		= x86_cpu_index_7_edx + 2, |
| 207 | x86_cpu_AVX512_4FMAPS		= x86_cpu_index_7_edx + 3, |
| 208 | x86_cpu_FSRM			= x86_cpu_index_7_edx + 4, |
| 209 | x86_cpu_UINTR			= x86_cpu_index_7_edx + 5, |
| 210 | x86_cpu_INDEX_7_EDX_6		= x86_cpu_index_7_edx + 6, |
| 211 | x86_cpu_INDEX_7_EDX_7		= x86_cpu_index_7_edx + 7, |
| 212 | x86_cpu_AVX512_VP2INTERSECT	= x86_cpu_index_7_edx + 8, |
| 213 | x86_cpu_INDEX_7_EDX_9		= x86_cpu_index_7_edx + 9, |
| 214 | x86_cpu_MD_CLEAR		= x86_cpu_index_7_edx + 10, |
| 215 | x86_cpu_RTM_ALWAYS_ABORT	= x86_cpu_index_7_edx + 11, |
| 216 | x86_cpu_INDEX_7_EDX_12	= x86_cpu_index_7_edx + 12, |
| 217 | x86_cpu_RTM_FORCE_ABORT	= x86_cpu_index_7_edx + 13, |
| 218 | x86_cpu_SERIALIZE		= x86_cpu_index_7_edx + 14, |
| 219 | x86_cpu_HYBRID		= x86_cpu_index_7_edx + 15, |
| 220 | x86_cpu_TSXLDTRK		= x86_cpu_index_7_edx + 16, |
| 221 | x86_cpu_INDEX_7_EDX_17	= x86_cpu_index_7_edx + 17, |
| 222 | x86_cpu_PCONFIG		= x86_cpu_index_7_edx + 18, |
| 223 | x86_cpu_LBR			= x86_cpu_index_7_edx + 19, |
| 224 | x86_cpu_IBT			= x86_cpu_index_7_edx + 20, |
| 225 | x86_cpu_INDEX_7_EDX_21	= x86_cpu_index_7_edx + 21, |
| 226 | x86_cpu_AMX_BF16		= x86_cpu_index_7_edx + 22, |
| 227 | x86_cpu_AVX512_FP16		= x86_cpu_index_7_edx + 23, |
| 228 | x86_cpu_AMX_TILE		= x86_cpu_index_7_edx + 24, |
| 229 | x86_cpu_AMX_INT8		= x86_cpu_index_7_edx + 25, |
| 230 | x86_cpu_IBRS_IBPB		= x86_cpu_index_7_edx + 26, |
| 231 | x86_cpu_STIBP			= x86_cpu_index_7_edx + 27, |
| 232 | x86_cpu_L1D_FLUSH		= x86_cpu_index_7_edx + 28, |
| 233 | x86_cpu_ARCH_CAPABILITIES	= x86_cpu_index_7_edx + 29, |
| 234 | x86_cpu_CORE_CAPABILITIES	= x86_cpu_index_7_edx + 30, |
| 235 | x86_cpu_SSBD			= x86_cpu_index_7_edx + 31, |
| 236 | |
| 237 | x86_cpu_index_80000001_ecx |
| 238 | = (CPUID_INDEX_80000001 * 8 * 4 * sizeof (unsigned int) |
| 239 | + cpuid_register_index_ecx * 8 * sizeof (unsigned int)), |
| 240 | |
| 241 | x86_cpu_LAHF64_SAHF64		= x86_cpu_index_80000001_ecx, |
| 242 | x86_cpu_SVM			= x86_cpu_index_80000001_ecx + 2, |
| 243 | x86_cpu_LZCNT			= x86_cpu_index_80000001_ecx + 5, |
| 244 | x86_cpu_SSE4A			= x86_cpu_index_80000001_ecx + 6, |
| 245 | x86_cpu_PREFETCHW		= x86_cpu_index_80000001_ecx + 8, |
| 246 | x86_cpu_XOP			= x86_cpu_index_80000001_ecx + 11, |
| 247 | x86_cpu_LWP			= x86_cpu_index_80000001_ecx + 15, |
| 248 | x86_cpu_FMA4			= x86_cpu_index_80000001_ecx + 16, |
| 249 | x86_cpu_TBM			= x86_cpu_index_80000001_ecx + 21, |
| 250 | |
| 251 | x86_cpu_index_80000001_edx |
| 252 | = (CPUID_INDEX_80000001 * 8 * 4 * sizeof (unsigned int) |
| 253 | + cpuid_register_index_edx * 8 * sizeof (unsigned int)), |
| 254 | |
| 255 | x86_cpu_SYSCALL_SYSRET	= x86_cpu_index_80000001_edx + 11, |
| 256 | x86_cpu_NX			= x86_cpu_index_80000001_edx + 20, |
| 257 | x86_cpu_PAGE1GB		= x86_cpu_index_80000001_edx + 26, |
| 258 | x86_cpu_RDTSCP		= x86_cpu_index_80000001_edx + 27, |
| 259 | x86_cpu_LM			= x86_cpu_index_80000001_edx + 29, |
| 260 | |
| 261 | x86_cpu_index_d_ecx_1_eax |
| 262 | = (CPUID_INDEX_D_ECX_1 * 8 * 4 * sizeof (unsigned int) |
| 263 | + cpuid_register_index_eax * 8 * sizeof (unsigned int)), |
| 264 | |
| 265 | x86_cpu_XSAVEOPT		= x86_cpu_index_d_ecx_1_eax, |
| 266 | x86_cpu_XSAVEC		= x86_cpu_index_d_ecx_1_eax + 1, |
| 267 | x86_cpu_XGETBV_ECX_1		= x86_cpu_index_d_ecx_1_eax + 2, |
| 268 | x86_cpu_XSAVES		= x86_cpu_index_d_ecx_1_eax + 3, |
| 269 | x86_cpu_XFD			= x86_cpu_index_d_ecx_1_eax + 4, |
| 270 | |
| 271 | x86_cpu_index_80000007_edx |
| 272 | = (CPUID_INDEX_80000007 * 8 * 4 * sizeof (unsigned int) |
| 273 | + cpuid_register_index_edx * 8 * sizeof (unsigned int)), |
| 274 | |
| 275 | x86_cpu_INVARIANT_TSC		= x86_cpu_index_80000007_edx + 8, |
| 276 | |
| 277 | x86_cpu_index_80000008_ebx |
| 278 | = (CPUID_INDEX_80000008 * 8 * 4 * sizeof (unsigned int) |
| 279 | + cpuid_register_index_ebx * 8 * sizeof (unsigned int)), |
| 280 | |
| 281 | x86_cpu_WBNOINVD		= x86_cpu_index_80000008_ebx + 9, |
| 282 | x86_cpu_AMD_IBPB	 = x86_cpu_index_80000008_ebx + 12, |
| 283 | x86_cpu_AMD_IBRS	 = x86_cpu_index_80000008_ebx + 14, |
| 284 | x86_cpu_AMD_STIBP	 = x86_cpu_index_80000008_ebx + 15, |
| 285 | x86_cpu_AMD_SSBD	 = x86_cpu_index_80000008_ebx + 24, |
| 286 | x86_cpu_AMD_VIRT_SSBD	 = x86_cpu_index_80000008_ebx + 25, |
| 287 | |
| 288 | x86_cpu_index_7_ecx_1_eax |
| 289 | = (CPUID_INDEX_7_ECX_1 * 8 * 4 * sizeof (unsigned int) |
| 290 | + cpuid_register_index_eax * 8 * sizeof (unsigned int)), |
| 291 | |
| 292 | x86_cpu_RAO_INT		= x86_cpu_index_7_ecx_1_eax + 3, |
| 293 | x86_cpu_AVX_VNNI		= x86_cpu_index_7_ecx_1_eax + 4, |
| 294 | x86_cpu_AVX512_BF16		= x86_cpu_index_7_ecx_1_eax + 5, |
| 295 | x86_cpu_LASS			= x86_cpu_index_7_ecx_1_eax + 6, |
| 296 | x86_cpu_CMPCCXADD		= x86_cpu_index_7_ecx_1_eax + 7, |
| 297 | x86_cpu_ArchPerfmonExt	= x86_cpu_index_7_ecx_1_eax + 8, |
| 298 | x86_cpu_FZLRM			= x86_cpu_index_7_ecx_1_eax + 10, |
| 299 | x86_cpu_FSRS			= x86_cpu_index_7_ecx_1_eax + 11, |
| 300 | x86_cpu_FSRCS			= x86_cpu_index_7_ecx_1_eax + 12, |
| 301 | x86_cpu_WRMSRNS		= x86_cpu_index_7_ecx_1_eax + 19, |
| 302 | x86_cpu_AMX_FP16		= x86_cpu_index_7_ecx_1_eax + 21, |
| 303 | x86_cpu_HRESET		= x86_cpu_index_7_ecx_1_eax + 22, |
| 304 | x86_cpu_AVX_IFMA		= x86_cpu_index_7_ecx_1_eax + 23, |
| 305 | x86_cpu_LAM			= x86_cpu_index_7_ecx_1_eax + 26, |
| 306 | x86_cpu_MSRLIST		= x86_cpu_index_7_ecx_1_eax + 27, |
| 307 | |
| 308 | x86_cpu_index_7_ecx_1_edx |
| 309 | = (CPUID_INDEX_7_ECX_1 * 8 * 4 * sizeof (unsigned int) |
| 310 | + cpuid_register_index_edx * 8 * sizeof (unsigned int)), |
| 311 | |
| 312 | x86_cpu_AVX_VNNI_INT8		= x86_cpu_index_7_ecx_1_edx + 4, |
| 313 | x86_cpu_AVX_NE_CONVERT	= x86_cpu_index_7_ecx_1_edx + 5, |
| 314 | x86_cpu_AMX_COMPLEX		= x86_cpu_index_7_ecx_1_edx + 8, |
| 315 | x86_cpu_PREFETCHI		= x86_cpu_index_7_ecx_1_edx + 14, |
| 316 | x86_cpu_AVX10			= x86_cpu_index_7_ecx_1_edx + 19, |
| 317 | x86_cpu_APX_F			= x86_cpu_index_7_ecx_1_edx + 21, |
| 318 | |
| 319 | x86_cpu_index_19_ebx |
| 320 | = (CPUID_INDEX_19 * 8 * 4 * sizeof (unsigned int) |
| 321 | + cpuid_register_index_ebx * 8 * sizeof (unsigned int)), |
| 322 | |
| 323 | x86_cpu_AESKLE		= x86_cpu_index_19_ebx, |
| 324 | x86_cpu_WIDE_KL		= x86_cpu_index_19_ebx + 2, |
| 325 | |
| 326 | x86_cpu_index_14_ecx_0_ebx |
| 327 | = (CPUID_INDEX_14_ECX_0 * 8 * 4 * sizeof (unsigned int) |
| 328 | + cpuid_register_index_ebx * 8 * sizeof (unsigned int)), |
| 329 | |
| 330 | x86_cpu_PTWRITE		= x86_cpu_index_14_ecx_0_ebx + 4, |
| 331 | |
| 332 | x86_cpu_index_24_ecx_0_ebx |
| 333 | = (CPUID_INDEX_24_ECX_0 * 8 * 4 * sizeof (unsigned int) |
| 334 | + cpuid_register_index_ebx * 8 * sizeof (unsigned int)), |
| 335 | |
| 336 | x86_cpu_AVX10_XMM = x86_cpu_index_24_ecx_0_ebx + 16, |
| 337 | x86_cpu_AVX10_YMM = x86_cpu_index_24_ecx_0_ebx + 17, |
| 338 | x86_cpu_AVX10_ZMM = x86_cpu_index_24_ecx_0_ebx + 18, |
| 339 | }; |