diff options
author | Manman Ren <manman.ren@gmail.com> | 2016-08-26 19:28:17 +0000 |
---|---|---|
committer | Manman Ren <manman.ren@gmail.com> | 2016-08-26 19:28:17 +0000 |
commit | 66b54e9f3202e172d4b029bc054544689b61efd9 (patch) | |
tree | c0887a4f2bd9a5a6021935a16f9497f6caf65ece | |
parent | 85cf564c5168150d306d63f360409cd86f92f04c (diff) | |
download | bcm5719-llvm-66b54e9f3202e172d4b029bc054544689b61efd9.tar.gz bcm5719-llvm-66b54e9f3202e172d4b029bc054544689b61efd9.zip |
Swift Calling Convetion: add support for AArch64.
It will just be the same as the regular calling convention.
rdar://28029509
llvm-svn: 279853
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64FastISel.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 1 | ||||
-rw-r--r-- | llvm/test/CodeGen/AArch64/swiftcc.ll | 11 |
3 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64FastISel.cpp b/llvm/lib/Target/AArch64/AArch64FastISel.cpp index a2bb2b2922a..405e7d0a211 100644 --- a/llvm/lib/Target/AArch64/AArch64FastISel.cpp +++ b/llvm/lib/Target/AArch64/AArch64FastISel.cpp @@ -2860,7 +2860,7 @@ bool AArch64FastISel::fastLowerArguments() { return false; CallingConv::ID CC = F->getCallingConv(); - if (CC != CallingConv::C) + if (CC != CallingConv::C && CC != CallingConv::Swift) return false; // Only handle simple cases of up to 8 GPR and FPR each. diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index 6ed9e6fe5aa..bdc9ca4444b 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -2429,6 +2429,7 @@ CCAssignFn *AArch64TargetLowering::CCAssignFnForCall(CallingConv::ID CC, case CallingConv::Fast: case CallingConv::PreserveMost: case CallingConv::CXX_FAST_TLS: + case CallingConv::Swift: if (!Subtarget->isTargetDarwin()) return CC_AArch64_AAPCS; return IsVarArg ? CC_AArch64_DarwinPCS_VarArg : CC_AArch64_DarwinPCS; diff --git a/llvm/test/CodeGen/AArch64/swiftcc.ll b/llvm/test/CodeGen/AArch64/swiftcc.ll new file mode 100644 index 00000000000..43249542715 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/swiftcc.ll @@ -0,0 +1,11 @@ +; RUN: llc -verify-machineinstrs -mtriple=aarch64-apple-ios -o - %s | FileCheck %s +; RUN: llc -O0 -verify-machineinstrs -mtriple=aarch64-apple-ios -o - %s | FileCheck %s + +; CHECK: t1 +; CHECK: fadd s0, s0, s1 +; CHECK: ret +define swiftcc float @t1(float %a, float %b) { +entry: + %add = fadd float %a, %b + ret float %add +} |