e77fcb062415c3e78e7cd9592e10f661d171a580
[oota-llvm.git] / test / CodeGen / SystemZ / 2009-07-08-BadAnyExt.ll
1 ; RUN: llvm-as < %s | llc | not grep implicit-def
2
3 target datalayout = "E-p:64:64:64-i8:8:16-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-a0:16:16"
4 target triple = "s390x-linux"
5 @netsAssign = external global i64*, align 8             ; <i64**> [#uses=1]
6 @channelColumns = external global i64, align 8          ; <i64*> [#uses=1]
7 @TOP = external global i64*, align 8            ; <i64**> [#uses=1]
8 @BOT = external global i64*, align 8            ; <i64**> [#uses=1]
9 @horzPlane = external global i8*, align 8               ; <i8**> [#uses=1]
10 @vertPlane = external global i8*, align 8               ; <i8**> [#uses=1]
11
12 declare signext i32 @ExtendOK(i64, i8* nocapture, i64, i64, i64, i64) nounwind
13
14 define i1 @Maze2Mech_for_2E_cond11(i64 %bentNet, i64 %i, i64 %b2, i64 %xStart, i64 %row.0, i64 %sum263, i64 %sum262, i64 %cond.i64, i64 %cond27.i67, i64 %cond.i124, i64 %cond27.i127, i64 %conv, i64 %add, i64 %cond.i7, i64 %cond27.i10, i64 %sum267, i64 %tmp236, i64 %tmp243, i64* %col.0.out) nounwind {
15 newFuncRoot:
16         br label %for.cond11
17
18 for.inc99.exitStub:             ; preds = %for.cond11
19         store i64 %col.0, i64* %col.0.out
20         ret i1 true
21
22 if.then.exitStub:               ; preds = %land.lhs.true53
23         store i64 %col.0, i64* %col.0.out
24         ret i1 false
25
26 cond.end.i.for.cond.i_crit_edge:                ; preds = %cond.end.i
27         br label %codeRepl
28
29 for.cond11:             ; preds = %for.inc, %newFuncRoot
30         %indvar237 = phi i64 [ 0, %newFuncRoot ], [ %indvar.next238, %for.inc ]         ; <i64> [#uses=2]
31         %colFree.0 = phi i1 [ %retval.0.i.reg2mem.1, %for.inc ], [ false, %newFuncRoot ]                ; <i1> [#uses=1]
32         %tmp252 = mul i64 %indvar237, %conv             ; <i64> [#uses=2]
33         %tmp244 = sub i64 %tmp243, %tmp252              ; <i64> [#uses=2]
34         %col.0 = add i64 %tmp252, %xStart               ; <i64> [#uses=11]
35         %tmp245 = icmp ult i64 %tmp244, %tmp236         ; <i1> [#uses=1]
36         %umax246 = select i1 %tmp245, i64 %tmp236, i64 %tmp244          ; <i64> [#uses=1]
37         %sum = add i64 %umax246, 1              ; <i64> [#uses=1]
38         %cmp15 = icmp eq i64 %col.0, %add               ; <i1> [#uses=1]
39         %or.cond = or i1 %colFree.0, %cmp15             ; <i1> [#uses=1]
40         br i1 %or.cond, label %for.inc99.exitStub, label %cond.end.i
41
42 cond.end.i:             ; preds = %for.cond11
43         %tmp18 = load i8** @horzPlane           ; <i8*> [#uses=3]
44         %cmp.i = icmp eq i64 %col.0, %i         ; <i1> [#uses=1]
45         %tmp13.i = load i64* @channelColumns            ; <i64> [#uses=8]
46         %mul.i = mul i64 %tmp13.i, %row.0               ; <i64> [#uses=2]
47         br i1 %cmp.i, label %cond.end.i.for.cond.i_crit_edge, label %if.else.i
48
49 codeRepl:               ; preds = %cond.end.i.for.cond.i_crit_edge
50         %targetBlock = call i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i(i8* %tmp18, i64 %tmp13.i, i64 %mul.i, i64 %i, i64 %row.0)              ; <i1> [#uses=1]
51         br i1 %targetBlock, label %for.cond.i.if.then.i16_crit_edge, label %for.body.i.for.inc_crit_edge
52
53 if.else.i:              ; preds = %cond.end.i
54         %cmp42.i = icmp ugt i64 %col.0, %i              ; <i1> [#uses=2]
55         %cond45.i = select i1 %cmp42.i, i64 %i, i64 %col.0              ; <i64> [#uses=1]
56         %cond60.i = select i1 %cmp42.i, i64 %col.0, i64 %i              ; <i64> [#uses=1]
57         br label %codeRepl1
58
59 codeRepl1:              ; preds = %if.else.i
60         %targetBlock2 = call i1 @Maze2Mech_for_2E_cond11_for_2E_cond53_2E_i(i64 %sum, i8* %tmp18, i64 %mul.i, i64 %cond45.i, i64 %cond60.i)             ; <i1> [#uses=1]
61         br i1 %targetBlock2, label %for.cond53.i.if.then.i16_crit_edge, label %for.body62.i.for.inc_crit_edge
62
63 if.then.i16:            ; preds = %for.cond53.i.if.then.i16_crit_edge, %for.cond.i.if.then.i16_crit_edge
64         %tmp26 = load i8** @vertPlane           ; <i8*> [#uses=3]
65         %mul.i9 = mul i64 %tmp13.i, %cond.i7            ; <i64> [#uses=1]
66         br label %codeRepl3
67
68 codeRepl3:              ; preds = %if.then.i16
69         %targetBlock4 = call i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i23(i64 %tmp13.i, i8* %tmp26, i64 %mul.i9, i64 %i, i64 %cond27.i10, i64 %sum267)                ; <i1> [#uses=1]
70         br i1 %targetBlock4, label %if.then.i73, label %for.body.i27.for.inc_crit_edge
71
72 if.then.i73:            ; preds = %codeRepl3
73         %mul.i66 = mul i64 %tmp13.i, %cond.i64          ; <i64> [#uses=1]
74         br label %codeRepl5
75
76 codeRepl5:              ; preds = %if.then.i73
77         %targetBlock6 = call i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i80(i64 %tmp13.i, i8* %tmp26, i64 %mul.i66, i64 %i, i64 %sum263, i64 %cond27.i67)               ; <i1> [#uses=1]
78         br i1 %targetBlock6, label %if.then.i133, label %for.body.i84.for.inc_crit_edge
79
80 if.then.i133:           ; preds = %codeRepl5
81         %mul.i126 = mul i64 %tmp13.i, %cond.i124                ; <i64> [#uses=1]
82         br label %codeRepl7
83
84 codeRepl7:              ; preds = %if.then.i133
85         %targetBlock8 = call i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i140(i64 %col.0, i64 %tmp13.i, i8* %tmp26, i64 %mul.i126, i64 %sum262, i64 %cond27.i127)                ; <i1> [#uses=1]
86         br i1 %targetBlock8, label %land.lhs.true49, label %for.body.i144.for.inc_crit_edge
87
88 land.lhs.true49:                ; preds = %codeRepl7
89         %tmp1.i178 = load i64** @TOP            ; <i64*> [#uses=1]
90         %arrayidx.i179 = getelementptr i64* %tmp1.i178, i64 %col.0              ; <i64*> [#uses=1]
91         %tmp2.i = load i64* %arrayidx.i179              ; <i64> [#uses=3]
92         %cmp.i180 = icmp eq i64 %tmp2.i, 0              ; <i1> [#uses=1]
93         br i1 %cmp.i180, label %land.lhs.true49.land.lhs.true53_crit_edge, label %land.lhs.true.i
94
95 land.lhs.true.i:                ; preds = %land.lhs.true49
96         %tmp4.i = load i64** @BOT               ; <i64*> [#uses=1]
97         %arrayidx5.i = getelementptr i64* %tmp4.i, i64 %col.0           ; <i64*> [#uses=1]
98         %tmp6.i = load i64* %arrayidx5.i                ; <i64> [#uses=3]
99         %cmp7.i = icmp eq i64 %tmp6.i, 0                ; <i1> [#uses=1]
100         %cmp17.i = icmp eq i64 %tmp2.i, %tmp6.i         ; <i1> [#uses=1]
101         %or.cond.i181 = or i1 %cmp7.i, %cmp17.i         ; <i1> [#uses=1]
102         br i1 %or.cond.i181, label %land.lhs.true.i.land.lhs.true53_crit_edge, label %HasVCV.exit
103
104 HasVCV.exit:            ; preds = %land.lhs.true.i
105         %tmp22.i = load i64** @netsAssign               ; <i64*> [#uses=2]
106         %arrayidx23.i = getelementptr i64* %tmp22.i, i64 %tmp2.i                ; <i64*> [#uses=1]
107         %tmp24.i = load i64* %arrayidx23.i              ; <i64> [#uses=1]
108         %arrayidx30.i = getelementptr i64* %tmp22.i, i64 %tmp6.i                ; <i64*> [#uses=1]
109         %tmp31.i182 = load i64* %arrayidx30.i           ; <i64> [#uses=1]
110         %phitmp189 = icmp ugt i64 %tmp24.i, %tmp31.i182         ; <i1> [#uses=1]
111         br i1 %phitmp189, label %HasVCV.exit.for.inc_crit_edge, label %HasVCV.exit.land.lhs.true53_crit_edge
112
113 land.lhs.true53:                ; preds = %HasVCV.exit.land.lhs.true53_crit_edge, %land.lhs.true.i.land.lhs.true53_crit_edge, %land.lhs.true49.land.lhs.true53_crit_edge
114         %call60 = tail call signext i32 @ExtendOK(i64 %bentNet, i8* %tmp18, i64 %col.0, i64 %b2, i64 %i, i64 %b2)               ; <i32> [#uses=1]
115         %tobool61 = icmp eq i32 %call60, 0              ; <i1> [#uses=1]
116         br i1 %tobool61, label %land.lhs.true53.for.inc_crit_edge, label %if.then.exitStub
117
118 for.inc:                ; preds = %land.lhs.true53.for.inc_crit_edge, %HasVCV.exit.for.inc_crit_edge, %for.body.i144.for.inc_crit_edge, %for.body.i84.for.inc_crit_edge, %for.body.i27.for.inc_crit_edge, %for.body.i.for.inc_crit_edge, %for.body62.i.for.inc_crit_edge
119         %retval.0.i.reg2mem.1 = phi i1 [ false, %HasVCV.exit.for.inc_crit_edge ], [ false, %land.lhs.true53.for.inc_crit_edge ], [ true, %for.body62.i.for.inc_crit_edge ], [ true, %for.body.i.for.inc_crit_edge ], [ false, %for.body.i27.for.inc_crit_edge ], [ false, %for.body.i84.for.inc_crit_edge ], [ false, %for.body.i144.for.inc_crit_edge ]                ; <i1> [#uses=1]
120         %indvar.next238 = add i64 %indvar237, 1         ; <i64> [#uses=1]
121         br label %for.cond11
122
123 for.body62.i.for.inc_crit_edge:         ; preds = %codeRepl1
124         br label %for.inc
125
126 for.cond.i.if.then.i16_crit_edge:               ; preds = %codeRepl
127         br label %if.then.i16
128
129 for.body.i.for.inc_crit_edge:           ; preds = %codeRepl
130         br label %for.inc
131
132 for.cond53.i.if.then.i16_crit_edge:             ; preds = %codeRepl1
133         br label %if.then.i16
134
135 for.body.i27.for.inc_crit_edge:         ; preds = %codeRepl3
136         br label %for.inc
137
138 for.body.i84.for.inc_crit_edge:         ; preds = %codeRepl5
139         br label %for.inc
140
141 for.body.i144.for.inc_crit_edge:                ; preds = %codeRepl7
142         br label %for.inc
143
144 HasVCV.exit.for.inc_crit_edge:          ; preds = %HasVCV.exit
145         br label %for.inc
146
147 land.lhs.true49.land.lhs.true53_crit_edge:              ; preds = %land.lhs.true49
148         br label %land.lhs.true53
149
150 land.lhs.true.i.land.lhs.true53_crit_edge:              ; preds = %land.lhs.true.i
151         br label %land.lhs.true53
152
153 HasVCV.exit.land.lhs.true53_crit_edge:          ; preds = %HasVCV.exit
154         br label %land.lhs.true53
155
156 land.lhs.true53.for.inc_crit_edge:              ; preds = %land.lhs.true53
157         br label %for.inc
158 }
159
160 declare i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i(i8*, i64, i64, i64, i64) nounwind
161
162 declare i1 @Maze2Mech_for_2E_cond11_for_2E_cond53_2E_i(i64, i8*, i64, i64, i64) nounwind
163
164 declare i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i23(i64, i8*, i64, i64, i64, i64) nounwind
165
166 declare i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i80(i64, i8*, i64, i64, i64, i64) nounwind
167
168 declare i1 @Maze2Mech_for_2E_cond11_for_2E_cond_2E_i140(i64, i64, i8*, i64, i64, i64) nounwind