@@ -133,6 +133,7 @@ bool CPUFeature::os_avx() {
133
133
return false ;
134
134
}
135
135
136
+ #ifdef ENABLE_XCR_CHECK
136
137
uint64_t xcrFeatureMask = 0 ;
137
138
bool ret = read_xcr (_XCR_XFEATURE_ENABLED_MASK, &xcrFeatureMask);
138
139
if (!ret) {
@@ -155,11 +156,12 @@ bool CPUFeature::os_avx() {
155
156
Intel® Advanced Vector Extensions (AVX state). See Section 13.5.3
156
157
*/
157
158
uint32_t avx_feature_bits = BIT_M_TO_N_64 (xcrFeatureMask, 1 , 2 );
158
- if (avx_feature_bits = = 0b11 ) {
159
- return true ;
159
+ if (avx_feature_bits ! = 0b11 ) {
160
+ return false ;
160
161
}
162
+ #endif
161
163
162
- return false ;
164
+ return true ;
163
165
}
164
166
165
167
bool CPUFeature::os_avx2 () {
@@ -182,6 +184,7 @@ bool CPUFeature::os_avx2() {
182
184
return false ;
183
185
}
184
186
187
+ #ifdef ENABLE_XCR_CHECK
185
188
uint64_t xcrFeatureMask = 0 ;
186
189
bool ret = read_xcr (_XCR_XFEATURE_ENABLED_MASK, &xcrFeatureMask);
187
190
if (!ret) {
@@ -204,14 +207,16 @@ bool CPUFeature::os_avx2() {
204
207
Intel® Advanced Vector Extensions (AVX state). See Section 13.5.3
205
208
*/
206
209
uint32_t avx_feature_bits = BIT_M_TO_N_64 (xcrFeatureMask, 1 , 2 );
207
- if (avx_feature_bits = = 0b11 ) {
208
- return true ;
210
+ if (avx_feature_bits ! = 0b11 ) {
211
+ return false ;
209
212
}
213
+ #endif
210
214
211
- return false ;
215
+ return true ;
212
216
}
213
217
214
218
bool CPUFeature::os_avx512 () {
219
+ #ifdef ENABLE_XCR_CHECK
215
220
uint64_t xcrFeatureMask = 0 ;
216
221
bool ret = read_xcr (_XCR_XFEATURE_ENABLED_MASK, &xcrFeatureMask);
217
222
if (!ret) {
@@ -237,14 +242,16 @@ bool CPUFeature::os_avx512() {
237
242
component 7 is used for the 16 512-bit registers ZMM16–ZMM31 (Hi16_ZMM state).
238
243
*/
239
244
uint32_t avx512_feature_bits = BIT_M_TO_N_64 (xcrFeatureMask, 5 , 7 );
240
- if (avx512_feature_bits = = 0b111 ) {
241
- return true ;
245
+ if (avx512_feature_bits ! = 0b111 ) {
246
+ return false ;
242
247
}
248
+ #endif
243
249
244
- return false ;
250
+ return true ;
245
251
}
246
252
247
253
bool CPUFeature::os_amx () {
254
+ #ifdef ENABLE_XCR_CHECK
248
255
uint64_t xcrFeatureMask = 0 ;
249
256
bool ret = read_xcr (_XCR_XFEATURE_ENABLED_MASK, &xcrFeatureMask);
250
257
if (!ret) {
@@ -275,11 +282,12 @@ bool CPUFeature::os_amx() {
275
282
tile data (XTILEDATA state).
276
283
*/
277
284
uint32_t avx512_feature_bits = BIT_M_TO_N_64 (xcrFeatureMask, 17 , 18 );
278
- if (avx512_feature_bits = = 0b11 ) {
279
- return true ;
285
+ if (avx512_feature_bits ! = 0b11 ) {
286
+ return false ;
280
287
}
288
+ #endif
281
289
282
- return false ;
290
+ return true ;
283
291
}
284
292
285
293
#ifdef __linux__
0 commit comments