Revert "Replace a big gob of old coalescer logic with the new CoalescerPair class."
[oota-llvm.git] / test / CodeGen / ARM / remat.ll
1 ; RUN: llc < %s -march=arm -mattr=+v6,+vfp2 -stats -info-output-file - | grep "Number of re-materialization"
2
3 define i32 @main(i32 %argc, i8** nocapture %argv, double %d1, double %d2) nounwind {
4 entry:
5   br i1 undef, label %smvp.exit, label %bb.i3
6
7 bb.i3:                                            ; preds = %bb.i3, %bb134
8   br i1 undef, label %smvp.exit, label %bb.i3
9
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
13
14 bb138.preheader:                                  ; preds = %smvp.exit
15   br label %bb138
16
17 bb138:                                            ; preds = %bb138, %bb138.preheader
18   br i1 undef, label %bb138, label %bb145.loopexit
19
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
26
27 bb.i35:                                           ; preds = %bb142
28   %5 = call  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
33
34 phi1.exit:                                        ; preds = %bb.i35, %bb142
35   %.pn = phi double [ %6, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
36   %9 = phi double [ %8, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
37   %10 = fmul double %.pn, %9                      ; <double> [#uses=1]
38   br i1 %14, label %phi0.exit, label %bb.i
39
40 bb.i:                                             ; preds = %phi1.exit
41   unreachable
42
43 phi0.exit:                                        ; preds = %phi1.exit
44   %11 = fsub double %4, %10                       ; <double> [#uses=1]
45   %12 = fadd double 0.000000e+00, %11             ; <double> [#uses=1]
46   store double %12, double* undef, align 4
47   br label %bb142
48
49 bb145.loopexit:                                   ; preds = %bb138
50   br i1 undef, label %bb.nph218.bb.nph218.split_crit_edge, label %bb159
51
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
57
58 bb159:                                            ; preds = %bb145.loopexit, %smvp.exit, %bb134
59   unreachable
60
61 bb166:                                            ; preds = %bb127
62   unreachable
63 }
64
65 declare double @sin(double) nounwind readonly