1*9880d681SAndroid Build Coastguard Worker//==- MSP430CallingConv.td - Calling Conventions for MSP430 -*- tablegen -*-==// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker// This describes the calling conventions for MSP430 architecture. 10*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker// MSP430 Return Value Calling Convention 14*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 15*9880d681SAndroid Build Coastguard Workerdef RetCC_MSP430 : CallingConv<[ 16*9880d681SAndroid Build Coastguard Worker // i8 are returned in registers R15B, R14B, R13B, R12B 17*9880d681SAndroid Build Coastguard Worker CCIfType<[i8], CCAssignToReg<[R15B, R14B, R13B, R12B]>>, 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker // i16 are returned in registers R15, R14, R13, R12 20*9880d681SAndroid Build Coastguard Worker CCIfType<[i16], CCAssignToReg<[R15, R14, R13, R12]>> 21*9880d681SAndroid Build Coastguard Worker]>; 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 24*9880d681SAndroid Build Coastguard Worker// MSP430 Argument Calling Conventions 25*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 26*9880d681SAndroid Build Coastguard Workerdef CC_MSP430_AssignStack : CallingConv<[ 27*9880d681SAndroid Build Coastguard Worker // Pass by value if the byval attribute is given 28*9880d681SAndroid Build Coastguard Worker CCIfByVal<CCPassByVal<2, 2>>, 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker // Promote i8 arguments to i16. 31*9880d681SAndroid Build Coastguard Worker CCIfType<[i8], CCPromoteToType<i16>>, 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker // Integer values get stored in stack slots that are 2 bytes in 34*9880d681SAndroid Build Coastguard Worker // size and 2-byte aligned. 35*9880d681SAndroid Build Coastguard Worker CCIfType<[i16], CCAssignToStack<2, 2>> 36*9880d681SAndroid Build Coastguard Worker]>; 37*9880d681SAndroid Build Coastguard Worker 38