1//===- TableGen'erated file -------------------------------------*- C++ -*-===// 2// 3// Calling Convention Implementation Fragment 4// 5// Automatically generated file, do not edit! 6// 7//===----------------------------------------------------------------------===// 8 9static bool CC_PPC_SVR4(unsigned ValNo, EVT ValVT, 10 EVT LocVT, CCValAssign::LocInfo LocInfo, 11 ISD::ArgFlagsTy ArgFlags, CCState &State); 12static bool CC_PPC_SVR4_ByVal(unsigned ValNo, EVT ValVT, 13 EVT LocVT, CCValAssign::LocInfo LocInfo, 14 ISD::ArgFlagsTy ArgFlags, CCState &State); 15static bool CC_PPC_SVR4_Common(unsigned ValNo, EVT ValVT, 16 EVT LocVT, CCValAssign::LocInfo LocInfo, 17 ISD::ArgFlagsTy ArgFlags, CCState &State); 18static bool CC_PPC_SVR4_VarArg(unsigned ValNo, EVT ValVT, 19 EVT LocVT, CCValAssign::LocInfo LocInfo, 20 ISD::ArgFlagsTy ArgFlags, CCState &State); 21static bool RetCC_PPC(unsigned ValNo, EVT ValVT, 22 EVT LocVT, CCValAssign::LocInfo LocInfo, 23 ISD::ArgFlagsTy ArgFlags, CCState &State); 24 25 26static bool CC_PPC_SVR4(unsigned ValNo, EVT ValVT, 27 EVT LocVT, CCValAssign::LocInfo LocInfo, 28 ISD::ArgFlagsTy ArgFlags, CCState &State) { 29 30 if (LocVT == MVT::v16i8 || 31 LocVT == MVT::v8i16 || 32 LocVT == MVT::v4i32 || 33 LocVT == MVT::v4f32) { 34 static const unsigned RegList1[] = { 35 PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13 36 }; 37 if (unsigned Reg = State.AllocateReg(RegList1, 12)) { 38 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 39 return false; 40 } 41 } 42 43 if (!CC_PPC_SVR4_Common(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State)) 44 return false; 45 46 return true; // CC didn't match. 47} 48 49 50static bool CC_PPC_SVR4_ByVal(unsigned ValNo, EVT ValVT, 51 EVT LocVT, CCValAssign::LocInfo LocInfo, 52 ISD::ArgFlagsTy ArgFlags, CCState &State) { 53 54 if (ArgFlags.isByVal()) { 55 State.HandleByVal(ValNo, ValVT, LocVT, LocInfo, 4, 4, ArgFlags); 56 return false; 57 } 58 59 if (CC_PPC_SVR4_Custom_Dummy(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State)) 60 return false; 61 62 return true; // CC didn't match. 63} 64 65 66static bool CC_PPC_SVR4_Common(unsigned ValNo, EVT ValVT, 67 EVT LocVT, CCValAssign::LocInfo LocInfo, 68 ISD::ArgFlagsTy ArgFlags, CCState &State) { 69 70 if (LocVT == MVT::i32) { 71 if (ArgFlags.isSplit()) { 72 if (CC_PPC_SVR4_Custom_AlignArgRegs(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State)) 73 return false; 74 } 75 } 76 77 if (LocVT == MVT::i32) { 78 static const unsigned RegList1[] = { 79 PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10 80 }; 81 if (unsigned Reg = State.AllocateReg(RegList1, 8)) { 82 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 83 return false; 84 } 85 } 86 87 if (LocVT == MVT::f64) { 88 if (ArgFlags.isSplit()) { 89 if (CC_PPC_SVR4_Custom_AlignFPArgRegs(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State)) 90 return false; 91 } 92 } 93 94 if (LocVT == MVT::f32 || 95 LocVT == MVT::f64) { 96 static const unsigned RegList2[] = { 97 PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8 98 }; 99 if (unsigned Reg = State.AllocateReg(RegList2, 8)) { 100 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 101 return false; 102 } 103 } 104 105 if (LocVT == MVT::i32) { 106 if (ArgFlags.isSplit()) { 107 unsigned Offset3 = State.AllocateStack(4, 8); 108 State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset3, LocVT, LocInfo)); 109 return false; 110 } 111 } 112 113 if (LocVT == MVT::i32) { 114 unsigned Offset4 = State.AllocateStack(4, 4); 115 State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset4, LocVT, LocInfo)); 116 return false; 117 } 118 119 if (LocVT == MVT::f32 || 120 LocVT == MVT::f64) { 121 unsigned Offset5 = State.AllocateStack(8, 8); 122 State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset5, LocVT, LocInfo)); 123 return false; 124 } 125 126 if (LocVT == MVT::v16i8 || 127 LocVT == MVT::v8i16 || 128 LocVT == MVT::v4i32 || 129 LocVT == MVT::v4f32) { 130 unsigned Offset6 = State.AllocateStack(16, 16); 131 State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset6, LocVT, LocInfo)); 132 return false; 133 } 134 135 return true; // CC didn't match. 136} 137 138 139static bool CC_PPC_SVR4_VarArg(unsigned ValNo, EVT ValVT, 140 EVT LocVT, CCValAssign::LocInfo LocInfo, 141 ISD::ArgFlagsTy ArgFlags, CCState &State) { 142 143 if (!CC_PPC_SVR4_Common(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State)) 144 return false; 145 146 return true; // CC didn't match. 147} 148 149 150static bool RetCC_PPC(unsigned ValNo, EVT ValVT, 151 EVT LocVT, CCValAssign::LocInfo LocInfo, 152 ISD::ArgFlagsTy ArgFlags, CCState &State) { 153 154 if (LocVT == MVT::i32) { 155 static const unsigned RegList1[] = { 156 PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10 157 }; 158 if (unsigned Reg = State.AllocateReg(RegList1, 8)) { 159 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 160 return false; 161 } 162 } 163 164 if (LocVT == MVT::i64) { 165 static const unsigned RegList2[] = { 166 PPC::X3, PPC::X4, PPC::X5, PPC::X6 167 }; 168 if (unsigned Reg = State.AllocateReg(RegList2, 4)) { 169 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 170 return false; 171 } 172 } 173 174 if (LocVT == MVT::f32) { 175 if (unsigned Reg = State.AllocateReg(PPC::F1)) { 176 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 177 return false; 178 } 179 } 180 181 if (LocVT == MVT::f64) { 182 static const unsigned RegList3[] = { 183 PPC::F1, PPC::F2 184 }; 185 if (unsigned Reg = State.AllocateReg(RegList3, 2)) { 186 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 187 return false; 188 } 189 } 190 191 if (LocVT == MVT::v16i8 || 192 LocVT == MVT::v8i16 || 193 LocVT == MVT::v4i32 || 194 LocVT == MVT::v4f32) { 195 if (unsigned Reg = State.AllocateReg(PPC::V2)) { 196 State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); 197 return false; 198 } 199 } 200 201 return true; // CC didn't match. 202} 203