PredicateOperand related bug fix.
[oota-llvm.git] / utils / TableGen / CodeGenRegisters.h
index ba89190325d6a199a027856653ffe5c3186eee8d..8e9008c74aad69c3bac5e078008a1abda0752aff 100644 (file)
@@ -1,10 +1,10 @@
 //===- CodeGenRegisters.h - Register and RegisterClass Info -----*- C++ -*-===//
-// 
+//
 //                     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 defines structures to encapsulate information gleaned from the
@@ -16,6 +16,8 @@
 #define CODEGEN_REGISTERS_H
 
 #include <string>
+#include <vector>
+#include "llvm/CodeGen/ValueTypes.h"
 
 namespace llvm {
   class Record;
@@ -25,13 +27,31 @@ namespace llvm {
     Record *TheDef;
     const std::string &getName() const;
     unsigned DeclaredSpillSize, DeclaredSpillAlignment;
-    
     CodeGenRegister(Record *R);
   };
 
 
   struct CodeGenRegisterClass {
+    Record *TheDef;
+    std::string Namespace;
+    std::vector<Record*> Elements;
+    std::vector<MVT::ValueType> VTs;
+    unsigned SpillSize;
+    unsigned SpillAlignment;
+    std::string MethodProtos, MethodBodies;
 
+    const std::string &getName() const;
+    const std::vector<MVT::ValueType> &getValueTypes() const { return VTs; }
+    unsigned getNumValueTypes() const { return VTs.size(); }
+    
+    const MVT::ValueType 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);
   };
 }