comparison test/Transforms/IndVarSimplify/promote-iv-to-eliminate-casts.ll @ 95:afa8332a0e37 LLVM3.8

LLVM 3.8
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 13 Oct 2015 17:48:58 +0900
parents 95c75e76d11b
children 1172e4bd9c6f
comparison
equal deleted inserted replaced
84:f3e34b893a5f 95:afa8332a0e37
1 ; RUN: opt < %s -indvars -S > %t 1 ; RUN: opt < %s -indvars -S | not grep sext
2 ; RUN: not grep sext %t 2
3 ; Provide legal integer types.
4 target datalayout = "n8:16:32:64"
5
3 6
4 define i64 @test(i64* nocapture %first, i32 %count) nounwind readonly { 7 define i64 @test(i64* nocapture %first, i32 %count) nounwind readonly {
5 entry: 8 entry:
6 %t0 = icmp sgt i32 %count, 0 ; <i1> [#uses=1] 9 %t0 = icmp sgt i32 %count, 0 ; <i1> [#uses=1]
7 br i1 %t0, label %bb.nph, label %bb2 10 br i1 %t0, label %bb.nph, label %bb2
11 14
12 bb: ; preds = %bb1, %bb.nph 15 bb: ; preds = %bb1, %bb.nph
13 %result.02 = phi i64 [ %t5, %bb1 ], [ 0, %bb.nph ] ; <i64> [#uses=1] 16 %result.02 = phi i64 [ %t5, %bb1 ], [ 0, %bb.nph ] ; <i64> [#uses=1]
14 %n.01 = phi i32 [ %t6, %bb1 ], [ 0, %bb.nph ] ; <i32> [#uses=2] 17 %n.01 = phi i32 [ %t6, %bb1 ], [ 0, %bb.nph ] ; <i32> [#uses=2]
15 %t1 = sext i32 %n.01 to i64 ; <i64> [#uses=1] 18 %t1 = sext i32 %n.01 to i64 ; <i64> [#uses=1]
16 %t2 = getelementptr i64* %first, i64 %t1 ; <i64*> [#uses=1] 19 %t2 = getelementptr i64, i64* %first, i64 %t1 ; <i64*> [#uses=1]
17 %t3 = load i64* %t2, align 8 ; <i64> [#uses=1] 20 %t3 = load i64, i64* %t2, align 8 ; <i64> [#uses=1]
18 %t4 = lshr i64 %t3, 4 ; <i64> [#uses=1] 21 %t4 = lshr i64 %t3, 4 ; <i64> [#uses=1]
19 %t5 = add i64 %t4, %result.02 ; <i64> [#uses=2] 22 %t5 = add i64 %t4, %result.02 ; <i64> [#uses=2]
20 %t6 = add i32 %n.01, 1 ; <i32> [#uses=2] 23 %t6 = add i32 %n.01, 1 ; <i32> [#uses=2]
21 br label %bb1 24 br label %bb1
22 25
42 br label %bb 45 br label %bb
43 46
44 bb: ; preds = %bb1, %bb.nph 47 bb: ; preds = %bb1, %bb.nph
45 %i.01 = phi i16 [ %t3, %bb1 ], [ 0, %bb.nph ] ; <i16> [#uses=2] 48 %i.01 = phi i16 [ %t3, %bb1 ], [ 0, %bb.nph ] ; <i16> [#uses=2]
46 %t1 = sext i16 %i.01 to i64 ; <i64> [#uses=1] 49 %t1 = sext i16 %i.01 to i64 ; <i64> [#uses=1]
47 %t2 = getelementptr i32* %P, i64 %t1 ; <i32*> [#uses=1] 50 %t2 = getelementptr i32, i32* %P, i64 %t1 ; <i32*> [#uses=1]
48 store i32 123, i32* %t2, align 4 51 store i32 123, i32* %t2, align 4
49 %t3 = add i16 %i.01, 1 ; <i16> [#uses=2] 52 %t3 = add i16 %i.01, 1 ; <i16> [#uses=2]
50 br label %bb1 53 br label %bb1
51 54
52 bb1: ; preds = %bb 55 bb1: ; preds = %bb
68 71
69 bb: ; preds = %bb, %bb.thread 72 bb: ; preds = %bb, %bb.thread
70 %i.0.reg2mem.0 = phi i8 [ -10, %bb.thread ], [ %tmp7, %bb ] ; <i8> [#uses=2] 73 %i.0.reg2mem.0 = phi i8 [ -10, %bb.thread ], [ %tmp7, %bb ] ; <i8> [#uses=2]
71 %tmp12 = sext i8 %i.0.reg2mem.0 to i32 ; <i32> [#uses=1] 74 %tmp12 = sext i8 %i.0.reg2mem.0 to i32 ; <i32> [#uses=1]
72 %tmp4 = add i32 %tmp12, 10 ; <i32> [#uses=1] 75 %tmp4 = add i32 %tmp12, 10 ; <i32> [#uses=1]
73 %tmp5 = getelementptr [21 x i32]* %a, i32 0, i32 %tmp4 ; <i32*> [#uses=1] 76 %tmp5 = getelementptr [21 x i32], [21 x i32]* %a, i32 0, i32 %tmp4 ; <i32*> [#uses=1]
74 store i32 0, i32* %tmp5 77 store i32 0, i32* %tmp5
75 %tmp7 = add i8 %i.0.reg2mem.0, 1 ; <i8> [#uses=2] 78 %tmp7 = add i8 %i.0.reg2mem.0, 1 ; <i8> [#uses=2]
76 %0 = icmp sgt i8 %tmp7, 10 ; <i1> [#uses=1] 79 %0 = icmp sgt i8 %tmp7, 10 ; <i1> [#uses=1]
77 br i1 %0, label %return, label %bb 80 br i1 %0, label %return, label %bb
78 81
86 89
87 bb: ; preds = %bb, %bb.thread 90 bb: ; preds = %bb, %bb.thread
88 %i.0.reg2mem.0 = phi i8 [ 10, %bb.thread ], [ %tmp7, %bb ] ; <i8> [#uses=2] 91 %i.0.reg2mem.0 = phi i8 [ 10, %bb.thread ], [ %tmp7, %bb ] ; <i8> [#uses=2]
89 %tmp12 = sext i8 %i.0.reg2mem.0 to i32 ; <i32> [#uses=1] 92 %tmp12 = sext i8 %i.0.reg2mem.0 to i32 ; <i32> [#uses=1]
90 %tmp4 = add i32 %tmp12, -10 ; <i32> [#uses=1] 93 %tmp4 = add i32 %tmp12, -10 ; <i32> [#uses=1]
91 %tmp5 = getelementptr [21 x i32]* %a, i32 0, i32 %tmp4 ; <i32*> [#uses=1] 94 %tmp5 = getelementptr [21 x i32], [21 x i32]* %a, i32 0, i32 %tmp4 ; <i32*> [#uses=1]
92 store i32 0, i32* %tmp5 95 store i32 0, i32* %tmp5
93 %tmp7 = add i8 %i.0.reg2mem.0, 1 ; <i8> [#uses=2] 96 %tmp7 = add i8 %i.0.reg2mem.0, 1 ; <i8> [#uses=2]
94 %0 = icmp sgt i8 %tmp7, 30 ; <i1> [#uses=1] 97 %0 = icmp sgt i8 %tmp7, 30 ; <i1> [#uses=1]
95 br i1 %0, label %return, label %bb 98 br i1 %0, label %return, label %bb
96 99