mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
bdc6e663e7
This patch adds support for struct return values to the MSP430 target backend. It also reverses the order of argument and return registers in the calling convention to bring it into closer alignment with the published EABI from TI. Patch by Andrew Wygle (awygle). Differential Revision: https://reviews.llvm.org/D29069 llvm-svn: 296807
38 lines
1.5 KiB
TableGen
38 lines
1.5 KiB
TableGen
//==- MSP430CallingConv.td - Calling Conventions for MSP430 -*- tablegen -*-==//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
// This describes the calling conventions for MSP430 architecture.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// MSP430 Return Value Calling Convention
|
|
//===----------------------------------------------------------------------===//
|
|
def RetCC_MSP430 : CallingConv<[
|
|
// i8 are returned in registers R12B, R13B, R14B, R15B
|
|
CCIfType<[i8], CCAssignToReg<[R12B, R13B, R14B, R15B]>>,
|
|
|
|
// i16 are returned in registers R12, R13, R14, R15
|
|
CCIfType<[i16], CCAssignToReg<[R12, R13, R14, R15]>>
|
|
]>;
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// MSP430 Argument Calling Conventions
|
|
//===----------------------------------------------------------------------===//
|
|
def CC_MSP430_AssignStack : CallingConv<[
|
|
// Pass by value if the byval attribute is given
|
|
CCIfByVal<CCPassByVal<2, 2>>,
|
|
|
|
// Promote i8 arguments to i16.
|
|
CCIfType<[i8], CCPromoteToType<i16>>,
|
|
|
|
// Integer values get stored in stack slots that are 2 bytes in
|
|
// size and 2-byte aligned.
|
|
CCIfType<[i16], CCAssignToStack<2, 2>>
|
|
]>;
|
|
|