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