Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -march=arm -mattr=+v6,+vfp2 -stats -info-output-file - | grep "Number of re-materialization" |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 2 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 3 | define arm_apcscc i32 @main(i32 %argc, i8** nocapture %argv, double %d1, double %d2) nounwind { |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 4 | entry: |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 5 | br i1 undef, label %smvp.exit, label %bb.i3 |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 6 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 7 | bb.i3: ; preds = %bb.i3, %bb134 |
| 8 | br i1 undef, label %smvp.exit, label %bb.i3 |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 9 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 10 | smvp.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 Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 13 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 14 | bb138.preheader: ; preds = %smvp.exit |
| 15 | br label %bb138 |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 16 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 17 | bb138: ; preds = %bb138, %bb138.preheader |
| 18 | br i1 undef, label %bb138, label %bb145.loopexit |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 19 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 20 | bb142: ; 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 Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 26 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 27 | bb.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 Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 33 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 34 | phi1.exit: ; preds = %bb.i35, %bb142 |
Bob Wilson | 5e2b05a | 2010-02-10 22:58:57 +0000 | [diff] [blame] | 35 | %.pn = phi double [ %6, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1] |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 36 | %9 = phi double [ %8, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1] |
Bob Wilson | 5e2b05a | 2010-02-10 22:58:57 +0000 | [diff] [blame] | 37 | %10 = fmul double %.pn, %9 ; <double> [#uses=1] |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 38 | br i1 %14, label %phi0.exit, label %bb.i |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 39 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 40 | bb.i: ; preds = %phi1.exit |
| 41 | unreachable |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 42 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 43 | phi0.exit: ; preds = %phi1.exit |
Bob Wilson | 5e2b05a | 2010-02-10 22:58:57 +0000 | [diff] [blame] | 44 | %11 = fsub double %4, %10 ; <double> [#uses=1] |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 45 | %12 = fadd double 0.000000e+00, %11 ; <double> [#uses=1] |
| 46 | store double %12, double* undef, align 4 |
| 47 | br label %bb142 |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 48 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 49 | bb145.loopexit: ; preds = %bb138 |
| 50 | br i1 undef, label %bb.nph218.bb.nph218.split_crit_edge, label %bb159 |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 51 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 52 | bb.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 Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 57 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 58 | bb159: ; preds = %bb145.loopexit, %smvp.exit, %bb134 |
| 59 | unreachable |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 60 | |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 61 | bb166: ; preds = %bb127 |
| 62 | unreachable |
Evan Cheng | 3b1d306 | 2007-08-14 23:34:50 +0000 | [diff] [blame] | 63 | } |
Evan Cheng | 00a99a3 | 2010-02-06 09:07:11 +0000 | [diff] [blame] | 64 | |
| 65 | declare arm_apcscc double @sin(double) nounwind readonly |