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
67
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
89 std::unique_ptr InstPrint,
90 std::unique_ptr CE,
91 std::unique_ptr TAB);
92
94 std::unique_ptr &&TAB,
95 std::unique_ptr &&OW,
96 std::unique_ptr &&CE);
98 std::unique_ptr &&TAB,
99 std::unique_ptr &&OW,
100 std::unique_ptr &&CE);
102 std::unique_ptr &&TAB,
103 std::unique_ptr &&OW,
104 std::unique_ptr &&CE,
105 bool DWARFMustBeAtTheEnd,
106 bool LabelSections = false);
108 std::unique_ptr &&TAB,
109 std::unique_ptr &&OW,
110 std::unique_ptr &&CE);
112 std::unique_ptr &&TAB,
113 std::unique_ptr &&OW,
114 std::unique_ptr &&CE);
117 std::unique_ptr &&OW,
118 std::unique_ptr &&CE);
119
122
126 MCContext *Ctx, std::unique_ptr &&RelInfo);
127
131
134
137
138
139
140
141
142
143
144
145
147public:
149
151
156 bool PIC,
157 bool LargeCodeModel);
167 std::optionalCodeModel::Model CM, CodeGenOptLevel OL, bool JIT);
168
169
170
172 TargetMachine &TM, std::unique_ptr &&Streamer);
184 unsigned SyntaxVariant,
192 std::unique_ptr &&TAB,
193 std::unique_ptr &&OW,
194 std::unique_ptr &&Emitter);
197 std::unique_ptr &&OW,
198 std::unique_ptr &&Emitter);
201 std::unique_ptr &&OW,
202 std::unique_ptr &&Emitter);
205 std::unique_ptr &&TAB,
206 std::unique_ptr &&OW,
207 std::unique_ptr &&Emitter);
208
214 *(*)(MCContext & Ctx, std::unique_ptr<formatted_raw_ostream> OS,
215 std::unique_ptr IP, std::unique_ptr CE,
216 std::unique_ptr TAB);
225 std::unique_ptr &&RelInfo);
226
231
235
239
240private:
241
242
244
245
247
248
249 const char *Name;
250
251
252 const char *ShortDesc;
253
254
255
256 const char *BackendName;
257
258
259 bool HasJIT;
260
261
262
264
265
267
268
269
271
272
273
275
276
277
279
280
281
283
284
285
287
288
289
291
292
293
295
296
297
299
300
301
303
304
305
307
308
309
311
312
317
318
319
321
322
323
325
326
327
329
330
331
333
334
335
337
338
339
341
342
343
345
346
347
349
350
351
353
354public:
356
357
358
359
360
362
363
364 const char *getName() const { return Name; }
365
366
368
369
371
372
373
374
375
376
377 bool hasJIT() const { return HasJIT; }
378
379
381
382
383 bool hasMCAsmBackend() const { return MCAsmBackendCtorFn != nullptr; }
384
385
386 bool hasMCAsmParser() const { return MCAsmParserCtorFn != nullptr; }
387
388
389
390
391
392
393 [[deprecated("Use overload accepting Triple instead")]]
396 if (!MCAsmInfoCtorFn)
397 return nullptr;
399 }
400
401
402
403
404
405
406
407
410 if (!MCAsmInfoCtorFn)
411 return nullptr;
412 return MCAsmInfoCtorFn(MRI, TheTriple, Options);
413 }
414
415
416
417
419 bool LargeCodeModel = false) const {
420 if (!MCObjectFileInfoCtorFn) {
423 return MOFI;
424 }
425 return MCObjectFileInfoCtorFn(Ctx, PIC, LargeCodeModel);
426 }
427
428
429
431 if (!MCInstrInfoCtorFn)
432 return nullptr;
433 return MCInstrInfoCtorFn();
434 }
435
436
437
439 if (!MCInstrAnalysisCtorFn)
440 return nullptr;
441 return MCInstrAnalysisCtorFn(Info);
442 }
443
444
445 [[deprecated("Use overload accepting Triple instead")]]
447 if (!MCRegInfoCtorFn)
448 return nullptr;
449 return MCRegInfoCtorFn(Triple(TT));
450 }
451
452
454 if (!MCRegInfoCtorFn)
455 return nullptr;
456 return MCRegInfoCtorFn(TT);
457 }
458
459
460 [[deprecated("Use overload accepting Triple instead")]]
463 if (!MCSubtargetInfoCtorFn)
464 return nullptr;
465 return MCSubtargetInfoCtorFn(Triple(TheTriple), CPU, Features);
466 }
467
468
469
470
471
472
473
474
475
476
479 if (!MCSubtargetInfoCtorFn)
480 return nullptr;
481 return MCSubtargetInfoCtorFn(TheTriple, CPU, Features);
482 }
483
484
485
486
487
488
489
490
494 std::optionalCodeModel::Model CM = std::nullopt,
496 if (!TargetMachineCtorFn)
497 return nullptr;
498 return TargetMachineCtorFn(*this, TT, CPU, Features, Options, RM, CM, OL,
499 JIT);
500 }
501
502
506 if (!MCAsmBackendCtorFn)
507 return nullptr;
508 return MCAsmBackendCtorFn(*this, STI, MRI, Options);
509 }
510
511
512
513
514
519 if (!MCAsmParserCtorFn)
520 return nullptr;
521 return MCAsmParserCtorFn(STI, Parser, MII, Options);
522 }
523
524
525
527 std::unique_ptr &&Streamer) const {
528 if (!AsmPrinterCtorFn)
529 return nullptr;
530 return AsmPrinterCtorFn(TM, std::move(Streamer));
531 }
532
535 if (!MCDisassemblerCtorFn)
536 return nullptr;
537 return MCDisassemblerCtorFn(*this, STI, Ctx);
538 }
539
544 if (!MCInstPrinterCtorFn)
545 return nullptr;
546 return MCInstPrinterCtorFn(T, SyntaxVariant, MAI, MII, MRI);
547 }
548
549
552 if (!MCCodeEmitterCtorFn)
553 return nullptr;
554 return MCCodeEmitterCtorFn(II, Ctx);
555 }
556
557
558
559
560
561
562
563
565 const Triple &T, MCContext &Ctx, std::unique_ptr TAB,
566 std::unique_ptr OW,
568
571 std::unique_ptr IP,
572 std::unique_ptr CE,
573 std::unique_ptr TAB) const;
574
578 if (AsmTargetStreamerCtorFn)
579 return AsmTargetStreamerCtorFn(S, OS, InstPrint);
580 return nullptr;
581 }
582
588
590 if (NullTargetStreamerCtorFn)
591 return NullTargetStreamerCtorFn(S);
592 return nullptr;
593 }
594
595
596 [[deprecated("Use overload accepting Triple instead")]]
600
601
602
603
604
608 ? MCRelocationInfoCtorFn
610 return Fn(TT, Ctx);
611 }
612
613
614 [[deprecated("Use overload accepting Triple instead")]]
619 std::unique_ptr &&RelInfo) const {
621 std::move(RelInfo));
622 }
623
624
625
626
627
628
629
630
631
632
633
634
635
640 std::unique_ptr &&RelInfo) const {
643 return Fn(TT, GetOpInfo, SymbolLookUp, DisInfo, Ctx, std::move(RelInfo));
644 }
645
646
647
651 if (CustomBehaviourCtorFn)
652 return CustomBehaviourCtorFn(STI, SrcMgr, MCII);
653 return nullptr;
654 }
655
656
657
660 if (InstrPostProcessCtorFn)
661 return InstrPostProcessCtorFn(STI, MCII);
662 return nullptr;
663 }
664
665
666
667
671 if (InstrumentManagerCtorFn)
672 return InstrumentManagerCtorFn(STI, MCII);
673 return nullptr;
674 }
675
676
677};
678
679
681
682
683
684
686
687 class iterator {
689
690 const Target *Current = nullptr;
691
693
694 public:
700
702
703 bool operator==(const iterator &x) const { return Current == x.Current; }
705
706
708 assert(Current && "Cannot increment end iterator!");
709 Current = Current->getNext();
710 return *this;
711 }
713 iterator tmp = *this;
714 ++*this;
715 return tmp;
716 }
717
719 assert(Current && "Cannot dereference end iterator!");
720 return *Current;
721 }
722
724 };
725
726
727
729
730
731
732
734
735
736
737
738
739
740
741 [[deprecated("Use overload accepting Triple instead")]]
745
746
747
748
749
750
752 std::string &Error);
753
754
755
756
757
758
759
760
761
762
763
764
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
791 const char *ShortDesc,
792 const char *BackendName,
794 bool HasJIT = false);
795
796
797
798
799
800
801
802
803
804
806 T.MCAsmInfoCtorFn = Fn;
807 }
808
809
810
811
812
813
814
815
816
819 T.MCObjectFileInfoCtorFn = Fn;
820 }
821
822
823
824
825
826
827
828
829
830
832 T.MCInstrInfoCtorFn = Fn;
833 }
834
835
836
839 T.MCInstrAnalysisCtorFn = Fn;
840 }
841
842
843
844
845
846
847
848
849
850
852 T.MCRegInfoCtorFn = Fn;
853 }
854
855
856
857
858
859
860
861
862
863
866 T.MCSubtargetInfoCtorFn = Fn;
867 }
868
869
870
871
872
873
874
875
876
877
879 T.TargetMachineCtorFn = Fn;
880 }
881
882
883
884
885
886
887
888
889
890
892 T.MCAsmBackendCtorFn = Fn;
893 }
894
895
896
897
898
899
900
901
902
903
905 T.MCAsmParserCtorFn = Fn;
906 }
907
908
909
910
911
912
913
914
915
916
918 T.AsmPrinterCtorFn = Fn;
919 }
920
921
922
923
924
925
926
927
928
929
932 T.MCDisassemblerCtorFn = Fn;
933 }
934
935
936
937
938
939
940
941
942
943
945 T.MCInstPrinterCtorFn = Fn;
946 }
947
948
949
950
951
952
953
954
955
956
958 T.MCCodeEmitterCtorFn = Fn;
959 }
960
962 T.COFFStreamerCtorFn = Fn;
963 }
964
966 T.MachOStreamerCtorFn = Fn;
967 }
968
970 T.ELFStreamerCtorFn = Fn;
971 }
972
974 T.XCOFFStreamerCtorFn = Fn;
975 }
976
979 T.NullTargetStreamerCtorFn = Fn;
980 }
981
983 T.AsmStreamerCtorFn = Fn;
984 }
985
988 T.AsmTargetStreamerCtorFn = Fn;
989 }
990
991 static void
994 T.ObjectTargetStreamerCtorFn = Fn;
995 }
996
997
998
999
1000
1001
1002
1003
1004
1005
1008 T.MCRelocationInfoCtorFn = Fn;
1009 }
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1021 T.MCSymbolizerCtorFn = Fn;
1022 }
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1035 T.CustomBehaviourCtorFn = Fn;
1036 }
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1049 T.InstrPostProcessCtorFn = Fn;
1050 }
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1064 T.InstrumentManagerCtorFn = Fn;
1065 }
1066
1067
1068};
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1085 bool HasJIT = false>
1088 const char *BackendName) {
1090 HasJIT);
1091 }
1092
1094 return Arch == TargetArchType;
1095 }
1096};
1097
1098
1099
1100
1101
1102
1103
1104
1105
1110
1111private:
1114 return new MCAsmInfoImpl(TT, Options);
1115 }
1116};
1117
1118
1119
1120
1121
1122
1123
1124
1125
1131
1132
1133
1134
1135
1136
1137
1138
1139
1144
1145private:
1147 bool LargeCodeModel = false) {
1148 return new MCObjectFileInfoImpl(Ctx, PIC, LargeCodeModel);
1149 }
1150};
1151
1152
1153
1154
1155
1156
1157
1158
1164
1165
1166
1167
1168
1169
1170
1171
1172
1181
1182
1183
1184
1185
1186
1187
1188
1189
1195
1196
1197
1198
1199
1200
1201
1202
1203
1208
1209private:
1211 return new MCInstrAnalysisImpl(Info);
1212 }
1213};
1214
1215
1216
1217
1218
1219
1220
1221
1222
1228
1229
1230
1231
1232
1233
1234
1235
1236
1241
1242private:
1244 return new MCRegisterInfoImpl();
1245 }
1246};
1247
1248
1249
1250
1251
1252
1253
1254
1255
1261
1262
1263
1264
1265
1266
1267
1268
1269
1274
1275private:
1278 return new MCSubtargetInfoImpl();
1279 }
1280};
1281
1282
1283
1284
1285
1286
1287
1288
1289
1295
1296
1297
1298
1299
1300
1301
1302
1303
1308
1309private:
1313 std::optionalCodeModel::Model CM, CodeGenOptLevel OL, bool JIT) {
1314 return new TargetMachineImpl(T, TT, CPU, FS, Options, RM, CM, OL, JIT);
1315 }
1316};
1317
1318
1319
1320
1321
1322
1323
1324
1329
1330private:
1334 return new MCAsmBackendImpl(T, STI, MRI);
1335 }
1336};
1337
1338
1339
1340
1341
1342
1343
1344
1345
1350
1351private:
1355 return new MCAsmParserImpl(STI, P, MII, Options);
1356 }
1357};
1358
1359
1360
1361
1362
1363
1364
1365
1366
1371
1372private:
1374 std::unique_ptr &&Streamer) {
1375 return new AsmPrinterImpl(TM, std::move(Streamer));
1376 }
1377};
1378
1379
1380
1381
1382
1383
1384
1385
1386
1391
1392private:
1395 return new MCCodeEmitterImpl();
1396 }
1397};
1398
1399}
1400
1401#endif
unsigned const MachineRegisterInfo * MRI
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
Analysis containing CSE Info
dxil DXContainer Global Emitter
uint64_t IntrinsicInst * II
PassInstrumentationCallbacks PIC
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
Definition TargetRegistry.h:704
const Target * operator->() const
Definition TargetRegistry.h:723
friend struct TargetRegistry
Definition TargetRegistry.h:688
bool operator==(const iterator &x) const
Definition TargetRegistry.h:703
Target value_type
Definition TargetRegistry.h:696
const Target & operator*() const
Definition TargetRegistry.h:718
value_type & reference
Definition TargetRegistry.h:699
iterator & operator++()
Definition TargetRegistry.h:707
std::ptrdiff_t difference_type
Definition TargetRegistry.h:697
value_type * pointer
Definition TargetRegistry.h:698
iterator operator++(int)
Definition TargetRegistry.h:712
std::forward_iterator_tag iterator_category
Definition TargetRegistry.h:695
Target - Wrapper for Target specific information.
Definition TargetRegistry.h:146
TargetMachine * createTargetMachine(const Triple &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.
Definition TargetRegistry.h:491
MCRelocationInfo *(*)(const Triple &TT, MCContext &Ctx) MCRelocationInfoCtorTy
Definition TargetRegistry.h:219
MCStreamer *(*)(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) XCOFFStreamerCtorTy
Definition TargetRegistry.h:203
MCRegisterInfo * createMCRegInfo(const Triple &TT) const
Create a MCRegisterInfo implementation.
Definition TargetRegistry.h:453
MCTargetStreamer *(*)(MCStreamer &S) NullTargetStreamerCtorTy
Definition TargetRegistry.h:209
MCAsmInfo *(*)(const MCRegisterInfo &MRI, const Triple &TT, const MCTargetOptions &Options) MCAsmInfoCtorFnTy
Definition TargetRegistry.h:152
mca::InstrPostProcess *(*)(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) InstrPostProcessCtorTy
Definition TargetRegistry.h:232
mca::InstrumentManager *(*)(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) InstrumentManagerCtorTy
Definition TargetRegistry.h:236
MCSubtargetInfo *(*)(const Triple &TT, StringRef CPU, StringRef Features) MCSubtargetInfoCtorFnTy
Definition TargetRegistry.h:161
MCCodeEmitter *(*)(const MCInstrInfo &II, MCContext &Ctx) MCCodeEmitterCtorTy
Definition TargetRegistry.h:188
MCTargetStreamer *(*)(MCStreamer &S, const MCSubtargetInfo &STI) ObjectTargetStreamerCtorTy
Definition TargetRegistry.h:217
bool hasTargetMachine() const
hasTargetMachine - Check if this target supports code generation.
Definition TargetRegistry.h:380
MCCodeEmitter * createMCCodeEmitter(const MCInstrInfo &II, MCContext &Ctx) const
createMCCodeEmitter - Create a target specific code emitter.
Definition TargetRegistry.h:550
const char * getName() const
getName - Get the target name.
Definition TargetRegistry.h:364
MCObjectFileInfo * createMCObjectFileInfo(MCContext &Ctx, bool PIC, bool LargeCodeModel=false) const
Create a MCObjectFileInfo implementation for the specified target triple.
Definition TargetRegistry.h:418
const Target * getNext() const
Definition TargetRegistry.h:361
MCObjectFileInfo *(*)(MCContext &Ctx, bool PIC, bool LargeCodeModel) MCObjectFileInfoCtorFnTy
Definition TargetRegistry.h:155
MCSubtargetInfo * createMCSubtargetInfo(StringRef TheTriple, StringRef CPU, StringRef Features) const
Definition TargetRegistry.h:461
MCAsmInfo * createMCAsmInfo(const MCRegisterInfo &MRI, const Triple &TheTriple, const MCTargetOptions &Options) const
Create a MCAsmInfo implementation for the specified target triple.
Definition TargetRegistry.h:408
MCDisassembler *(*)(const Target &T, const MCSubtargetInfo &STI, MCContext &Ctx) MCDisassemblerCtorTy
Definition TargetRegistry.h:180
MCSymbolizer * createMCSymbolizer(StringRef TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo) const
Definition TargetRegistry.h:616
MCAsmBackend *(*)(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options) MCAsmBackendCtorTy
Definition TargetRegistry.h:173
MCAsmBackend * createMCAsmBackend(const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options) const
createMCAsmBackend - Create a target specific assembly parser.
Definition TargetRegistry.h:503
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) COFFStreamerCtorTy
Definition TargetRegistry.h:199
MCTargetStreamer *(*)(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint) AsmTargetStreamerCtorTy
Definition TargetRegistry.h:210
bool hasMCAsmParser() const
hasMCAsmParser - Check if this target supports assembly parsing.
Definition TargetRegistry.h:386
MCStreamer * createNullStreamer(MCContext &Ctx) const
Definition TargetRegistry.h:583
LLVM_ABI MCStreamer * createAsmStreamer(MCContext &Ctx, std::unique_ptr< formatted_raw_ostream > OS, std::unique_ptr< MCInstPrinter > IP, std::unique_ptr< MCCodeEmitter > CE, std::unique_ptr< MCAsmBackend > TAB) const
MCRelocationInfo * createMCRelocationInfo(StringRef TT, MCContext &Ctx) const
Definition TargetRegistry.h:597
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) MachOStreamerCtorTy
Definition TargetRegistry.h:195
MCTargetStreamer * createAsmTargetStreamer(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint) const
Definition TargetRegistry.h:575
MCInstrAnalysis *(*)(const MCInstrInfo *Info) MCInstrAnalysisCtorFnTy
Definition TargetRegistry.h:159
MCRegisterInfo * createMCRegInfo(StringRef TT) const
Definition TargetRegistry.h:446
MCRegisterInfo *(*)(const Triple &TT) MCRegInfoCtorFnTy
Definition TargetRegistry.h:160
MCInstrInfo *(*)() MCInstrInfoCtorFnTy
Definition TargetRegistry.h:158
LLVM_ABI 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.
Definition TargetRegistry.h:648
friend struct TargetRegistry
Definition TargetRegistry.h:148
mca::CustomBehaviour *(*)(const MCSubtargetInfo &STI, const mca::SourceMgr &SrcMgr, const MCInstrInfo &MCII) CustomBehaviourCtorTy
Definition TargetRegistry.h:227
bool(*)(Triple::ArchType Arch) ArchMatchFnTy
Definition TargetRegistry.h:150
MCSymbolizer * createMCSymbolizer(const Triple &TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo) const
createMCSymbolizer - Create a target specific MCSymbolizer.
Definition TargetRegistry.h:637
MCDisassembler * createMCDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx) const
Definition TargetRegistry.h:533
bool hasMCAsmBackend() const
hasMCAsmBackend - Check if this target supports .o generation.
Definition TargetRegistry.h:383
MCAsmInfo * createMCAsmInfo(const MCRegisterInfo &MRI, StringRef TheTriple, const MCTargetOptions &Options) const
Definition TargetRegistry.h:394
MCInstPrinter * createMCInstPrinter(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI) const
Definition TargetRegistry.h:540
mca::InstrPostProcess * createInstrPostProcess(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) const
createInstrPostProcess - Create a target specific InstrPostProcess.
Definition TargetRegistry.h:658
const char * getBackendName() const
getBackendName - Get the backend name.
Definition TargetRegistry.h:370
MCRelocationInfo * createMCRelocationInfo(const Triple &TT, MCContext &Ctx) const
createMCRelocationInfo - Create a target specific MCRelocationInfo.
Definition TargetRegistry.h:605
MCTargetAsmParser * createMCAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser, const MCInstrInfo &MII, const MCTargetOptions &Options) const
createMCAsmParser - Create a target specific assembly parser.
Definition TargetRegistry.h:515
MCInstrAnalysis * createMCInstrAnalysis(const MCInstrInfo *Info) const
createMCInstrAnalysis - Create a MCInstrAnalysis implementation.
Definition TargetRegistry.h:438
MCSubtargetInfo * createMCSubtargetInfo(const Triple &TheTriple, StringRef CPU, StringRef Features) const
createMCSubtargetInfo - Create a MCSubtargetInfo implementation.
Definition TargetRegistry.h:477
const char * getShortDescription() const
getShortDescription - Get a short description of the target.
Definition TargetRegistry.h:367
MCStreamer *(*)(MCContext &Ctx, std::unique_ptr< formatted_raw_ostream > OS, std::unique_ptr< MCInstPrinter > IP, std::unique_ptr< MCCodeEmitter > CE, std::unique_ptr< MCAsmBackend > TAB) AsmStreamerCtorTy
Definition TargetRegistry.h:213
MCSymbolizer *(*)(const Triple &TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo) MCSymbolizerCtorTy
Definition TargetRegistry.h:221
bool hasJIT() const
hasJIT - Check if this targets supports the just-in-time compilation.
Definition TargetRegistry.h:377
AsmPrinter *(*)( TargetMachine &TM, std::unique_ptr< MCStreamer > &&Streamer) AsmPrinterCtorTy
Definition TargetRegistry.h:171
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
Definition TargetRegistry.h:164
MCTargetStreamer * createNullTargetStreamer(MCStreamer &S) const
Definition TargetRegistry.h:589
MCInstPrinter *(*)(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI) MCInstPrinterCtorTy
Definition TargetRegistry.h:183
AsmPrinter * createAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > &&Streamer) const
createAsmPrinter - Create a target specific assembly printer pass.
Definition TargetRegistry.h:526
MCTargetAsmParser *(*)( const MCSubtargetInfo &STI, MCAsmParser &P, const MCInstrInfo &MII, const MCTargetOptions &Options) MCAsmParserCtorTy
Definition TargetRegistry.h:177
MCStreamer *(*)(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter) ELFStreamerCtorTy
Definition TargetRegistry.h:190
MCInstrInfo * createMCInstrInfo() const
createMCInstrInfo - Create a MCInstrInfo implementation.
Definition TargetRegistry.h:430
mca::InstrumentManager * createInstrumentManager(const MCSubtargetInfo &STI, const MCInstrInfo &MCII) const
createInstrumentManager - Create a target specific InstrumentManager.
Definition TargetRegistry.h:669
Triple - Helper class for working with autoconf configuration names.
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.
Definition TargetRegistry.h:61
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI mca::InstrumentManager * createInstrumentManager(const MCSubtargetInfo &STI, const MCInstrInfo &MCII)
LLVM_ABI MCStreamer * createELFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
LLVM_ABI MCStreamer * createAsmStreamer(MCContext &Ctx, std::unique_ptr< formatted_raw_ostream > OS, std::unique_ptr< 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,...
LLVM_ABI MCStreamer * createNullStreamer(MCContext &Ctx)
Create a dummy machine code streamer, which does nothing.
LLVM_ABI MCSymbolizer * createMCSymbolizer(const Triple &TT, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp, void *DisInfo, MCContext *Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo)
LLVM_ABI MCStreamer * createMachOStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE, bool DWARFMustBeAtTheEnd, bool LabelSections=false)
LLVM_ABI MCRelocationInfo * createMCRelocationInfo(const Triple &TT, MCContext &Ctx)
LLVM_ABI mca::CustomBehaviour * createCustomBehaviour(const MCSubtargetInfo &STI, const mca::SourceMgr &SrcMgr, const MCInstrInfo &MCII)
CodeGenOptLevel
Code generation optimization level.
LLVM_ABI MCStreamer * createDXContainerStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
LLVM_ABI MCStreamer * createWasmStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
LLVM_ABI MCStreamer * createGOFFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
LLVM_ABI MCStreamer * createSPIRVStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&CE)
LLVM_ABI mca::InstrPostProcess * createInstrPostProcess(const MCSubtargetInfo &STI, const MCInstrInfo &MCII)
RegisterAsmPrinter(Target &T)
Definition TargetRegistry.h:1368
RegisterMCAsmBackend(Target &T)
Definition TargetRegistry.h:1326
RegisterMCAsmInfoFn(Target &T, Target::MCAsmInfoCtorFnTy Fn)
Definition TargetRegistry.h:1127
RegisterMCAsmInfo(Target &T)
Definition TargetRegistry.h:1107
RegisterMCAsmParser(Target &T)
Definition TargetRegistry.h:1347
RegisterMCCodeEmitter(Target &T)
Definition TargetRegistry.h:1388
RegisterMCInstrAnalysisFn(Target &T, Target::MCInstrAnalysisCtorFnTy Fn)
Definition TargetRegistry.h:1224
RegisterMCInstrAnalysis(Target &T)
Definition TargetRegistry.h:1205
RegisterMCInstrInfoFn(Target &T, Target::MCInstrInfoCtorFnTy Fn)
Definition TargetRegistry.h:1191
RegisterMCInstrInfo(Target &T)
Definition TargetRegistry.h:1174
RegisterMCObjectFileInfoFn(Target &T, Target::MCObjectFileInfoCtorFnTy Fn)
Definition TargetRegistry.h:1160
RegisterMCObjectFileInfo(Target &T)
Definition TargetRegistry.h:1141
RegisterMCRegInfoFn(Target &T, Target::MCRegInfoCtorFnTy Fn)
Definition TargetRegistry.h:1257
RegisterMCRegInfo(Target &T)
Definition TargetRegistry.h:1238
RegisterMCSubtargetInfoFn(Target &T, Target::MCSubtargetInfoCtorFnTy Fn)
Definition TargetRegistry.h:1291
RegisterMCSubtargetInfo(Target &T)
Definition TargetRegistry.h:1271
RegisterTargetMachine(Target &T)
Definition TargetRegistry.h:1305
static bool getArchMatch(Triple::ArchType Arch)
Definition TargetRegistry.h:1093
RegisterTarget(Target &T, const char *Name, const char *Desc, const char *BackendName)
Definition TargetRegistry.h:1087
static const Target * lookupTarget(StringRef TripleStr, std::string &Error)
lookupTarget - Lookup a target based on a target triple.
Definition TargetRegistry.h:742
static void RegisterMCSymbolizer(Target &T, Target::MCSymbolizerCtorTy Fn)
RegisterMCSymbolizer - Register an MCSymbolizer implementation for the given target.
Definition TargetRegistry.h:1020
static void RegisterMCRegInfo(Target &T, Target::MCRegInfoCtorFnTy Fn)
RegisterMCRegInfo - Register a MCRegisterInfo implementation for the given target.
Definition TargetRegistry.h:851
static void RegisterAsmPrinter(Target &T, Target::AsmPrinterCtorTy Fn)
RegisterAsmPrinter - Register an AsmPrinter implementation for the given target.
Definition TargetRegistry.h:917
static void RegisterMCAsmBackend(Target &T, Target::MCAsmBackendCtorTy Fn)
RegisterMCAsmBackend - Register a MCAsmBackend implementation for the given target.
Definition TargetRegistry.h:891
static void RegisterXCOFFStreamer(Target &T, Target::XCOFFStreamerCtorTy Fn)
Definition TargetRegistry.h:973
static void RegisterMCCodeEmitter(Target &T, Target::MCCodeEmitterCtorTy Fn)
RegisterMCCodeEmitter - Register a MCCodeEmitter implementation for the given target.
Definition TargetRegistry.h:957
static void RegisterMCAsmInfo(Target &T, Target::MCAsmInfoCtorFnTy Fn)
RegisterMCAsmInfo - Register a MCAsmInfo implementation for the given target.
Definition TargetRegistry.h:805
static void RegisterMCSubtargetInfo(Target &T, Target::MCSubtargetInfoCtorFnTy Fn)
RegisterMCSubtargetInfo - Register a MCSubtargetInfo implementation for the given target.
Definition TargetRegistry.h:864
static void RegisterObjectTargetStreamer(Target &T, Target::ObjectTargetStreamerCtorTy Fn)
Definition TargetRegistry.h:992
static void RegisterMCInstrAnalysis(Target &T, Target::MCInstrAnalysisCtorFnTy Fn)
RegisterMCInstrAnalysis - Register a MCInstrAnalysis implementation for the given target.
Definition TargetRegistry.h:837
static void RegisterAsmStreamer(Target &T, Target::AsmStreamerCtorTy Fn)
Definition TargetRegistry.h:982
static void RegisterELFStreamer(Target &T, Target::ELFStreamerCtorTy Fn)
Definition TargetRegistry.h:969
static void RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn)
Definition TargetRegistry.h:977
static void RegisterInstrPostProcess(Target &T, Target::InstrPostProcessCtorTy Fn)
RegisterInstrPostProcess - Register an InstrPostProcess implementation for the given target.
Definition TargetRegistry.h:1047
static void RegisterMCDisassembler(Target &T, Target::MCDisassemblerCtorTy Fn)
RegisterMCDisassembler - Register a MCDisassembler implementation for the given target.
Definition TargetRegistry.h:930
static void RegisterMCAsmParser(Target &T, Target::MCAsmParserCtorTy Fn)
RegisterMCAsmParser - Register a MCTargetAsmParser implementation for the given target.
Definition TargetRegistry.h:904
static LLVM_ABI 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.
Definition TargetRegistry.h:878
static void RegisterMCInstPrinter(Target &T, Target::MCInstPrinterCtorTy Fn)
RegisterMCInstPrinter - Register a MCInstPrinter implementation for the given target.
Definition TargetRegistry.h:944
static void RegisterCOFFStreamer(Target &T, Target::COFFStreamerCtorTy Fn)
Definition TargetRegistry.h:961
static LLVM_ABI 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.
Definition TargetRegistry.h:831
static LLVM_ABI iterator_range< iterator > targets()
static void RegisterInstrumentManager(Target &T, Target::InstrumentManagerCtorTy Fn)
RegisterInstrumentManager - Register an InstrumentManager implementation for the given target.
Definition TargetRegistry.h:1062
static void RegisterCustomBehaviour(Target &T, Target::CustomBehaviourCtorTy Fn)
RegisterCustomBehaviour - Register a CustomBehaviour implementation for the given target.
Definition TargetRegistry.h:1033
static void RegisterMachOStreamer(Target &T, Target::MachOStreamerCtorTy Fn)
Definition TargetRegistry.h:965
static void RegisterMCObjectFileInfo(Target &T, Target::MCObjectFileInfoCtorFnTy Fn)
Register a MCObjectFileInfo implementation for the given target.
Definition TargetRegistry.h:817
static void RegisterAsmTargetStreamer(Target &T, Target::AsmTargetStreamerCtorTy Fn)
Definition TargetRegistry.h:986
static void RegisterMCRelocationInfo(Target &T, Target::MCRelocationInfoCtorTy Fn)
RegisterMCRelocationInfo - Register an MCRelocationInfo implementation for the given target.
Definition TargetRegistry.h:1006
Abstracting the input code sequence (a sequence of MCInst) and assigning unique identifiers to every ...