blob: 00ca3fcc60322a1677b52b9d2a03c0e3ae7ed837 [file] [log] [blame]
Chris Lattnerf5bd1b72003-10-05 19:27:59 +00001//===- CodeGenWrappers.h - Code Generation Class Wrappers -------*- C++ -*-===//
2//
3// These classes wrap target description classes used by the various code
4// generation TableGen backends. This makes it easier to access the data and
5// provides a single place that needs to check it for validity. All of these
6// classes throw exceptions on error conditions.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef CODEGENWRAPPERS_H
11#define CODEGENWRAPPERS_H
12
13#include "llvm/CodeGen/ValueTypes.h"
14#include <iosfwd>
15#include <string>
16#include <vector>
17class Record;
18class RecordKeeper;
19
20/// getValueType - Return the MVT::ValueType that the specified TableGen record
21/// corresponds to.
22MVT::ValueType getValueType(Record *Rec);
23
24std::ostream &operator<<(std::ostream &OS, MVT::ValueType T);
25std::string getName(MVT::ValueType T);
26std::string getEnumName(MVT::ValueType T);
27
28
29/// CodeGenTarget - This class corresponds to the Target class in the .td files.
30///
31class CodeGenTarget {
32 Record *TargetRec;
33 std::vector<Record*> CalleeSavedRegisters;
34 MVT::ValueType PointerType;
35
36public:
37 CodeGenTarget();
38
39 Record *getTargetRecord() const { return TargetRec; }
40 const std::string &getName() const;
41
42 const std::vector<Record*> &getCalleeSavedRegisters() const {
43 return CalleeSavedRegisters;
44 }
45
46 MVT::ValueType getPointerType() const { return PointerType; }
47
48 // getInstructionSet - Return the InstructionSet object...
49 Record *getInstructionSet() const;
50
51 // getInstructionSet - Return the CodeGenInstructionSet object for this
52 // target, lazily reading it from the record keeper as needed.
53 // CodeGenInstructionSet *getInstructionSet -
54};
55
56#endif