xref: /freebsd/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64CallingConvention.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
10b57cec5SDimitry Andric //=== AArch64CallingConvention.h - AArch64 CC entry points ------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric //
90b57cec5SDimitry Andric // This file declares the entry points for AArch64 calling convention analysis.
100b57cec5SDimitry Andric //
110b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric 
130b57cec5SDimitry Andric #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H
140b57cec5SDimitry Andric #define LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric #include "llvm/CodeGen/CallingConvLower.h"
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric namespace llvm {
190b57cec5SDimitry Andric bool CC_AArch64_AAPCS(unsigned ValNo, MVT ValVT, MVT LocVT,
200b57cec5SDimitry Andric                       CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
210b57cec5SDimitry Andric                       CCState &State);
22bdd1243dSDimitry Andric bool CC_AArch64_Arm64EC_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
23bdd1243dSDimitry Andric                                CCValAssign::LocInfo LocInfo,
24bdd1243dSDimitry Andric                                ISD::ArgFlagsTy ArgFlags, CCState &State);
257a6dacacSDimitry Andric bool CC_AArch64_Arm64EC_Thunk(unsigned ValNo, MVT ValVT, MVT LocVT,
267a6dacacSDimitry Andric                               CCValAssign::LocInfo LocInfo,
277a6dacacSDimitry Andric                               ISD::ArgFlagsTy ArgFlags, CCState &State);
287a6dacacSDimitry Andric bool CC_AArch64_Arm64EC_Thunk_Native(unsigned ValNo, MVT ValVT, MVT LocVT,
297a6dacacSDimitry Andric                                      CCValAssign::LocInfo LocInfo,
307a6dacacSDimitry Andric                                      ISD::ArgFlagsTy ArgFlags, CCState &State);
310b57cec5SDimitry Andric bool CC_AArch64_DarwinPCS_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
320b57cec5SDimitry Andric                                  CCValAssign::LocInfo LocInfo,
330b57cec5SDimitry Andric                                  ISD::ArgFlagsTy ArgFlags, CCState &State);
340b57cec5SDimitry Andric bool CC_AArch64_DarwinPCS(unsigned ValNo, MVT ValVT, MVT LocVT,
350b57cec5SDimitry Andric                           CCValAssign::LocInfo LocInfo,
360b57cec5SDimitry Andric                           ISD::ArgFlagsTy ArgFlags, CCState &State);
378bcb0991SDimitry Andric bool CC_AArch64_DarwinPCS_ILP32_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
388bcb0991SDimitry Andric                           CCValAssign::LocInfo LocInfo,
398bcb0991SDimitry Andric                           ISD::ArgFlagsTy ArgFlags, CCState &State);
405f757f3fSDimitry Andric bool CC_AArch64_Win64PCS(unsigned ValNo, MVT ValVT, MVT LocVT,
415f757f3fSDimitry Andric                          CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
425f757f3fSDimitry Andric                          CCState &State);
430b57cec5SDimitry Andric bool CC_AArch64_Win64_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
440b57cec5SDimitry Andric                              CCValAssign::LocInfo LocInfo,
450b57cec5SDimitry Andric                              ISD::ArgFlagsTy ArgFlags, CCState &State);
46480093f4SDimitry Andric bool CC_AArch64_Win64_CFGuard_Check(unsigned ValNo, MVT ValVT, MVT LocVT,
47480093f4SDimitry Andric                                     CCValAssign::LocInfo LocInfo,
48480093f4SDimitry Andric                                     ISD::ArgFlagsTy ArgFlags, CCState &State);
497a6dacacSDimitry Andric bool CC_AArch64_Arm64EC_CFGuard_Check(unsigned ValNo, MVT ValVT, MVT LocVT,
507a6dacacSDimitry Andric                                       CCValAssign::LocInfo LocInfo,
517a6dacacSDimitry Andric                                       ISD::ArgFlagsTy ArgFlags, CCState &State);
520b57cec5SDimitry Andric bool CC_AArch64_GHC(unsigned ValNo, MVT ValVT, MVT LocVT,
530b57cec5SDimitry Andric                     CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
540b57cec5SDimitry Andric                     CCState &State);
55*0fca6ea1SDimitry Andric bool CC_AArch64_Preserve_None(unsigned ValNo, MVT ValVT, MVT LocVT,
56*0fca6ea1SDimitry Andric                               CCValAssign::LocInfo LocInfo,
57*0fca6ea1SDimitry Andric                               ISD::ArgFlagsTy ArgFlags, CCState &State);
580b57cec5SDimitry Andric bool RetCC_AArch64_AAPCS(unsigned ValNo, MVT ValVT, MVT LocVT,
590b57cec5SDimitry Andric                          CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
600b57cec5SDimitry Andric                          CCState &State);
617a6dacacSDimitry Andric bool RetCC_AArch64_Arm64EC_Thunk(unsigned ValNo, MVT ValVT, MVT LocVT,
627a6dacacSDimitry Andric                                  CCValAssign::LocInfo LocInfo,
637a6dacacSDimitry Andric                                  ISD::ArgFlagsTy ArgFlags, CCState &State);
647a6dacacSDimitry Andric bool RetCC_AArch64_Arm64EC_CFGuard_Check(unsigned ValNo, MVT ValVT, MVT LocVT,
657a6dacacSDimitry Andric                                          CCValAssign::LocInfo LocInfo,
667a6dacacSDimitry Andric                                          ISD::ArgFlagsTy ArgFlags,
677a6dacacSDimitry Andric                                          CCState &State);
680b57cec5SDimitry Andric } // namespace llvm
690b57cec5SDimitry Andric 
700b57cec5SDimitry Andric #endif
71