Lines Matching full:feature
1 //===--- X86.cpp - Implement X86 target feature support -------------------===//
29 #define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) \
30 {#ID, TYPE, ATTRS, FEATURE, HeaderDesc::NO_HEADER, ALL_LANGUAGES},
31 #define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANGS, FEATURE) \
32 {#ID, TYPE, ATTRS, FEATURE, HeaderDesc::HEADER, LANGS},
37 #define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) \
38 {#ID, TYPE, ATTRS, FEATURE, HeaderDesc::NO_HEADER, ALL_LANGUAGES},
39 #define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANGS, FEATURE) \
40 {#ID, TYPE, ATTRS, FEATURE, HeaderDesc::HEADER, LANGS},
147 for (const auto &Feature : FeaturesVec) {
149 if (Feature == "+general-regs-only") {
156 if (Feature.substr(1, 6) == "avx10.") {
157 if (Feature[0] == '+') {
159 if (StringRef(Feature).ends_with("512"))
161 LastAVX10 = Feature;
162 } else if (HasAVX10 && Feature == "-avx10.1-256") {
165 } else if (HasAVX10_512 && Feature == "-avx10.1-512") {
169 UpdatedAVX10FeaturesVec.push_back(Feature);
171 } else if (!HasAVX512F && StringRef(Feature).starts_with("+avx512")) {
173 LastAVX512 = Feature;
174 } else if (HasAVX512F && Feature == "-avx512f") {
176 } else if (HasEVEX512 != FE_TRUE && Feature == "+evex512") {
179 } else if (HasEVEX512 != FE_FALSE && Feature == "-evex512") {
184 UpdatedFeaturesVec.push_back(Feature);
257 for (const auto &Feature : Features) {
258 if (Feature[0] != '+')
261 if (Feature == "+mmx") {
263 } else if (Feature == "+aes") {
265 } else if (Feature == "+vaes") {
267 } else if (Feature == "+pclmul") {
269 } else if (Feature == "+vpclmulqdq") {
271 } else if (Feature == "+lzcnt") {
273 } else if (Feature == "+rdrnd") {
275 } else if (Feature == "+fsgsbase") {
277 } else if (Feature == "+bmi") {
279 } else if (Feature == "+bmi2") {
281 } else if (Feature == "+popcnt") {
283 } else if (Feature == "+rtm") {
285 } else if (Feature == "+prfchw") {
287 } else if (Feature == "+rdseed") {
289 } else if (Feature == "+adx") {
291 } else if (Feature == "+tbm") {
293 } else if (Feature == "+lwp") {
295 } else if (Feature == "+fma") {
297 } else if (Feature == "+f16c") {
299 } else if (Feature == "+gfni") {
301 } else if (Feature == "+evex512") {
303 } else if (Feature == "+avx10.1-256") {
305 } else if (Feature == "+avx10.1-512") {
307 } else if (Feature == "+avx512cd") {
309 } else if (Feature == "+avx512vpopcntdq") {
311 } else if (Feature == "+avx512vnni") {
313 } else if (Feature == "+avx512bf16") {
315 } else if (Feature == "+avx512fp16") {
318 } else if (Feature == "+avx512dq") {
320 } else if (Feature == "+avx512bitalg") {
322 } else if (Feature == "+avx512bw") {
324 } else if (Feature == "+avx512vl") {
326 } else if (Feature == "+avx512vbmi") {
328 } else if (Feature == "+avx512vbmi2") {
330 } else if (Feature == "+avx512ifma") {
332 } else if (Feature == "+avx512vp2intersect") {
334 } else if (Feature == "+sha") {
336 } else if (Feature == "+sha512") {
338 } else if (Feature == "+shstk") {
340 } else if (Feature == "+sm3") {
342 } else if (Feature == "+sm4") {
344 } else if (Feature == "+movbe") {
346 } else if (Feature == "+sgx") {
348 } else if (Feature == "+cx8") {
350 } else if (Feature == "+cx16") {
352 } else if (Feature == "+fxsr") {
354 } else if (Feature == "+xsave") {
356 } else if (Feature == "+xsaveopt") {
358 } else if (Feature == "+xsavec") {
360 } else if (Feature == "+xsaves") {
362 } else if (Feature == "+mwaitx") {
364 } else if (Feature == "+pku") {
366 } else if (Feature == "+clflushopt") {
368 } else if (Feature == "+clwb") {
370 } else if (Feature == "+wbnoinvd") {
372 } else if (Feature == "+prefetchi") {
374 } else if (Feature == "+clzero") {
376 } else if (Feature == "+cldemote") {
378 } else if (Feature == "+rdpid") {
380 } else if (Feature == "+rdpru") {
382 } else if (Feature == "+kl") {
384 } else if (Feature == "+widekl") {
386 } else if (Feature == "+retpoline-external-thunk") {
388 } else if (Feature == "+sahf") {
390 } else if (Feature == "+waitpkg") {
392 } else if (Feature == "+movdiri") {
394 } else if (Feature == "+movdir64b") {
396 } else if (Feature == "+pconfig") {
398 } else if (Feature == "+ptwrite") {
400 } else if (Feature == "+invpcid") {
402 } else if (Feature == "+enqcmd") {
404 } else if (Feature == "+hreset") {
406 } else if (Feature == "+amx-bf16") {
408 } else if (Feature == "+amx-fp16") {
410 } else if (Feature == "+amx-int8") {
412 } else if (Feature == "+amx-tile") {
414 } else if (Feature == "+amx-complex") {
416 } else if (Feature == "+cmpccxadd") {
418 } else if (Feature == "+raoint") {
420 } else if (Feature == "+avxifma") {
422 } else if (Feature == "+avxneconvert") {
424 } else if (Feature == "+avxvnni") {
426 } else if (Feature == "+avxvnniint16") {
428 } else if (Feature == "+avxvnniint8") {
430 } else if (Feature == "+serialize") {
432 } else if (Feature == "+tsxldtrk") {
434 } else if (Feature == "+uintr") {
436 } else if (Feature == "+usermsr") {
438 } else if (Feature == "+crc32") {
440 } else if (Feature == "+x87") {
442 } else if (Feature == "+fullbf16") {
444 } else if (Feature == "+egpr") {
446 } else if (Feature == "+inline-asm-use-gpr32") {
448 } else if (Feature == "+push2pop2") {
450 } else if (Feature == "+ppx") {
452 } else if (Feature == "+ndd") {
454 } else if (Feature == "+ccmp") {
456 } else if (Feature == "+nf") {
458 } else if (Feature == "+cf") {
460 } else if (Feature == "+zu") {
462 } else if (Feature == "+branch-hint") {
466 X86SSEEnum Level = llvm::StringSwitch<X86SSEEnum>(Feature)
492 XOPEnum XLevel = llvm::StringSwitch<XOPEnum>(Feature)
755 // the feature flag only applies to 64-bit mode.
1165 bool X86TargetInfo::hasFeature(StringRef Feature) const {
1166 return llvm::StringSwitch<bool>(Feature)
1310 // Valid CPUs have a 'key feature' that compares just better than its key
1311 // feature.
1319 // Now we know we have a feature, so get its priority and shift it a few so