blob: c5bf3860ab5d62c1239321409c4175358c197ac8 [file] [log] [blame]
Chris Lattner2508bcf2010-04-03 06:27:56 +00001; RUN: opt < %s -indvars -S | FileCheck %s
2define void @test1() nounwind {
Devang Patelc1631db2008-11-03 18:32:19 +00003entry:
4 br label %bb
5
6bb: ; preds = %bb, %entry
7 %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2]
8 %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0]
Dan Gohmana5b96452009-06-04 22:49:04 +00009 %1 = fadd double %x.0.reg2mem.0, 1.000000e+00 ; <double> [#uses=2]
Devang Patelc1631db2008-11-03 18:32:19 +000010 %2 = fcmp olt double %1, 1.000000e+04 ; <i1> [#uses=1]
11 br i1 %2, label %bb, label %return
12
13return: ; preds = %bb
14 ret void
Stephen Linc1c7a132013-07-14 01:42:54 +000015; CHECK-LABEL: @test1(
Chris Lattner2508bcf2010-04-03 06:27:56 +000016; CHECK: icmp
Devang Patelc1631db2008-11-03 18:32:19 +000017}
18
19declare i32 @foo(double)
Devang Patel180afd22008-11-17 23:27:13 +000020
Chris Lattner2508bcf2010-04-03 06:27:56 +000021define void @test2() nounwind {
Devang Patel180afd22008-11-17 23:27:13 +000022entry:
23 br label %bb
24
25bb: ; preds = %bb, %entry
26 %x.0.reg2mem.0 = phi double [ -10.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2]
27 %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0]
Dan Gohmana5b96452009-06-04 22:49:04 +000028 %1 = fadd double %x.0.reg2mem.0, 2.000000e+00 ; <double> [#uses=2]
Devang Patel180afd22008-11-17 23:27:13 +000029 %2 = fcmp olt double %1, -1.000000e+00 ; <i1> [#uses=1]
30 br i1 %2, label %bb, label %return
31
32return: ; preds = %bb
33 ret void
Stephen Linc1c7a132013-07-14 01:42:54 +000034; CHECK-LABEL: @test2(
Chris Lattner2508bcf2010-04-03 06:27:56 +000035; CHECK: icmp
Devang Patel180afd22008-11-17 23:27:13 +000036}
37
38
Chris Lattner2508bcf2010-04-03 06:27:56 +000039define void @test3() nounwind {
Devang Patel180afd22008-11-17 23:27:13 +000040entry:
41 br label %bb
42
43bb: ; preds = %bb, %entry
Chris Lattner40ea6902010-04-03 06:30:03 +000044 %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ]
45 %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind
46 %1 = fadd double %x.0.reg2mem.0, 1.000000e+00
47 %2 = fcmp olt double %1, -1.000000e+00
Devang Patel180afd22008-11-17 23:27:13 +000048 br i1 %2, label %bb, label %return
49
Chris Lattner40060d32010-04-03 07:18:48 +000050return:
Devang Patel180afd22008-11-17 23:27:13 +000051 ret void
Stephen Linc1c7a132013-07-14 01:42:54 +000052; CHECK-LABEL: @test3(
Chris Lattner40060d32010-04-03 07:18:48 +000053; CHECK: fcmp
Devang Patel180afd22008-11-17 23:27:13 +000054}
55
Chris Lattner2508bcf2010-04-03 06:27:56 +000056define void @test4() nounwind {
Devang Patel180afd22008-11-17 23:27:13 +000057entry:
58 br label %bb
59
60bb: ; preds = %bb, %entry
61 %x.0.reg2mem.0 = phi double [ 40.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2]
62 %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0]
Dan Gohmana5b96452009-06-04 22:49:04 +000063 %1 = fadd double %x.0.reg2mem.0, -1.000000e+00 ; <double> [#uses=2]
Devang Patel180afd22008-11-17 23:27:13 +000064 %2 = fcmp olt double %1, 1.000000e+00 ; <i1> [#uses=1]
65 br i1 %2, label %bb, label %return
66
Chris Lattner40060d32010-04-03 07:18:48 +000067return:
Devang Patel180afd22008-11-17 23:27:13 +000068 ret void
Stephen Linc1c7a132013-07-14 01:42:54 +000069; CHECK-LABEL: @test4(
Andrew Trick3de5b8e2011-09-13 01:59:32 +000070; CHECK-NOT: cmp
71; CHECK: br i1 false
Devang Patel180afd22008-11-17 23:27:13 +000072}
73
Chris Lattner40ea6902010-04-03 06:30:03 +000074; PR6761
75define void @test5() nounwind {
76; <label>:0
77 br label %1
78
79; <label>:1 ; preds = %1, %0
80 %2 = phi double [ 9.000000e+00, %0 ], [ %4, %1 ] ; <double> [#uses=1]
81 %3 = tail call i32 @foo(double 0.0) ; <i32> [#uses=0]
82 %4 = fadd double %2, -1.000000e+00 ; <double> [#uses=2]
83 %5 = fcmp ult double %4, 0.000000e+00 ; <i1> [#uses=1]
84 br i1 %5, label %exit, label %1
85
86exit:
87 ret void
Andrew Trick3de5b8e2011-09-13 01:59:32 +000088
Stephen Linc1c7a132013-07-14 01:42:54 +000089; CHECK-LABEL: @test5(
Andrew Trick74111ee2011-09-15 20:58:37 +000090; CHECK: icmp slt i32 {{.*}}, 0
Chris Lattner40ea6902010-04-03 06:30:03 +000091; CHECK-NEXT: br i1
92}