X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FSubtargetEmitter.h;h=4fcd8f8b0b24be5a539b0a48820a4bb5cf2902fb;hb=b4ced5a3c488d58d98381c8562123640fdb6177a;hp=bb81df372de3ec0561fdf676ce47875952730a9c;hpb=b3b1d5f097a4fbcf134259b743ccbd93d187c6cd;p=oota-llvm.git diff --git a/utils/TableGen/SubtargetEmitter.h b/utils/TableGen/SubtargetEmitter.h index bb81df372de..4fcd8f8b0b2 100644 --- a/utils/TableGen/SubtargetEmitter.h +++ b/utils/TableGen/SubtargetEmitter.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by James M. Laskey and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -15,18 +15,38 @@ #define SUBTARGET_EMITTER_H #include "TableGenBackend.h" +#include "llvm/Target/TargetInstrItineraries.h" +#include +#include +#include + namespace llvm { class SubtargetEmitter : public TableGenBackend { + RecordKeeper &Records; + std::string Target; + bool HasItineraries; - void FeatureEnumeration(std::ostream &OS); + void Enumeration(std::ostream &OS, const char *ClassName, bool isBits); void FeatureKeyValues(std::ostream &OS); void CPUKeyValues(std::ostream &OS); + unsigned CollectAllItinClasses(std::ostream &OS, + std::map &ItinClassesMap); + void FormItineraryString(Record *ItinData, std::string &ItinString, + unsigned &NStages); + void EmitStageData(std::ostream &OS, unsigned NItinClasses, + std::map &ItinClassesMap, + std::vector > &ProcList); + void EmitProcessorData(std::ostream &OS, + std::vector > &ProcList); + void EmitProcessorLookup(std::ostream &OS); + void EmitData(std::ostream &OS); + void ParseFeaturesFunction(std::ostream &OS); public: - SubtargetEmitter(RecordKeeper &R) : Records(R) {} + SubtargetEmitter(RecordKeeper &R) : Records(R), HasItineraries(false) {} // run - Output the subtarget enumerations, returning true on failure. void run(std::ostream &o);