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