diff options
Diffstat (limited to 'support/tools/TableGen/CodeGenWrappers.h')
-rw-r--r-- | support/tools/TableGen/CodeGenWrappers.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/support/tools/TableGen/CodeGenWrappers.h b/support/tools/TableGen/CodeGenWrappers.h new file mode 100644 index 0000000000..c50d0576e8 --- /dev/null +++ b/support/tools/TableGen/CodeGenWrappers.h @@ -0,0 +1,52 @@ +//===- CodeGenWrappers.h - Code Generation Class Wrappers -------*- C++ -*-===// +// +// These classes wrap target description classes used by the various code +// generation TableGen backends. This makes it easier to access the data and +// provides a single place that needs to check it for validity. All of these +// classes throw exceptions on error conditions. +// +//===----------------------------------------------------------------------===// + +#ifndef CODEGENWRAPPERS_H +#define CODEGENWRAPPERS_H + +#include "llvm/CodeGen/ValueTypes.h" +#include <iosfwd> +#include <vector> +class Record; +class RecordKeeper; + +/// getValueType - Return the MVT::ValueType that the specified TableGen record +/// corresponds to. +MVT::ValueType getValueType(Record *Rec); + +std::ostream &operator<<(std::ostream &OS, MVT::ValueType T); + + + +/// CodeGenTarget - This class corresponds to the Target class in the .td files. +/// +class CodeGenTarget { + Record *TargetRec; + std::vector<Record*> CalleeSavedRegisters; + MVT::ValueType PointerType; + +public: + CodeGenTarget(); + + Record *getTargetRecord() const { return TargetRec; } + const std::string &getName() const; + + const std::vector<Record*> &getCalleeSavedRegisters() const { + return CalleeSavedRegisters; + } + + // getInstructionSet - Return the InstructionSet object... + Record *getInstructionSet() const; + + // getInstructionSet - Return the CodeGenInstructionSet object for this + // target, lazily reading it from the record keeper as needed. + // CodeGenInstructionSet *getInstructionSet - +}; + +#endif |