Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: tests_lit/llvm2ice_tests/fp.arm.call.ll

Issue 1348393002: Subzero. Fixes ARM32 VFP calling convention. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/IceTargetLoweringARM32.h ('K') | « src/IceTargetLoweringARM32.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests_lit/llvm2ice_tests/fp.arm.call.ll
diff --git a/tests_lit/llvm2ice_tests/fp.arm.call.ll b/tests_lit/llvm2ice_tests/fp.arm.call.ll
new file mode 100644
index 0000000000000000000000000000000000000000..39a567116cf8b854e858e036ee6f78ab95003c3b
--- /dev/null
+++ b/tests_lit/llvm2ice_tests/fp.arm.call.ll
@@ -0,0 +1,579 @@
+; Tests validating the vfp calling convention for ARM32.
Jim Stichnoth 2015/09/16 21:31:54 Is it possible yet to enable crosstest/test_callin
John 2015/09/16 23:12:47 Not yet. Vector types are not handled at all, and
+;
+; RUN: %if --need=target_ARM32 --need=allow_dump \
+; RUN: --command %p2i --filetype=asm --assemble \
+; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
+; RUN: | %if --need=target_ARM32 --need=allow_dump \
+; RUN: --command FileCheck %s
+; RUN: %if --need=target_ARM32 --need=allow_dump \
+; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \
+; RUN: -i %s --args -Om1 --skip-unimplemented \
+; RUN: | %if --need=target_ARM32 --need=allow_dump \
+; RUN: --command FileCheck %s
+
+; Boring tests ensuring float arguments are allocated "correctly." Unfortunately
+; this test cannot verify whether the right arguments are being allocated to the
+; right register.
+declare void @float1(float %p0)
+declare void @float2(float %p0, float %p1)
+declare void @float3(float %p0, float %p1, float %p2)
+declare void @float4(float %p0, float %p1, float %p2, float %p3)
+declare void @float5(float %p0, float %p1, float %p2, float %p3, float %p4)
+declare void @float6(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5)
+declare void @float7(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6)
+declare void @float8(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7)
+declare void @float9(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8)
+declare void @float10(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9)
+declare void @float11(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10)
+declare void @float12(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11)
+declare void @float13(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11, float %p12)
+declare void @float14(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11, float %p12, float %p13)
+declare void @float15(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11, float %p12, float %p13,
+ float %p14)
+declare void @float16(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11, float %p12, float %p13,
+ float %p14, float %p15)
+declare void @float17(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11, float %p12, float %p13,
+ float %p14, float %p15, float %p16)
+declare void @float18(float %p0, float %p1, float %p2, float %p3, float %p4,
+ float %p5, float %p6, float %p7, float %p8, float %p9,
+ float %p10, float %p11, float %p12, float %p13,
+ float %p14, float %p15, float %p16, float %p17)
+define void @floatHarness() nounwind {
+; CHECK-LABEL: floatHarness
+ call void @float1(float 1.0)
+; CHECK-DAG: vldr s0
+; CHECK: bl {{.*}} float1
+ call void @float2(float 1.0, float 2.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} float2
+ call void @float3(float 1.0, float 2.0, float 3.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK: bl {{.*}} float3
+ call void @float4(float 1.0, float 2.0, float 3.0, float 4.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK: bl {{.*}} float4
+ call void @float5(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK: bl {{.*}} float5
+ call void @float6(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK: bl {{.*}} float6
+ call void @float7(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK: bl {{.*}} float7
+ call void @float8(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK: bl {{.*}} float8
+ call void @float9(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK: bl {{.*}} float9
+ call void @float10(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK: bl {{.*}} float10
+ call void @float11(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK: bl {{.*}} float11
+ call void @float12(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK: bl {{.*}} float12
+ call void @float13(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0, float 13.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK-DAG: vldr s12
+; CHECK: bl {{.*}} float13
+ call void @float14(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0, float 13.0, float 14.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK-DAG: vldr s12
+; CHECK-DAG: vldr s13
+; CHECK: bl {{.*}} float14
+ call void @float15(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0, float 13.0, float 14.0,
+ float 15.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK-DAG: vldr s12
+; CHECK-DAG: vldr s13
+; CHECK-DAG: vldr s14
+; CHECK: bl {{.*}} float15
+ call void @float16(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0, float 13.0, float 14.0,
+ float 15.0, float 16.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK-DAG: vldr s12
+; CHECK-DAG: vldr s13
+; CHECK-DAG: vldr s14
+; CHECK-DAG: vldr s15
+; CHECK: bl {{.*}} float16
+ call void @float17(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0, float 13.0, float 14.0,
+ float 15.0, float 16.0, float 17.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK-DAG: vldr s12
+; CHECK-DAG: vldr s13
+; CHECK-DAG: vldr s14
+; CHECK-DAG: vldr s15
+; CHECK-DAG: vstr s{{.*}}, [sp]
+; CHECK: bl {{.*}} float17
+ call void @float18(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0,
+ float 6.0, float 7.0, float 8.0, float 9.0, float 10.0,
+ float 11.0, float 12.0, float 13.0, float 14.0,
+ float 15.0, float 16.0, float 17.0, float 18.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr s1
+; CHECK-DAG: vldr s2
+; CHECK-DAG: vldr s3
+; CHECK-DAG: vldr s4
+; CHECK-DAG: vldr s5
+; CHECK-DAG: vldr s6
+; CHECK-DAG: vldr s7
+; CHECK-DAG: vldr s8
+; CHECK-DAG: vldr s9
+; CHECK-DAG: vldr s10
+; CHECK-DAG: vldr s11
+; CHECK-DAG: vldr s12
+; CHECK-DAG: vldr s13
+; CHECK-DAG: vldr s14
+; CHECK-DAG: vldr s15
+; CHECK-DAG: vstr s{{.*}}, [sp]
+; CHECK-DAG: vstr s{{.*}}, [sp, #4]
+; CHECK: bl {{.*}} float18
+ ret void
+}
+
+declare void @double1(double %p0)
+declare void @double2(double %p0, double %p1)
+declare void @double3(double %p0, double %p1, double %p2)
+declare void @double4(double %p0, double %p1, double %p2, double %p3)
+declare void @double5(double %p0, double %p1, double %p2, double %p3,
+ double %p4)
+declare void @double6(double %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5)
+declare void @double7(double %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6)
+declare void @double8(double %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7)
+declare void @double9(double %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ double %p8)
+declare void @double10(double %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ double %p8, double %p9)
+define void @doubleHarness() nounwind {
+; CHECK-LABEL: doubleHarness
+ call void @double1(double 1.0)
+; CHECK-DAG: vldr d0
+; CHECK: bl {{.*}} double1
+ call void @double2(double 1.0, double 2.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK: bl {{.*}} double2
+ call void @double3(double 1.0, double 2.0, double 3.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK: bl {{.*}} double3
+ call void @double4(double 1.0, double 2.0, double 3.0, double 4.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK: bl {{.*}} double4
+ call void @double5(double 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK: bl {{.*}} double5
+ call void @double6(double 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK: bl {{.*}} double6
+ call void @double7(double 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK: bl {{.*}} double7
+ call void @double8(double 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK: bl {{.*}} double8
+ call void @double9(double 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ double 9.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK: bl {{.*}} double9
+ call void @double10(double 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ double 9.0, double 10.0)
+; CHECK-DAG: vldr d0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK-DAG: vstr d{{.*}}, [sp, #8]
+; CHECK: bl {{.*}} double10
+
+ ret void
+}
+
+declare void @testFDF(float %p0, double %p1, float %p2)
+declare void @testFDDF(float %p0, double %p1, double %p2, float %p3)
+declare void @testFDDDF(float %p0, double %p1, double %p2, double %p3,
+ float %p4)
+declare void @testFDDDDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, float %p5)
+declare void @testFDDDDDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, float %p6)
+declare void @testFDDDDDDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, float %p7)
+declare void @testFDDDDDDDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ float %p8)
+declare void @testFDDDDDDDFD(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ float %p8, double %p9)
+declare void @testFDDDDDDDDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ double %p8, float %p9)
+declare void @testFDDDDDDDDDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ double %p8, double %p9, float %p10)
+declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ double %p8, float %p9, double %p10)
+declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3,
+ double %p4, double %p5, double %p6, double %p7,
+ double %p8, float %p9, double %p10, float %p11)
+define void @packsFloats() nounwind {
+; CHECK-LABEL: packsFloats
+ call void @testFDF(float 1.0, double 2.0, float 3.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDF
+ call void @testFDDF(float 1.0, double 2.0, double 3.0, float 4.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDF
+ call void @testFDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ float 5.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDDF
+ call void @testFDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, float 6.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDDDF
+ call void @testFDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, float 7.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDDDDF
+ call void @testFDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, float 8.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDDDDDF
+ call void @testFDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ float 9.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDDDDDDF
+ call void @testFDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ float 9.0, double 10.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK-DAG: vldr s1
+; CHECK: bl {{.*}} testFDDDDDDDFD
+ call void @testFDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ double 9.0, float 10.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK-DAG: vstr s{{.*}}, [sp, #8]
+; CHECK: bl {{.*}} testFDDDDDDDDF
+ call void @testFDDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ double 9.0, double 10.0, float 11.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK-DAG: vstr d{{.*}}, [sp, #8]
+; CHECK-DAG: vstr s{{.*}}, [sp, #16]
+; CHECK: bl {{.*}} testFDDDDDDDDDF
+ call void @testFDDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ double 9.0, float 10.0, double 11.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK-DAG: vstr s{{.*}}, [sp, #8]
+; CHECK-DAG: vstr d{{.*}}, [sp, #16]
+; CHECK: bl {{.*}} testFDDDDDDDDFD
+ call void @testFDDDDDDDDFDF(float 1.0, double 2.0, double 3.0, double 4.0,
+ double 5.0, double 6.0, double 7.0, double 8.0,
+ double 9.0, float 10.0, double 11.0, float 12.0)
+; CHECK-DAG: vldr s0
+; CHECK-DAG: vldr d1
+; CHECK-DAG: vldr d2
+; CHECK-DAG: vldr d3
+; CHECK-DAG: vldr d4
+; CHECK-DAG: vldr d5
+; CHECK-DAG: vldr d6
+; CHECK-DAG: vldr d7
+; CHECK-DAG: vstr d{{.*}}, [sp]
+; CHECK-DAG: vstr s{{.*}}, [sp, #8]
+; CHECK-DAG: vstr d{{.*}}, [sp, #16]
+; CHECK-DAG: vstr s{{.*}}, [sp, #24]
+; CHECK: bl {{.*}} testFDDDDDDDDFD
+
+ ret void
+}
+
+declare void @tDDDDDDDDFD(double %p1, double %p2, double %p3, double %p4, double %p5, double %p6, double %p7, double %p8, float %p9, double %p10)
+
+define void @foo() {
+ call void @tDDDDDDDDFD(double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, float 1.0, double 1.0)
+ ret void
+}
« src/IceTargetLoweringARM32.h ('K') | « src/IceTargetLoweringARM32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698