1 //=== AArch64CallingConvention.h - AArch64 CC entry points ------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 // This file declares the entry points for AArch64 calling convention analysis.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H
14 #define LLVM_LIB_TARGET_AARCH64_AARCH64CALLINGCONVENTION_H
16 #include "llvm/CodeGen/CallingConvLower.h"
19 bool CC_AArch64_AAPCS(unsigned ValNo
, MVT ValVT
, MVT LocVT
,
20 CCValAssign::LocInfo LocInfo
, ISD::ArgFlagsTy ArgFlags
,
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
,
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
,
55 bool RetCC_AArch64_AAPCS(unsigned ValNo
, MVT ValVT
, MVT LocVT
,
56 CCValAssign::LocInfo LocInfo
, ISD::ArgFlagsTy ArgFlags
,
58 bool RetCC_AArch64_Arm64EC_Thunk(unsigned ValNo
, MVT ValVT
, MVT LocVT
,
59 CCValAssign::LocInfo LocInfo
,
60 ISD::ArgFlagsTy ArgFlags
, CCState
&State
);
61 bool RetCC_AArch64_Arm64EC_CFGuard_Check(unsigned ValNo
, MVT ValVT
, MVT LocVT
,
62 CCValAssign::LocInfo LocInfo
,
63 ISD::ArgFlagsTy ArgFlags
,