xref: /llvm-project/llvm/test/CodeGen/ARM/swift-ios.ll (revision 802cd6f9d7f0b145ed1ad4854ed4be613e55cae1)
1*802cd6f9SManman Ren; RUN: llc -mtriple=armv7-apple-ios < %s | FileCheck %s
2*802cd6f9SManman Ren
3*802cd6f9SManman Rendefine swiftcc float @t1(float %a, float %b) {
4*802cd6f9SManman Renentry:
5*802cd6f9SManman Ren; CHECK: t1
6*802cd6f9SManman Ren; CHECK-NOT: vmov
7*802cd6f9SManman Ren; CHECK: vadd.f32
8*802cd6f9SManman Ren  %add = fadd float %a, %b
9*802cd6f9SManman Ren  ret float %add
10*802cd6f9SManman Ren}
11*802cd6f9SManman Ren
12*802cd6f9SManman Rendefine swiftcc double @t2(double %a, double %b) {
13*802cd6f9SManman Renentry:
14*802cd6f9SManman Ren; CHECK: t2
15*802cd6f9SManman Ren; CHECK-NOT: vmov
16*802cd6f9SManman Ren; CHECK: vadd.f64
17*802cd6f9SManman Ren  %add = fadd double %a, %b
18*802cd6f9SManman Ren  ret double %add
19*802cd6f9SManman Ren}
20*802cd6f9SManman Ren
21*802cd6f9SManman Rendefine swiftcc double @t9(double %d0, double %d1, double %d2, double %d3,
22*802cd6f9SManman Ren    double %d4, double %d5, double %d6, double %d7, float %a, float %b) {
23*802cd6f9SManman Renentry:
24*802cd6f9SManman Ren; CHECK-LABEL: t9:
25*802cd6f9SManman Ren; CHECK-NOT: vmov
26*802cd6f9SManman Ren; CHECK: vldr
27*802cd6f9SManman Ren  %add = fadd float %a, %b
28*802cd6f9SManman Ren  %conv = fpext float %add to double
29*802cd6f9SManman Ren  ret double %conv
30*802cd6f9SManman Ren}
31*802cd6f9SManman Ren
32*802cd6f9SManman Rendefine swiftcc double @t10(double %d0, double %d1, double %d2, double %d3,
33*802cd6f9SManman Ren    double %d4, double %d5, double %a, float %b, double %c) {
34*802cd6f9SManman Renentry:
35*802cd6f9SManman Ren; CHECK-LABEL: t10:
36*802cd6f9SManman Ren; CHECK-NOT: vmov
37*802cd6f9SManman Ren; CHECK: vldr
38*802cd6f9SManman Ren  %add = fadd double %a, %c
39*802cd6f9SManman Ren  ret double %add
40*802cd6f9SManman Ren}
41*802cd6f9SManman Ren
42*802cd6f9SManman Rendefine swiftcc float @t11(double %d0, double %d1, double %d2, double %d3,
43*802cd6f9SManman Ren    double %d4, double %d5, double %d6, float %a, double %b, float %c) {
44*802cd6f9SManman Renentry:
45*802cd6f9SManman Ren; CHECK-LABEL: t11:
46*802cd6f9SManman Ren; CHECK: vldr
47*802cd6f9SManman Ren  %add = fadd float %a, %c
48*802cd6f9SManman Ren  ret float %add
49*802cd6f9SManman Ren}
50*802cd6f9SManman Ren
51*802cd6f9SManman Rendefine swiftcc double @t12(double %a, double %b) {
52*802cd6f9SManman Renentry:
53*802cd6f9SManman Ren; CHECK-LABEL: t12:
54*802cd6f9SManman Ren; CHECK: vstr
55*802cd6f9SManman Ren  %add = fadd double %a, %b
56*802cd6f9SManman Ren  %sub = fsub double %a, %b
57*802cd6f9SManman Ren  %call = tail call swiftcc double @x(double 0.000000e+00, double 0.000000e+00,
58*802cd6f9SManman Ren                 double 0.000000e+00, double 0.000000e+00, double 0.000000e+00,
59*802cd6f9SManman Ren                 double 0.000000e+00, double %add, float 0.000000e+00,
60*802cd6f9SManman Ren                 double %sub)
61*802cd6f9SManman Ren  ret double %call
62*802cd6f9SManman Ren}
63*802cd6f9SManman Ren
64*802cd6f9SManman Rendeclare swiftcc double @x(double, double, double, double, double, double,
65*802cd6f9SManman Ren                          double, float, double)
66*802cd6f9SManman Ren
67*802cd6f9SManman Renattributes #0 = { readnone }
68*802cd6f9SManman Renattributes #1 = { readonly }
69