X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FCodeGenRegisters.h;h=6f8682be59d3d42fa9b423a30441ea778ef7d3ae;hb=ed2eee63a6858312ed17582d8cb85a6856d8eb34;hp=bbec4ea6706d1ee19a43bcb448339586a29d909c;hpb=056afeface2ac98664ed8fa4799b46178a4a6fe3;p=oota-llvm.git diff --git a/utils/TableGen/CodeGenRegisters.h b/utils/TableGen/CodeGenRegisters.h index bbec4ea6706..6f8682be59d 100644 --- a/utils/TableGen/CodeGenRegisters.h +++ b/utils/TableGen/CodeGenRegisters.h @@ -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 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 @@ -15,8 +15,10 @@ #ifndef CODEGEN_REGISTERS_H #define CODEGEN_REGISTERS_H +#include "llvm/CodeGen/ValueTypes.h" #include #include +#include namespace llvm { class Record; @@ -26,18 +28,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 Elements; + std::vector VTs; unsigned SpillSize; unsigned SpillAlignment; + int CopyCost; + std::vector SubRegClasses; + std::string MethodProtos, MethodBodies; const std::string &getName() const; + const std::vector &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); };