@@ -273,23 +273,18 @@ void X86Subtarget::initSubtargetFeatures(StringRef CPU, StringRef TuneCPU,
273
273
if (!FS.empty ())
274
274
FullFS = (Twine (FullFS) + " ," + FS).str ();
275
275
276
- // Attach EVEX512 feature when we have AVX512 features with a default CPU.
277
- // "pentium4" is default CPU for 32-bit targets.
278
- // "x86-64" is default CPU for 64-bit targets.
279
- if (CPU == " generic" || CPU == " pentium4" || CPU == " x86-64" ) {
280
- size_t posNoEVEX512 = FS.rfind (" -evex512" );
281
- // Make sure we won't be cheated by "-avx512fp16".
282
- size_t posNoAVX512F = FS.endswith (" -avx512f" ) ? FS.size () - 8
283
- : FS.rfind (" -avx512f," );
284
- size_t posEVEX512 = FS.rfind (" +evex512" );
285
- // Any AVX512XXX will enable AVX512F.
286
- size_t posAVX512F = FS.rfind (" +avx512" );
287
-
288
- if (posAVX512F != StringRef::npos &&
289
- (posNoAVX512F == StringRef::npos || posNoAVX512F < posAVX512F))
290
- if (posEVEX512 == StringRef::npos && posNoEVEX512 == StringRef::npos)
291
- FullFS += " ,+evex512" ;
292
- }
276
+ // Attach EVEX512 feature when we have AVX512 features and EVEX512 is not set.
277
+ size_t posNoEVEX512 = FS.rfind (" -evex512" );
278
+ // Make sure we won't be cheated by "-avx512fp16".
279
+ size_t posNoAVX512F = FS.endswith (" -avx512f" ) ? FS.size () - 8
280
+ : FS.rfind (" -avx512f," );
281
+ size_t posEVEX512 = FS.rfind (" +evex512" );
282
+ size_t posAVX512F = FS.rfind (" +avx512" ); // Any AVX512XXX will enable AVX512F.
283
+
284
+ if (posAVX512F != StringRef::npos &&
285
+ (posNoAVX512F == StringRef::npos || posNoAVX512F < posAVX512F))
286
+ if (posEVEX512 == StringRef::npos && posNoEVEX512 == StringRef::npos)
287
+ FullFS += " ,+evex512" ;
293
288
294
289
// Parse features string and set the CPU.
295
290
ParseSubtargetFeatures (CPU, TuneCPU, FullFS);
0 commit comments