LLVM API Documentation

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

PPC32GenRegisterInfo.inc

Go to the documentation of this file.
00001 //===- TableGen'erated file -------------------------------------*- C++ -*-===//
00002 //
00003 // Register Information Source Fragment
00004 //
00005 // Automatically generated file, do not edit!
00006 //
00007 //===----------------------------------------------------------------------===//
00008 
00009 namespace llvm {
00010 
00011 namespace {     // Register classes...
00012   // CRRC Register Class...
00013   const unsigned CRRC[] = {
00014     PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7, 
00015   };
00016 
00017   struct CRRCClass : public TargetRegisterClass {
00018     CRRCClass() : TargetRegisterClass(4, 4, CRRC, CRRC + 8) {}
00019   } CRRCInstance;
00020 
00021   // FPRC Register Class...
00022   const unsigned FPRC[] = {
00023     PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, 
00024   };
00025 
00026   struct FPRCClass : public TargetRegisterClass {
00027     FPRCClass() : TargetRegisterClass(8, 8, FPRC, FPRC + 32) {}
00028   } FPRCInstance;
00029 
00030   // GPRC Register Class...
00031   const unsigned GPRC[] = {
00032     PPC::R2, PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R30, PPC::R29, PPC::R28, PPC::R27, PPC::R26, PPC::R25, PPC::R24, PPC::R23, PPC::R22, PPC::R21, PPC::R20, PPC::R19, PPC::R18, PPC::R17, PPC::R16, PPC::R15, PPC::R14, PPC::R13, PPC::R31, PPC::R0, PPC::R1, PPC::LR, 
00033   };
00034 
00035   struct GPRCClass : public TargetRegisterClass {
00036     GPRCClass() : TargetRegisterClass(4, 4, GPRC, GPRC + 33) {}
00037 
00038     iterator allocation_order_begin(MachineFunction &MF) const {
00039       return begin() + (AIX ? 1 : 0);
00040     }
00041     iterator allocation_order_end(MachineFunction &MF) const {
00042       if (hasFP(MF))
00043         return end()-4;
00044       else
00045         return end()-3;
00046     }
00047     } GPRCInstance;
00048 
00049   const TargetRegisterClass* const RegisterClasses[] = {
00050     &CRRCInstance,
00051     &FPRCInstance,
00052     &GPRCInstance,
00053   };
00054   const unsigned Empty_AliasSet[] = { 0 };
00055 
00056   const MRegisterDesc RegisterDescriptors[] = { // Descriptors
00057     { "NOREG",  0,    0,  0 },
00058     { "CR0",  Empty_AliasSet, 32, 32 },
00059     { "CR1",  Empty_AliasSet, 32, 32 },
00060     { "CR2",  Empty_AliasSet, 32, 32 },
00061     { "CR3",  Empty_AliasSet, 32, 32 },
00062     { "CR4",  Empty_AliasSet, 32, 32 },
00063     { "CR5",  Empty_AliasSet, 32, 32 },
00064     { "CR6",  Empty_AliasSet, 32, 32 },
00065     { "CR7",  Empty_AliasSet, 32, 32 },
00066     { "CTR",  Empty_AliasSet, 0, 0 },
00067     { "F0", Empty_AliasSet, 64, 64 },
00068     { "F1", Empty_AliasSet, 64, 64 },
00069     { "F10",  Empty_AliasSet, 64, 64 },
00070     { "F11",  Empty_AliasSet, 64, 64 },
00071     { "F12",  Empty_AliasSet, 64, 64 },
00072     { "F13",  Empty_AliasSet, 64, 64 },
00073     { "F14",  Empty_AliasSet, 64, 64 },
00074     { "F15",  Empty_AliasSet, 64, 64 },
00075     { "F16",  Empty_AliasSet, 64, 64 },
00076     { "F17",  Empty_AliasSet, 64, 64 },
00077     { "F18",  Empty_AliasSet, 64, 64 },
00078     { "F19",  Empty_AliasSet, 64, 64 },
00079     { "F2", Empty_AliasSet, 64, 64 },
00080     { "F20",  Empty_AliasSet, 64, 64 },
00081     { "F21",  Empty_AliasSet, 64, 64 },
00082     { "F22",  Empty_AliasSet, 64, 64 },
00083     { "F23",  Empty_AliasSet, 64, 64 },
00084     { "F24",  Empty_AliasSet, 64, 64 },
00085     { "F25",  Empty_AliasSet, 64, 64 },
00086     { "F26",  Empty_AliasSet, 64, 64 },
00087     { "F27",  Empty_AliasSet, 64, 64 },
00088     { "F28",  Empty_AliasSet, 64, 64 },
00089     { "F29",  Empty_AliasSet, 64, 64 },
00090     { "F3", Empty_AliasSet, 64, 64 },
00091     { "F30",  Empty_AliasSet, 64, 64 },
00092     { "F31",  Empty_AliasSet, 64, 64 },
00093     { "F4", Empty_AliasSet, 64, 64 },
00094     { "F5", Empty_AliasSet, 64, 64 },
00095     { "F6", Empty_AliasSet, 64, 64 },
00096     { "F7", Empty_AliasSet, 64, 64 },
00097     { "F8", Empty_AliasSet, 64, 64 },
00098     { "F9", Empty_AliasSet, 64, 64 },
00099     { "FPSCR",  Empty_AliasSet, 0, 0 },
00100     { "LR", Empty_AliasSet, 32, 32 },
00101     { "R0", Empty_AliasSet, 32, 32 },
00102     { "R1", Empty_AliasSet, 32, 32 },
00103     { "R10",  Empty_AliasSet, 32, 32 },
00104     { "R11",  Empty_AliasSet, 32, 32 },
00105     { "R12",  Empty_AliasSet, 32, 32 },
00106     { "R13",  Empty_AliasSet, 32, 32 },
00107     { "R14",  Empty_AliasSet, 32, 32 },
00108     { "R15",  Empty_AliasSet, 32, 32 },
00109     { "R16",  Empty_AliasSet, 32, 32 },
00110     { "R17",  Empty_AliasSet, 32, 32 },
00111     { "R18",  Empty_AliasSet, 32, 32 },
00112     { "R19",  Empty_AliasSet, 32, 32 },
00113     { "R2", Empty_AliasSet, 32, 32 },
00114     { "R20",  Empty_AliasSet, 32, 32 },
00115     { "R21",  Empty_AliasSet, 32, 32 },
00116     { "R22",  Empty_AliasSet, 32, 32 },
00117     { "R23",  Empty_AliasSet, 32, 32 },
00118     { "R24",  Empty_AliasSet, 32, 32 },
00119     { "R25",  Empty_AliasSet, 32, 32 },
00120     { "R26",  Empty_AliasSet, 32, 32 },
00121     { "R27",  Empty_AliasSet, 32, 32 },
00122     { "R28",  Empty_AliasSet, 32, 32 },
00123     { "R29",  Empty_AliasSet, 32, 32 },
00124     { "R3", Empty_AliasSet, 32, 32 },
00125     { "R30",  Empty_AliasSet, 32, 32 },
00126     { "R31",  Empty_AliasSet, 32, 32 },
00127     { "R4", Empty_AliasSet, 32, 32 },
00128     { "R5", Empty_AliasSet, 32, 32 },
00129     { "R6", Empty_AliasSet, 32, 32 },
00130     { "R7", Empty_AliasSet, 32, 32 },
00131     { "R8", Empty_AliasSet, 32, 32 },
00132     { "R9", Empty_AliasSet, 32, 32 },
00133     { "TBL",  Empty_AliasSet, 0, 0 },
00134     { "TBU",  Empty_AliasSet, 0, 0 },
00135     { "XER",  Empty_AliasSet, 0, 0 },
00136   };
00137 }
00138 
00139 namespace PPC32 { // Register classes
00140   TargetRegisterClass *CRRCRegisterClass = &CRRCInstance;
00141   TargetRegisterClass *FPRCRegisterClass = &FPRCInstance;
00142   TargetRegisterClass *GPRCRegisterClass = &GPRCInstance;
00143 } // end of namespace PPC32
00144 
00145 PPC32GenRegisterInfo::PPC32GenRegisterInfo(int CallFrameSetupOpcode, int CallFrameDestroyOpcode)
00146   : MRegisterInfo(RegisterDescriptors, 79, RegisterClasses, RegisterClasses+3,
00147                   CallFrameSetupOpcode, CallFrameDestroyOpcode) {}
00148 
00149 const unsigned* PPC32GenRegisterInfo::getCalleeSaveRegs() const {
00150   static const unsigned CalleeSaveRegs[] = {
00151     PPC::R1, PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::CR2, PPC::CR3, PPC::CR4, PPC::LR,  0
00152   };
00153   return CalleeSaveRegs;
00154 }
00155 
00156 } // End llvm namespace