summaryrefslogtreecommitdiff
path: root/utils/TableGen/SubtargetEmitter.h
diff options
context:
space:
mode:
authorJim Laskey <jlaskey@mac.com>2005-10-27 19:47:21 +0000
committerJim Laskey <jlaskey@mac.com>2005-10-27 19:47:21 +0000
commit0d841e05677bdc55d003720e85e12d28dfe31862 (patch)
tree6dd04484d919f9a0ee6924bc3ab9b24ce1198396 /utils/TableGen/SubtargetEmitter.h
parent15517be4bfc7ec7e60ecb25dc0bb46de27d3de37 (diff)
downloadllvm-0d841e05677bdc55d003720e85e12d28dfe31862.tar.gz
llvm-0d841e05677bdc55d003720e85e12d28dfe31862.tar.bz2
llvm-0d841e05677bdc55d003720e85e12d28dfe31862.tar.xz
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.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/utils/TableGen/SubtargetEmitter.h b/utils/TableGen/SubtargetEmitter.h
index 7e2a7cb0a3..2a7b70be25 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) {}