[llvm] r309015 - [AArch64] Add a test for float argument passing to win64 vararg functions

Martin Storsjo via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 25 12:57:22 PDT 2017


Author: mstorsjo
Date: Tue Jul 25 12:57:22 2017
New Revision: 309015

URL: http://llvm.org/viewvc/llvm-project?rev=309015&view=rev
Log:
[AArch64] Add a test for float argument passing to win64 vararg functions

The existing tests only tested how a va_start is lowered.

Differential Revision: https://reviews.llvm.org/D35540

Modified:
    llvm/trunk/test/CodeGen/AArch64/win64_vararg.ll

Modified: llvm/trunk/test/CodeGen/AArch64/win64_vararg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/win64_vararg.ll?rev=309015&r1=309014&r2=309015&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/win64_vararg.ll (original)
+++ llvm/trunk/test/CodeGen/AArch64/win64_vararg.ll Tue Jul 25 12:57:22 2017
@@ -145,3 +145,29 @@ define i32 @snprintf(i8*, i64, i8*, ...)
   call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5) #2
   ret i32 %12
 }
+
+; CHECK-LABEL: fixed_params
+; CHECK: sub     sp,  sp, #32
+; CHECK: mov     w8,  w3
+; CHECK: mov     w9,  w2
+; CHECK: mov     w10, w1
+; CHECK: str     w4,  [sp]
+; CHECK: fmov    x1,  d0
+; CHECK: fmov    x3,  d1
+; CHECK: fmov    x5,  d2
+; CHECK: fmov    x7,  d3
+; CHECK: mov     w2,  w10
+; CHECK: mov     w4,  w9
+; CHECK: mov     w6,  w8
+; CHECK: str     x30, [sp, #16]
+; CHECK: str     d4,  [sp, #8]
+; CHECK: bl      varargs
+; CHECK: ldr     x30, [sp, #16]
+; CHECK: add     sp,  sp, #32
+; CHECK: ret
+define void @fixed_params(i32, double, i32, double, i32, double, i32, double, i32, double) nounwind {
+  tail call void (i32, ...) @varargs(i32 %0, double %1, i32 %2, double %3, i32 %4, double %5, i32 %6, double %7, i32 %8, double %9)
+  ret void
+}
+
+declare void @varargs(i32, ...) local_unnamed_addr




More information about the llvm-commits mailing list