xref: /freebsd/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64CallingConvention.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1 //=== AArch64CallingConvention.h - AArch64 CC entry points ------*- C++ -*-===//
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 file declares the entry points for AArch64 calling convention analysis.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H
14 #define LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H
15 
16 #include "llvm/CodeGen/CallingConvLower.h"
17 
18 namespace llvm {
19 bool CC_AArch64_AAPCS(unsigned ValNo, MVT ValVT, MVT LocVT,
20                       CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
21                       CCState &State);
22 bool CC_AArch64_Arm64EC_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
23                                CCValAssign::LocInfo LocInfo,
24                                ISD::ArgFlagsTy ArgFlags, CCState &State);
25 bool CC_AArch64_Arm64EC_Thunk(unsigned ValNo, MVT ValVT, MVT LocVT,
26                               CCValAssign::LocInfo LocInfo,
27                               ISD::ArgFlagsTy ArgFlags, CCState &State);
28 bool CC_AArch64_Arm64EC_Thunk_Native(unsigned ValNo, MVT ValVT, MVT LocVT,
29                                      CCValAssign::LocInfo LocInfo,
30                                      ISD::ArgFlagsTy ArgFlags, CCState &State);
31 bool CC_AArch64_DarwinPCS_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
32                                  CCValAssign::LocInfo LocInfo,
33                                  ISD::ArgFlagsTy ArgFlags, CCState &State);
34 bool CC_AArch64_DarwinPCS(unsigned ValNo, MVT ValVT, MVT LocVT,
35                           CCValAssign::LocInfo LocInfo,
36                           ISD::ArgFlagsTy ArgFlags, CCState &State);
37 bool CC_AArch64_DarwinPCS_ILP32_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
38                           CCValAssign::LocInfo LocInfo,
39                           ISD::ArgFlagsTy ArgFlags, CCState &State);
40 bool CC_AArch64_Win64PCS(unsigned ValNo, MVT ValVT, MVT LocVT,
41                          CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
42                          CCState &State);
43 bool CC_AArch64_Win64_VarArg(unsigned ValNo, MVT ValVT, MVT LocVT,
44                              CCValAssign::LocInfo LocInfo,
45                              ISD::ArgFlagsTy ArgFlags, CCState &State);
46 bool CC_AArch64_Win64_CFGuard_Check(unsigned ValNo, MVT ValVT, MVT LocVT,
47                                     CCValAssign::LocInfo LocInfo,
48                                     ISD::ArgFlagsTy ArgFlags, CCState &State);
49 bool CC_AArch64_Arm64EC_CFGuard_Check(unsigned ValNo, MVT ValVT, MVT LocVT,
50                                       CCValAssign::LocInfo LocInfo,
51                                       ISD::ArgFlagsTy ArgFlags, CCState &State);
52 bool CC_AArch64_GHC(unsigned ValNo, MVT ValVT, MVT LocVT,
53                     CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
54                     CCState &State);
55 bool CC_AArch64_Preserve_None(unsigned ValNo, MVT ValVT, MVT LocVT,
56                               CCValAssign::LocInfo LocInfo,
57                               ISD::ArgFlagsTy ArgFlags, CCState &State);
58 bool RetCC_AArch64_AAPCS(unsigned ValNo, MVT ValVT, MVT LocVT,
59                          CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags,
60                          CCState &State);
61 bool RetCC_AArch64_Arm64EC_Thunk(unsigned ValNo, MVT ValVT, MVT LocVT,
62                                  CCValAssign::LocInfo LocInfo,
63                                  ISD::ArgFlagsTy ArgFlags, CCState &State);
64 bool RetCC_AArch64_Arm64EC_CFGuard_Check(unsigned ValNo, MVT ValVT, MVT LocVT,
65                                          CCValAssign::LocInfo LocInfo,
66                                          ISD::ArgFlagsTy ArgFlags,
67                                          CCState &State);
68 } // namespace llvm
69 
70 #endif
71