blob: 266eebd5bb656f55ffd3806acafdf47f0fcebe75 [file] [log] [blame]
Chris Lattner203bceb2010-04-03 06:27:56 +00001; RUN: opt < %s -indvars -S | FileCheck %s
2define void @test1() nounwind {
Devang Patel58d43d42008-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 Gohmanae3a0be2009-06-04 22:49:04 +00009 %1 = fadd double %x.0.reg2mem.0, 1.000000e+00 ; <double> [#uses=2]
Devang Patel58d43d42008-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
Chris Lattner203bceb2010-04-03 06:27:56 +000015; CHECK: @test1
16; CHECK: icmp
Devang Patel58d43d42008-11-03 18:32:19 +000017}
18
19declare i32 @foo(double)
Devang Patelcd402332008-11-17 23:27:13 +000020
Chris Lattner203bceb2010-04-03 06:27:56 +000021define void @test2() nounwind {
Devang Patelcd402332008-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 Gohmanae3a0be2009-06-04 22:49:04 +000028 %1 = fadd double %x.0.reg2mem.0, 2.000000e+00 ; <double> [#uses=2]
Devang Patelcd402332008-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
Chris Lattner203bceb2010-04-03 06:27:56 +000034; CHECK: @test2
35; CHECK: icmp
Devang Patelcd402332008-11-17 23:27:13 +000036}
37
38
Chris Lattner203bceb2010-04-03 06:27:56 +000039define void @test3() nounwind {
Devang Patelcd402332008-11-17 23:27:13 +000040entry:
41 br label %bb
42
43bb: ; preds = %bb, %entry
Chris Lattner43b85272010-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 Patelcd402332008-11-17 23:27:13 +000048 br i1 %2, label %bb, label %return
49
Chris Lattner96fd7662010-04-03 07:18:48 +000050return:
Devang Patelcd402332008-11-17 23:27:13 +000051 ret void
Chris Lattner203bceb2010-04-03 06:27:56 +000052; CHECK: @test3
Chris Lattner96fd7662010-04-03 07:18:48 +000053; CHECK: fcmp
Devang Patelcd402332008-11-17 23:27:13 +000054}
55
Chris Lattner203bceb2010-04-03 06:27:56 +000056define void @test4() nounwind {
Devang Patelcd402332008-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 Gohmanae3a0be2009-06-04 22:49:04 +000063 %1 = fadd double %x.0.reg2mem.0, -1.000000e+00 ; <double> [#uses=2]
Devang Patelcd402332008-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 Lattner96fd7662010-04-03 07:18:48 +000067return:
Devang Patelcd402332008-11-17 23:27:13 +000068 ret void
Chris Lattner203bceb2010-04-03 06:27:56 +000069; CHECK: @test4
Andrew Trick94f2c232011-09-13 01:59:32 +000070; CHECK-NOT: cmp
71; CHECK: br i1 false
Devang Patelcd402332008-11-17 23:27:13 +000072}
73
Chris Lattner43b85272010-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 Trick94f2c232011-09-13 01:59:32 +000088
Chris Lattner43b85272010-04-03 06:30:03 +000089; CHECK: @test5
Andrew Trickb0598b12011-09-15 20:58:37 +000090; CHECK: icmp slt i32 {{.*}}, 0
Chris Lattner43b85272010-04-03 06:30:03 +000091; CHECK-NEXT: br i1
92}