Changeset View
Changeset View
Standalone View
Standalone View
utils/TableGen/TableGen.cpp
Show All 18 Lines | |||||
#include "llvm/TableGen/Main.h" | #include "llvm/TableGen/Main.h" | ||||
#include "llvm/TableGen/Record.h" | #include "llvm/TableGen/Record.h" | ||||
#include "llvm/TableGen/SetTheory.h" | #include "llvm/TableGen/SetTheory.h" | ||||
using namespace llvm; | using namespace llvm; | ||||
enum ActionType { | enum ActionType { | ||||
PrintRecords, | PrintRecords, | ||||
DumpJSON, | |||||
GenEmitter, | GenEmitter, | ||||
GenRegisterInfo, | GenRegisterInfo, | ||||
GenInstrInfo, | GenInstrInfo, | ||||
GenInstrDocs, | GenInstrDocs, | ||||
GenAsmWriter, | GenAsmWriter, | ||||
GenAsmMatcher, | GenAsmMatcher, | ||||
GenDisassembler, | GenDisassembler, | ||||
GenPseudoLowering, | GenPseudoLowering, | ||||
Show All 17 Lines | enum ActionType { | ||||
GenRegisterBank, | GenRegisterBank, | ||||
}; | }; | ||||
namespace { | namespace { | ||||
cl::opt<ActionType> | cl::opt<ActionType> | ||||
Action(cl::desc("Action to perform:"), | Action(cl::desc("Action to perform:"), | ||||
cl::values(clEnumValN(PrintRecords, "print-records", | cl::values(clEnumValN(PrintRecords, "print-records", | ||||
"Print all records to stdout (default)"), | "Print all records to stdout (default)"), | ||||
clEnumValN(DumpJSON, "dump-json", | |||||
"Dump all records as machine-readable JSON"), | |||||
clEnumValN(GenEmitter, "gen-emitter", | clEnumValN(GenEmitter, "gen-emitter", | ||||
"Generate machine code emitter"), | "Generate machine code emitter"), | ||||
clEnumValN(GenRegisterInfo, "gen-register-info", | clEnumValN(GenRegisterInfo, "gen-register-info", | ||||
"Generate registers and register classes info"), | "Generate registers and register classes info"), | ||||
clEnumValN(GenInstrInfo, "gen-instr-info", | clEnumValN(GenInstrInfo, "gen-instr-info", | ||||
"Generate instruction descriptions"), | "Generate instruction descriptions"), | ||||
clEnumValN(GenInstrDocs, "gen-instr-docs", | clEnumValN(GenInstrDocs, "gen-instr-docs", | ||||
"Generate instruction documentation"), | "Generate instruction documentation"), | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | namespace { | ||||
Class("class", cl::desc("Print Enum list for this class"), | Class("class", cl::desc("Print Enum list for this class"), | ||||
cl::value_desc("class name"), cl::cat(PrintEnumsCat)); | cl::value_desc("class name"), cl::cat(PrintEnumsCat)); | ||||
bool LLVMTableGenMain(raw_ostream &OS, RecordKeeper &Records) { | bool LLVMTableGenMain(raw_ostream &OS, RecordKeeper &Records) { | ||||
switch (Action) { | switch (Action) { | ||||
case PrintRecords: | case PrintRecords: | ||||
OS << Records; // No argument, dump all contents | OS << Records; // No argument, dump all contents | ||||
break; | break; | ||||
case DumpJSON: | |||||
EmitJSON(Records, OS); | |||||
break; | |||||
case GenEmitter: | case GenEmitter: | ||||
EmitCodeEmitter(Records, OS); | EmitCodeEmitter(Records, OS); | ||||
break; | break; | ||||
case GenRegisterInfo: | case GenRegisterInfo: | ||||
EmitRegisterInfo(Records, OS); | EmitRegisterInfo(Records, OS); | ||||
break; | break; | ||||
case GenInstrInfo: | case GenInstrInfo: | ||||
EmitInstrInfo(Records, OS); | EmitInstrInfo(Records, OS); | ||||
▲ Show 20 Lines • Show All 109 Lines • Show Last 20 Lines |