@@ -222,6 +222,22 @@ Leaf (EAX = 23H).
@item
@code{AVX} -- The AVX instruction extensions.
+@item
+@code{AVX10} -- The AVX10 instruction extensions.
+
+@item
+@code{AVX10_XMM} -- Whether AVX10 includes xmm registers.
+
+@item
+@code{AVX10_YMM} -- Whether AVX10 includes ymm registers.
+
+@item
+@code{AVX10_ZMM} -- Whether AVX10 includes zmm registers.
+
+@item
+@code{AVX10_V1}..@code{AVX10_V255} -- Whether AVX10 supports a given
+version.
+
@item
@code{AVX2} -- The AVX2 instruction extensions.
@@ -760,3 +776,15 @@ avx_active (void)
return CPU_FEATURE_ACTIVE (AVX);
@}
@end smallexample
+
+You could query @code{AVX10} version number with:
+
+@smallexample
+#include <sys/platform/x86.h>
+
+int
+has_avx10_version1 (void)
+@{
+ return CPU_FEATURE_ACTIVE (AVX10_V1); // Up to AVX10_V255
+@}
+@end smallexample
@@ -30,7 +30,8 @@ enum
CPUID_INDEX_80000008,
CPUID_INDEX_7_ECX_1,
CPUID_INDEX_19,
- CPUID_INDEX_14_ECX_0
+ CPUID_INDEX_14_ECX_0,
+ CPUID_INDEX_24_ECX_0
};
struct cpuid_feature
@@ -312,6 +313,7 @@ enum
x86_cpu_AVX_NE_CONVERT = x86_cpu_index_7_ecx_1_edx + 5,
x86_cpu_AMX_COMPLEX = x86_cpu_index_7_ecx_1_edx + 8,
x86_cpu_PREFETCHI = x86_cpu_index_7_ecx_1_edx + 14,
+ x86_cpu_AVX10 = x86_cpu_index_7_ecx_1_edx + 19,
x86_cpu_APX_F = x86_cpu_index_7_ecx_1_edx + 21,
x86_cpu_index_19_ebx
@@ -325,5 +327,280 @@ enum
= (CPUID_INDEX_14_ECX_0 * 8 * 4 * sizeof (unsigned int)
+ cpuid_register_index_ebx * 8 * sizeof (unsigned int)),
- x86_cpu_PTWRITE = x86_cpu_index_14_ecx_0_ebx + 4
+ x86_cpu_PTWRITE = x86_cpu_index_14_ecx_0_ebx + 4,
+
+ x86_cpu_index_24_ecx_0_ebx
+ = (CPUID_INDEX_24_ECX_0 * 8 * 4 * sizeof (unsigned int)
+ + cpuid_register_index_ebx * 8 * sizeof (unsigned int)),
+
+ x86_cpu_AVX10_XMM = x86_cpu_index_24_ecx_0_ebx + 16,
+ x86_cpu_AVX10_YMM = x86_cpu_index_24_ecx_0_ebx + 17,
+ x86_cpu_AVX10_ZMM = x86_cpu_index_24_ecx_0_ebx + 18,
+
+/* AVX10 version information is handled differently from all other CPUID
+ related logic. Rather than being encoded in cpuid as discrete booleans, the
+ AVX10 version is encoded is a full byte that represents the version number
+ (greater than or equal to 1). Since the CPUID API is only able to handle
+ boolean returns, we enumerate `x86_cpu_AVX10_V{1..255}` which can be queried
+ by the user and have special logic in `x86_cpu_{present,active}`. This is
+ unpleasant on our end, but is the only way to make the existing API also
+ support version queries. */
+
+ /* All 1s should never be a value feature index. */
+ x86_cpu_AVX10_V255 = ~0,
+ x86_cpu_AVX10_V254 = x86_cpu_AVX10_V255 - 1,
+ x86_cpu_AVX10_V253 = x86_cpu_AVX10_V254 - 1,
+ x86_cpu_AVX10_V252 = x86_cpu_AVX10_V253 - 1,
+ x86_cpu_AVX10_V251 = x86_cpu_AVX10_V252 - 1,
+ x86_cpu_AVX10_V250 = x86_cpu_AVX10_V251 - 1,
+ x86_cpu_AVX10_V249 = x86_cpu_AVX10_V250 - 1,
+ x86_cpu_AVX10_V248 = x86_cpu_AVX10_V249 - 1,
+ x86_cpu_AVX10_V247 = x86_cpu_AVX10_V248 - 1,
+ x86_cpu_AVX10_V246 = x86_cpu_AVX10_V247 - 1,
+ x86_cpu_AVX10_V245 = x86_cpu_AVX10_V246 - 1,
+ x86_cpu_AVX10_V244 = x86_cpu_AVX10_V245 - 1,
+ x86_cpu_AVX10_V243 = x86_cpu_AVX10_V244 - 1,
+ x86_cpu_AVX10_V242 = x86_cpu_AVX10_V243 - 1,
+ x86_cpu_AVX10_V241 = x86_cpu_AVX10_V242 - 1,
+ x86_cpu_AVX10_V240 = x86_cpu_AVX10_V241 - 1,
+ x86_cpu_AVX10_V239 = x86_cpu_AVX10_V240 - 1,
+ x86_cpu_AVX10_V238 = x86_cpu_AVX10_V239 - 1,
+ x86_cpu_AVX10_V237 = x86_cpu_AVX10_V238 - 1,
+ x86_cpu_AVX10_V236 = x86_cpu_AVX10_V237 - 1,
+ x86_cpu_AVX10_V235 = x86_cpu_AVX10_V236 - 1,
+ x86_cpu_AVX10_V234 = x86_cpu_AVX10_V235 - 1,
+ x86_cpu_AVX10_V233 = x86_cpu_AVX10_V234 - 1,
+ x86_cpu_AVX10_V232 = x86_cpu_AVX10_V233 - 1,
+ x86_cpu_AVX10_V231 = x86_cpu_AVX10_V232 - 1,
+ x86_cpu_AVX10_V230 = x86_cpu_AVX10_V231 - 1,
+ x86_cpu_AVX10_V229 = x86_cpu_AVX10_V230 - 1,
+ x86_cpu_AVX10_V228 = x86_cpu_AVX10_V229 - 1,
+ x86_cpu_AVX10_V227 = x86_cpu_AVX10_V228 - 1,
+ x86_cpu_AVX10_V226 = x86_cpu_AVX10_V227 - 1,
+ x86_cpu_AVX10_V225 = x86_cpu_AVX10_V226 - 1,
+ x86_cpu_AVX10_V224 = x86_cpu_AVX10_V225 - 1,
+ x86_cpu_AVX10_V223 = x86_cpu_AVX10_V224 - 1,
+ x86_cpu_AVX10_V222 = x86_cpu_AVX10_V223 - 1,
+ x86_cpu_AVX10_V221 = x86_cpu_AVX10_V222 - 1,
+ x86_cpu_AVX10_V220 = x86_cpu_AVX10_V221 - 1,
+ x86_cpu_AVX10_V219 = x86_cpu_AVX10_V220 - 1,
+ x86_cpu_AVX10_V218 = x86_cpu_AVX10_V219 - 1,
+ x86_cpu_AVX10_V217 = x86_cpu_AVX10_V218 - 1,
+ x86_cpu_AVX10_V216 = x86_cpu_AVX10_V217 - 1,
+ x86_cpu_AVX10_V215 = x86_cpu_AVX10_V216 - 1,
+ x86_cpu_AVX10_V214 = x86_cpu_AVX10_V215 - 1,
+ x86_cpu_AVX10_V213 = x86_cpu_AVX10_V214 - 1,
+ x86_cpu_AVX10_V212 = x86_cpu_AVX10_V213 - 1,
+ x86_cpu_AVX10_V211 = x86_cpu_AVX10_V212 - 1,
+ x86_cpu_AVX10_V210 = x86_cpu_AVX10_V211 - 1,
+ x86_cpu_AVX10_V209 = x86_cpu_AVX10_V210 - 1,
+ x86_cpu_AVX10_V208 = x86_cpu_AVX10_V209 - 1,
+ x86_cpu_AVX10_V207 = x86_cpu_AVX10_V208 - 1,
+ x86_cpu_AVX10_V206 = x86_cpu_AVX10_V207 - 1,
+ x86_cpu_AVX10_V205 = x86_cpu_AVX10_V206 - 1,
+ x86_cpu_AVX10_V204 = x86_cpu_AVX10_V205 - 1,
+ x86_cpu_AVX10_V203 = x86_cpu_AVX10_V204 - 1,
+ x86_cpu_AVX10_V202 = x86_cpu_AVX10_V203 - 1,
+ x86_cpu_AVX10_V201 = x86_cpu_AVX10_V202 - 1,
+ x86_cpu_AVX10_V200 = x86_cpu_AVX10_V201 - 1,
+ x86_cpu_AVX10_V199 = x86_cpu_AVX10_V200 - 1,
+ x86_cpu_AVX10_V198 = x86_cpu_AVX10_V199 - 1,
+ x86_cpu_AVX10_V197 = x86_cpu_AVX10_V198 - 1,
+ x86_cpu_AVX10_V196 = x86_cpu_AVX10_V197 - 1,
+ x86_cpu_AVX10_V195 = x86_cpu_AVX10_V196 - 1,
+ x86_cpu_AVX10_V194 = x86_cpu_AVX10_V195 - 1,
+ x86_cpu_AVX10_V193 = x86_cpu_AVX10_V194 - 1,
+ x86_cpu_AVX10_V192 = x86_cpu_AVX10_V193 - 1,
+ x86_cpu_AVX10_V191 = x86_cpu_AVX10_V192 - 1,
+ x86_cpu_AVX10_V190 = x86_cpu_AVX10_V191 - 1,
+ x86_cpu_AVX10_V189 = x86_cpu_AVX10_V190 - 1,
+ x86_cpu_AVX10_V188 = x86_cpu_AVX10_V189 - 1,
+ x86_cpu_AVX10_V187 = x86_cpu_AVX10_V188 - 1,
+ x86_cpu_AVX10_V186 = x86_cpu_AVX10_V187 - 1,
+ x86_cpu_AVX10_V185 = x86_cpu_AVX10_V186 - 1,
+ x86_cpu_AVX10_V184 = x86_cpu_AVX10_V185 - 1,
+ x86_cpu_AVX10_V183 = x86_cpu_AVX10_V184 - 1,
+ x86_cpu_AVX10_V182 = x86_cpu_AVX10_V183 - 1,
+ x86_cpu_AVX10_V181 = x86_cpu_AVX10_V182 - 1,
+ x86_cpu_AVX10_V180 = x86_cpu_AVX10_V181 - 1,
+ x86_cpu_AVX10_V179 = x86_cpu_AVX10_V180 - 1,
+ x86_cpu_AVX10_V178 = x86_cpu_AVX10_V179 - 1,
+ x86_cpu_AVX10_V177 = x86_cpu_AVX10_V178 - 1,
+ x86_cpu_AVX10_V176 = x86_cpu_AVX10_V177 - 1,
+ x86_cpu_AVX10_V175 = x86_cpu_AVX10_V176 - 1,
+ x86_cpu_AVX10_V174 = x86_cpu_AVX10_V175 - 1,
+ x86_cpu_AVX10_V173 = x86_cpu_AVX10_V174 - 1,
+ x86_cpu_AVX10_V172 = x86_cpu_AVX10_V173 - 1,
+ x86_cpu_AVX10_V171 = x86_cpu_AVX10_V172 - 1,
+ x86_cpu_AVX10_V170 = x86_cpu_AVX10_V171 - 1,
+ x86_cpu_AVX10_V169 = x86_cpu_AVX10_V170 - 1,
+ x86_cpu_AVX10_V168 = x86_cpu_AVX10_V169 - 1,
+ x86_cpu_AVX10_V167 = x86_cpu_AVX10_V168 - 1,
+ x86_cpu_AVX10_V166 = x86_cpu_AVX10_V167 - 1,
+ x86_cpu_AVX10_V165 = x86_cpu_AVX10_V166 - 1,
+ x86_cpu_AVX10_V164 = x86_cpu_AVX10_V165 - 1,
+ x86_cpu_AVX10_V163 = x86_cpu_AVX10_V164 - 1,
+ x86_cpu_AVX10_V162 = x86_cpu_AVX10_V163 - 1,
+ x86_cpu_AVX10_V161 = x86_cpu_AVX10_V162 - 1,
+ x86_cpu_AVX10_V160 = x86_cpu_AVX10_V161 - 1,
+ x86_cpu_AVX10_V159 = x86_cpu_AVX10_V160 - 1,
+ x86_cpu_AVX10_V158 = x86_cpu_AVX10_V159 - 1,
+ x86_cpu_AVX10_V157 = x86_cpu_AVX10_V158 - 1,
+ x86_cpu_AVX10_V156 = x86_cpu_AVX10_V157 - 1,
+ x86_cpu_AVX10_V155 = x86_cpu_AVX10_V156 - 1,
+ x86_cpu_AVX10_V154 = x86_cpu_AVX10_V155 - 1,
+ x86_cpu_AVX10_V153 = x86_cpu_AVX10_V154 - 1,
+ x86_cpu_AVX10_V152 = x86_cpu_AVX10_V153 - 1,
+ x86_cpu_AVX10_V151 = x86_cpu_AVX10_V152 - 1,
+ x86_cpu_AVX10_V150 = x86_cpu_AVX10_V151 - 1,
+ x86_cpu_AVX10_V149 = x86_cpu_AVX10_V150 - 1,
+ x86_cpu_AVX10_V148 = x86_cpu_AVX10_V149 - 1,
+ x86_cpu_AVX10_V147 = x86_cpu_AVX10_V148 - 1,
+ x86_cpu_AVX10_V146 = x86_cpu_AVX10_V147 - 1,
+ x86_cpu_AVX10_V145 = x86_cpu_AVX10_V146 - 1,
+ x86_cpu_AVX10_V144 = x86_cpu_AVX10_V145 - 1,
+ x86_cpu_AVX10_V143 = x86_cpu_AVX10_V144 - 1,
+ x86_cpu_AVX10_V142 = x86_cpu_AVX10_V143 - 1,
+ x86_cpu_AVX10_V141 = x86_cpu_AVX10_V142 - 1,
+ x86_cpu_AVX10_V140 = x86_cpu_AVX10_V141 - 1,
+ x86_cpu_AVX10_V139 = x86_cpu_AVX10_V140 - 1,
+ x86_cpu_AVX10_V138 = x86_cpu_AVX10_V139 - 1,
+ x86_cpu_AVX10_V137 = x86_cpu_AVX10_V138 - 1,
+ x86_cpu_AVX10_V136 = x86_cpu_AVX10_V137 - 1,
+ x86_cpu_AVX10_V135 = x86_cpu_AVX10_V136 - 1,
+ x86_cpu_AVX10_V134 = x86_cpu_AVX10_V135 - 1,
+ x86_cpu_AVX10_V133 = x86_cpu_AVX10_V134 - 1,
+ x86_cpu_AVX10_V132 = x86_cpu_AVX10_V133 - 1,
+ x86_cpu_AVX10_V131 = x86_cpu_AVX10_V132 - 1,
+ x86_cpu_AVX10_V130 = x86_cpu_AVX10_V131 - 1,
+ x86_cpu_AVX10_V129 = x86_cpu_AVX10_V130 - 1,
+ x86_cpu_AVX10_V128 = x86_cpu_AVX10_V129 - 1,
+ x86_cpu_AVX10_V127 = x86_cpu_AVX10_V128 - 1,
+ x86_cpu_AVX10_V126 = x86_cpu_AVX10_V127 - 1,
+ x86_cpu_AVX10_V125 = x86_cpu_AVX10_V126 - 1,
+ x86_cpu_AVX10_V124 = x86_cpu_AVX10_V125 - 1,
+ x86_cpu_AVX10_V123 = x86_cpu_AVX10_V124 - 1,
+ x86_cpu_AVX10_V122 = x86_cpu_AVX10_V123 - 1,
+ x86_cpu_AVX10_V121 = x86_cpu_AVX10_V122 - 1,
+ x86_cpu_AVX10_V120 = x86_cpu_AVX10_V121 - 1,
+ x86_cpu_AVX10_V119 = x86_cpu_AVX10_V120 - 1,
+ x86_cpu_AVX10_V118 = x86_cpu_AVX10_V119 - 1,
+ x86_cpu_AVX10_V117 = x86_cpu_AVX10_V118 - 1,
+ x86_cpu_AVX10_V116 = x86_cpu_AVX10_V117 - 1,
+ x86_cpu_AVX10_V115 = x86_cpu_AVX10_V116 - 1,
+ x86_cpu_AVX10_V114 = x86_cpu_AVX10_V115 - 1,
+ x86_cpu_AVX10_V113 = x86_cpu_AVX10_V114 - 1,
+ x86_cpu_AVX10_V112 = x86_cpu_AVX10_V113 - 1,
+ x86_cpu_AVX10_V111 = x86_cpu_AVX10_V112 - 1,
+ x86_cpu_AVX10_V110 = x86_cpu_AVX10_V111 - 1,
+ x86_cpu_AVX10_V109 = x86_cpu_AVX10_V110 - 1,
+ x86_cpu_AVX10_V108 = x86_cpu_AVX10_V109 - 1,
+ x86_cpu_AVX10_V107 = x86_cpu_AVX10_V108 - 1,
+ x86_cpu_AVX10_V106 = x86_cpu_AVX10_V107 - 1,
+ x86_cpu_AVX10_V105 = x86_cpu_AVX10_V106 - 1,
+ x86_cpu_AVX10_V104 = x86_cpu_AVX10_V105 - 1,
+ x86_cpu_AVX10_V103 = x86_cpu_AVX10_V104 - 1,
+ x86_cpu_AVX10_V102 = x86_cpu_AVX10_V103 - 1,
+ x86_cpu_AVX10_V101 = x86_cpu_AVX10_V102 - 1,
+ x86_cpu_AVX10_V100 = x86_cpu_AVX10_V101 - 1,
+ x86_cpu_AVX10_V99 = x86_cpu_AVX10_V100 - 1,
+ x86_cpu_AVX10_V98 = x86_cpu_AVX10_V99 - 1,
+ x86_cpu_AVX10_V97 = x86_cpu_AVX10_V98 - 1,
+ x86_cpu_AVX10_V96 = x86_cpu_AVX10_V97 - 1,
+ x86_cpu_AVX10_V95 = x86_cpu_AVX10_V96 - 1,
+ x86_cpu_AVX10_V94 = x86_cpu_AVX10_V95 - 1,
+ x86_cpu_AVX10_V93 = x86_cpu_AVX10_V94 - 1,
+ x86_cpu_AVX10_V92 = x86_cpu_AVX10_V93 - 1,
+ x86_cpu_AVX10_V91 = x86_cpu_AVX10_V92 - 1,
+ x86_cpu_AVX10_V90 = x86_cpu_AVX10_V91 - 1,
+ x86_cpu_AVX10_V89 = x86_cpu_AVX10_V90 - 1,
+ x86_cpu_AVX10_V88 = x86_cpu_AVX10_V89 - 1,
+ x86_cpu_AVX10_V87 = x86_cpu_AVX10_V88 - 1,
+ x86_cpu_AVX10_V86 = x86_cpu_AVX10_V87 - 1,
+ x86_cpu_AVX10_V85 = x86_cpu_AVX10_V86 - 1,
+ x86_cpu_AVX10_V84 = x86_cpu_AVX10_V85 - 1,
+ x86_cpu_AVX10_V83 = x86_cpu_AVX10_V84 - 1,
+ x86_cpu_AVX10_V82 = x86_cpu_AVX10_V83 - 1,
+ x86_cpu_AVX10_V81 = x86_cpu_AVX10_V82 - 1,
+ x86_cpu_AVX10_V80 = x86_cpu_AVX10_V81 - 1,
+ x86_cpu_AVX10_V79 = x86_cpu_AVX10_V80 - 1,
+ x86_cpu_AVX10_V78 = x86_cpu_AVX10_V79 - 1,
+ x86_cpu_AVX10_V77 = x86_cpu_AVX10_V78 - 1,
+ x86_cpu_AVX10_V76 = x86_cpu_AVX10_V77 - 1,
+ x86_cpu_AVX10_V75 = x86_cpu_AVX10_V76 - 1,
+ x86_cpu_AVX10_V74 = x86_cpu_AVX10_V75 - 1,
+ x86_cpu_AVX10_V73 = x86_cpu_AVX10_V74 - 1,
+ x86_cpu_AVX10_V72 = x86_cpu_AVX10_V73 - 1,
+ x86_cpu_AVX10_V71 = x86_cpu_AVX10_V72 - 1,
+ x86_cpu_AVX10_V70 = x86_cpu_AVX10_V71 - 1,
+ x86_cpu_AVX10_V69 = x86_cpu_AVX10_V70 - 1,
+ x86_cpu_AVX10_V68 = x86_cpu_AVX10_V69 - 1,
+ x86_cpu_AVX10_V67 = x86_cpu_AVX10_V68 - 1,
+ x86_cpu_AVX10_V66 = x86_cpu_AVX10_V67 - 1,
+ x86_cpu_AVX10_V65 = x86_cpu_AVX10_V66 - 1,
+ x86_cpu_AVX10_V64 = x86_cpu_AVX10_V65 - 1,
+ x86_cpu_AVX10_V63 = x86_cpu_AVX10_V64 - 1,
+ x86_cpu_AVX10_V62 = x86_cpu_AVX10_V63 - 1,
+ x86_cpu_AVX10_V61 = x86_cpu_AVX10_V62 - 1,
+ x86_cpu_AVX10_V60 = x86_cpu_AVX10_V61 - 1,
+ x86_cpu_AVX10_V59 = x86_cpu_AVX10_V60 - 1,
+ x86_cpu_AVX10_V58 = x86_cpu_AVX10_V59 - 1,
+ x86_cpu_AVX10_V57 = x86_cpu_AVX10_V58 - 1,
+ x86_cpu_AVX10_V56 = x86_cpu_AVX10_V57 - 1,
+ x86_cpu_AVX10_V55 = x86_cpu_AVX10_V56 - 1,
+ x86_cpu_AVX10_V54 = x86_cpu_AVX10_V55 - 1,
+ x86_cpu_AVX10_V53 = x86_cpu_AVX10_V54 - 1,
+ x86_cpu_AVX10_V52 = x86_cpu_AVX10_V53 - 1,
+ x86_cpu_AVX10_V51 = x86_cpu_AVX10_V52 - 1,
+ x86_cpu_AVX10_V50 = x86_cpu_AVX10_V51 - 1,
+ x86_cpu_AVX10_V49 = x86_cpu_AVX10_V50 - 1,
+ x86_cpu_AVX10_V48 = x86_cpu_AVX10_V49 - 1,
+ x86_cpu_AVX10_V47 = x86_cpu_AVX10_V48 - 1,
+ x86_cpu_AVX10_V46 = x86_cpu_AVX10_V47 - 1,
+ x86_cpu_AVX10_V45 = x86_cpu_AVX10_V46 - 1,
+ x86_cpu_AVX10_V44 = x86_cpu_AVX10_V45 - 1,
+ x86_cpu_AVX10_V43 = x86_cpu_AVX10_V44 - 1,
+ x86_cpu_AVX10_V42 = x86_cpu_AVX10_V43 - 1,
+ x86_cpu_AVX10_V41 = x86_cpu_AVX10_V42 - 1,
+ x86_cpu_AVX10_V40 = x86_cpu_AVX10_V41 - 1,
+ x86_cpu_AVX10_V39 = x86_cpu_AVX10_V40 - 1,
+ x86_cpu_AVX10_V38 = x86_cpu_AVX10_V39 - 1,
+ x86_cpu_AVX10_V37 = x86_cpu_AVX10_V38 - 1,
+ x86_cpu_AVX10_V36 = x86_cpu_AVX10_V37 - 1,
+ x86_cpu_AVX10_V35 = x86_cpu_AVX10_V36 - 1,
+ x86_cpu_AVX10_V34 = x86_cpu_AVX10_V35 - 1,
+ x86_cpu_AVX10_V33 = x86_cpu_AVX10_V34 - 1,
+ x86_cpu_AVX10_V32 = x86_cpu_AVX10_V33 - 1,
+ x86_cpu_AVX10_V31 = x86_cpu_AVX10_V32 - 1,
+ x86_cpu_AVX10_V30 = x86_cpu_AVX10_V31 - 1,
+ x86_cpu_AVX10_V29 = x86_cpu_AVX10_V30 - 1,
+ x86_cpu_AVX10_V28 = x86_cpu_AVX10_V29 - 1,
+ x86_cpu_AVX10_V27 = x86_cpu_AVX10_V28 - 1,
+ x86_cpu_AVX10_V26 = x86_cpu_AVX10_V27 - 1,
+ x86_cpu_AVX10_V25 = x86_cpu_AVX10_V26 - 1,
+ x86_cpu_AVX10_V24 = x86_cpu_AVX10_V25 - 1,
+ x86_cpu_AVX10_V23 = x86_cpu_AVX10_V24 - 1,
+ x86_cpu_AVX10_V22 = x86_cpu_AVX10_V23 - 1,
+ x86_cpu_AVX10_V21 = x86_cpu_AVX10_V22 - 1,
+ x86_cpu_AVX10_V20 = x86_cpu_AVX10_V21 - 1,
+ x86_cpu_AVX10_V19 = x86_cpu_AVX10_V20 - 1,
+ x86_cpu_AVX10_V18 = x86_cpu_AVX10_V19 - 1,
+ x86_cpu_AVX10_V17 = x86_cpu_AVX10_V18 - 1,
+ x86_cpu_AVX10_V16 = x86_cpu_AVX10_V17 - 1,
+ x86_cpu_AVX10_V15 = x86_cpu_AVX10_V16 - 1,
+ x86_cpu_AVX10_V14 = x86_cpu_AVX10_V15 - 1,
+ x86_cpu_AVX10_V13 = x86_cpu_AVX10_V14 - 1,
+ x86_cpu_AVX10_V12 = x86_cpu_AVX10_V13 - 1,
+ x86_cpu_AVX10_V11 = x86_cpu_AVX10_V12 - 1,
+ x86_cpu_AVX10_V10 = x86_cpu_AVX10_V11 - 1,
+ x86_cpu_AVX10_V9 = x86_cpu_AVX10_V10 - 1,
+ x86_cpu_AVX10_V8 = x86_cpu_AVX10_V9 - 1,
+ x86_cpu_AVX10_V7 = x86_cpu_AVX10_V8 - 1,
+ x86_cpu_AVX10_V6 = x86_cpu_AVX10_V7 - 1,
+ x86_cpu_AVX10_V5 = x86_cpu_AVX10_V6 - 1,
+ x86_cpu_AVX10_V4 = x86_cpu_AVX10_V5 - 1,
+ x86_cpu_AVX10_V3 = x86_cpu_AVX10_V4 - 1,
+ x86_cpu_AVX10_V2 = x86_cpu_AVX10_V3 - 1,
+ x86_cpu_AVX10_V1 = x86_cpu_AVX10_V2 - 1
+/* x86_cpu_AVX10_V0 is invalid. */
};
@@ -115,11 +115,18 @@ update_active (struct cpu_features *cpu_features)
CPU_FEATURE_SET_ACTIVE (cpu_features, SHSTK);
#endif
+ enum
+ {
+ os_xmm = 1,
+ os_ymm = 2,
+ os_zmm = 4
+ } os_vector_size = os_xmm;
/* Can we call xgetbv? */
if (CPU_FEATURES_CPU_P (cpu_features, OSXSAVE))
{
unsigned int xcrlow;
unsigned int xcrhigh;
+ CPU_FEATURE_SET_ACTIVE (cpu_features, AVX10);
asm ("xgetbv" : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0));
/* Is YMM and XMM state usable? */
if ((xcrlow & (bit_YMM_state | bit_XMM_state))
@@ -128,6 +135,7 @@ update_active (struct cpu_features *cpu_features)
/* Determine if AVX is usable. */
if (CPU_FEATURES_CPU_P (cpu_features, AVX))
{
+ os_vector_size |= os_ymm;
CPU_FEATURE_SET (cpu_features, AVX);
/* The following features depend on AVX being usable. */
/* Determine if AVX2 is usable. */
@@ -166,6 +174,7 @@ update_active (struct cpu_features *cpu_features)
| bit_ZMM16_31_state))
== (bit_Opmask_state | bit_ZMM0_15_state | bit_ZMM16_31_state))
{
+ os_vector_size |= os_zmm;
/* Determine if AVX512F is usable. */
if (CPU_FEATURES_CPU_P (cpu_features, AVX512F))
{
@@ -210,6 +219,22 @@ update_active (struct cpu_features *cpu_features)
}
}
+ if (CPU_FEATURES_CPU_P (cpu_features, AVX10)
+ && cpu_features->basic.max_cpuid >= 0x24)
+ {
+ __cpuid_count (
+ 0x24, 0, cpu_features->features[CPUID_INDEX_24_ECX_0].cpuid.eax,
+ cpu_features->features[CPUID_INDEX_24_ECX_0].cpuid.ebx,
+ cpu_features->features[CPUID_INDEX_24_ECX_0].cpuid.ecx,
+ cpu_features->features[CPUID_INDEX_24_ECX_0].cpuid.edx);
+ if (os_vector_size & os_xmm)
+ CPU_FEATURE_SET_ACTIVE (cpu_features, AVX10_XMM);
+ if (os_vector_size & os_ymm)
+ CPU_FEATURE_SET_ACTIVE (cpu_features, AVX10_YMM);
+ if (os_vector_size & os_zmm)
+ CPU_FEATURE_SET_ACTIVE (cpu_features, AVX10_ZMM);
+ }
+
/* Are XTILECFG and XTILEDATA states usable? */
if ((xcrlow & (bit_XTILECFG_state | bit_XTILEDATA_state))
== (bit_XTILECFG_state | bit_XTILEDATA_state))
@@ -29,7 +29,7 @@
enum
{
- CPUID_INDEX_MAX = CPUID_INDEX_14_ECX_0 + 1
+ CPUID_INDEX_MAX = CPUID_INDEX_24_ECX_0 + 1
};
enum
@@ -319,6 +319,7 @@ enum
#define bit_cpu_AVX_NE_CONVERT (1u << 5)
#define bit_cpu_AMX_COMPLEX (1u << 8)
#define bit_cpu_PREFETCHI (1u << 14)
+#define bit_cpu_AVX10 (1u << 19)
#define bit_cpu_APX_F (1u << 21)
/* CPUID_INDEX_19. */
@@ -332,6 +333,13 @@ enum
/* EBX. */
#define bit_cpu_PTWRITE (1u << 4)
+/* CPUID_INDEX_24_ECX_0. */
+
+/* EBX. */
+#define bit_cpu_AVX10_XMM (1u << 16)
+#define bit_cpu_AVX10_YMM (1u << 17)
+#define bit_cpu_AVX10_ZMM (1u << 18)
+
/* CPUID_INDEX_1. */
/* ECX. */
@@ -563,6 +571,7 @@ enum
#define index_cpu_AVX_NE_CONVERT CPUID_INDEX_7_ECX_1
#define index_cpu_AMX_COMPLEX CPUID_INDEX_7_ECX_1
#define index_cpu_PREFETCHI CPUID_INDEX_7_ECX_1
+#define index_cpu_AVX10 CPUID_INDEX_7_ECX_1
#define index_cpu_APX_F CPUID_INDEX_7_ECX_1
/* CPUID_INDEX_19. */
@@ -576,6 +585,13 @@ enum
/* EBX. */
#define index_cpu_PTWRITE CPUID_INDEX_14_ECX_0
+/* CPUID_INDEX_24_ECX_0. */
+
+/* EBX. */
+#define index_cpu_AVX10_XMM CPUID_INDEX_24_ECX_0
+#define index_cpu_AVX10_YMM CPUID_INDEX_24_ECX_0
+#define index_cpu_AVX10_ZMM CPUID_INDEX_24_ECX_0
+
/* CPUID_INDEX_1. */
/* ECX. */
@@ -809,6 +825,7 @@ enum
#define reg_AVX_NE_CONVERT edx
#define reg_AMX_COMPLEX edx
#define reg_PREFETCHI edx
+#define reg_AVX10 edx
#define reg_APX_F edx
/* CPUID_INDEX_19. */
@@ -822,6 +839,14 @@ enum
/* EBX. */
#define reg_PTWRITE ebx
+/* CPUID_INDEX_24_ECX_0. */
+
+/* EBX. */
+#define reg_AVX10_XMM ebx
+#define reg_AVX10_YMM ebx
+#define reg_AVX10_ZMM ebx
+
+
/* PREFERRED_FEATURE_INDEX_1. First define the bitindex values
sequentially, then define the bit_arch* and index_arch_* lookup
constants. */
@@ -29,9 +29,45 @@ __BEGIN_DECLS
extern const struct cpuid_feature *__x86_get_cpuid_feature_leaf (unsigned int)
__attribute__ ((pure));
+static __inline__ unsigned int
+x86_cpu_get_avx10_version_number_from_enum (unsigned int __enum)
+{
+ return __enum - x86_cpu_AVX10_V1 + 1;
+}
+
+static __inline__ _Bool
+x86_cpu_is_index_avx10_version_number (unsigned int __index)
+{
+ return __index >= (unsigned int) x86_cpu_AVX10_V1
+ && __index <= (unsigned int) x86_cpu_AVX10_V255;
+}
+
+static __inline__ unsigned int
+x86_cpu_get_avx10_info (unsigned int __index)
+{
+ const struct cpuid_feature *__ptr = __x86_get_cpuid_feature_leaf (
+ __index / (8 * sizeof (unsigned int) * 4));
+ unsigned int __reg = __index & (8 * sizeof (unsigned int) * 4 - 1);
+ __reg /= 8 * sizeof (unsigned int);
+
+ return __ptr->cpuid_array[__reg];
+}
+
+/* Get AVX10 version number in byte form. Must check AVX10 active first. Value
+ is in range [1, 255]. */
+static __inline__ unsigned int
+x86_cpu_get_avx10_version_number (void)
+{
+ return x86_cpu_get_avx10_info (x86_cpu_index_24_ecx_0_ebx) & 0xff;
+}
+
static __inline__ _Bool
x86_cpu_present (unsigned int __index)
{
+ if (x86_cpu_is_index_avx10_version_number (__index))
+ return x86_cpu_get_avx10_version_number ()
+ >= x86_cpu_get_avx10_version_number_from_enum (__index);
+
const struct cpuid_feature *__ptr = __x86_get_cpuid_feature_leaf
(__index / (8 * sizeof (unsigned int) * 4));
unsigned int __reg
@@ -45,6 +81,10 @@ x86_cpu_present (unsigned int __index)
static __inline__ _Bool
x86_cpu_active (unsigned int __index)
{
+ if (x86_cpu_is_index_avx10_version_number (__index))
+ return x86_cpu_get_avx10_version_number ()
+ >= x86_cpu_get_avx10_version_number_from_enum (__index);
+
const struct cpuid_feature *__ptr = __x86_get_cpuid_feature_leaf
(__index / (8 * sizeof (unsigned int) * 4));
unsigned int __reg
@@ -219,6 +219,7 @@ do_test (void)
CHECK_CPU_FEATURE_PRESENT (AVX_NE_CONVERT);
CHECK_CPU_FEATURE_PRESENT (AMX_COMPLEX);
CHECK_CPU_FEATURE_PRESENT (PREFETCHI);
+ CHECK_CPU_FEATURE_PRESENT (AVX10);
CHECK_CPU_FEATURE_PRESENT (APX_F);
CHECK_CPU_FEATURE_PRESENT (AESKLE);
CHECK_CPU_FEATURE_PRESENT (WIDE_KL);
@@ -391,11 +392,273 @@ do_test (void)
CHECK_CPU_FEATURE_ACTIVE (AVX_NE_CONVERT);
CHECK_CPU_FEATURE_ACTIVE (AMX_COMPLEX);
CHECK_CPU_FEATURE_ACTIVE (PREFETCHI);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10);
CHECK_CPU_FEATURE_ACTIVE (APX_F);
CHECK_CPU_FEATURE_ACTIVE (AESKLE);
CHECK_CPU_FEATURE_ACTIVE (WIDE_KL);
CHECK_CPU_FEATURE_ACTIVE (PTWRITE);
+ if (CPU_FEATURE_ACTIVE (AVX10))
+ {
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_XMM);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_YMM);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_ZMM);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V1);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V2);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V3);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V4);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V5);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V6);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V7);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V8);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V9);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V10);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V11);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V12);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V13);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V14);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V15);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V16);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V17);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V18);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V19);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V20);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V21);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V22);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V23);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V24);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V25);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V26);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V27);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V28);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V29);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V30);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V31);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V32);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V33);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V34);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V35);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V36);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V37);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V38);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V39);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V40);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V41);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V42);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V43);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V44);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V45);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V46);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V47);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V48);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V49);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V50);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V51);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V52);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V53);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V54);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V55);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V56);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V57);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V58);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V59);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V60);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V61);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V62);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V63);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V64);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V65);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V66);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V67);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V68);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V69);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V70);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V71);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V72);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V73);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V74);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V75);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V76);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V77);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V78);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V79);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V80);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V81);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V82);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V83);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V84);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V85);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V86);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V87);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V88);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V89);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V90);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V91);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V92);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V93);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V94);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V95);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V96);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V97);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V98);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V99);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V100);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V101);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V102);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V103);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V104);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V105);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V106);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V107);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V108);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V109);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V110);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V111);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V112);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V113);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V114);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V115);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V116);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V117);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V118);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V119);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V120);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V121);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V122);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V123);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V124);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V125);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V126);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V127);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V128);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V129);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V130);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V131);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V132);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V133);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V134);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V135);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V136);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V137);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V138);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V139);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V140);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V141);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V142);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V143);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V144);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V145);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V146);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V147);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V148);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V149);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V150);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V151);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V152);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V153);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V154);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V155);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V156);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V157);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V158);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V159);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V160);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V161);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V162);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V163);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V164);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V165);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V166);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V167);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V168);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V169);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V170);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V171);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V172);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V173);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V174);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V175);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V176);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V177);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V178);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V179);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V180);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V181);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V182);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V183);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V184);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V185);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V186);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V187);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V188);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V189);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V190);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V191);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V192);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V193);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V194);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V195);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V196);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V197);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V198);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V199);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V200);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V201);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V202);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V203);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V204);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V205);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V206);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V207);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V208);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V209);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V210);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V211);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V212);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V213);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V214);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V215);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V216);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V217);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V218);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V219);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V220);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V221);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V222);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V223);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V224);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V225);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V226);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V227);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V228);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V229);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V230);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V231);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V232);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V233);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V234);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V235);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V236);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V237);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V238);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V239);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V240);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V241);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V242);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V243);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V244);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V245);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V246);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V247);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V248);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V249);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V250);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V251);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V252);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V253);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V254);
+ CHECK_CPU_FEATURE_ACTIVE (AVX10_V255);
+ }
return 0;
}