LLVM API Documentation
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