blob: a2ca63d0a2df97664f46fae7551c7f04d5405dd5 [file] [log] [blame]
Eric Christophercee313d2019-04-17 04:52:47 +00001; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S < %s -simplifycfg -simplifycfg-merge-cond-stores=true -simplifycfg-merge-cond-stores-aggressively=false -phi-node-folding-threshold=1 | FileCheck %s
3
4target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
5target triple = "armv7--linux-gnueabihf"
6
7; This is a bit reversal that has been run through the early optimizer (-mem2reg -gvn -instcombine).
8; There should be no additional PHIs created at all. The store should be on its own in a predicated
9; block and there should be no PHIs.
10
11define i32 @f(i32* %b) {
12; CHECK-LABEL: @f(
13; CHECK-NEXT: entry:
14; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[B:%.*]], align 4
15; CHECK-NEXT: [[AND:%.*]] = and i32 [[TMP0]], 1
16; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[AND]], 0
17; CHECK-NEXT: [[OR:%.*]] = or i32 [[TMP0]], -2147483648
18; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[TOBOOL]], i32 [[TMP0]], i32 [[OR]]
19; CHECK-NEXT: [[AND1:%.*]] = and i32 [[TMP1]], 2
20; CHECK-NEXT: [[TOBOOL2:%.*]] = icmp eq i32 [[AND1]], 0
21; CHECK-NEXT: [[OR4:%.*]] = or i32 [[TMP1]], 1073741824
22; CHECK-NEXT: [[DOTOR4:%.*]] = select i1 [[TOBOOL2]], i32 [[TMP1]], i32 [[OR4]]
23; CHECK-NEXT: [[TMP2:%.*]] = xor i1 [[TOBOOL]], true
24; CHECK-NEXT: [[TMP3:%.*]] = xor i1 [[TOBOOL2]], true
25; CHECK-NEXT: [[TMP4:%.*]] = or i1 [[TMP2]], [[TMP3]]
26; CHECK-NEXT: [[AND6:%.*]] = and i32 [[DOTOR4]], 4
27; CHECK-NEXT: [[TOBOOL7:%.*]] = icmp eq i32 [[AND6]], 0
28; CHECK-NEXT: [[OR9:%.*]] = or i32 [[DOTOR4]], 536870912
29; CHECK-NEXT: [[DOTOR4_OR9:%.*]] = select i1 [[TOBOOL7]], i32 [[DOTOR4]], i32 [[OR9]]
30; CHECK-NEXT: [[TMP5:%.*]] = xor i1 [[TMP4]], true
31; CHECK-NEXT: [[TMP6:%.*]] = xor i1 [[TOBOOL7]], true
32; CHECK-NEXT: [[TMP7:%.*]] = xor i1 [[TMP5]], true
33; CHECK-NEXT: [[TMP8:%.*]] = or i1 [[TMP7]], [[TMP6]]
34; CHECK-NEXT: [[AND11:%.*]] = and i32 [[DOTOR4_OR9]], 8
35; CHECK-NEXT: [[TOBOOL12:%.*]] = icmp eq i32 [[AND11]], 0
36; CHECK-NEXT: [[OR14:%.*]] = or i32 [[DOTOR4_OR9]], 268435456
37; CHECK-NEXT: [[DOTOR4_OR9_OR14:%.*]] = select i1 [[TOBOOL12]], i32 [[DOTOR4_OR9]], i32 [[OR14]]
38; CHECK-NEXT: [[TMP9:%.*]] = xor i1 [[TMP8]], true
39; CHECK-NEXT: [[TMP10:%.*]] = xor i1 [[TOBOOL12]], true
40; CHECK-NEXT: [[TMP11:%.*]] = xor i1 [[TMP9]], true
41; CHECK-NEXT: [[TMP12:%.*]] = or i1 [[TMP11]], [[TMP10]]
42; CHECK-NEXT: [[AND16:%.*]] = and i32 [[DOTOR4_OR9_OR14]], 16
43; CHECK-NEXT: [[TOBOOL17:%.*]] = icmp eq i32 [[AND16]], 0
44; CHECK-NEXT: [[OR19:%.*]] = or i32 [[DOTOR4_OR9_OR14]], 134217728
45; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19:%.*]] = select i1 [[TOBOOL17]], i32 [[DOTOR4_OR9_OR14]], i32 [[OR19]]
46; CHECK-NEXT: [[TMP13:%.*]] = xor i1 [[TMP12]], true
47; CHECK-NEXT: [[TMP14:%.*]] = xor i1 [[TOBOOL17]], true
48; CHECK-NEXT: [[TMP15:%.*]] = xor i1 [[TMP13]], true
49; CHECK-NEXT: [[TMP16:%.*]] = or i1 [[TMP15]], [[TMP14]]
50; CHECK-NEXT: [[AND21:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19]], 32
51; CHECK-NEXT: [[TOBOOL22:%.*]] = icmp eq i32 [[AND21]], 0
52; CHECK-NEXT: [[OR24:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19]], 67108864
53; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24:%.*]] = select i1 [[TOBOOL22]], i32 [[DOTOR4_OR9_OR14_OR19]], i32 [[OR24]]
54; CHECK-NEXT: [[TMP17:%.*]] = xor i1 [[TMP16]], true
55; CHECK-NEXT: [[TMP18:%.*]] = xor i1 [[TOBOOL22]], true
56; CHECK-NEXT: [[TMP19:%.*]] = xor i1 [[TMP17]], true
57; CHECK-NEXT: [[TMP20:%.*]] = or i1 [[TMP19]], [[TMP18]]
58; CHECK-NEXT: [[AND26:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24]], 64
59; CHECK-NEXT: [[TOBOOL27:%.*]] = icmp eq i32 [[AND26]], 0
60; CHECK-NEXT: [[OR29:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24]], 33554432
61; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29:%.*]] = select i1 [[TOBOOL27]], i32 [[DOTOR4_OR9_OR14_OR19_OR24]], i32 [[OR29]]
62; CHECK-NEXT: [[TMP21:%.*]] = xor i1 [[TMP20]], true
63; CHECK-NEXT: [[TMP22:%.*]] = xor i1 [[TOBOOL27]], true
64; CHECK-NEXT: [[TMP23:%.*]] = xor i1 [[TMP21]], true
65; CHECK-NEXT: [[TMP24:%.*]] = or i1 [[TMP23]], [[TMP22]]
66; CHECK-NEXT: [[AND31:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29]], 256
67; CHECK-NEXT: [[TOBOOL32:%.*]] = icmp eq i32 [[AND31]], 0
68; CHECK-NEXT: [[OR34:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29]], 8388608
69; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34:%.*]] = select i1 [[TOBOOL32]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29]], i32 [[OR34]]
70; CHECK-NEXT: [[TMP25:%.*]] = xor i1 [[TMP24]], true
71; CHECK-NEXT: [[TMP26:%.*]] = xor i1 [[TOBOOL32]], true
72; CHECK-NEXT: [[TMP27:%.*]] = xor i1 [[TMP25]], true
73; CHECK-NEXT: [[TMP28:%.*]] = or i1 [[TMP27]], [[TMP26]]
74; CHECK-NEXT: [[AND36:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34]], 512
75; CHECK-NEXT: [[TOBOOL37:%.*]] = icmp eq i32 [[AND36]], 0
76; CHECK-NEXT: [[OR39:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34]], 4194304
77; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39:%.*]] = select i1 [[TOBOOL37]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34]], i32 [[OR39]]
78; CHECK-NEXT: [[TMP29:%.*]] = xor i1 [[TMP28]], true
79; CHECK-NEXT: [[TMP30:%.*]] = xor i1 [[TOBOOL37]], true
80; CHECK-NEXT: [[TMP31:%.*]] = xor i1 [[TMP29]], true
81; CHECK-NEXT: [[TMP32:%.*]] = or i1 [[TMP31]], [[TMP30]]
82; CHECK-NEXT: [[AND41:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39]], 1024
83; CHECK-NEXT: [[TOBOOL42:%.*]] = icmp eq i32 [[AND41]], 0
84; CHECK-NEXT: [[OR44:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39]], 2097152
85; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44:%.*]] = select i1 [[TOBOOL42]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39]], i32 [[OR44]]
86; CHECK-NEXT: [[TMP33:%.*]] = xor i1 [[TMP32]], true
87; CHECK-NEXT: [[TMP34:%.*]] = xor i1 [[TOBOOL42]], true
88; CHECK-NEXT: [[TMP35:%.*]] = xor i1 [[TMP33]], true
89; CHECK-NEXT: [[TMP36:%.*]] = or i1 [[TMP35]], [[TMP34]]
90; CHECK-NEXT: [[AND46:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44]], 2048
91; CHECK-NEXT: [[TOBOOL47:%.*]] = icmp eq i32 [[AND46]], 0
92; CHECK-NEXT: [[OR49:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44]], 1048576
93; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49:%.*]] = select i1 [[TOBOOL47]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44]], i32 [[OR49]]
94; CHECK-NEXT: [[TMP37:%.*]] = xor i1 [[TMP36]], true
95; CHECK-NEXT: [[TMP38:%.*]] = xor i1 [[TOBOOL47]], true
96; CHECK-NEXT: [[TMP39:%.*]] = xor i1 [[TMP37]], true
97; CHECK-NEXT: [[TMP40:%.*]] = or i1 [[TMP39]], [[TMP38]]
98; CHECK-NEXT: [[AND51:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49]], 4096
99; CHECK-NEXT: [[TOBOOL52:%.*]] = icmp eq i32 [[AND51]], 0
100; CHECK-NEXT: [[OR54:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49]], 524288
101; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54:%.*]] = select i1 [[TOBOOL52]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49]], i32 [[OR54]]
102; CHECK-NEXT: [[TMP41:%.*]] = xor i1 [[TMP40]], true
103; CHECK-NEXT: [[TMP42:%.*]] = xor i1 [[TOBOOL52]], true
104; CHECK-NEXT: [[TMP43:%.*]] = xor i1 [[TMP41]], true
105; CHECK-NEXT: [[TMP44:%.*]] = or i1 [[TMP43]], [[TMP42]]
106; CHECK-NEXT: [[AND56:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54]], 8192
107; CHECK-NEXT: [[TOBOOL57:%.*]] = icmp eq i32 [[AND56]], 0
108; CHECK-NEXT: [[OR59:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54]], 262144
109; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59:%.*]] = select i1 [[TOBOOL57]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54]], i32 [[OR59]]
110; CHECK-NEXT: [[TMP45:%.*]] = xor i1 [[TMP44]], true
111; CHECK-NEXT: [[TMP46:%.*]] = xor i1 [[TOBOOL57]], true
112; CHECK-NEXT: [[TMP47:%.*]] = xor i1 [[TMP45]], true
113; CHECK-NEXT: [[TMP48:%.*]] = or i1 [[TMP47]], [[TMP46]]
114; CHECK-NEXT: [[AND61:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59]], 16384
115; CHECK-NEXT: [[TOBOOL62:%.*]] = icmp eq i32 [[AND61]], 0
116; CHECK-NEXT: [[OR64:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59]], 131072
117; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64:%.*]] = select i1 [[TOBOOL62]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59]], i32 [[OR64]]
118; CHECK-NEXT: [[TMP49:%.*]] = xor i1 [[TMP48]], true
119; CHECK-NEXT: [[TMP50:%.*]] = xor i1 [[TOBOOL62]], true
120; CHECK-NEXT: [[TMP51:%.*]] = xor i1 [[TMP49]], true
121; CHECK-NEXT: [[TMP52:%.*]] = or i1 [[TMP51]], [[TMP50]]
122; CHECK-NEXT: [[AND66:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64]], 32768
123; CHECK-NEXT: [[TOBOOL67:%.*]] = icmp eq i32 [[AND66]], 0
124; CHECK-NEXT: [[OR69:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64]], 65536
125; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69:%.*]] = select i1 [[TOBOOL67]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64]], i32 [[OR69]]
126; CHECK-NEXT: [[TMP53:%.*]] = xor i1 [[TMP52]], true
127; CHECK-NEXT: [[TMP54:%.*]] = xor i1 [[TOBOOL67]], true
128; CHECK-NEXT: [[TMP55:%.*]] = xor i1 [[TMP53]], true
129; CHECK-NEXT: [[TMP56:%.*]] = or i1 [[TMP55]], [[TMP54]]
130; CHECK-NEXT: [[AND71:%.*]] = and i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69]], 128
131; CHECK-NEXT: [[TOBOOL72:%.*]] = icmp eq i32 [[AND71]], 0
132; CHECK-NEXT: [[OR74:%.*]] = or i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69]], 16777216
133; CHECK-NEXT: [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69_OR74:%.*]] = select i1 [[TOBOOL72]], i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69]], i32 [[OR74]]
134; CHECK-NEXT: [[TMP57:%.*]] = xor i1 [[TMP56]], true
135; CHECK-NEXT: [[TMP58:%.*]] = xor i1 [[TOBOOL72]], true
136; CHECK-NEXT: [[TMP59:%.*]] = xor i1 [[TMP57]], true
137; CHECK-NEXT: [[TMP60:%.*]] = or i1 [[TMP59]], [[TMP58]]
138; CHECK-NEXT: br i1 [[TMP60]], label [[TMP61:%.*]], label [[TMP62:%.*]]
139; CHECK: store i32 [[DOTOR4_OR9_OR14_OR19_OR24_OR29_OR34_OR39_OR44_OR49_OR54_OR59_OR64_OR69_OR74]], i32* [[B]], align 4
140; CHECK-NEXT: br label [[TMP62]]
141; CHECK: ret i32 0
142;
143entry:
144 %0 = load i32, i32* %b, align 4
145 %and = and i32 %0, 1
146 %tobool = icmp eq i32 %and, 0
147 br i1 %tobool, label %if.end, label %if.then
148
149if.then: ; preds = %entry
150 %or = or i32 %0, -2147483648
151 store i32 %or, i32* %b, align 4
152 br label %if.end
153
154if.end: ; preds = %entry, %if.then
155 %1 = phi i32 [ %0, %entry ], [ %or, %if.then ]
156 %and1 = and i32 %1, 2
157 %tobool2 = icmp eq i32 %and1, 0
158 br i1 %tobool2, label %if.end5, label %if.then3
159
160if.then3: ; preds = %if.end
161 %or4 = or i32 %1, 1073741824
162 store i32 %or4, i32* %b, align 4
163 br label %if.end5
164
165if.end5: ; preds = %if.end, %if.then3
166 %2 = phi i32 [ %1, %if.end ], [ %or4, %if.then3 ]
167 %and6 = and i32 %2, 4
168 %tobool7 = icmp eq i32 %and6, 0
169 br i1 %tobool7, label %if.end10, label %if.then8
170
171if.then8: ; preds = %if.end5
172 %or9 = or i32 %2, 536870912
173 store i32 %or9, i32* %b, align 4
174 br label %if.end10
175
176if.end10: ; preds = %if.end5, %if.then8
177 %3 = phi i32 [ %2, %if.end5 ], [ %or9, %if.then8 ]
178 %and11 = and i32 %3, 8
179 %tobool12 = icmp eq i32 %and11, 0
180 br i1 %tobool12, label %if.end15, label %if.then13
181
182if.then13: ; preds = %if.end10
183 %or14 = or i32 %3, 268435456
184 store i32 %or14, i32* %b, align 4
185 br label %if.end15
186
187if.end15: ; preds = %if.end10, %if.then13
188 %4 = phi i32 [ %3, %if.end10 ], [ %or14, %if.then13 ]
189 %and16 = and i32 %4, 16
190 %tobool17 = icmp eq i32 %and16, 0
191 br i1 %tobool17, label %if.end20, label %if.then18
192
193if.then18: ; preds = %if.end15
194 %or19 = or i32 %4, 134217728
195 store i32 %or19, i32* %b, align 4
196 br label %if.end20
197
198if.end20: ; preds = %if.end15, %if.then18
199 %5 = phi i32 [ %4, %if.end15 ], [ %or19, %if.then18 ]
200 %and21 = and i32 %5, 32
201 %tobool22 = icmp eq i32 %and21, 0
202 br i1 %tobool22, label %if.end25, label %if.then23
203
204if.then23: ; preds = %if.end20
205 %or24 = or i32 %5, 67108864
206 store i32 %or24, i32* %b, align 4
207 br label %if.end25
208
209if.end25: ; preds = %if.end20, %if.then23
210 %6 = phi i32 [ %5, %if.end20 ], [ %or24, %if.then23 ]
211 %and26 = and i32 %6, 64
212 %tobool27 = icmp eq i32 %and26, 0
213 br i1 %tobool27, label %if.end30, label %if.then28
214
215if.then28: ; preds = %if.end25
216 %or29 = or i32 %6, 33554432
217 store i32 %or29, i32* %b, align 4
218 br label %if.end30
219
220if.end30: ; preds = %if.end25, %if.then28
221 %7 = phi i32 [ %6, %if.end25 ], [ %or29, %if.then28 ]
222 %and31 = and i32 %7, 256
223 %tobool32 = icmp eq i32 %and31, 0
224 br i1 %tobool32, label %if.end35, label %if.then33
225
226if.then33: ; preds = %if.end30
227 %or34 = or i32 %7, 8388608
228 store i32 %or34, i32* %b, align 4
229 br label %if.end35
230
231if.end35: ; preds = %if.end30, %if.then33
232 %8 = phi i32 [ %7, %if.end30 ], [ %or34, %if.then33 ]
233 %and36 = and i32 %8, 512
234 %tobool37 = icmp eq i32 %and36, 0
235 br i1 %tobool37, label %if.end40, label %if.then38
236
237if.then38: ; preds = %if.end35
238 %or39 = or i32 %8, 4194304
239 store i32 %or39, i32* %b, align 4
240 br label %if.end40
241
242if.end40: ; preds = %if.end35, %if.then38
243 %9 = phi i32 [ %8, %if.end35 ], [ %or39, %if.then38 ]
244 %and41 = and i32 %9, 1024
245 %tobool42 = icmp eq i32 %and41, 0
246 br i1 %tobool42, label %if.end45, label %if.then43
247
248if.then43: ; preds = %if.end40
249 %or44 = or i32 %9, 2097152
250 store i32 %or44, i32* %b, align 4
251 br label %if.end45
252
253if.end45: ; preds = %if.end40, %if.then43
254 %10 = phi i32 [ %9, %if.end40 ], [ %or44, %if.then43 ]
255 %and46 = and i32 %10, 2048
256 %tobool47 = icmp eq i32 %and46, 0
257 br i1 %tobool47, label %if.end50, label %if.then48
258
259if.then48: ; preds = %if.end45
260 %or49 = or i32 %10, 1048576
261 store i32 %or49, i32* %b, align 4
262 br label %if.end50
263
264if.end50: ; preds = %if.end45, %if.then48
265 %11 = phi i32 [ %10, %if.end45 ], [ %or49, %if.then48 ]
266 %and51 = and i32 %11, 4096
267 %tobool52 = icmp eq i32 %and51, 0
268 br i1 %tobool52, label %if.end55, label %if.then53
269
270if.then53: ; preds = %if.end50
271 %or54 = or i32 %11, 524288
272 store i32 %or54, i32* %b, align 4
273 br label %if.end55
274
275if.end55: ; preds = %if.end50, %if.then53
276 %12 = phi i32 [ %11, %if.end50 ], [ %or54, %if.then53 ]
277 %and56 = and i32 %12, 8192
278 %tobool57 = icmp eq i32 %and56, 0
279 br i1 %tobool57, label %if.end60, label %if.then58
280
281if.then58: ; preds = %if.end55
282 %or59 = or i32 %12, 262144
283 store i32 %or59, i32* %b, align 4
284 br label %if.end60
285
286if.end60: ; preds = %if.end55, %if.then58
287 %13 = phi i32 [ %12, %if.end55 ], [ %or59, %if.then58 ]
288 %and61 = and i32 %13, 16384
289 %tobool62 = icmp eq i32 %and61, 0
290 br i1 %tobool62, label %if.end65, label %if.then63
291
292if.then63: ; preds = %if.end60
293 %or64 = or i32 %13, 131072
294 store i32 %or64, i32* %b, align 4
295 br label %if.end65
296
297if.end65: ; preds = %if.end60, %if.then63
298 %14 = phi i32 [ %13, %if.end60 ], [ %or64, %if.then63 ]
299 %and66 = and i32 %14, 32768
300 %tobool67 = icmp eq i32 %and66, 0
301 br i1 %tobool67, label %if.end70, label %if.then68
302
303if.then68: ; preds = %if.end65
304 %or69 = or i32 %14, 65536
305 store i32 %or69, i32* %b, align 4
306 br label %if.end70
307
308if.end70: ; preds = %if.end65, %if.then68
309 %15 = phi i32 [ %14, %if.end65 ], [ %or69, %if.then68 ]
310 %and71 = and i32 %15, 128
311 %tobool72 = icmp eq i32 %and71, 0
312 br i1 %tobool72, label %if.end75, label %if.then73
313
314if.then73: ; preds = %if.end70
315 %or74 = or i32 %15, 16777216
316 store i32 %or74, i32* %b, align 4
317 br label %if.end75
318
319if.end75: ; preds = %if.end70, %if.then73
320 ret i32 0
321}