LLVM: lib/TargetParser/X86TargetParser.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
16#include
17
18using namespace llvm;
20
21namespace {
22
24
25struct ProcInfo {
26 StringLiteral Name;
28 unsigned KeyFeature;
29 FeatureBitset Features;
30 char Mangling;
31 bool OnlyForCPUDispatchSpecific;
32};
33
34struct FeatureInfo {
35 StringLiteral NameWithPlus;
36 FeatureBitset ImpliedFeatures;
37
38 StringRef getName(bool WithPlus = false) const {
39 assert(NameWithPlus[0] == '+' && "Expected string to start with '+'");
40 if (WithPlus)
41 return NameWithPlus;
42 return NameWithPlus.drop_front();
43 }
44};
45
46}
47
48#define X86_FEATURE(ENUM, STRING) \
49 constexpr FeatureBitset Feature##ENUM = {X86::FEATURE_##ENUM};
50#include "llvm/TargetParser/X86TargetParser.def"
51
52
54 FeatureX87 | FeatureCMPXCHG8B | FeatureMMX;
55
56
58 FeatureX87 | FeatureCMPXCHG8B | FeatureMMX | FeatureFXSR | FeatureCMOV;
60
61
66
67
70 FeaturePOPCNT | FeatureCRC32 |
71 FeatureSSE4_2 | FeatureCMPXCHG16B;
73 FeaturesX86_64_V2 | FeatureAVX2 | FeatureBMI | FeatureBMI2 | FeatureF16C |
74 FeatureFMA | FeatureLZCNT | FeatureMOVBE | FeatureXSAVE;
76 FeatureAVX512BW | FeatureAVX512CD |
77 FeatureAVX512DQ | FeatureAVX512VL;
78
79
84 FeaturesPenryn | FeaturePOPCNT | FeatureCRC32 | FeatureSSE4_2;
87 FeaturesWestmere | FeatureAVX | FeatureXSAVE | FeatureXSAVEOPT;
91 FeaturesIvyBridge | FeatureAVX2 | FeatureBMI | FeatureBMI2 | FeatureFMA |
92 FeatureINVPCID | FeatureLZCNT | FeatureMOVBE;
94 FeaturesHaswell | FeatureADX | FeaturePRFCHW | FeatureRDSEED;
95
96
97
99 FeaturesBroadwell | FeatureAES | FeatureAVX512F | FeatureAVX512CD;
101
102
104 FeaturesBroadwell | FeatureAES | FeatureCLFLUSHOPT | FeatureXSAVEC |
105 FeatureXSAVES | FeatureSGX;
106
107
110 FeatureAVX512DQ | FeatureAVX512BW | FeatureAVX512VL | FeatureCLWB |
111 FeaturePKU;
116
117
120 FeatureAVX512BW | FeatureAVX512VL | FeatureAVX512IFMA | FeatureAVX512VBMI |
121 FeaturePKU | FeatureSHA;
124 FeatureAVX512VNNI | FeatureAVX512VPOPCNTDQ | FeatureGFNI | FeatureRDPID |
125 FeatureVAES | FeatureVPCLMULQDQ;
128 FeaturesICLClient | FeatureCLWB | FeaturePCONFIG | FeatureWBNOINVD;
130 FeaturesICLClient | FeatureAVX512VP2INTERSECT | FeatureMOVDIR64B |
131 FeatureCLWB | FeatureMOVDIRI | FeatureSHSTK | FeatureKL | FeatureWIDEKL;
133 FeaturesICLServer | FeatureAMX_BF16 | FeatureAMX_INT8 | FeatureAMX_TILE |
134 FeatureAVX512BF16 | FeatureAVX512FP16 | FeatureAVXVNNI | FeatureCLDEMOTE |
135 FeatureENQCMD | FeatureMOVDIR64B | FeatureMOVDIRI | FeaturePTWRITE |
136 FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR |
137 FeatureWAITPKG | FeatureAVX512DQ | FeatureAVX512VL;
142 FeatureCMPCCXADD | FeatureAVXIFMA | FeatureAVXNECONVERT |
143 FeatureAVXVNNIINT8 | FeatureAVXVNNIINT16 | FeatureSHA512 | FeatureSM3 |
144 FeatureSM4 | FeatureEGPR | FeatureZU | FeatureCCMP | FeaturePush2Pop2 |
145 FeaturePPX | FeatureNDD | FeatureNF | FeatureMOVRS | FeatureAMX_MOVRS |
146 FeatureAMX_AVX512 | FeatureAMX_FP8 | FeatureAMX_TF32;
147
148
149
151
155 FeaturesSilvermont | FeatureAES | FeatureCLFLUSHOPT | FeatureFSGSBASE |
156 FeatureRDSEED | FeatureSHA | FeatureXSAVE | FeatureXSAVEC |
157 FeatureXSAVEOPT | FeatureXSAVES;
159 FeaturesGoldmont | FeaturePTWRITE | FeatureRDPID | FeatureSGX;
163 FeaturesTremont | FeatureADX | FeatureBMI | FeatureBMI2 | FeatureF16C |
164 FeatureFMA | FeatureINVPCID | FeatureLZCNT | FeaturePCONFIG | FeaturePKU |
165 FeatureSERIALIZE | FeatureSHSTK | FeatureVAES | FeatureVPCLMULQDQ |
166 FeatureMOVDIR64B | FeatureMOVDIRI | FeatureWAITPKG | FeatureAVXVNNI |
167 FeatureHRESET | FeatureWIDEKL;
169 FeaturesAlderlake | FeatureCMPCCXADD | FeatureAVXIFMA | FeatureUINTR |
170 FeatureENQCMD | FeatureAVXNECONVERT | FeatureAVXVNNIINT8;
174 FeaturesArrowlake | FeatureAVXVNNIINT16 | FeatureSHA512 | FeatureSM3 |
175 FeatureSM4;
180 FeatureEGPR | FeatureZU | FeatureCCMP | FeaturePush2Pop2 | FeaturePPX |
181 FeatureNDD | FeatureNF;
184 FeatureSHA512 | FeatureSM3 | FeatureSM4 | FeaturePREFETCHI | FeatureUSERMSR;
185
186
188 FeatureX87 | FeatureCMPXCHG8B | FeatureMMX | FeaturePRFCHW;
189
190
192
193
195 FeatureX87 | FeatureCMPXCHG8B | FeatureMMX | FeaturePRFCHW;
202 FeaturesK8SSE3 | FeatureCMPXCHG16B | FeatureLZCNT | FeaturePOPCNT |
203 FeaturePRFCHW | FeatureSAHF | FeatureSSE4_A;
204
205
207 FeatureX87 | FeatureCMPXCHG8B | FeatureCMPXCHG16B | Feature64BIT |
208 FeatureFXSR | FeatureLZCNT | FeatureMMX | FeaturePOPCNT | FeaturePRFCHW |
209 FeatureSSE | FeatureSSE2 | FeatureSSE3 | FeatureSSSE3 | FeatureSSE4_A |
210 FeatureSAHF;
212 FeaturesBTVER1 | FeatureAES | FeatureAVX | FeatureBMI | FeatureCRC32 |
213 FeatureF16C | FeatureMOVBE | FeaturePCLMUL | FeatureXSAVE | FeatureXSAVEOPT;
214
215
217 FeatureX87 | FeatureAES | FeatureAVX | FeatureCMPXCHG8B |
218 FeatureCMPXCHG16B | FeatureCRC32 | Feature64BIT | FeatureFMA4 |
219 FeatureFXSR | FeatureLWP | FeatureLZCNT | FeatureMMX | FeaturePCLMUL |
220 FeaturePOPCNT | FeaturePRFCHW | FeatureSAHF | FeatureSSE | FeatureSSE2 |
221 FeatureSSE3 | FeatureSSSE3 | FeatureSSE4_1 | FeatureSSE4_2 | FeatureSSE4_A |
222 FeatureXOP | FeatureXSAVE;
224 FeaturesBDVER1 | FeatureBMI | FeatureFMA | FeatureF16C | FeatureTBM;
228 FeatureBMI2 | FeatureMOVBE |
229 FeatureMWAITX | FeatureRDRND;
230
231
233 FeatureX87 | FeatureADX | FeatureAES | FeatureAVX | FeatureAVX2 |
234 FeatureBMI | FeatureBMI2 | FeatureCLFLUSHOPT | FeatureCLZERO |
235 FeatureCMPXCHG8B | FeatureCMPXCHG16B | FeatureCRC32 | Feature64BIT |
236 FeatureF16C | FeatureFMA | FeatureFSGSBASE | FeatureFXSR | FeatureLZCNT |
237 FeatureMMX | FeatureMOVBE | FeatureMWAITX | FeaturePCLMUL | FeaturePOPCNT |
238 FeaturePRFCHW | FeatureRDRND | FeatureRDSEED | FeatureSAHF | FeatureSHA |
239 FeatureSSE | FeatureSSE2 | FeatureSSE3 | FeatureSSSE3 | FeatureSSE4_1 |
240 FeatureSSE4_2 | FeatureSSE4_A | FeatureXSAVE | FeatureXSAVEC |
241 FeatureXSAVEOPT | FeatureXSAVES;
243 FeatureRDPID | FeatureRDPRU |
244 FeatureWBNOINVD;
246 FeatureINVPCID | FeaturePKU |
247 FeatureVAES | FeatureVPCLMULQDQ;
249 FeaturesZNVER3 | FeatureAVX512F | FeatureAVX512CD | FeatureAVX512DQ |
250 FeatureAVX512BW | FeatureAVX512VL | FeatureAVX512IFMA | FeatureAVX512VBMI |
251 FeatureAVX512VBMI2 | FeatureAVX512VNNI | FeatureAVX512BITALG |
252 FeatureAVX512VPOPCNTDQ | FeatureAVX512BF16 | FeatureGFNI | FeatureSHSTK;
253
255 FeaturesZNVER4 | FeatureAVXVNNI | FeatureMOVDIRI | FeatureMOVDIR64B |
256 FeatureAVX512VP2INTERSECT | FeaturePREFETCHI | FeatureAVXVNNI;
257
258
259
260
261
262
263
264
265
266
268
269 { {""}, CK_None, ~0U, FeatureX87 | FeatureCMPXCHG8B, '\0', false },
270 { {"generic"}, CK_None, ~0U, FeatureX87 | FeatureCMPXCHG8B | Feature64BIT, 'A', true },
271
272 { {"i386"}, CK_i386, ~0U, FeatureX87, '\0', false },
273
274 { {"i486"}, CK_i486, ~0U, FeatureX87, '\0', false },
278
279 { {"i586"}, CK_i586, ~0U, FeatureX87 | FeatureCMPXCHG8B, '\0', false },
280 { {"pentium"}, CK_Pentium, ~0U, FeatureX87 | FeatureCMPXCHG8B, 'B', false },
283
284 { {"pentiumpro"}, CK_PentiumPro, ~0U, FeatureCMOV | FeatureX87 | FeatureCMPXCHG8B, 'C', false },
285 { {"pentium_pro"}, CK_PentiumPro, ~0U, FeatureCMOV | FeatureX87 | FeatureCMPXCHG8B, 'C', true },
286 { {"i686"}, CK_i686, ~0U, FeatureCMOV | FeatureX87 | FeatureCMPXCHG8B, '\0', false },
297
304
309
320
324
327
331
335
340
344
346
350
352
354
356
359
361
364
366
368
370
372
374
378
380
382
385
387
389
391
393
396
398
400
402
404 { {"mic_avx512"}, CK_KNL, FEATURE_AVX512F, FeaturesKNL, 'Z', true },
405
406 { {"knm"}, CK_KNM, FEATURE_AVX5124FMAPS, FeaturesKNM, 'j', false },
407
408 { {"lakemont"}, CK_Lakemont, ~0U, FeatureCMPXCHG8B, '\0', false },
409
411 { {"k6-2"}, CK_K6_2, ~0U, FeaturesK6 | FeaturePRFCHW, '\0', false },
412 { {"k6-3"}, CK_K6_3, ~0U, FeaturesK6 | FeaturePRFCHW, '\0', false },
413
419
429
432
437
443
448
450};
451
452
453constexpr const char *NoTuneList[] = {"x86-64-v2", "x86-64-v3", "x86-64-v4"};
454
457 if (.OnlyForCPUDispatchSpecific && P.Name == CPU &&
458 (P.Features[FEATURE_64BIT] || !Only64Bit))
459 return P.Kind;
460
462}
463
469
471 bool Only64Bit) {
473 if (.OnlyForCPUDispatchSpecific &&
.Name.empty() &&
474 (P.Features[FEATURE_64BIT] || !Only64Bit))
476}
477
479 bool Only64Bit) {
481 if (.OnlyForCPUDispatchSpecific &&
.Name.empty() &&
482 (P.Features[FEATURE_64BIT] || !Only64Bit) &&
485}
486
488
489
491 if (P.Kind == Kind) {
492 assert(P.KeyFeature != ~0U && "Processor does not have a key feature.");
494 }
495 }
496
498}
499
500
547
548
549
555
556
560
561
572 FeatureAVX2 | FeatureF16C | FeatureFMA;
573
574
585
586
591
600
601
602
605
606
610
611
620 FeatureAMX_TILE | FeatureAVX10_2;
623
633
636
637
639
640
642 FeatureAVX512CD | FeatureAVX512VBMI | FeatureAVX512IFMA |
643 FeatureAVX512VNNI | FeatureAVX512BF16 | FeatureAVX512VPOPCNTDQ |
644 FeatureAVX512VBMI2 | FeatureAVX512BITALG | FeatureAVX512FP16 |
645 FeatureAVX512DQ | FeatureAVX512VL;
647
648
657
662
664
666#define X86_FEATURE(ENUM, STR) {{"+" STR}, ImpliedFeatures##ENUM},
667#include "llvm/TargetParser/X86TargetParser.def"
668};
669
672 bool NeedPlus) {
674 [&](const ProcInfo &P) { return P.Name == CPU; });
676
678
679
680
681 Bits &= ~Feature64BIT;
682
683
687}
688
689
692
693 if (!Implies.any())
694 return;
696 Bits |= Implies;
697 do {
698 Prev = Bits;
700 if (Bits[--i])
702 } while (Prev != Bits);
703}
704
705
706
708
709
712 do {
713 Prev = Bits;
715 if ((FeatureInfos[i].ImpliedFeatures & Bits).any())
716 Bits.set(i);
717 } while (Prev != Bits);
718}
719
724 return FI.getName() == Feature;
725 });
727
728
729 return;
730 }
731
735 else
738
739
743}
744
747 [&](const ProcInfo &P) { return P.Name == CPU; });
749 assert(I->Mangling != '\0' && "Processor dooesn't support function multiversion!");
750 return I->Mangling;
751}
752
755 [&](const ProcInfo &P) { return P.Name == Name; });
757}
758
759std::array<uint32_t, 4>
761
762 std::array<uint32_t, 4> FeatureMask{};
763 for (StringRef FeatureStr : FeatureStrs) {
765#define X86_FEATURE_COMPAT(ENUM, STR, PRIORITY, ABI_VALUE) .Case(STR, ABI_VALUE)
766#define X86_MICROARCH_LEVEL(ENUM, STR, PRIORITY, ABI_VALUE) \
767 .Case(STR, ABI_VALUE)
768#include "llvm/TargetParser/X86TargetParser.def"
769 ;
770 assert(Feature / 32 < FeatureMask.size());
771 FeatureMask[Feature / 32] |= 1U << (Feature % 32);
772 }
773 return FeatureMask;
774}
775
777#ifndef NDEBUG
778
779
780
781#define X86_FEATURE_COMPAT(ENUM, STR, PRIORITY, ABI_VALUE) PRIORITY,
782 unsigned Priorities[] = {
783#include "llvm/TargetParser/X86TargetParser.def"
784 };
785 std::array<unsigned, std::size(Priorities)> HelperList;
786 std::iota(HelperList.begin(), HelperList.begin() + MAX_PRIORITY + 1, 0);
787 for (size_t i = MAX_PRIORITY + 1; i != std::size(Priorities); ++i)
788 HelperList[i] = 0;
789 assert(std::is_permutation(HelperList.begin(), HelperList.end(),
790 std::begin(Priorities), std::end(Priorities)) &&
791 "Priorities don't form consecutive range!");
792#endif
793
794 switch (Feat) {
795#define X86_FEATURE_COMPAT(ENUM, STR, PRIORITY, ABI_VALUE) \
796 case X86::FEATURE_##ENUM: \
797 return PRIORITY;
798#include "llvm/TargetParser/X86TargetParser.def"
799 default:
800 llvm_unreachable("No Feature Priority for non-CPUSupports Features");
801 }
802}
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static StringRef getName(Value *V)
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
constexpr FeatureBitset FeaturesClearwaterforest
Definition X86TargetParser.cpp:182
constexpr FeatureBitset FeaturesX86_64
Definition X86TargetParser.cpp:68
constexpr FeatureBitset ImpliedFeaturesLVI_LOAD_HARDENING
Definition X86TargetParser.cpp:554
constexpr FeatureBitset FeaturesWestmere
Definition X86TargetParser.cpp:85
constexpr FeatureBitset ImpliedFeaturesNDD
Definition X86TargetParser.cpp:652
constexpr FeatureBitset ImpliedFeaturesXSAVEOPT
Definition X86TargetParser.cpp:558
constexpr FeatureBitset FeaturesAthlon
Definition X86TargetParser.cpp:194
constexpr FeatureBitset ImpliedFeaturesAMX_COMPLEX
Definition X86TargetParser.cpp:616
constexpr FeatureBitset ImpliedFeaturesAVX5124VNNIW
Definition X86TargetParser.cpp:604
constexpr FeatureBitset ImpliedFeaturesPOPCNT
Definition X86TargetParser.cpp:525
constexpr FeatureBitset ImpliedFeaturesAVX512CD
Definition X86TargetParser.cpp:587
constexpr FeatureBitset ImpliedFeaturesSSE4_1
Definition X86TargetParser.cpp:566
constexpr FeatureBitset FeaturesZNVER2
Definition X86TargetParser.cpp:242
constexpr FeatureBitset ImpliedFeaturesAPXF
Definition X86TargetParser.cpp:658
constexpr FeatureBitset FeaturesBDVER3
Definition X86TargetParser.cpp:225
constexpr FeatureBitset ImpliedFeaturesBMI2
Definition X86TargetParser.cpp:504
constexpr FeatureBitset FeaturesGeode
Definition X86TargetParser.cpp:187
constexpr FeatureBitset ImpliedFeaturesLWP
Definition X86TargetParser.cpp:517
constexpr FeatureBitset ImpliedFeaturesPREFETCHI
Definition X86TargetParser.cpp:624
constexpr FeatureBitset ImpliedFeaturesAVX512FP16
Definition X86TargetParser.cpp:632
constexpr FeatureBitset FeaturesCascadeLake
Definition X86TargetParser.cpp:112
constexpr FeatureBitset ImpliedFeaturesCLDEMOTE
Definition X86TargetParser.cpp:505
constexpr FeatureBitset FeaturesK8SSE3
Definition X86TargetParser.cpp:200
constexpr FeatureBitset FeaturesZNVER1
Definition X86TargetParser.cpp:232
constexpr FeatureBitset FeaturesNocona
Definition X86TargetParser.cpp:64
constexpr FeatureBitset ImpliedFeaturesEVEX512
Definition X86TargetParser.cpp:570
constexpr FeatureBitset ImpliedFeaturesSSE4_A
Definition X86TargetParser.cpp:607
constexpr FeatureBitset FeaturesPrescott
Definition X86TargetParser.cpp:63
constexpr FeatureBitset FeaturesCooperLake
Definition X86TargetParser.cpp:114
constexpr FeatureBitset ImpliedFeaturesEGPR
Definition X86TargetParser.cpp:649
constexpr FeatureBitset ImpliedFeaturesFXSR
Definition X86TargetParser.cpp:515
constexpr FeatureBitset FeaturesSapphireRapids
Definition X86TargetParser.cpp:132
constexpr FeatureBitset ImpliedFeaturesAVX512DQ
Definition X86TargetParser.cpp:589
constexpr FeatureBitset ImpliedFeaturesSERIALIZE
Definition X86TargetParser.cpp:535
constexpr FeatureBitset ImpliedFeaturesVPCLMULQDQ
Definition X86TargetParser.cpp:582
constexpr FeatureBitset ImpliedFeaturesWBNOINVD
Definition X86TargetParser.cpp:543
constexpr FeatureBitset ImpliedFeaturesAES
Definition X86TargetParser.cpp:575
constexpr FeatureBitset FeaturesTremont
Definition X86TargetParser.cpp:160
constexpr FeatureBitset ImpliedFeaturesPush2Pop2
Definition X86TargetParser.cpp:650
constexpr FeatureBitset FeaturesBDVER1
Definition X86TargetParser.cpp:216
constexpr FeatureBitset ImpliedFeaturesWAITPKG
Definition X86TargetParser.cpp:542
constexpr FeatureBitset ImpliedFeaturesCRC32
Definition X86TargetParser.cpp:512
static constexpr FeatureBitset FeaturesZNVER3
Definition X86TargetParser.cpp:245
constexpr FeatureBitset FeaturesGoldmontPlus
Definition X86TargetParser.cpp:158
constexpr FeatureBitset ImpliedFeaturesRDPID
Definition X86TargetParser.cpp:529
constexpr FeatureBitset ImpliedFeaturesPRFCHW
Definition X86TargetParser.cpp:527
constexpr FeatureBitset FeaturesCannonlake
Definition X86TargetParser.cpp:118
constexpr FeatureBitset ImpliedFeaturesX87
Definition X86TargetParser.cpp:545
constexpr FeatureBitset ImpliedFeaturesAVX512VPOPCNTDQ
Definition X86TargetParser.cpp:596
constexpr FeatureBitset ImpliedFeaturesVAES
Definition X86TargetParser.cpp:581
constexpr FeatureBitset FeaturesSandyBridge
Definition X86TargetParser.cpp:86
constexpr FeatureBitset ImpliedFeaturesAMX_INT8
Definition X86TargetParser.cpp:615
constexpr FeatureBitset ImpliedFeaturesAVX512BF16
Definition X86TargetParser.cpp:592
constexpr FeatureBitset ImpliedFeaturesRDPRU
Definition X86TargetParser.cpp:530
constexpr FeatureBitset FeaturesAMDFAM10
Definition X86TargetParser.cpp:201
constexpr FeatureBitset ImpliedFeaturesAMX_TILE
Definition X86TargetParser.cpp:612
constexpr FeatureBitset FeaturesSkylakeServer
Definition X86TargetParser.cpp:108
constexpr FeatureBitset FeaturesPentiumMMX
Definition X86TargetParser.cpp:53
constexpr FeatureBitset ImpliedFeaturesCLWB
Definition X86TargetParser.cpp:507
constexpr FeatureBitset ImpliedFeaturesAVX512IFMA
Definition X86TargetParser.cpp:594
constexpr FeatureBitset FeaturesKNL
Definition X86TargetParser.cpp:98
constexpr FeatureBitset FeaturesNehalem
Definition X86TargetParser.cpp:83
constexpr FeatureBitset FeaturesBTVER1
Definition X86TargetParser.cpp:206
constexpr FeatureBitset FeaturesPentium3
Definition X86TargetParser.cpp:59
constexpr FeatureBitset ImpliedFeaturesTBM
Definition X86TargetParser.cpp:538
constexpr FeatureBitset ImpliedFeaturesAVXNECONVERT
Definition X86TargetParser.cpp:630
constexpr FeatureBitset FeaturesAthlonXP
Definition X86TargetParser.cpp:196
constexpr FeatureBitset FeaturesGraniteRapids
Definition X86TargetParser.cpp:138
constexpr FeatureBitset ImpliedFeaturesFSGSBASE
Definition X86TargetParser.cpp:514
constexpr FeatureBitset FeaturesPantherlake
Definition X86TargetParser.cpp:176
constexpr FeatureBitset ImpliedFeaturesPCONFIG
Definition X86TargetParser.cpp:524
constexpr FeatureBitset ImpliedFeaturesAVX
Definition X86TargetParser.cpp:568
constexpr FeatureBitset FeaturesX86_64_V3
Definition X86TargetParser.cpp:72
constexpr FeatureBitset ImpliedFeaturesRETPOLINE_INDIRECT_BRANCHES
Definition X86TargetParser.cpp:551
constexpr FeatureBitset ImpliedFeaturesAVX512VBMI2
Definition X86TargetParser.cpp:598
constexpr FeatureBitset ImpliedFeaturesCMPCCXADD
Definition X86TargetParser.cpp:625
constexpr FeatureBitset ImpliedFeaturesCLFLUSHOPT
Definition X86TargetParser.cpp:506
constexpr FeatureBitset ImpliedFeaturesAVX5124FMAPS
Definition X86TargetParser.cpp:603
constexpr FeatureBitset FeaturesDiamondRapids
Definition X86TargetParser.cpp:140
constexpr FeatureBitset ImpliedFeaturesF16C
Definition X86TargetParser.cpp:576
constexpr FeatureBitset ImpliedFeaturesAVX10_2
Definition X86TargetParser.cpp:646
constexpr FeatureBitset ImpliedFeaturesXSAVE
Definition X86TargetParser.cpp:546
constexpr FeatureBitset FeaturesX86_64_V2
Definition X86TargetParser.cpp:69
constexpr FeatureBitset FeaturesArrowlakeS
Definition X86TargetParser.cpp:173
constexpr FeatureBitset ImpliedFeaturesMOVBE
Definition X86TargetParser.cpp:521
constexpr FeatureBitset FeaturesIvyBridge
Definition X86TargetParser.cpp:88
constexpr FeatureBitset FeaturesHaswell
Definition X86TargetParser.cpp:90
static constexpr FeatureBitset FeaturesZNVER5
Definition X86TargetParser.cpp:254
constexpr FeatureBitset ImpliedFeaturesRETPOLINE_INDIRECT_CALLS
Definition X86TargetParser.cpp:552
constexpr FeatureBitset ImpliedFeaturesSSSE3
Definition X86TargetParser.cpp:565
constexpr FeatureBitset ImpliedFeaturesAVXVNNIINT8
Definition X86TargetParser.cpp:628
constexpr FeatureBitset ImpliedFeaturesCCMP
Definition X86TargetParser.cpp:653
constexpr FeatureBitset FeaturesICLClient
Definition X86TargetParser.cpp:122
constexpr FeatureBitset ImpliedFeaturesCF
Definition X86TargetParser.cpp:655
static void getImpliedDisabledFeatures(FeatureBitset &Bits, unsigned Value)
Create bit vector of features that are implied disabled if the feature passed in Value is disabled.
Definition X86TargetParser.cpp:707
constexpr FeatureBitset ImpliedFeaturesHRESET
Definition X86TargetParser.cpp:622
constexpr const char * NoTuneList[]
Definition X86TargetParser.cpp:453
constexpr FeatureBitset ImpliedFeaturesUINTR
Definition X86TargetParser.cpp:540
constexpr FeatureBitset ImpliedFeaturesCMOV
Definition X86TargetParser.cpp:509
constexpr FeatureBitset ImpliedFeaturesAVX512BITALG
Definition X86TargetParser.cpp:593
constexpr FeatureBitset ImpliedFeaturesRTM
Definition X86TargetParser.cpp:533
constexpr FeatureBitset FeaturesRocketlake
Definition X86TargetParser.cpp:126
constexpr FeatureBitset ImpliedFeaturesMOVDIRI
Definition X86TargetParser.cpp:523
constexpr FeatureBitset ImpliedFeaturesMWAITX
Definition X86TargetParser.cpp:520
constexpr FeatureBitset ImpliedFeaturesSSE3
Definition X86TargetParser.cpp:564
constexpr FeatureBitset ImpliedFeaturesVZEROUPPER
Definition X86TargetParser.cpp:544
constexpr FeatureBitset FeaturesBTVER2
Definition X86TargetParser.cpp:211
constexpr FeatureBitset FeaturesSkylakeClient
Definition X86TargetParser.cpp:103
constexpr FeatureBitset ImpliedFeaturesPPX
Definition X86TargetParser.cpp:651
static void getImpliedEnabledFeatures(FeatureBitset &Bits, const FeatureBitset &Implies)
Definition X86TargetParser.cpp:690
constexpr FeatureBitset FeaturesPentium2
Definition X86TargetParser.cpp:57
constexpr FeatureBitset ImpliedFeaturesSHSTK
Definition X86TargetParser.cpp:537
constexpr FeatureBitset ImpliedFeaturesAMX_FP16
Definition X86TargetParser.cpp:614
constexpr FeatureBitset ImpliedFeaturesMMX
Definition X86TargetParser.cpp:519
constexpr FeatureBitset FeaturesICLServer
Definition X86TargetParser.cpp:127
constexpr FeatureBitset ImpliedFeaturesRETPOLINE_EXTERNAL_THUNK
Definition X86TargetParser.cpp:550
constexpr FeatureBitset ImpliedFeaturesAMX_BF16
Definition X86TargetParser.cpp:613
constexpr FeatureBitset FeaturesBroadwell
Definition X86TargetParser.cpp:93
constexpr ProcInfo Processors[]
Definition X86TargetParser.cpp:267
constexpr FeatureBitset ImpliedFeaturesAMX_AVX512
Definition X86TargetParser.cpp:619
constexpr FeatureBitset ImpliedFeaturesCLZERO
Definition X86TargetParser.cpp:508
constexpr FeatureBitset ImpliedFeaturesAVXVNNIINT16
Definition X86TargetParser.cpp:627
constexpr FeatureBitset ImpliedFeaturesMOVRS
Definition X86TargetParser.cpp:663
constexpr FeatureBitset ImpliedFeaturesFMA4
Definition X86TargetParser.cpp:608
constexpr FeatureBitset ImpliedFeaturesFMA
Definition X86TargetParser.cpp:577
constexpr FeatureBitset FeaturesSierraforest
Definition X86TargetParser.cpp:171
constexpr FeatureBitset FeaturesK6
Definition X86TargetParser.cpp:191
constexpr FeatureBitset ImpliedFeaturesRAOINT
Definition X86TargetParser.cpp:626
constexpr FeatureBitset FeaturesX86_64_V4
Definition X86TargetParser.cpp:75
constexpr FeatureBitset FeaturesNovalake
Definition X86TargetParser.cpp:178
constexpr FeatureBitset ImpliedFeaturesLVI_CFI
Definition X86TargetParser.cpp:553
constexpr FeatureBitset ImpliedFeaturesCMPXCHG16B
Definition X86TargetParser.cpp:510
constexpr FeatureBitset ImpliedFeaturesSSE2
Definition X86TargetParser.cpp:563
constexpr FeatureBitset FeaturesBonnell
Definition X86TargetParser.cpp:150
constexpr FeatureBitset FeaturesPenryn
Definition X86TargetParser.cpp:82
constexpr FeatureBitset ImpliedFeaturesKL
Definition X86TargetParser.cpp:634
constexpr FeatureBitset ImpliedFeaturesBMI
Definition X86TargetParser.cpp:503
constexpr FeatureBitset ImpliedFeaturesGFNI
Definition X86TargetParser.cpp:578
constexpr FeatureBitset ImpliedFeatures64BIT
Definition X86TargetParser.cpp:501
constexpr FeatureBitset FeaturesK8
Definition X86TargetParser.cpp:198
constexpr FeatureBitset ImpliedFeaturesAVX512VP2INTERSECT
Definition X86TargetParser.cpp:599
constexpr FeatureBitset ImpliedFeaturesSM4
Definition X86TargetParser.cpp:584
constexpr FeatureBitset ImpliedFeaturesENQCMD
Definition X86TargetParser.cpp:513
constexpr FeatureBitset ImpliedFeaturesAVXVNNI
Definition X86TargetParser.cpp:638
constexpr FeatureBitset ImpliedFeaturesPKU
Definition X86TargetParser.cpp:526
constexpr FeatureBitset ImpliedFeaturesTSXLDTRK
Definition X86TargetParser.cpp:539
constexpr FeatureBitset ImpliedFeaturesPTWRITE
Definition X86TargetParser.cpp:528
constexpr FeatureBitset FeaturesPentium4
Definition X86TargetParser.cpp:62
constexpr FeatureBitset ImpliedFeaturesXSAVES
Definition X86TargetParser.cpp:559
constexpr FeatureBitset ImpliedFeaturesAVX512VNNI
Definition X86TargetParser.cpp:595
constexpr FeatureBitset ImpliedFeaturesAVX512BW
Definition X86TargetParser.cpp:588
constexpr FeatureBitset ImpliedFeaturesSGX
Definition X86TargetParser.cpp:536
constexpr FeatureBitset ImpliedFeaturesSSE4_2
Definition X86TargetParser.cpp:567
constexpr FeatureBitset ImpliedFeaturesAVX512VBMI
Definition X86TargetParser.cpp:597
constexpr FeatureBitset FeaturesAlderlake
Definition X86TargetParser.cpp:162
constexpr FeatureBitset ImpliedFeaturesSHA512
Definition X86TargetParser.cpp:631
constexpr FeatureBitset ImpliedFeaturesAMX_MOVRS
Definition X86TargetParser.cpp:618
constexpr FeatureBitset ImpliedFeaturesAVXIFMA
Definition X86TargetParser.cpp:629
constexpr FeatureBitset ImpliedFeaturesAMX_TF32
Definition X86TargetParser.cpp:621
constexpr FeatureBitset ImpliedFeaturesPCLMUL
Definition X86TargetParser.cpp:579
constexpr FeatureBitset ImpliedFeaturesXSAVEC
Definition X86TargetParser.cpp:557
constexpr FeatureBitset FeaturesBDVER2
Definition X86TargetParser.cpp:223
constexpr FeatureBitset ImpliedFeaturesSSE
Definition X86TargetParser.cpp:562
constexpr FeatureBitset ImpliedFeaturesNF
Definition X86TargetParser.cpp:654
constexpr FeatureBitset FeaturesKNM
Definition X86TargetParser.cpp:100
constexpr FeatureBitset ImpliedFeaturesSAHF
Definition X86TargetParser.cpp:534
constexpr FeatureBitset ImpliedFeaturesLZCNT
Definition X86TargetParser.cpp:518
constexpr FeatureBitset ImpliedFeaturesMOVDIR64B
Definition X86TargetParser.cpp:522
constexpr FeatureBitset ImpliedFeaturesCMPXCHG8B
Definition X86TargetParser.cpp:511
constexpr FeatureInfo FeatureInfos[]
Definition X86TargetParser.cpp:665
constexpr FeatureBitset FeaturesGoldmont
Definition X86TargetParser.cpp:154
constexpr FeatureBitset ImpliedFeaturesAVX2
Definition X86TargetParser.cpp:569
constexpr FeatureBitset FeaturesBDVER4
Definition X86TargetParser.cpp:227
constexpr FeatureBitset ImpliedFeaturesAVX512VL
Definition X86TargetParser.cpp:590
constexpr FeatureBitset FeaturesSilvermont
Definition X86TargetParser.cpp:152
constexpr FeatureBitset ImpliedFeaturesAMX_FP8
Definition X86TargetParser.cpp:617
constexpr FeatureBitset FeaturesCore2
Definition X86TargetParser.cpp:80
constexpr FeatureBitset ImpliedFeaturesXOP
Definition X86TargetParser.cpp:609
constexpr FeatureBitset ImpliedFeaturesINVPCID
Definition X86TargetParser.cpp:516
constexpr FeatureBitset ImpliedFeaturesRDSEED
Definition X86TargetParser.cpp:532
constexpr FeatureBitset ImpliedFeaturesAVX512F
Definition X86TargetParser.cpp:571
constexpr FeatureBitset ImpliedFeaturesSM3
Definition X86TargetParser.cpp:583
constexpr FeatureBitset ImpliedFeaturesWIDEKL
Definition X86TargetParser.cpp:635
constexpr FeatureBitset ImpliedFeaturesADX
Definition X86TargetParser.cpp:502
constexpr FeatureBitset FeaturesArrowlake
Definition X86TargetParser.cpp:168
static constexpr FeatureBitset FeaturesZNVER4
Definition X86TargetParser.cpp:248
constexpr FeatureBitset ImpliedFeaturesSHA
Definition X86TargetParser.cpp:580
constexpr FeatureBitset ImpliedFeaturesUSERMSR
Definition X86TargetParser.cpp:541
constexpr FeatureBitset FeaturesTigerlake
Definition X86TargetParser.cpp:129
constexpr FeatureBitset ImpliedFeaturesAVX10_1
Definition X86TargetParser.cpp:641
constexpr FeatureBitset ImpliedFeaturesRDRND
Definition X86TargetParser.cpp:531
constexpr FeatureBitset ImpliedFeaturesZU
Definition X86TargetParser.cpp:656
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
This is a constexpr reimplementation of a subset of std::bitset.
Container class for subtarget features.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
reference emplace_back(ArgTypes &&... Args)
void push_back(const T &Elt)
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
StringRef - Represent a constant reference to a string, i.e.
A switch()-like statement whose cases are string literals.
LLVM Value Representation.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Define some predicates that are used for node matching.
LLVM_ABI std::array< uint32_t, 4 > getCpuSupportsMask(ArrayRef< StringRef > FeatureStrs)
Definition X86TargetParser.cpp:760
LLVM_ABI char getCPUDispatchMangling(StringRef Name)
Definition X86TargetParser.cpp:745
LLVM_ABI CPUKind parseTuneCPU(StringRef CPU, bool Only64Bit=false)
Definition X86TargetParser.cpp:464
LLVM_ABI void updateImpliedFeatures(StringRef Feature, bool Enabled, StringMap< bool > &Features)
Set or clear entries in Features that are implied to be enabled/disabled by the provided Feature.
Definition X86TargetParser.cpp:720
LLVM_ABI CPUKind parseArchX86(StringRef CPU, bool Only64Bit=false)
Parse CPU string into a CPUKind.
Definition X86TargetParser.cpp:455
LLVM_ABI void fillValidTuneCPUList(SmallVectorImpl< StringRef > &Values, bool Only64Bit=false)
Provide a list of valid -mtune names.
Definition X86TargetParser.cpp:478
LLVM_ABI void getFeaturesForCPU(StringRef CPU, SmallVectorImpl< StringRef > &Features, bool NeedPlus=false)
Fill in the features that CPU supports into Features.
Definition X86TargetParser.cpp:670
LLVM_ABI unsigned getFeaturePriority(ProcessorFeatures Feat)
Definition X86TargetParser.cpp:776
LLVM_ABI void fillValidCPUArchList(SmallVectorImpl< StringRef > &Values, bool Only64Bit=false)
Provide a list of valid CPU names.
Definition X86TargetParser.cpp:470
LLVM_ABI bool validateCPUSpecificCPUDispatch(StringRef Name)
Definition X86TargetParser.cpp:753
LLVM_ABI ProcessorFeatures getKeyFeature(CPUKind Kind)
Get the key feature prioritizing target multiversioning.
Definition X86TargetParser.cpp:487
This is an optimization pass for GlobalISel generic memory operations.
auto find_if(R &&Range, UnaryPredicate P)
Provide wrappers to std::find_if which take ranges instead of having to pass begin/end explicitly.
bool is_contained(R &&Range, const E &Element)
Returns true if Element is found in Range.
@ Enabled
Convert any .debug_str_offsets tables to DWARF64 if needed.