Skip to content

Commit 9c93e72

Browse files
committed
llvm-tblgen: Rewrite emitters to use TableGen::Emitter
Each emitter became self-contained since it has the registration of option. Differential Revision: https://reviews.llvm.org/D144351
1 parent a7e2b74 commit 9c93e72

33 files changed

+133
-486
lines changed

llvm/utils/TableGen/AsmMatcherEmitter.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,13 @@
100100
#include "CodeGenRegisters.h"
101101
#include "CodeGenTarget.h"
102102
#include "SubtargetFeatureInfo.h"
103-
#include "TableGenBackends.h"
104103
#include "Types.h"
105104
#include "llvm/ADT/CachedHashString.h"
106105
#include "llvm/ADT/PointerUnion.h"
107106
#include "llvm/ADT/STLExtras.h"
108107
#include "llvm/ADT/SmallPtrSet.h"
109108
#include "llvm/ADT/SmallVector.h"
110109
#include "llvm/ADT/StringExtras.h"
111-
#include "llvm/Config/llvm-config.h"
112110
#include "llvm/Support/CommandLine.h"
113111
#include "llvm/Support/Debug.h"
114112
#include "llvm/Support/ErrorHandling.h"
@@ -4004,10 +4002,5 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
40044002
OS << "#endif // GET_MNEMONIC_CHECKER\n\n";
40054003
}
40064004

4007-
namespace llvm {
4008-
4009-
void EmitAsmMatcher(RecordKeeper &RK, raw_ostream &OS) {
4010-
AsmMatcherEmitter(RK).run(OS);
4011-
}
4012-
4013-
} // end namespace llvm
4005+
static TableGen::Emitter::OptClass<AsmMatcherEmitter>
4006+
X("gen-asm-matcher", "Generate assembly instruction matcher");

llvm/utils/TableGen/AsmWriterEmitter.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "CodeGenRegisters.h"
1818
#include "CodeGenTarget.h"
1919
#include "SequenceToOffsetTable.h"
20-
#include "TableGenBackends.h"
2120
#include "Types.h"
2221
#include "llvm/ADT/ArrayRef.h"
2322
#include "llvm/ADT/DenseMap.h"
@@ -1310,10 +1309,5 @@ void AsmWriterEmitter::run(raw_ostream &O) {
13101309
EmitPrintAliasInstruction(O);
13111310
}
13121311

1313-
namespace llvm {
1314-
1315-
void EmitAsmWriter(RecordKeeper &RK, raw_ostream &OS) {
1316-
AsmWriterEmitter(RK).run(OS);
1317-
}
1318-
1319-
} // end namespace llvm
1312+
static TableGen::Emitter::OptClass<AsmWriterEmitter>
1313+
X("gen-asm-writer", "Generate assembly writer");

llvm/utils/TableGen/Attributes.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#include "TableGenBackends.h"
109
#include "llvm/TableGen/Record.h"
10+
#include "llvm/TableGen/TableGenBackend.h"
1111
#include <vector>
1212
using namespace llvm;
1313

@@ -130,10 +130,5 @@ void Attributes::run(raw_ostream &OS) {
130130
emitAttributeProperties(OS);
131131
}
132132

133-
namespace llvm {
134-
135-
void EmitAttributes(RecordKeeper &RK, raw_ostream &OS) {
136-
Attributes(RK).run(OS);
137-
}
138-
139-
} // namespace llvm
133+
static TableGen::Emitter::OptClass<Attributes> X("gen-attrs",
134+
"Generate attributes");

llvm/utils/TableGen/CTagsEmitter.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15-
#include "TableGenBackends.h"
1615
#include "llvm/Support/MemoryBuffer.h"
1716
#include "llvm/Support/SourceMgr.h"
1817
#include "llvm/TableGen/Error.h"
1918
#include "llvm/TableGen/Record.h"
19+
#include "llvm/TableGen/TableGenBackend.h"
2020
#include <algorithm>
2121
#include <vector>
2222
using namespace llvm;
@@ -86,8 +86,5 @@ void CTagsEmitter::run(raw_ostream &OS) {
8686
T.emit(OS);
8787
}
8888

89-
namespace llvm {
90-
91-
void EmitCTags(RecordKeeper &RK, raw_ostream &OS) { CTagsEmitter(RK).run(OS); }
92-
93-
} // namespace llvm
89+
static TableGen::Emitter::OptClass<CTagsEmitter>
90+
X("gen-ctags", "Generate ctags-compatible index");

llvm/utils/TableGen/CallingConvEmitter.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "CodeGenTarget.h"
15-
#include "TableGenBackends.h"
1615
#include "llvm/TableGen/Error.h"
1716
#include "llvm/TableGen/Record.h"
1817
#include "llvm/TableGen/TableGenBackend.h"
@@ -429,10 +428,5 @@ void CallingConvEmitter::EmitArgRegisterLists(raw_ostream &O) {
429428
}
430429
}
431430

432-
namespace llvm {
433-
434-
void EmitCallingConv(RecordKeeper &RK, raw_ostream &OS) {
435-
CallingConvEmitter(RK).run(OS);
436-
}
437-
438-
} // namespace llvm
431+
static TableGen::Emitter::OptClass<CallingConvEmitter>
432+
X("gen-callingconv", "Generate calling convention descriptions");

llvm/utils/TableGen/CodeEmitterGen.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include "CodeGenInstruction.h"
1717
#include "CodeGenTarget.h"
1818
#include "InfoByHwMode.h"
19-
#include "TableGenBackends.h"
2019
#include "VarLenCodeEmitterGen.h"
2120
#include "llvm/ADT/APInt.h"
2221
#include "llvm/ADT/ArrayRef.h"
@@ -504,10 +503,5 @@ void CodeEmitterGen::run(raw_ostream &o) {
504503

505504
} // end anonymous namespace
506505

507-
namespace llvm {
508-
509-
void EmitCodeEmitter(RecordKeeper &RK, raw_ostream &OS) {
510-
CodeEmitterGen(RK).run(OS);
511-
}
512-
513-
} // end namespace llvm
506+
static TableGen::Emitter::OptClass<CodeEmitterGen>
507+
X("gen-emitter", "Generate machine code emitter");

llvm/utils/TableGen/CompressInstEmitter.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
#include "CodeGenInstruction.h"
6868
#include "CodeGenRegisters.h"
6969
#include "CodeGenTarget.h"
70-
#include "TableGenBackends.h"
7170
#include "llvm/ADT/IndexedMap.h"
7271
#include "llvm/ADT/SmallVector.h"
7372
#include "llvm/ADT/StringMap.h"
@@ -904,10 +903,5 @@ void CompressInstEmitter::run(raw_ostream &o) {
904903
emitCompressInstEmitter(o, EmitterType::CheckCompress);
905904
}
906905

907-
namespace llvm {
908-
909-
void EmitCompressInst(RecordKeeper &RK, raw_ostream &OS) {
910-
CompressInstEmitter(RK).run(OS);
911-
}
912-
913-
} // namespace llvm
906+
static TableGen::Emitter::OptClass<CompressInstEmitter>
907+
X("gen-compress-inst-emitter", "Generate RISCV compressed instructions.");

llvm/utils/TableGen/DAGISelEmitter.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include "CodeGenInstruction.h"
1515
#include "CodeGenTarget.h"
1616
#include "DAGISelMatcher.h"
17-
#include "TableGenBackends.h"
1817
#include "llvm/Support/Debug.h"
1918
#include "llvm/TableGen/Record.h"
2019
#include "llvm/TableGen/TableGenBackend.h"
@@ -188,10 +187,5 @@ void DAGISelEmitter::run(raw_ostream &OS) {
188187
EmitMatcherTable(TheMatcher.get(), CGP, OS);
189188
}
190189

191-
namespace llvm {
192-
193-
void EmitDAGISel(RecordKeeper &RK, raw_ostream &OS) {
194-
DAGISelEmitter(RK).run(OS);
195-
}
196-
197-
} // namespace llvm
190+
static TableGen::Emitter::OptClass<DAGISelEmitter>
191+
X("gen-dag-isel", "Generate a DAG instruction selector");

llvm/utils/TableGen/DFAEmitter.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222

2323
#include "DFAEmitter.h"
2424
#include "SequenceToOffsetTable.h"
25-
#include "TableGenBackends.h"
2625
#include "llvm/ADT/SmallVector.h"
2726
#include "llvm/ADT/StringExtras.h"
2827
#include "llvm/ADT/UniqueVector.h"
2928
#include "llvm/Support/Debug.h"
3029
#include "llvm/Support/raw_ostream.h"
3130
#include "llvm/TableGen/Record.h"
31+
#include "llvm/TableGen/TableGenBackend.h"
3232
#include <cassert>
3333
#include <cstdint>
3434
#include <deque>
@@ -370,10 +370,5 @@ void CustomDfaEmitter::printActionValue(action_type A, raw_ostream &OS) {
370370
OS << ")";
371371
}
372372

373-
namespace llvm {
374-
375-
void EmitAutomata(RecordKeeper &RK, raw_ostream &OS) {
376-
AutomatonEmitter(RK).run(OS);
377-
}
378-
379-
} // namespace llvm
373+
static TableGen::Emitter::OptClass<AutomatonEmitter>
374+
X("gen-automata", "Generate generic automata");

llvm/utils/TableGen/DFAPacketizerEmitter.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "CodeGenSchedule.h"
1818
#include "CodeGenTarget.h"
1919
#include "DFAEmitter.h"
20-
#include "TableGenBackends.h"
2120
#include "llvm/ADT/SmallVector.h"
2221
#include "llvm/Support/Debug.h"
2322
#include "llvm/Support/raw_ostream.h"
@@ -354,10 +353,5 @@ void DFAPacketizerEmitter::emitForItineraries(
354353
<< "\n}\n\n";
355354
}
356355

357-
namespace llvm {
358-
359-
void EmitDFAPacketizer(RecordKeeper &RK, raw_ostream &OS) {
360-
DFAPacketizerEmitter(RK).run(OS);
361-
}
362-
363-
} // end namespace llvm
356+
static TableGen::Emitter::OptClass<DFAPacketizerEmitter>
357+
X("gen-dfa-packetizer", "Generate DFA Packetizer for VLIW targets");

llvm/utils/TableGen/DXILEmitter.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "SequenceToOffsetTable.h"
15-
#include "TableGenBackends.h"
1615
#include "llvm/ADT/STLExtras.h"
1716
#include "llvm/ADT/SmallVector.h"
1817
#include "llvm/ADT/StringSet.h"
1918
#include "llvm/ADT/StringSwitch.h"
2019
#include "llvm/Support/DXILOperationCommon.h"
2120
#include "llvm/TableGen/Record.h"
21+
#include "llvm/TableGen/TableGenBackend.h"
2222

2323
using namespace llvm;
2424
using namespace llvm::dxil;
@@ -411,9 +411,7 @@ static void emitDXILOperationTable(std::vector<DXILOperationData> &DXILOps,
411411
OS << "}\n ";
412412
}
413413

414-
namespace llvm {
415-
416-
void EmitDXILOperation(RecordKeeper &Records, raw_ostream &OS) {
414+
static void EmitDXILOperation(RecordKeeper &Records, raw_ostream &OS) {
417415
std::vector<Record *> Ops = Records.getAllDerivedDefinitions("dxil_op");
418416
OS << "// Generated code, do not edit.\n";
419417
OS << "\n";
@@ -439,4 +437,5 @@ void EmitDXILOperation(RecordKeeper &Records, raw_ostream &OS) {
439437
OS << "\n";
440438
}
441439

442-
} // namespace llvm
440+
static TableGen::Emitter::Opt X("gen-dxil-operation", EmitDXILOperation,
441+
"Generate DXIL operation information");

llvm/utils/TableGen/DirectiveEmitter.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "llvm/TableGen/DirectiveEmitter.h"
15-
#include "TableGenBackends.h"
1615
#include "llvm/ADT/STLExtras.h"
1716
#include "llvm/ADT/SmallVector.h"
1817
#include "llvm/ADT/StringSet.h"
1918
#include "llvm/ADT/StringSwitch.h"
2019
#include "llvm/TableGen/Error.h"
2120
#include "llvm/TableGen/Record.h"
21+
#include "llvm/TableGen/TableGenBackend.h"
2222

2323
using namespace llvm;
2424

@@ -174,11 +174,9 @@ bool DirectiveLanguage::HasValidityErrors() const {
174174
return HasDuplicateClausesInDirectives(getDirectives());
175175
}
176176

177-
namespace llvm {
178-
179177
// Generate the declaration section for the enumeration in the directive
180178
// language
181-
void EmitDirectivesDecl(RecordKeeper &Records, raw_ostream &OS) {
179+
static void EmitDirectivesDecl(RecordKeeper &Records, raw_ostream &OS) {
182180
const auto DirLang = DirectiveLanguage{Records};
183181
if (DirLang.HasValidityErrors())
184182
return;
@@ -247,8 +245,6 @@ void EmitDirectivesDecl(RecordKeeper &Records, raw_ostream &OS) {
247245
OS << "#endif // LLVM_" << DirLang.getName() << "_INC\n";
248246
}
249247

250-
} // namespace llvm
251-
252248
// Generate function implementation for get<Enum>Name(StringRef Str)
253249
static void GenerateGetName(const std::vector<Record *> &Records,
254250
raw_ostream &OS, StringRef Enum,
@@ -877,11 +873,9 @@ void EmitDirectivesBasicImpl(const DirectiveLanguage &DirLang,
877873
GenerateIsAllowedClause(DirLang, OS);
878874
}
879875

880-
namespace llvm {
881-
882876
// Generate the implemenation section for the enumeration in the directive
883877
// language.
884-
void EmitDirectivesImpl(RecordKeeper &Records, raw_ostream &OS) {
878+
static void EmitDirectivesImpl(RecordKeeper &Records, raw_ostream &OS) {
885879
const auto DirLang = DirectiveLanguage{Records};
886880
if (DirLang.HasValidityErrors())
887881
return;
@@ -893,4 +887,10 @@ void EmitDirectivesImpl(RecordKeeper &Records, raw_ostream &OS) {
893887
EmitDirectivesBasicImpl(DirLang, OS);
894888
}
895889

896-
} // namespace llvm
890+
static TableGen::Emitter::Opt
891+
X("gen-directive-decl", EmitDirectivesDecl,
892+
"Generate directive related declaration code (header file)");
893+
894+
static TableGen::Emitter::Opt
895+
Y("gen-directive-impl", EmitDirectivesImpl,
896+
"Generate directive related implementation code");

llvm/utils/TableGen/DisassemblerEmitter.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,7 @@ using namespace llvm::X86Disassembler;
9494
/// X86RecognizableInstr.cpp contains the implementation for a single
9595
/// instruction.
9696

97-
namespace llvm {
98-
99-
void EmitDisassembler(RecordKeeper &Records, raw_ostream &OS) {
97+
static void EmitDisassembler(RecordKeeper &Records, raw_ostream &OS) {
10098
CodeGenTarget Target(Records);
10199
emitSourceFileHeader(" * " + Target.getName().str() + " Disassembler", OS);
102100

@@ -133,4 +131,5 @@ void EmitDisassembler(RecordKeeper &Records, raw_ostream &OS) {
133131
EmitDecoder(Records, OS, PredicateNamespace);
134132
}
135133

136-
} // end namespace llvm
134+
static TableGen::Emitter::Opt X("gen-disassembler", EmitDisassembler,
135+
"Generate disassembler");

llvm/utils/TableGen/ExegesisEmitter.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#include "TableGenBackends.h"
1413
#include "llvm/ADT/STLExtras.h"
1514
#include "llvm/ADT/SmallSet.h"
1615
#include "llvm/ADT/StringRef.h"
@@ -203,10 +202,5 @@ void ExegesisEmitter::run(raw_ostream &OS) const {
203202

204203
} // end anonymous namespace
205204

206-
namespace llvm {
207-
208-
void EmitExegesis(RecordKeeper &RK, raw_ostream &OS) {
209-
ExegesisEmitter(RK).run(OS);
210-
}
211-
212-
} // end namespace llvm
205+
static TableGen::Emitter::OptClass<ExegesisEmitter>
206+
X("gen-exegesis", "Generate llvm-exegesis tables");

llvm/utils/TableGen/FastISelEmitter.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#include "CodeGenRegisters.h"
2222
#include "CodeGenTarget.h"
2323
#include "InfoByHwMode.h"
24-
#include "TableGenBackends.h"
2524
#include "llvm/ADT/StringSwitch.h"
2625
#include "llvm/Support/ErrorHandling.h"
2726
#include "llvm/TableGen/Error.h"
@@ -858,9 +857,7 @@ void FastISelMap::printFunctionDefinitions(raw_ostream &OS) {
858857
// TODO: SignaturesWithConstantForms should be empty here.
859858
}
860859

861-
namespace llvm {
862-
863-
void EmitFastISel(RecordKeeper &RK, raw_ostream &OS) {
860+
static void EmitFastISel(RecordKeeper &RK, raw_ostream &OS) {
864861
CodeGenDAGPatterns CGP(RK);
865862
const CodeGenTarget &Target = CGP.getTargetInfo();
866863
emitSourceFileHeader("\"Fast\" Instruction Selector for the " +
@@ -876,4 +873,5 @@ void EmitFastISel(RecordKeeper &RK, raw_ostream &OS) {
876873
F.printFunctionDefinitions(OS);
877874
}
878875

879-
} // namespace llvm
876+
static TableGen::Emitter::Opt X("gen-fast-isel", EmitFastISel,
877+
"Generate a \"fast\" instruction selector");

0 commit comments

Comments
 (0)