xref: /aosp_15_r20/external/llvm/lib/Target/MSP430/MSP430CallingConv.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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