X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FInstrInfoEmitter.cpp;h=a4302d09078bc189dbfa5dae091991ef5cc6c5a4;hb=47f0e3f434e2e43f951c3a826c40906cb15b7285;hp=b1d21d4271930253e4d0464358fa1d74b834b85a;hpb=4223496f24ea67b50a2280f22d3c5659741266d2;p=oota-llvm.git diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp index b1d21d42719..a4302d09078 100644 --- a/utils/TableGen/InstrInfoEmitter.cpp +++ b/utils/TableGen/InstrInfoEmitter.cpp @@ -1,4 +1,4 @@ -//===- InstrInfoEmitter.cpp - Generate a Instruction Set Desc. ------------===// +//===- InstrInfoEmitter.cpp - Generate a Instruction Set Desc. --*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -12,7 +12,6 @@ // //===----------------------------------------------------------------------===// - #include "CodeGenDAGPatterns.h" #include "CodeGenSchedule.h" #include "CodeGenTarget.h" @@ -26,6 +25,7 @@ #include #include #include + using namespace llvm; namespace { @@ -70,7 +70,7 @@ private: void EmitOperandInfo(raw_ostream &OS, OperandInfoMapTy &OperandInfoIDs); std::vector GetOperandInfo(const CodeGenInstruction &Inst); }; -} // End anonymous namespace +} // end anonymous namespace static void PrintDefList(const std::vector &Uses, unsigned Num, raw_ostream &OS) { @@ -190,7 +190,6 @@ void InstrInfoEmitter::EmitOperandInfo(raw_ostream &OS, } } - /// Initialize data structures for generating operand name mappings. /// /// \param Operands [out] A map used to generate the OpName enum with operand @@ -257,9 +256,9 @@ void InstrInfoEmitter::emitOperandNameMappings(raw_ostream &OS, OS << "OPERAND_LAST"; OS << "\n};\n"; - OS << "} // End namespace OpName\n"; - OS << "} // End namespace " << Namespace << "\n"; - OS << "} // End namespace llvm\n"; + OS << "} // end namespace OpName\n"; + OS << "} // end namespace " << Namespace << "\n"; + OS << "} // end namespace llvm\n"; OS << "#endif //GET_INSTRINFO_OPERAND_ENUM\n"; OS << "#ifdef GET_INSTRINFO_NAMED_OPS\n"; @@ -298,8 +297,8 @@ void InstrInfoEmitter::emitOperandNameMappings(raw_ostream &OS, OS << " return -1;\n"; } OS << "}\n"; - OS << "} // End namespace " << Namespace << "\n"; - OS << "} // End namespace llvm\n"; + OS << "} // end namespace " << Namespace << "\n"; + OS << "} // end namespace llvm\n"; OS << "#endif //GET_INSTRINFO_NAMED_OPS\n"; } @@ -328,9 +327,9 @@ void InstrInfoEmitter::emitOperandTypesEnum(raw_ostream &OS, } OS << " OPERAND_TYPE_LIST_END" << "\n};\n"; - OS << "} // End namespace OpTypes\n"; - OS << "} // End namespace " << Namespace << "\n"; - OS << "} // End namespace llvm\n"; + OS << "} // end namespace OpTypes\n"; + OS << "} // end namespace " << Namespace << "\n"; + OS << "} // end namespace llvm\n"; OS << "#endif // GET_INSTRINFO_OPERAND_TYPES_ENUM\n"; } @@ -419,7 +418,7 @@ void InstrInfoEmitter::run(raw_ostream &OS) { << TargetName << "InstrNameIndices, " << TargetName << "InstrNameData, " << NumberedInstructions.size() << ");\n}\n\n"; - OS << "} // End llvm namespace \n"; + OS << "} // end llvm namespace \n"; OS << "#endif // GET_INSTRINFO_MC_DESC\n\n"; @@ -430,10 +429,11 @@ void InstrInfoEmitter::run(raw_ostream &OS) { std::string ClassName = TargetName + "GenInstrInfo"; OS << "namespace llvm {\n"; OS << "struct " << ClassName << " : public TargetInstrInfo {\n" - << " explicit " << ClassName << "(int SO = -1, int DO = -1);\n" - << " virtual ~" << ClassName << "();\n" + << " explicit " << ClassName + << "(int CFSetupOpcode = -1, int CFDestroyOpcode = -1, int CatchRetOpcode = -1);\n" + << " ~" << ClassName << "() override {}\n" << "};\n"; - OS << "} // End llvm namespace \n"; + OS << "} // end llvm namespace \n"; OS << "#endif // GET_INSTRINFO_HEADER\n\n"; @@ -444,13 +444,13 @@ void InstrInfoEmitter::run(raw_ostream &OS) { OS << "extern const MCInstrDesc " << TargetName << "Insts[];\n"; OS << "extern const unsigned " << TargetName << "InstrNameIndices[];\n"; OS << "extern const char " << TargetName << "InstrNameData[];\n"; - OS << ClassName << "::" << ClassName << "(int SO, int DO)\n" - << " : TargetInstrInfo(SO, DO) {\n" - << " InitMCInstrInfo(" << TargetName << "Insts, " - << TargetName << "InstrNameIndices, " << TargetName << "InstrNameData, " - << NumberedInstructions.size() << ");\n}\n" - << ClassName << "::~" << ClassName << "() {}\n"; - OS << "} // End llvm namespace \n"; + OS << ClassName << "::" << ClassName + << "(int CFSetupOpcode, int CFDestroyOpcode, int CatchRetOpcode)\n" + << " : TargetInstrInfo(CFSetupOpcode, CFDestroyOpcode, CatchRetOpcode) {\n" + << " InitMCInstrInfo(" << TargetName << "Insts, " << TargetName + << "InstrNameIndices, " << TargetName << "InstrNameData, " + << NumberedInstructions.size() << ");\n}\n"; + OS << "} // end llvm namespace \n"; OS << "#endif // GET_INSTRINFO_CTOR_DTOR\n\n"; @@ -473,41 +473,42 @@ void InstrInfoEmitter::emitRecord(const CodeGenInstruction &Inst, unsigned Num, OS << " { "; OS << Num << ",\t" << MinOperands << ",\t" << Inst.Operands.NumDefs << ",\t" - << SchedModels.getSchedClassIdx(Inst) << ",\t" - << Inst.TheDef->getValueAsInt("Size") << ",\t0"; + << Inst.TheDef->getValueAsInt("Size") << ",\t" + << SchedModels.getSchedClassIdx(Inst) << ",\t0"; // Emit all of the target independent flags... - if (Inst.isPseudo) OS << "|(1<getValueAsBitsInit("TSFlags"); @@ -547,15 +548,15 @@ void InstrInfoEmitter::emitRecord(const CodeGenInstruction &Inst, unsigned Num, CodeGenTarget &Target = CDP.getTargetInfo(); if (Inst.HasComplexDeprecationPredicate) // Emit a function pointer to the complex predicate method. - OS << ",0" + OS << ", -1 " << ",&get" << Inst.DeprecatedReason << "DeprecationInfo"; else if (!Inst.DeprecatedReason.empty()) // Emit the Subtarget feature. - OS << "," << Target.getInstNamespace() << "::" << Inst.DeprecatedReason - << ",nullptr"; + OS << ", " << Target.getInstNamespace() << "::" << Inst.DeprecatedReason + << " ,nullptr"; else // Instruction isn't deprecated. - OS << ",0,nullptr"; + OS << ", -1 ,nullptr"; OS << " }, // Inst #" << Num << " = " << Inst.TheDef->getName() << "\n"; } @@ -573,10 +574,8 @@ void InstrInfoEmitter::emitEnums(raw_ostream &OS) { // We must emit the PHI opcode first... std::string Namespace = Target.getInstNamespace(); - if (Namespace.empty()) { - fprintf(stderr, "No instructions defined!\n"); - exit(1); - } + if (Namespace.empty()) + PrintFatalError("No instructions defined!"); const std::vector &NumberedInstructions = Target.getInstructionsByEnumValue(); @@ -595,9 +594,9 @@ void InstrInfoEmitter::emitEnums(raw_ostream &OS) { OS << " " << Class.Name << "\t= " << Num++ << ",\n"; OS << " SCHED_LIST_END = " << SchedModels.numInstrSchedClasses() << "\n"; OS << " };\n"; - OS << "} // End Sched namespace\n"; - OS << "} // End " << Namespace << " namespace\n"; - OS << "} // End llvm namespace \n"; + OS << "} // end Sched namespace\n"; + OS << "} // end " << Namespace << " namespace\n"; + OS << "} // end llvm namespace \n"; OS << "#endif // GET_INSTRINFO_ENUM\n\n"; } @@ -609,4 +608,4 @@ void EmitInstrInfo(RecordKeeper &RK, raw_ostream &OS) { EmitMapTable(RK, OS); } -} // End llvm namespace +} // end llvm namespace