blob: 92c1cf1821591f22bedfe2a7f86fef8eaf340fba [file] [log] [blame]
Evan Cheng00a99a32010-02-06 09:07:11 +00001; RUN: llc < %s -march=arm -mattr=+v6,+vfp2 -stats -info-output-file - | grep "Number of re-materialization"
Evan Cheng3b1d3062007-08-14 23:34:50 +00002
Evan Cheng00a99a32010-02-06 09:07:11 +00003define arm_apcscc i32 @main(i32 %argc, i8** nocapture %argv, double %d1, double %d2) nounwind {
Evan Cheng3b1d3062007-08-14 23:34:50 +00004entry:
Evan Cheng00a99a32010-02-06 09:07:11 +00005 br i1 undef, label %smvp.exit, label %bb.i3
Evan Cheng3b1d3062007-08-14 23:34:50 +00006
Evan Cheng00a99a32010-02-06 09:07:11 +00007bb.i3: ; preds = %bb.i3, %bb134
8 br i1 undef, label %smvp.exit, label %bb.i3
Evan Cheng3b1d3062007-08-14 23:34:50 +00009
Evan Cheng00a99a32010-02-06 09:07:11 +000010smvp.exit: ; preds = %bb.i3
11 %0 = fmul double %d1, 2.400000e-03 ; <double> [#uses=2]
12 br i1 undef, label %bb138.preheader, label %bb159
Evan Cheng3b1d3062007-08-14 23:34:50 +000013
Evan Cheng00a99a32010-02-06 09:07:11 +000014bb138.preheader: ; preds = %smvp.exit
15 br label %bb138
Evan Cheng3b1d3062007-08-14 23:34:50 +000016
Evan Cheng00a99a32010-02-06 09:07:11 +000017bb138: ; preds = %bb138, %bb138.preheader
18 br i1 undef, label %bb138, label %bb145.loopexit
Evan Cheng3b1d3062007-08-14 23:34:50 +000019
Evan Cheng00a99a32010-02-06 09:07:11 +000020bb142: ; preds = %bb.nph218.bb.nph218.split_crit_edge, %phi0.exit
21 %1 = fmul double %d1, -1.200000e-03 ; <double> [#uses=1]
22 %2 = fadd double %d2, %1 ; <double> [#uses=1]
23 %3 = fmul double %2, %d2 ; <double> [#uses=1]
24 %4 = fsub double 0.000000e+00, %3 ; <double> [#uses=1]
25 br i1 %14, label %phi1.exit, label %bb.i35
Evan Cheng3b1d3062007-08-14 23:34:50 +000026
Evan Cheng00a99a32010-02-06 09:07:11 +000027bb.i35: ; preds = %bb142
28 %5 = call arm_apcscc double @sin(double %15) nounwind readonly ; <double> [#uses=1]
29 %6 = fmul double %5, 0x4031740AFA84AD8A ; <double> [#uses=1]
30 %7 = fsub double 1.000000e+00, undef ; <double> [#uses=1]
31 %8 = fdiv double %7, 6.000000e-01 ; <double> [#uses=1]
32 br label %phi1.exit
Evan Cheng3b1d3062007-08-14 23:34:50 +000033
Evan Cheng00a99a32010-02-06 09:07:11 +000034phi1.exit: ; preds = %bb.i35, %bb142
Bob Wilson5e2b05a2010-02-10 22:58:57 +000035 %.pn = phi double [ %6, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
Evan Cheng00a99a32010-02-06 09:07:11 +000036 %9 = phi double [ %8, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
Bob Wilson5e2b05a2010-02-10 22:58:57 +000037 %10 = fmul double %.pn, %9 ; <double> [#uses=1]
Evan Cheng00a99a32010-02-06 09:07:11 +000038 br i1 %14, label %phi0.exit, label %bb.i
Evan Cheng3b1d3062007-08-14 23:34:50 +000039
Evan Cheng00a99a32010-02-06 09:07:11 +000040bb.i: ; preds = %phi1.exit
41 unreachable
Evan Cheng3b1d3062007-08-14 23:34:50 +000042
Evan Cheng00a99a32010-02-06 09:07:11 +000043phi0.exit: ; preds = %phi1.exit
Bob Wilson5e2b05a2010-02-10 22:58:57 +000044 %11 = fsub double %4, %10 ; <double> [#uses=1]
Evan Cheng00a99a32010-02-06 09:07:11 +000045 %12 = fadd double 0.000000e+00, %11 ; <double> [#uses=1]
46 store double %12, double* undef, align 4
47 br label %bb142
Evan Cheng3b1d3062007-08-14 23:34:50 +000048
Evan Cheng00a99a32010-02-06 09:07:11 +000049bb145.loopexit: ; preds = %bb138
50 br i1 undef, label %bb.nph218.bb.nph218.split_crit_edge, label %bb159
Evan Cheng3b1d3062007-08-14 23:34:50 +000051
Evan Cheng00a99a32010-02-06 09:07:11 +000052bb.nph218.bb.nph218.split_crit_edge: ; preds = %bb145.loopexit
53 %13 = fmul double %0, 0x401921FB54442D18 ; <double> [#uses=1]
54 %14 = fcmp ugt double %0, 6.000000e-01 ; <i1> [#uses=2]
55 %15 = fdiv double %13, 6.000000e-01 ; <double> [#uses=1]
56 br label %bb142
Evan Cheng3b1d3062007-08-14 23:34:50 +000057
Evan Cheng00a99a32010-02-06 09:07:11 +000058bb159: ; preds = %bb145.loopexit, %smvp.exit, %bb134
59 unreachable
Evan Cheng3b1d3062007-08-14 23:34:50 +000060
Evan Cheng00a99a32010-02-06 09:07:11 +000061bb166: ; preds = %bb127
62 unreachable
Evan Cheng3b1d3062007-08-14 23:34:50 +000063}
Evan Cheng00a99a32010-02-06 09:07:11 +000064
65declare arm_apcscc double @sin(double) nounwind readonly