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