LLVM: include/llvm/MC/TargetRegistry.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18#ifndef LLVM_MC_TARGETREGISTRY_H

19#define LLVM_MC_TARGETREGISTRY_H

20

30#include

31#include

32#include

33#include

34#include

35#include

36

37namespace llvm {

38

39class AsmPrinter;

40class MCAsmBackend;

41class MCAsmInfo;

42class MCAsmParser;

43class MCCodeEmitter;

44class MCContext;

45class MCDisassembler;

46class MCInstPrinter;

47class MCInstrAnalysis;

48class MCInstrInfo;

49class MCObjectWriter;

50class MCRegisterInfo;

51class MCRelocationInfo;

52class MCStreamer;

53class MCSubtargetInfo;

54class MCSymbolizer;

55class MCTargetAsmParser;

56class MCTargetOptions;

57class MCTargetStreamer;

58class raw_ostream;

59class TargetMachine;

60class TargetOptions;

61namespace mca {

66}

67

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

89 MCInstPrinter *InstPrint, std::unique_ptr &&CE,

90 std::unique_ptr &&TAB);

91

93 std::unique_ptr &&TAB,

94 std::unique_ptr &&OW,

95 std::unique_ptr &&CE);

97 std::unique_ptr &&TAB,

98 std::unique_ptr &&OW,

99 std::unique_ptr &&CE);

101 std::unique_ptr &&TAB,

102 std::unique_ptr &&OW,

103 std::unique_ptr &&CE,

104 bool DWARFMustBeAtTheEnd,

105 bool LabelSections = false);

107 std::unique_ptr &&TAB,

108 std::unique_ptr &&OW,

109 std::unique_ptr &&CE);

111 std::unique_ptr &&TAB,

112 std::unique_ptr &&OW,

113 std::unique_ptr &&CE);

115 std::unique_ptr &&TAB,

116 std::unique_ptr &&OW,

117 std::unique_ptr &&CE);

118

120

124 std::unique_ptr &&RelInfo);

125

129

132

135

136

137

138

139

140

141

142

143

145public:

147

149

154 bool PIC,

155 bool LargeCodeModel);

165 std::optionalCodeModel::Model CM, CodeGenOptLevel OL, bool JIT);

166

167

168

170 TargetMachine &TM, std::unique_ptr &&Streamer);

182 unsigned SyntaxVariant,

190 std::unique_ptr &&TAB,

191 std::unique_ptr &&OW,

192 std::unique_ptr &&Emitter);

195 std::unique_ptr &&OW,

196 std::unique_ptr &&Emitter);

199 std::unique_ptr &&OW,

200 std::unique_ptr &&Emitter);

203 std::unique_ptr &&TAB,

204 std::unique_ptr &&OW,

205 std::unique_ptr &&Emitter);

206

218 std::unique_ptr &&RelInfo);

219

224

228

232

233private:

234

235

237

238

240

241

242 const char *Name;

243

244

245 const char *ShortDesc;

246

247

248

249 const char *BackendName;

250

251

252 bool HasJIT;

253

254

255

257

258

260

261

262

264

265

266

268

269

270

272

273

274

276

277

278

280

281

282

284

285

286

288

289

290

292

293

294

296

297

298

300

301

302

304

305

310

311

312

314

315

316

318

319

320

322

323

324

326

327

328

330

331

332

334

335

336

338

339

340

342

343public:

345

346

347

348

349

351

352

354

355

357

358

360

361

362

363

364

365

366 bool hasJIT() const { return HasJIT; }

367

368

370

371

372 bool hasMCAsmBackend() const { return MCAsmBackendCtorFn != nullptr; }

373

374

375 bool hasMCAsmParser() const { return MCAsmParserCtorFn != nullptr; }

376

377

378

379

380

381

382

383

384

385

386

387

390 if (!MCAsmInfoCtorFn)

391 return nullptr;

393 }

394

395

396

397

399 bool LargeCodeModel = false) const {

400 if (!MCObjectFileInfoCtorFn) {

403 return MOFI;

404 }

405 return MCObjectFileInfoCtorFn(Ctx, PIC, LargeCodeModel);

406 }

407

408

409

411 if (!MCInstrInfoCtorFn)

412 return nullptr;

413 return MCInstrInfoCtorFn();

414 }

415

416

417

419 if (!MCInstrAnalysisCtorFn)

420 return nullptr;

421 return MCInstrAnalysisCtorFn(Info);

422 }

423

424

425

427 if (!MCRegInfoCtorFn)

428 return nullptr;

429 return MCRegInfoCtorFn(Triple(TT));

430 }

431

432

433

434

435

436

437

438

439

440

443 if (!MCSubtargetInfoCtorFn)

444 return nullptr;

445 return MCSubtargetInfoCtorFn(Triple(TheTriple), CPU, Features);

446 }

447

448

449

450

451

452

453

454

458 std::optionalCodeModel::Model CM = std::nullopt,

460 if (!TargetMachineCtorFn)

461 return nullptr;

462 return TargetMachineCtorFn(*this, Triple(TT), CPU, Features, Options, RM,

463 CM, OL, JIT);

464 }

465

466

470 if (!MCAsmBackendCtorFn)

471 return nullptr;

472 return MCAsmBackendCtorFn(*this, STI, MRI, Options);

473 }

474

475

476

477

478

483 if (!MCAsmParserCtorFn)

484 return nullptr;

485 return MCAsmParserCtorFn(STI, Parser, MII, Options);

486 }

487

488

489

491 std::unique_ptr &&Streamer) const {

492 if (!AsmPrinterCtorFn)

493 return nullptr;

494 return AsmPrinterCtorFn(TM, std::move(Streamer));

495 }

496

499 if (!MCDisassemblerCtorFn)

500 return nullptr;

501 return MCDisassemblerCtorFn(*this, STI, Ctx);

502 }

503

508 if (!MCInstPrinterCtorFn)

509 return nullptr;

510 return MCInstPrinterCtorFn(T, SyntaxVariant, MAI, MII, MRI);

511 }

512

513

516 if (!MCCodeEmitterCtorFn)

517 return nullptr;

518 return MCCodeEmitterCtorFn(II, Ctx);

519 }

520

521

522

523

524

525

526

527

529 std::unique_ptr TAB,

530 std::unique_ptr OW,

531 std::unique_ptr Emitter,

533 LLVM_DEPRECATED("Use the overload without the 3 trailing bool", "")

540

549 bool IsVerboseAsm, bool UseDwarfDirectory,

552

556 if (AsmTargetStreamerCtorFn)

557 return AsmTargetStreamerCtorFn(S, OS, InstPrint);

558 return nullptr;

559 }

560

564 return S;

565 }

566

568 if (NullTargetStreamerCtorFn)

569 return NullTargetStreamerCtorFn(S);

570 return nullptr;

571 }

572

573

574

575

576

579 ? MCRelocationInfoCtorFn

581 return Fn(Triple(TT), Ctx);

582 }

583

584

585

586

587

588

589

590

591

592

593

594

595

600 std::unique_ptr &&RelInfo) const {

603 return Fn(Triple(TT), GetOpInfo, SymbolLookUp, DisInfo, Ctx,

604 std::move(RelInfo));

605 }

606

607

608

612 if (CustomBehaviourCtorFn)

613 return CustomBehaviourCtorFn(STI, SrcMgr, MCII);

614 return nullptr;

615 }

616

617

618

621 if (InstrPostProcessCtorFn)

622 return InstrPostProcessCtorFn(STI, MCII);

623 return nullptr;

624 }

625

626

627

628

632 if (InstrumentManagerCtorFn)

633 return InstrumentManagerCtorFn(STI, MCII);

634 return nullptr;

635 }

636

637

638};

639

640

642

643

644

645

647

650

651 const Target *Current = nullptr;

652

654

655 public:

661

663

666

667

669 assert(Current && "Cannot increment end iterator!");

670 Current = Current->getNext();

671 return *this;

672 }

675 ++*this;

676 return tmp;

677 }

678

680 assert(Current && "Cannot dereference end iterator!");

681 return *Current;

682 }

683

685 };

686

687

688

690

691

692

693

695

696

697

698

699

700

702

703

704

705

706

707

708

709

710

711

712

713

715 std::string &Error);

716

717

718

719

720

721

722

723

724

725

726

727

728

729

730

731

732

733

734

735

736

737

738

740 const char *BackendName,

742 bool HasJIT = false);

743

744

745

746

747

748

749

750

751

752

754 T.MCAsmInfoCtorFn = Fn;

755 }

756

757

758

759

760

761

762

763

764

767 T.MCObjectFileInfoCtorFn = Fn;

768 }

769

770

771

772

773

774

775

776

777

778

780 T.MCInstrInfoCtorFn = Fn;

781 }

782

783

784

787 T.MCInstrAnalysisCtorFn = Fn;

788 }

789

790

791

792

793

794

795

796

797

798

800 T.MCRegInfoCtorFn = Fn;

801 }

802

803

804

805

806

807

808

809

810

811

814 T.MCSubtargetInfoCtorFn = Fn;

815 }

816

817

818

819

820

821

822

823

824

825

827 T.TargetMachineCtorFn = Fn;

828 }

829

830

831

832

833

834

835

836

837

838

840 T.MCAsmBackendCtorFn = Fn;

841 }

842

843

844

845

846

847

848

849

850

851

853 T.MCAsmParserCtorFn = Fn;

854 }

855

856

857

858

859

860

861

862

863

864

866 T.AsmPrinterCtorFn = Fn;

867 }

868

869

870

871

872

873

874

875

876

877

880 T.MCDisassemblerCtorFn = Fn;

881 }

882

883

884

885

886

887

888

889

890

891

893 T.MCInstPrinterCtorFn = Fn;

894 }

895

896

897

898

899

900

901

902

903

904

906 T.MCCodeEmitterCtorFn = Fn;

907 }

908

910 T.COFFStreamerCtorFn = Fn;

911 }

912

914 T.MachOStreamerCtorFn = Fn;

915 }

916

918 T.ELFStreamerCtorFn = Fn;

919 }

920

922 T.XCOFFStreamerCtorFn = Fn;

923 }

924

927 T.NullTargetStreamerCtorFn = Fn;

928 }

929

932 T.AsmTargetStreamerCtorFn = Fn;

933 }

934

935 static void

938 T.ObjectTargetStreamerCtorFn = Fn;

939 }

940

941

942

943

944

945

946

947

948

949

952 T.MCRelocationInfoCtorFn = Fn;

953 }

954

955

956

957

958

959

960

961

962

963

965 T.MCSymbolizerCtorFn = Fn;

966 }

967

968

969

970

971

972

973

974

975

976

979 T.CustomBehaviourCtorFn = Fn;

980 }

981

982

983

984

985

986

987

988

989

990

993 T.InstrPostProcessCtorFn = Fn;

994 }

995

996

997

998

999

1000

1001

1002

1003

1004

1005

1008 T.InstrumentManagerCtorFn = Fn;

1009 }

1010

1011

1012};

1013

1014

1015

1016

1017

1018

1019

1020

1021

1022

1023

1024

1025

1026

1027

1029 bool HasJIT = false>

1032 const char *BackendName) {

1034 HasJIT);

1035 }

1036

1038 return Arch == TargetArchType;

1039 }

1040};

1041

1042

1043

1044

1045

1046

1047

1048

1049

1053 }

1054

1055private:

1058 return new MCAsmInfoImpl(TT, Options);

1059 }

1060};

1061

1062

1063

1064

1065

1066

1067

1068

1069

1073 }

1074};

1075

1076

1077

1078

1079

1080

1081

1082

1083

1087 }

1088

1089private:

1091 bool LargeCodeModel = false) {

1092 return new MCObjectFileInfoImpl(Ctx, PIC, LargeCodeModel);

1093 }

1094};

1095

1096

1097

1098

1099

1100

1101

1102

1106 }

1107};

1108

1109

1110

1111

1112

1113

1114

1115

1116

1120 }

1121

1122private:

1123 static MCInstrInfo *Allocator() { return new MCInstrInfoImpl(); }

1124};

1125

1126

1127

1128

1129

1130

1131

1132

1133

1137 }

1138};

1139

1140

1141

1142

1143

1144

1145

1146

1147

1151 }

1152

1153private:

1155 return new MCInstrAnalysisImpl(Info);

1156 }

1157};

1158

1159

1160

1161

1162

1163

1164

1165

1166

1170 }

1171};

1172

1173

1174

1175

1176

1177

1178

1179

1180

1184 }

1185

1186private:

1188 return new MCRegisterInfoImpl();

1189 }

1190};

1191

1192

1193

1194

1195

1196

1197

1198

1199

1203 }

1204};

1205

1206

1207

1208

1209

1210

1211

1212

1213

1217 }

1218

1219private:

1222 return new MCSubtargetInfoImpl();

1223 }

1224};

1225

1226

1227

1228

1229

1230

1231

1232

1233

1237 }

1238};

1239

1240

1241

1242

1243

1244

1245

1246

1247

1251 }

1252

1253private:

1257 std::optionalCodeModel::Model CM, CodeGenOptLevel OL, bool JIT) {

1258 return new TargetMachineImpl(T, TT, CPU, FS, Options, RM, CM, OL, JIT);

1259 }

1260};

1261

1262

1263

1264

1265

1266

1267

1268

1272 }

1273

1274private:

1278 return new MCAsmBackendImpl(T, STI, MRI);

1279 }

1280};

1281

1282

1283

1284

1285

1286

1287

1288

1289

1293 }

1294

1295private:

1299 return new MCAsmParserImpl(STI, P, MII, Options);

1300 }

1301};

1302

1303

1304

1305

1306

1307

1308

1309

1310

1314 }

1315

1316private:

1318 std::unique_ptr &&Streamer) {

1319 return new AsmPrinterImpl(TM, std::move(Streamer));

1320 }

1321};

1322

1323

1324

1325

1326

1327

1328

1329

1330

1334 }

1335

1336private:

1339 return new MCCodeEmitterImpl();

1340 }

1341};

1342

1343}

1344

1345#endif

unsigned const MachineRegisterInfo * MRI

Analysis containing CSE Info

#define LLVM_DEPRECATED(MSG, FIX)

dxil DXContainer Global Emitter

uint64_t IntrinsicInst * II

PassInstrumentationCallbacks PIC

assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())

This class is intended to be used as a driving class for all asm writers.

Lightweight error class with error context and mandatory checking.

Generic interface to target specific assembler backends.

This class is intended to be used as a base class for asm properties and features specific to the tar...

Generic assembler parser interface, for use by target specific assembly parsers.

MCCodeEmitter - Generic instruction encoding interface.

Context object for machine code objects.

Superclass for all disassemblers.

This is an instance of a target assembly language printer that converts an MCInst to valid target ass...

Interface to description of machine instruction set.

void initMCObjectFileInfo(MCContext &MCCtx, bool PIC, bool LargeCodeModel=false)

Defines the object file and target independent interfaces used by the assembler backend to write nati...

MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...

Create MCExprs from relocations found in an object file.

Streaming machine code generation interface.

Generic base class for all target subtargets.

Symbolize and annotate disassembled instructions.

MCTargetAsmParser - Generic interface to target specific assembly parsers.

Target specific streamer interface.

StringRef - Represent a constant reference to a string, i.e.

Primary interface to the complete machine description for the target machine.

bool operator!=(const iterator &x) const

const Target * operator->() const

bool operator==(const iterator &x) const

const Target & operator*() const

std::ptrdiff_t difference_type

std::forward_iterator_tag iterator_category

Target - Wrapper for Target specific information.

MCTargetStreamer *(*)(MCStreamer &S) NullTargetStreamerCtorTy

MCStreamer *(*)(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) XCOFFStreamerCtorTy

MCDisassembler *(*)(const Target &T, const MCSubtargetInfo &STI, MCContext &Ctx) MCDisassemblerCtorTy

mca::InstrPostProcess *(*)(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) InstrPostProcessCtorTy

MCAsmInfo *(*)(const MCRegisterInfo &MRI, const Triple &TT, const MCTargetOptions &Options) MCAsmInfoCtorFnTy

bool hasTargetMachine() const

hasTargetMachine - Check if this target supports code generation.

TargetMachine *(*)(const Target &T, const Triple &TT, StringRef CPU, StringRef Features, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM, CodeGenOptLevel OL, bool JIT) TargetMachineCtorTy

MCCodeEmitter * createMCCodeEmitter(const MCInstrInfo &II, MCContext &Ctx) const

createMCCodeEmitter - Create a target specific code emitter.

const char * getName() const

getName - Get the target name.

MCObjectFileInfo * createMCObjectFileInfo(MCContext &Ctx, bool PIC, bool LargeCodeModel=false) const

Create a MCObjectFileInfo implementation for the specified target triple.

const Target * getNext() const

MCSubtargetInfo * createMCSubtargetInfo(StringRef TheTriple, StringRef CPU, StringRef Features) const

createMCSubtargetInfo - Create a MCSubtargetInfo implementation.

AsmPrinter *(*)(TargetMachine &TM, std::unique_ptr< MCStreamer > &&Streamer) AsmPrinterCtorTy

MCSymbolizer * createMCSymbolizer(StringRef TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo) const

createMCSymbolizer - Create a target specific MCSymbolizer.

MCAsmBackend * createMCAsmBackend(const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options) const

createMCAsmBackend - Create a target specific assembly parser.

MCObjectFileInfo *(*)(MCContext &Ctx, bool PIC, bool LargeCodeModel) MCObjectFileInfoCtorFnTy

bool hasMCAsmParser() const

hasMCAsmParser - Check if this target supports assembly parsing.

MCStreamer * createNullStreamer(MCContext &Ctx) const

MCRelocationInfo * createMCRelocationInfo(StringRef TT, MCContext &Ctx) const

createMCRelocationInfo - Create a target specific MCRelocationInfo.

MCStreamer *(*)(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) ELFStreamerCtorTy

MCTargetStreamer * createAsmTargetStreamer(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint) const

MCInstrAnalysis *(*)(const MCInstrInfo *Info) MCInstrAnalysisCtorFnTy

MCRegisterInfo * createMCRegInfo(StringRef TT) const

createMCRegInfo - Create a MCRegisterInfo implementation.

MCTargetStreamer *(*)(MCStreamer &S, const MCSubtargetInfo &STI) ObjectTargetStreamerCtorTy

MCRegisterInfo *(*)(const Triple &TT) MCRegInfoCtorFnTy

MCInstrInfo *(*)() MCInstrInfoCtorFnTy

MCStreamer * createMCObjectStreamer(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, const MCSubtargetInfo &STI) const

Create a target specific MCStreamer.

mca::CustomBehaviour * createCustomBehaviour(const MCSubtargetInfo &STI, const mca::SourceMgr &SrcMgr, const MCInstrInfo &MCII) const

createCustomBehaviour - Create a target specific CustomBehaviour.

bool(*)(Triple::ArchType Arch) ArchMatchFnTy

MCInstPrinter *(*)(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI) MCInstPrinterCtorTy

MCDisassembler * createMCDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx) const

mca::CustomBehaviour *(*)(const MCSubtargetInfo &STI, const mca::SourceMgr &SrcMgr, const MCInstrInfo &MCII) CustomBehaviourCtorTy

TargetMachine * createTargetMachine(StringRef TT, StringRef CPU, StringRef Features, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM=std::nullopt, CodeGenOptLevel OL=CodeGenOptLevel::Default, bool JIT=false) const

createTargetMachine - Create a target specific machine implementation for the specified Triple.

bool hasMCAsmBackend() const

hasMCAsmBackend - Check if this target supports .o generation.

MCAsmInfo * createMCAsmInfo(const MCRegisterInfo &MRI, StringRef TheTriple, const MCTargetOptions &Options) const

createMCAsmInfo - Create a MCAsmInfo implementation for the specified target triple.

MCInstPrinter * createMCInstPrinter(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI) const

MCSymbolizer *(*)(const Triple &TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo) MCSymbolizerCtorTy

MCSubtargetInfo *(*)(const Triple &TT, StringRef CPU, StringRef Features) MCSubtargetInfoCtorFnTy

mca::InstrPostProcess * createInstrPostProcess(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) const

createInstrPostProcess - Create a target specific InstrPostProcess.

const char * getBackendName() const

getBackendName - Get the backend name.

MCTargetStreamer *(*)(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint) AsmTargetStreamerCtorTy

MCAsmBackend *(*)(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options) MCAsmBackendCtorTy

MCTargetAsmParser * createMCAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser, const MCInstrInfo &MII, const MCTargetOptions &Options) const

createMCAsmParser - Create a target specific assembly parser.

MCInstrAnalysis * createMCInstrAnalysis(const MCInstrInfo *Info) const

createMCInstrAnalysis - Create a MCInstrAnalysis implementation.

const char * getShortDescription() const

getShortDescription - Get a short description of the target.

bool hasJIT() const

hasJIT - Check if this targets supports the just-in-time compilation.

MCCodeEmitter *(*)(const MCInstrInfo &II, MCContext &Ctx) MCCodeEmitterCtorTy

mca::InstrumentManager *(*)(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) InstrumentManagerCtorTy

MCStreamer *(*)(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) COFFStreamerCtorTy

MCTargetStreamer * createNullTargetStreamer(MCStreamer &S) const

MCRelocationInfo *(*)(const Triple &TT, MCContext &Ctx) MCRelocationInfoCtorTy

MCStreamer * createAsmStreamer(MCContext &Ctx, std::unique_ptr< formatted_raw_ostream > OS, MCInstPrinter *IP, std::unique_ptr< MCCodeEmitter > CE, std::unique_ptr< MCAsmBackend > TAB) const

MCTargetAsmParser *(*)(const MCSubtargetInfo &STI, MCAsmParser &P, const MCInstrInfo &MII, const MCTargetOptions &Options) MCAsmParserCtorTy

MCStreamer *(*)(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) MachOStreamerCtorTy

AsmPrinter * createAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > &&Streamer) const

createAsmPrinter - Create a target specific assembly printer pass.

MCInstrInfo * createMCInstrInfo() const

createMCInstrInfo - Create a MCInstrInfo implementation.

mca::InstrumentManager * createInstrumentManager(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) const

createInstrumentManager - Create a target specific InstrumentManager.

Triple - Helper class for working with autoconf configuration names.

A Use represents the edge between a Value definition and its users.

formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...

A range adaptor for a pair of iterators.

Class which can be overriden by targets to enforce instruction dependencies and behaviours that aren'...

Class which can be overriden by targets to modify the mca::Instruction objects before the pipeline st...

This class allows targets to optionally customize the logic that resolves scheduling class IDs.

This class implements an extremely fast bulk output stream that can only output to a stream.

const char *(* LLVMSymbolLookupCallback)(void *DisInfo, uint64_t ReferenceValue, uint64_t *ReferenceType, uint64_t ReferencePC, const char **ReferenceName)

The type for the symbol lookup function.

int(* LLVMOpInfoCallback)(void *DisInfo, uint64_t PC, uint64_t Offset, uint64_t OpSize, uint64_t InstSize, int TagType, void *TagBuf)

The type for the operand information call back function.

This provides a very simple, boring adaptor for a begin and end iterator into a range type.

This is an optimization pass for GlobalISel generic memory operations.

mca::CustomBehaviour * createCustomBehaviour(const MCSubtargetInfo &STI, const mca::SourceMgr &SrcMgr, const MCInstrInfo &MCII)

MCStreamer * createAsmStreamer(MCContext &Ctx, std::unique_ptr< formatted_raw_ostream > OS, MCInstPrinter *InstPrint, std::unique_ptr< MCCodeEmitter > &&CE, std::unique_ptr< MCAsmBackend > &&TAB)

Create a machine code streamer which will print out assembly for the native target,...

MCStreamer * createELFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)

MCStreamer * createNullStreamer(MCContext &Ctx)

Create a dummy machine code streamer, which does nothing.

MCSymbolizer * createMCSymbolizer(const Triple &TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo)

MCStreamer * createMachOStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool DWARFMustBeAtTheEnd, bool LabelSections=false)

MCRelocationInfo * createMCRelocationInfo(const Triple &TT, MCContext &Ctx)

CodeGenOptLevel

Code generation optimization level.

MCStreamer * createDXContainerStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)

mca::InstrumentManager * createInstrumentManager(const MCSubtargetInfo &STI, const MCInstrInfo &MCII)

MCStreamer * createWasmStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)

MCStreamer * createGOFFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)

MCStreamer * createSPIRVStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)

mca::InstrPostProcess * createInstrPostProcess(const MCSubtargetInfo &STI, const MCInstrInfo &MCII)

Implement std::hash so that hash_code can be used in STL containers.

Description of the encoding of one expression Op.

RegisterAsmPrinter - Helper template for registering a target specific assembly printer,...

RegisterAsmPrinter(Target &T)

RegisterMCAsmBackend - Helper template for registering a target specific assembler backend.

RegisterMCAsmBackend(Target &T)

RegisterMCAsmInfoFn - Helper template for registering a target assembly info implementation.

RegisterMCAsmInfoFn(Target &T, Target::MCAsmInfoCtorFnTy Fn)

RegisterMCAsmInfo - Helper template for registering a target assembly info implementation.

RegisterMCAsmInfo(Target &T)

RegisterMCAsmParser - Helper template for registering a target specific assembly parser,...

RegisterMCAsmParser(Target &T)

RegisterMCCodeEmitter - Helper template for registering a target specific machine code emitter,...

RegisterMCCodeEmitter(Target &T)

RegisterMCInstrAnalysisFn - Helper template for registering a target instruction analyzer implementat...

RegisterMCInstrAnalysisFn(Target &T, Target::MCInstrAnalysisCtorFnTy Fn)

RegisterMCInstrAnalysis - Helper template for registering a target instruction analyzer implementatio...

RegisterMCInstrAnalysis(Target &T)

RegisterMCInstrInfoFn - Helper template for registering a target instruction info implementation.

RegisterMCInstrInfoFn(Target &T, Target::MCInstrInfoCtorFnTy Fn)

RegisterMCInstrInfo - Helper template for registering a target instruction info implementation.

RegisterMCInstrInfo(Target &T)

Helper template for registering a target object file info implementation.

RegisterMCObjectFileInfoFn(Target &T, Target::MCObjectFileInfoCtorFnTy Fn)

Helper template for registering a target object file info implementation.

RegisterMCObjectFileInfo(Target &T)

RegisterMCRegInfoFn - Helper template for registering a target register info implementation.

RegisterMCRegInfoFn(Target &T, Target::MCRegInfoCtorFnTy Fn)

RegisterMCRegInfo - Helper template for registering a target register info implementation.

RegisterMCRegInfo(Target &T)

RegisterMCSubtargetInfoFn - Helper template for registering a target subtarget info implementation.

RegisterMCSubtargetInfoFn(Target &T, Target::MCSubtargetInfoCtorFnTy Fn)

RegisterMCSubtargetInfo - Helper template for registering a target subtarget info implementation.

RegisterMCSubtargetInfo(Target &T)

RegisterTargetMachine - Helper template for registering a target machine implementation,...

RegisterTargetMachine(Target &T)

RegisterTarget - Helper template for registering a target, for use in the target's initialization fun...

static bool getArchMatch(Triple::ArchType Arch)

RegisterTarget(Target &T, const char *Name, const char *Desc, const char *BackendName)

TargetRegistry - Generic interface to target specific features.

static void RegisterMCSymbolizer(Target &T, Target::MCSymbolizerCtorTy Fn)

RegisterMCSymbolizer - Register an MCSymbolizer implementation for the given target.

static void RegisterMCRegInfo(Target &T, Target::MCRegInfoCtorFnTy Fn)

RegisterMCRegInfo - Register a MCRegisterInfo implementation for the given target.

static void RegisterAsmPrinter(Target &T, Target::AsmPrinterCtorTy Fn)

RegisterAsmPrinter - Register an AsmPrinter implementation for the given target.

static void RegisterMCAsmBackend(Target &T, Target::MCAsmBackendCtorTy Fn)

RegisterMCAsmBackend - Register a MCAsmBackend implementation for the given target.

static void RegisterXCOFFStreamer(Target &T, Target::XCOFFStreamerCtorTy Fn)

static void RegisterMCCodeEmitter(Target &T, Target::MCCodeEmitterCtorTy Fn)

RegisterMCCodeEmitter - Register a MCCodeEmitter implementation for the given target.

static void RegisterMCAsmInfo(Target &T, Target::MCAsmInfoCtorFnTy Fn)

RegisterMCAsmInfo - Register a MCAsmInfo implementation for the given target.

static void RegisterMCSubtargetInfo(Target &T, Target::MCSubtargetInfoCtorFnTy Fn)

RegisterMCSubtargetInfo - Register a MCSubtargetInfo implementation for the given target.

static void RegisterObjectTargetStreamer(Target &T, Target::ObjectTargetStreamerCtorTy Fn)

static void RegisterMCInstrAnalysis(Target &T, Target::MCInstrAnalysisCtorFnTy Fn)

RegisterMCInstrAnalysis - Register a MCInstrAnalysis implementation for the given target.

static void RegisterELFStreamer(Target &T, Target::ELFStreamerCtorTy Fn)

static void RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn)

static void RegisterInstrPostProcess(Target &T, Target::InstrPostProcessCtorTy Fn)

RegisterInstrPostProcess - Register an InstrPostProcess implementation for the given target.

static const Target * lookupTarget(StringRef Triple, std::string &Error)

lookupTarget - Lookup a target based on a target triple.

static void RegisterMCDisassembler(Target &T, Target::MCDisassemblerCtorTy Fn)

RegisterMCDisassembler - Register a MCDisassembler implementation for the given target.

static void RegisterMCAsmParser(Target &T, Target::MCAsmParserCtorTy Fn)

RegisterMCAsmParser - Register a MCTargetAsmParser implementation for the given target.

static void printRegisteredTargetsForVersion(raw_ostream &OS)

printRegisteredTargetsForVersion - Print the registered targets appropriately for inclusion in a tool...

static void RegisterTargetMachine(Target &T, Target::TargetMachineCtorTy Fn)

RegisterTargetMachine - Register a TargetMachine implementation for the given target.

static void RegisterMCInstPrinter(Target &T, Target::MCInstPrinterCtorTy Fn)

RegisterMCInstPrinter - Register a MCInstPrinter implementation for the given target.

static void RegisterCOFFStreamer(Target &T, Target::COFFStreamerCtorTy Fn)

static void RegisterTarget(Target &T, const char *Name, const char *ShortDesc, const char *BackendName, Target::ArchMatchFnTy ArchMatchFn, bool HasJIT=false)

RegisterTarget - Register the given target.

static void RegisterMCInstrInfo(Target &T, Target::MCInstrInfoCtorFnTy Fn)

RegisterMCInstrInfo - Register a MCInstrInfo implementation for the given target.

static iterator_range< iterator > targets()

static void RegisterInstrumentManager(Target &T, Target::InstrumentManagerCtorTy Fn)

RegisterInstrumentManager - Register an InstrumentManager implementation for the given target.

static void RegisterCustomBehaviour(Target &T, Target::CustomBehaviourCtorTy Fn)

RegisterCustomBehaviour - Register a CustomBehaviour implementation for the given target.

static void RegisterMachOStreamer(Target &T, Target::MachOStreamerCtorTy Fn)

static void RegisterMCObjectFileInfo(Target &T, Target::MCObjectFileInfoCtorFnTy Fn)

Register a MCObjectFileInfo implementation for the given target.

static void RegisterAsmTargetStreamer(Target &T, Target::AsmTargetStreamerCtorTy Fn)

static void RegisterMCRelocationInfo(Target &T, Target::MCRelocationInfoCtorTy Fn)

RegisterMCRelocationInfo - Register an MCRelocationInfo implementation for the given target.

Abstracting the input code sequence (a sequence of MCInst) and assigning unique identifiers to every ...