1//===-- MipsCallingConv.td - Calling Conventions for Mips --*- tablegen -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 109 unchanged lines hidden (view full) --- 118 CCAssignToRegWithShadow<[A0, A1, A2, A3, 119 T0, T1, T2, T3], 120 [D12_64, D13_64, D14_64, D15_64, 121 D16_64, D17_64, D18_64, D19_64]>, 122 CCAssignToStack<4, 8> 123]>; 124 125def CC_MipsN : CallingConv<[ |
126 CCIfType<[i8, i16, i32, i64], |
127 CCIfSubtargetNot<"isLittle()", 128 CCIfInReg<CCPromoteToUpperBitsInType<i64>>>>, 129 130 // All integers (except soft-float integers) are promoted to 64-bit. 131 CCIfType<[i8, i16, i32], CCIfOrigArgWasNotFloat<CCPromoteToType<i64>>>, 132 133 // The only i32's we have left are soft-float arguments. 134 CCIfSubtarget<"abiUsesSoftFloat()", CCIfType<[i32], CCDelegateTo<CC_MipsN_SoftFloat>>>, --- 19 unchanged lines hidden (view full) --- 154 // All stack parameter slots become 64-bit doublewords and are 8-byte aligned. 155 CCIfType<[f32], CCAssignToStack<4, 8>>, 156 CCIfType<[i64, f64], CCAssignToStack<8, 8>> 157]>; 158 159// N32/64 variable arguments. 160// All arguments are passed in integer registers. 161def CC_MipsN_VarArg : CallingConv<[ |
162 CCIfType<[i8, i16, i32, i64], 163 CCIfSubtargetNot<"isLittle()", 164 CCIfInReg<CCPromoteToUpperBitsInType<i64>>>>, 165 |
166 // All integers are promoted to 64-bit. 167 CCIfType<[i8, i16, i32], CCPromoteToType<i64>>, 168 169 CCIfType<[f32], CCAssignToReg<[A0, A1, A2, A3, T0, T1, T2, T3]>>, 170 171 CCIfType<[i64, f64], CCAssignToReg<[A0_64, A1_64, A2_64, A3_64, 172 T0_64, T1_64, T2_64, T3_64]>>, 173 --- 253 unchanged lines hidden --- |