summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2016-08-26 19:28:17 +0000
committerManman Ren <manman.ren@gmail.com>2016-08-26 19:28:17 +0000
commit66b54e9f3202e172d4b029bc054544689b61efd9 (patch)
treec0887a4f2bd9a5a6021935a16f9497f6caf65ece
parent85cf564c5168150d306d63f360409cd86f92f04c (diff)
downloadbcm5719-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.cpp2
-rw-r--r--llvm/lib/Target/AArch64/AArch64ISelLowering.cpp1
-rw-r--r--llvm/test/CodeGen/AArch64/swiftcc.ll11
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
+}
OpenPOWER on IntegriCloud