diff options
author | Jim Laskey <jlaskey@mac.com> | 2005-10-27 19:47:21 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2005-10-27 19:47:21 +0000 |
commit | 0d841e05677bdc55d003720e85e12d28dfe31862 (patch) | |
tree | 6dd04484d919f9a0ee6924bc3ab9b24ce1198396 /utils/TableGen/SubtargetEmitter.h | |
parent | 15517be4bfc7ec7e60ecb25dc0bb46de27d3de37 (diff) | |
download | external_llvm-0d841e05677bdc55d003720e85e12d28dfe31862.zip external_llvm-0d841e05677bdc55d003720e85e12d28dfe31862.tar.gz external_llvm-0d841e05677bdc55d003720e85e12d28dfe31862.tar.bz2 |
Now generating instruction itineraries for scheduling. Not my best work, but...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24050 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/SubtargetEmitter.h')
-rw-r--r-- | utils/TableGen/SubtargetEmitter.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/utils/TableGen/SubtargetEmitter.h b/utils/TableGen/SubtargetEmitter.h index 7e2a7cb..2a7b70b 100644 --- a/utils/TableGen/SubtargetEmitter.h +++ b/utils/TableGen/SubtargetEmitter.h @@ -15,17 +15,37 @@ #define SUBTARGET_EMITTER_H #include "TableGenBackend.h" +#include "llvm/Target/TargetInstrItineraries.h" +#include <vector> +#include <map> +#include <string> + namespace llvm { +// +// Convenience types. +// +typedef std::map<std::string, unsigned> IntMap; +typedef std::vector<InstrItinerary> IntineraryList; +typedef std::vector<IntineraryList> ProcessorList; + class SubtargetEmitter : public TableGenBackend { + RecordKeeper &Records; std::string Target; void Enumeration(std::ostream &OS, const char *ClassName, bool isBits); void FeatureKeyValues(std::ostream &OS); void CPUKeyValues(std::ostream &OS); - void SubtargetEmitter::ParseFeaturesFunction(std::ostream &OS); + unsigned CollectAllItinClasses(IntMap &ItinClassesMap); + void FormItineraryString(Record *ItinData, std::string &ItinString, + unsigned &N); + void EmitStageData(std::ostream &OS, unsigned N, + IntMap &ItinClassesMap, ProcessorList &ProcList); + void EmitProcessData(std::ostream &OS, ProcessorList &ProcList); + void EmitData(std::ostream &OS); + void ParseFeaturesFunction(std::ostream &OS); public: SubtargetEmitter(RecordKeeper &R) : Records(R) {} |