blob: 8d758467cb5d6e68c0242fc36ce1341f7a7d5eac [file] [log] [blame]
Chris Lattner988b9db2010-04-03 06:27:56 +00001; RUN: opt < %s -indvars -S | FileCheck %s
2define void @test1() nounwind {
Devang Patel7ca23c92008-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 Gohman7ce405e2009-06-04 22:49:04 +00009 %1 = fadd double %x.0.reg2mem.0, 1.000000e+00 ; <double> [#uses=2]
Devang Patel7ca23c92008-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 Lattner988b9db2010-04-03 06:27:56 +000015; CHECK: @test1
16; CHECK: icmp
Devang Patel7ca23c92008-11-03 18:32:19 +000017}
18
19declare i32 @foo(double)
Devang Patele2ba01d2008-11-17 23:27:13 +000020
Chris Lattner988b9db2010-04-03 06:27:56 +000021define void @test2() nounwind {
Devang Patele2ba01d2008-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 Gohman7ce405e2009-06-04 22:49:04 +000028 %1 = fadd double %x.0.reg2mem.0, 2.000000e+00 ; <double> [#uses=2]
Devang Patele2ba01d2008-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 Lattner988b9db2010-04-03 06:27:56 +000034; CHECK: @test2
35; CHECK: icmp
Devang Patele2ba01d2008-11-17 23:27:13 +000036}
37
38
Chris Lattner988b9db2010-04-03 06:27:56 +000039define void @test3() nounwind {
Devang Patele2ba01d2008-11-17 23:27:13 +000040entry:
41 br label %bb
42
43bb: ; preds = %bb, %entry
44 %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2]
45 %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0]
Dan Gohman7ce405e2009-06-04 22:49:04 +000046 %1 = fadd double %x.0.reg2mem.0, 1.000000e+00 ; <double> [#uses=2]
Devang Patele2ba01d2008-11-17 23:27:13 +000047 %2 = fcmp olt double %1, -1.000000e+00 ; <i1> [#uses=1]
48 br i1 %2, label %bb, label %return
49
50return: ; preds = %bb
51 ret void
Chris Lattner988b9db2010-04-03 06:27:56 +000052; CHECK: @test3
53; CHECK: icmp
Devang Patele2ba01d2008-11-17 23:27:13 +000054}
55
Chris Lattner988b9db2010-04-03 06:27:56 +000056define void @test4() nounwind {
Devang Patele2ba01d2008-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 Gohman7ce405e2009-06-04 22:49:04 +000063 %1 = fadd double %x.0.reg2mem.0, -1.000000e+00 ; <double> [#uses=2]
Devang Patele2ba01d2008-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
67return: ; preds = %bb
68 ret void
Chris Lattner988b9db2010-04-03 06:27:56 +000069; CHECK: @test4
70; CHECK: icmp
Devang Patele2ba01d2008-11-17 23:27:13 +000071}
72
73