Put all LLVM code into the llvm namespace, as per bug 109.
[oota-llvm.git] / utils / TableGen / CodeGenTarget.h
1 //===- CodeGenWrappers.h - Code Generation Class Wrappers -------*- C++ -*-===//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
10 // These classes wrap target description classes used by the various code
11 // generation TableGen backends.  This makes it easier to access the data and
12 // provides a single place that needs to check it for validity.  All of these
13 // classes throw exceptions on error conditions.
14 //
15 //===----------------------------------------------------------------------===//
16
17 #ifndef CODEGENWRAPPERS_H
18 #define CODEGENWRAPPERS_H
19
20 #include "llvm/CodeGen/ValueTypes.h"
21 #include <iosfwd>
22 #include <string>
23 #include <vector>
24
25 namespace llvm {
26
27 class Record;
28 class RecordKeeper;
29
30 /// getValueType - Return the MVT::ValueType that the specified TableGen record
31 /// corresponds to.
32 MVT::ValueType getValueType(Record *Rec);
33
34 std::ostream &operator<<(std::ostream &OS, MVT::ValueType T);
35 std::string getName(MVT::ValueType T);
36 std::string getEnumName(MVT::ValueType T);
37
38
39 /// CodeGenTarget - This class corresponds to the Target class in the .td files.
40 ///
41 class CodeGenTarget {
42   Record *TargetRec;
43   std::vector<Record*> CalleeSavedRegisters;
44   MVT::ValueType PointerType;
45
46 public:
47   CodeGenTarget();
48
49   Record *getTargetRecord() const { return TargetRec; }
50   const std::string &getName() const;
51
52   const std::vector<Record*> &getCalleeSavedRegisters() const {
53     return CalleeSavedRegisters;
54   }
55
56   MVT::ValueType getPointerType() const { return PointerType; }
57
58   // getInstructionSet - Return the InstructionSet object...
59   Record *getInstructionSet() const;
60
61   // getInstructionSet - Return the CodeGenInstructionSet object for this
62   // target, lazily reading it from the record keeper as needed.
63   // CodeGenInstructionSet *getInstructionSet -
64 };
65
66 } // End llvm namespace
67
68 #endif