//===- 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 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
#ifndef CODEGEN_REGISTERS_H
#define CODEGEN_REGISTERS_H
+#include "llvm/CodeGen/ValueTypes.h"
#include <string>
#include <vector>
+#include <cstdlib>
namespace llvm {
class Record;
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);
};