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 (P.OnlyForCPUDispatchSpecific && P.Name == CPU &&

458 (P.Features[FEATURE_64BIT] || !Only64Bit))

459 return P.Kind;

460

462}

463

469

471 bool Only64Bit) {

473 if (P.OnlyForCPUDispatchSpecific && P.Name.empty() &&

474 (P.Features[FEATURE_64BIT] || !Only64Bit))

476}

477

479 bool Only64Bit) {

481 if (P.OnlyForCPUDispatchSpecific && P.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.