summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorJiangning Liu <jiangning.liu@arm.com>2014-04-25 12:07:03 +0000
committerJiangning Liu <jiangning.liu@arm.com>2014-04-25 12:07:03 +0000
commit533b560bc66420b9103f391a5c312a855f49bd3a (patch)
tree8bf82c32e5e8ab1e7d04cb1586e1b180a24c590f /llvm
parenteb7354fd3b4f890d5fdda45211af04cc969cf81a (diff)
downloadbcm5719-llvm-533b560bc66420b9103f391a5c312a855f49bd3a.tar.gz
bcm5719-llvm-533b560bc66420b9103f391a5c312a855f49bd3a.zip
[ARM64] Handle fp128 for parameter passing on stack
llvm-svn: 207222
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/ARM64/ARM64CallingConvention.td3
-rw-r--r--llvm/test/CodeGen/ARM64/aapcs.ll7
2 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM64/ARM64CallingConvention.td b/llvm/lib/Target/ARM64/ARM64CallingConvention.td
index 1a2463062ef..40324953c02 100644
--- a/llvm/lib/Target/ARM64/ARM64CallingConvention.td
+++ b/llvm/lib/Target/ARM64/ARM64CallingConvention.td
@@ -59,7 +59,8 @@ def CC_ARM64_AAPCS : CallingConv<[
CCIfType<[i32, f32], CCAssignToStack<8, 8>>,
CCIfType<[i64, f64, v1f64, v2f32, v1i64, v2i32, v4i16, v8i8],
CCAssignToStack<8, 8>>,
- CCIfType<[v2i64, v4i32, v8i16, v16i8, v4f32, v2f64], CCAssignToStack<16, 16>>
+ CCIfType<[f128, v2i64, v4i32, v8i16, v16i8, v4f32, v2f64],
+ CCAssignToStack<16, 16>>
]>;
def RetCC_ARM64_AAPCS : CallingConv<[
diff --git a/llvm/test/CodeGen/ARM64/aapcs.ll b/llvm/test/CodeGen/ARM64/aapcs.ll
index 293fe1af0e1..bd206a48b73 100644
--- a/llvm/test/CodeGen/ARM64/aapcs.ll
+++ b/llvm/test/CodeGen/ARM64/aapcs.ll
@@ -94,3 +94,10 @@ define i128 @test_i128_shadow([7 x i64] %x0_x6, i128 %sp) {
ret i128 %sp
}
+
+; This test is to check if fp128 can be correctly handled on stack.
+define fp128 @test_fp128([8 x float] %arg0, fp128 %arg1) {
+; CHECK-LABEL: test_fp128:
+; CHECK: ldr {{q[0-9]+}}, [sp]
+ ret fp128 %arg1
+}
OpenPOWER on IntegriCloud