xref: /freebsd/contrib/llvm-project/llvm/lib/Target/LoongArch/LoongArchCallingConv.td (revision 5ca8e32633c4ffbbcd6762e5888b6a4ba0708c6c)
1//=- LoongArchCallingConv.td - Calling Conventions LoongArch -*- tablegen -*-=//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This describes the calling conventions for the LoongArch architecture.
10//
11//===----------------------------------------------------------------------===//
12
13def CSR_ILP32S_LP64S
14    : CalleeSavedRegs<(add R1, (sequence "R%u", 22, 31))>;
15
16def CSR_ILP32F_LP64F
17    : CalleeSavedRegs<(add CSR_ILP32S_LP64S, (sequence "F%u", 24, 31))>;
18
19def CSR_ILP32D_LP64D
20    : CalleeSavedRegs<(add CSR_ILP32S_LP64S, (sequence "F%u_64", 24, 31))>;
21
22// Needed for implementation of LoongArchRegisterInfo::getNoPreservedMask()
23def CSR_NoRegs : CalleeSavedRegs<(add)>;
24