tblgen/AsmMatcher: Emit simple matcher for register names.
[oota-llvm.git] / utils / TableGen / CodeGenRegisters.h
index 2cd312941b80aeaad0fceb31f76d4bd6fd16794a..6f8682be59d3d42fa9b423a30441ea778ef7d3ae 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
 #ifndef CODEGEN_REGISTERS_H
 #define CODEGEN_REGISTERS_H
 
+#include "llvm/CodeGen/ValueTypes.h"
 #include <string>
 #include <vector>
+#include <cstdlib>
 
 namespace llvm {
   class Record;
@@ -32,12 +34,25 @@ namespace llvm {
 
   struct CodeGenRegisterClass {
     Record *TheDef;
+    std::string Namespace;
     std::vector<Record*> Elements;
+    std::vector<MVT::SimpleValueType> VTs;
     unsigned SpillSize;
     unsigned SpillAlignment;
-    std::string MethodDefinitions;
+    int CopyCost;
+    std::vector<Record*> SubRegClasses;
+    std::string MethodProtos, MethodBodies;
 
     const std::string &getName() const;
+    const std::vector<MVT::SimpleValueType> &getValueTypes() const {return VTs;}
+    unsigned getNumValueTypes() const { return VTs.size(); }
+    
+    MVT::SimpleValueType getValueTypeNum(unsigned VTNum) const {
+      if (VTNum < VTs.size())
+        return VTs[VTNum];
+      assert(0 && "VTNum greater than number of ValueTypes in RegClass!");
+      abort();
+    }
 
     CodeGenRegisterClass(Record *R);
   };