1 ; RUN: opt %loadPolly %defaultOpts -polly-codegen -enable-polly-vector -dce -S %s | FileCheck %s
2 ; Obtained from C source as:
3 ; clang -S -emit-llvm -O0 slp-2.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-2.s > slp-2.ll
7 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
8 target triple = "x86_64-unknown-linux-gnu"
10 define i32 @main1(i16 zeroext %a0, i16 zeroext %a1, i16 zeroext %a2, i16 zeroext %a3, i16 zeroext %a4, i16 zeroext %a5, i16 zeroext %a6, i16 zeroext %a7, i16 zeroext %a8, i16 zeroext %a9, i16 zeroext %a10, i16 zeroext %a11, i16 zeroext %a12, i16 zeroext %a13, i16 zeroext %a14, i16 zeroext %a15) nounwind uwtable {
12 %out = alloca [2048 x i16], align 16
15 for.cond: ; preds = %for.inc, %entry
16 %indvar124 = phi i64 [ %indvar.next125, %for.inc ], [ 0, %entry ]
17 %tmp127 = mul i64 %indvar124, 4
18 %tmp128 = add i64 %tmp127, 3
19 %arrayidx19 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp128
20 %tmp129 = add i64 %tmp127, 2
21 %arrayidx13 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp129
22 %tmp130 = add i64 %tmp127, 1
23 %arrayidx7 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp130
24 %arrayidx = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp127
25 %exitcond126 = icmp ne i64 %indvar124, 128
26 br i1 %exitcond126, label %for.body, label %for.end
28 for.body: ; preds = %for.cond
29 store i16 %a8, i16* %arrayidx, align 8
30 store i16 %a1, i16* %arrayidx7, align 2
31 store i16 %a2, i16* %arrayidx13, align 4
32 store i16 %a3, i16* %arrayidx19, align 2
35 for.inc: ; preds = %for.body
36 %indvar.next125 = add i64 %indvar124, 1
39 for.end: ; preds = %for.cond
42 for.cond21: ; preds = %for.inc69, %for.end
43 %indvar117 = phi i64 [ %indvar.next118, %for.inc69 ], [ 0, %for.end ]
44 %tmp119 = mul i64 %indvar117, 4
45 %tmp120 = add i64 %tmp119, 3
46 %arrayidx62 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp120
47 %tmp121 = add i64 %tmp119, 2
48 %arrayidx50 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp121
49 %tmp122 = add i64 %tmp119, 1
50 %arrayidx38 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp122
51 %arrayidx28 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp119
52 %i.1 = trunc i64 %indvar117 to i32
53 %cmp23 = icmp slt i32 %i.1, 128
54 br i1 %cmp23, label %for.body24, label %for.end72
56 for.body24: ; preds = %for.cond21
57 %tmp29 = load i16* %arrayidx28, align 8
58 %cmp32 = icmp eq i16 %tmp29, %a8
59 br i1 %cmp32, label %lor.lhs.false, label %if.then
61 lor.lhs.false: ; preds = %for.body24
62 %tmp39 = load i16* %arrayidx38, align 2
63 %cmp43 = icmp eq i16 %tmp39, %a1
64 br i1 %cmp43, label %lor.lhs.false45, label %if.then
66 lor.lhs.false45: ; preds = %lor.lhs.false
67 %tmp51 = load i16* %arrayidx50, align 4
68 %cmp55 = icmp eq i16 %tmp51, %a2
69 br i1 %cmp55, label %lor.lhs.false57, label %if.then
71 lor.lhs.false57: ; preds = %lor.lhs.false45
72 %tmp63 = load i16* %arrayidx62, align 2
73 %cmp67 = icmp eq i16 %tmp63, %a3
74 br i1 %cmp67, label %if.end, label %if.then
76 if.then: ; preds = %lor.lhs.false57, %lor.lhs.false45, %lor.lhs.false, %for.body24
77 call void @abort() noreturn nounwind
80 if.end: ; preds = %lor.lhs.false57
83 for.inc69: ; preds = %if.end
84 %indvar.next118 = add i64 %indvar117, 1
87 for.end72: ; preds = %for.cond21
90 for.cond73: ; preds = %for.inc173, %for.end72
91 %indvar97 = phi i64 [ %indvar.next98, %for.inc173 ], [ 0, %for.end72 ]
92 %tmp100 = mul i64 %indvar97, 16
93 %tmp101 = add i64 %tmp100, 15
94 %arrayidx172 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp101
95 %tmp102 = add i64 %tmp100, 14
96 %arrayidx166 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp102
97 %tmp103 = add i64 %tmp100, 13
98 %arrayidx160 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp103
99 %tmp104 = add i64 %tmp100, 12
100 %arrayidx154 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp104
101 %tmp105 = add i64 %tmp100, 11
102 %arrayidx148 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp105
103 %tmp106 = add i64 %tmp100, 10
104 %arrayidx142 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp106
105 %tmp107 = add i64 %tmp100, 9
106 %arrayidx136 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp107
107 %tmp108 = add i64 %tmp100, 8
108 %arrayidx130 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp108
109 %tmp109 = add i64 %tmp100, 7
110 %arrayidx124 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp109
111 %tmp110 = add i64 %tmp100, 6
112 %arrayidx118 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp110
113 %tmp111 = add i64 %tmp100, 5
114 %arrayidx112 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp111
115 %tmp112 = add i64 %tmp100, 4
116 %arrayidx106 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp112
117 %tmp113 = add i64 %tmp100, 3
118 %arrayidx100 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp113
119 %tmp114 = add i64 %tmp100, 2
120 %arrayidx94 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp114
121 %tmp115 = add i64 %tmp100, 1
122 %arrayidx88 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp115
123 %arrayidx82 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp100
124 %exitcond99 = icmp ne i64 %indvar97, 128
125 br i1 %exitcond99, label %for.body77, label %for.end176
127 for.body77: ; preds = %for.cond73
128 store i16 %a8, i16* %arrayidx82, align 16
129 store i16 %a7, i16* %arrayidx88, align 2
130 store i16 %a1, i16* %arrayidx94, align 4
131 store i16 %a2, i16* %arrayidx100, align 2
132 store i16 %a8, i16* %arrayidx106, align 8
133 store i16 %a5, i16* %arrayidx112, align 2
134 store i16 %a5, i16* %arrayidx118, align 4
135 store i16 %a4, i16* %arrayidx124, align 2
136 store i16 %a12, i16* %arrayidx130, align 16
137 store i16 %a13, i16* %arrayidx136, align 2
138 store i16 %a14, i16* %arrayidx142, align 4
139 store i16 %a15, i16* %arrayidx148, align 2
140 store i16 %a6, i16* %arrayidx154, align 8
141 store i16 %a9, i16* %arrayidx160, align 2
142 store i16 %a0, i16* %arrayidx166, align 4
143 store i16 %a7, i16* %arrayidx172, align 2
146 for.inc173: ; preds = %for.body77
147 %indvar.next98 = add i64 %indvar97, 1
150 for.end176: ; preds = %for.cond73
151 br label %for.cond177
153 for.cond177: ; preds = %for.inc374, %for.end176
154 %indvar78 = phi i64 [ %indvar.next79, %for.inc374 ], [ 0, %for.end176 ]
155 %tmp80 = mul i64 %indvar78, 16
156 %tmp81 = add i64 %tmp80, 15
157 %arrayidx365 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp81
158 %tmp82 = add i64 %tmp80, 14
159 %arrayidx353 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp82
160 %tmp83 = add i64 %tmp80, 13
161 %arrayidx341 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp83
162 %tmp84 = add i64 %tmp80, 12
163 %arrayidx329 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp84
164 %tmp85 = add i64 %tmp80, 11
165 %arrayidx317 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp85
166 %tmp86 = add i64 %tmp80, 10
167 %arrayidx305 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp86
168 %tmp87 = add i64 %tmp80, 9
169 %arrayidx293 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp87
170 %tmp88 = add i64 %tmp80, 8
171 %arrayidx281 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp88
172 %tmp89 = add i64 %tmp80, 7
173 %arrayidx269 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp89
174 %tmp90 = add i64 %tmp80, 6
175 %arrayidx257 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp90
176 %tmp91 = add i64 %tmp80, 5
177 %arrayidx245 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp91
178 %tmp92 = add i64 %tmp80, 4
179 %arrayidx233 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp92
180 %tmp93 = add i64 %tmp80, 3
181 %arrayidx221 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp93
182 %tmp94 = add i64 %tmp80, 2
183 %arrayidx209 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp94
184 %tmp95 = add i64 %tmp80, 1
185 %arrayidx197 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp95
186 %arrayidx185 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp80
187 %i.3 = trunc i64 %indvar78 to i32
188 %cmp179 = icmp slt i32 %i.3, 128
189 br i1 %cmp179, label %for.body181, label %for.end377
191 for.body181: ; preds = %for.cond177
192 %tmp186 = load i16* %arrayidx185, align 16
193 %cmp190 = icmp eq i16 %tmp186, %a8
194 br i1 %cmp190, label %lor.lhs.false192, label %if.then372
196 lor.lhs.false192: ; preds = %for.body181
197 %tmp198 = load i16* %arrayidx197, align 2
198 %cmp202 = icmp eq i16 %tmp198, %a7
199 br i1 %cmp202, label %lor.lhs.false204, label %if.then372
201 lor.lhs.false204: ; preds = %lor.lhs.false192
202 %tmp210 = load i16* %arrayidx209, align 4
203 %cmp214 = icmp eq i16 %tmp210, %a1
204 br i1 %cmp214, label %lor.lhs.false216, label %if.then372
206 lor.lhs.false216: ; preds = %lor.lhs.false204
207 %tmp222 = load i16* %arrayidx221, align 2
208 %cmp226 = icmp eq i16 %tmp222, %a2
209 br i1 %cmp226, label %lor.lhs.false228, label %if.then372
211 lor.lhs.false228: ; preds = %lor.lhs.false216
212 %tmp234 = load i16* %arrayidx233, align 8
213 %cmp238 = icmp eq i16 %tmp234, %a8
214 br i1 %cmp238, label %lor.lhs.false240, label %if.then372
216 lor.lhs.false240: ; preds = %lor.lhs.false228
217 %tmp246 = load i16* %arrayidx245, align 2
218 %cmp250 = icmp eq i16 %tmp246, %a5
219 br i1 %cmp250, label %lor.lhs.false252, label %if.then372
221 lor.lhs.false252: ; preds = %lor.lhs.false240
222 %tmp258 = load i16* %arrayidx257, align 4
223 %cmp262 = icmp eq i16 %tmp258, %a5
224 br i1 %cmp262, label %lor.lhs.false264, label %if.then372
226 lor.lhs.false264: ; preds = %lor.lhs.false252
227 %tmp270 = load i16* %arrayidx269, align 2
228 %cmp274 = icmp eq i16 %tmp270, %a4
229 br i1 %cmp274, label %lor.lhs.false276, label %if.then372
231 lor.lhs.false276: ; preds = %lor.lhs.false264
232 %tmp282 = load i16* %arrayidx281, align 16
233 %cmp286 = icmp eq i16 %tmp282, %a12
234 br i1 %cmp286, label %lor.lhs.false288, label %if.then372
236 lor.lhs.false288: ; preds = %lor.lhs.false276
237 %tmp294 = load i16* %arrayidx293, align 2
238 %cmp298 = icmp eq i16 %tmp294, %a13
239 br i1 %cmp298, label %lor.lhs.false300, label %if.then372
241 lor.lhs.false300: ; preds = %lor.lhs.false288
242 %tmp306 = load i16* %arrayidx305, align 4
243 %cmp310 = icmp eq i16 %tmp306, %a14
244 br i1 %cmp310, label %lor.lhs.false312, label %if.then372
246 lor.lhs.false312: ; preds = %lor.lhs.false300
247 %tmp318 = load i16* %arrayidx317, align 2
248 %cmp322 = icmp eq i16 %tmp318, %a15
249 br i1 %cmp322, label %lor.lhs.false324, label %if.then372
251 lor.lhs.false324: ; preds = %lor.lhs.false312
252 %tmp330 = load i16* %arrayidx329, align 8
253 %cmp334 = icmp eq i16 %tmp330, %a6
254 br i1 %cmp334, label %lor.lhs.false336, label %if.then372
256 lor.lhs.false336: ; preds = %lor.lhs.false324
257 %tmp342 = load i16* %arrayidx341, align 2
258 %cmp346 = icmp eq i16 %tmp342, %a9
259 br i1 %cmp346, label %lor.lhs.false348, label %if.then372
261 lor.lhs.false348: ; preds = %lor.lhs.false336
262 %tmp354 = load i16* %arrayidx353, align 4
263 %cmp358 = icmp eq i16 %tmp354, %a0
264 br i1 %cmp358, label %lor.lhs.false360, label %if.then372
266 lor.lhs.false360: ; preds = %lor.lhs.false348
267 %tmp366 = load i16* %arrayidx365, align 2
268 %cmp370 = icmp eq i16 %tmp366, %a7
269 br i1 %cmp370, label %if.end373, label %if.then372
271 if.then372: ; preds = %lor.lhs.false360, %lor.lhs.false348, %lor.lhs.false336, %lor.lhs.false324, %lor.lhs.false312, %lor.lhs.false300, %lor.lhs.false288, %lor.lhs.false276, %lor.lhs.false264, %lor.lhs.false252, %lor.lhs.false240, %lor.lhs.false228, %lor.lhs.false216, %lor.lhs.false204, %lor.lhs.false192, %for.body181
272 call void @abort() noreturn nounwind
275 if.end373: ; preds = %lor.lhs.false360
278 for.inc374: ; preds = %if.end373
279 %indvar.next79 = add i64 %indvar78, 1
280 br label %for.cond177
282 for.end377: ; preds = %for.cond177
283 br label %for.cond378
285 for.cond378: ; preds = %for.inc400, %for.end377
286 %indvar71 = phi i64 [ %indvar.next72, %for.inc400 ], [ 0, %for.end377 ]
287 %tmp74 = mul i64 %indvar71, 3
288 %tmp75 = add i64 %tmp74, 2
289 %arrayidx399 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp75
290 %tmp76 = add i64 %tmp74, 1
291 %arrayidx393 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp76
292 %arrayidx387 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp74
293 %exitcond73 = icmp ne i64 %indvar71, 128
294 br i1 %exitcond73, label %for.body382, label %for.end403
296 for.body382: ; preds = %for.cond378
297 store i16 %a8, i16* %arrayidx387, align 2
298 store i16 %a1, i16* %arrayidx393, align 2
299 store i16 %a2, i16* %arrayidx399, align 2
302 for.inc400: ; preds = %for.body382
303 %indvar.next72 = add i64 %indvar71, 1
304 br label %for.cond378
306 for.end403: ; preds = %for.cond378
307 br label %for.cond404
309 for.cond404: ; preds = %for.inc445, %for.end403
310 %indvar65 = phi i64 [ %indvar.next66, %for.inc445 ], [ 0, %for.end403 ]
311 %tmp67 = mul i64 %indvar65, 3
312 %tmp68 = add i64 %tmp67, 2
313 %arrayidx436 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp68
314 %tmp69 = add i64 %tmp67, 1
315 %arrayidx424 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp69
316 %arrayidx412 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp67
317 %i.5 = trunc i64 %indvar65 to i32
318 %cmp406 = icmp slt i32 %i.5, 128
319 br i1 %cmp406, label %for.body408, label %for.end448
321 for.body408: ; preds = %for.cond404
322 %tmp413 = load i16* %arrayidx412, align 2
323 %cmp417 = icmp eq i16 %tmp413, %a8
324 br i1 %cmp417, label %lor.lhs.false419, label %if.then443
326 lor.lhs.false419: ; preds = %for.body408
327 %tmp425 = load i16* %arrayidx424, align 2
328 %cmp429 = icmp eq i16 %tmp425, %a1
329 br i1 %cmp429, label %lor.lhs.false431, label %if.then443
331 lor.lhs.false431: ; preds = %lor.lhs.false419
332 %tmp437 = load i16* %arrayidx436, align 2
333 %cmp441 = icmp eq i16 %tmp437, %a2
334 br i1 %cmp441, label %if.end444, label %if.then443
336 if.then443: ; preds = %lor.lhs.false431, %lor.lhs.false419, %for.body408
337 call void @abort() noreturn nounwind
340 if.end444: ; preds = %lor.lhs.false431
343 for.inc445: ; preds = %if.end444
344 %indvar.next66 = add i64 %indvar65, 1
345 br label %for.cond404
347 for.end448: ; preds = %for.cond404
348 br label %for.cond449
350 for.cond449: ; preds = %for.inc519, %for.end448
351 %indvar49 = phi i64 [ %indvar.next50, %for.inc519 ], [ 0, %for.end448 ]
352 %tmp52 = mul i64 %indvar49, 11
353 %tmp53 = add i64 %tmp52, 10
354 %arrayidx518 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp53
355 %tmp54 = add i64 %tmp52, 9
356 %arrayidx512 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp54
357 %tmp55 = add i64 %tmp52, 8
358 %arrayidx506 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp55
359 %tmp56 = add i64 %tmp52, 7
360 %arrayidx500 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp56
361 %tmp57 = add i64 %tmp52, 6
362 %arrayidx494 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp57
363 %tmp58 = add i64 %tmp52, 5
364 %arrayidx488 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp58
365 %tmp59 = add i64 %tmp52, 4
366 %arrayidx482 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp59
367 %tmp60 = add i64 %tmp52, 3
368 %arrayidx476 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp60
369 %tmp61 = add i64 %tmp52, 2
370 %arrayidx470 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp61
371 %tmp62 = add i64 %tmp52, 1
372 %arrayidx464 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp62
373 %arrayidx458 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp52
374 %exitcond = icmp ne i64 %indvar49, 128
375 br i1 %exitcond, label %for.body453, label %for.end522
377 for.body453: ; preds = %for.cond449
378 store i16 %a8, i16* %arrayidx458, align 2
379 store i16 %a7, i16* %arrayidx464, align 2
380 store i16 %a1, i16* %arrayidx470, align 2
381 store i16 %a2, i16* %arrayidx476, align 2
382 store i16 %a8, i16* %arrayidx482, align 2
383 store i16 %a5, i16* %arrayidx488, align 2
384 store i16 %a5, i16* %arrayidx494, align 2
385 store i16 %a4, i16* %arrayidx500, align 2
386 store i16 %a12, i16* %arrayidx506, align 2
387 store i16 %a13, i16* %arrayidx512, align 2
388 store i16 %a14, i16* %arrayidx518, align 2
391 for.inc519: ; preds = %for.body453
392 %indvar.next50 = add i64 %indvar49, 1
393 br label %for.cond449
395 for.end522: ; preds = %for.cond449
396 br label %for.cond523
398 for.cond523: ; preds = %for.inc660, %for.end522
399 %indvar = phi i64 [ %indvar.next, %for.inc660 ], [ 0, %for.end522 ]
400 %tmp = mul i64 %indvar, 11
401 %tmp37 = add i64 %tmp, 10
402 %arrayidx651 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp37
403 %tmp38 = add i64 %tmp, 9
404 %arrayidx639 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp38
405 %tmp40 = add i64 %tmp, 8
406 %arrayidx627 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp40
407 %tmp41 = add i64 %tmp, 7
408 %arrayidx615 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp41
409 %tmp42 = add i64 %tmp, 6
410 %arrayidx603 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp42
411 %tmp43 = add i64 %tmp, 5
412 %arrayidx591 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp43
413 %tmp44 = add i64 %tmp, 4
414 %arrayidx579 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp44
415 %tmp45 = add i64 %tmp, 3
416 %arrayidx567 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp45
417 %tmp46 = add i64 %tmp, 2
418 %arrayidx555 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp46
419 %tmp47 = add i64 %tmp, 1
420 %arrayidx543 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp47
421 %arrayidx531 = getelementptr [2048 x i16]* %out, i64 0, i64 %tmp
422 %i.7 = trunc i64 %indvar to i32
423 %cmp525 = icmp slt i32 %i.7, 128
424 br i1 %cmp525, label %for.body527, label %for.end663
426 for.body527: ; preds = %for.cond523
427 %tmp532 = load i16* %arrayidx531, align 2
428 %cmp536 = icmp eq i16 %tmp532, %a8
429 br i1 %cmp536, label %lor.lhs.false538, label %if.then658
431 lor.lhs.false538: ; preds = %for.body527
432 %tmp544 = load i16* %arrayidx543, align 2
433 %cmp548 = icmp eq i16 %tmp544, %a7
434 br i1 %cmp548, label %lor.lhs.false550, label %if.then658
436 lor.lhs.false550: ; preds = %lor.lhs.false538
437 %tmp556 = load i16* %arrayidx555, align 2
438 %cmp560 = icmp eq i16 %tmp556, %a1
439 br i1 %cmp560, label %lor.lhs.false562, label %if.then658
441 lor.lhs.false562: ; preds = %lor.lhs.false550
442 %tmp568 = load i16* %arrayidx567, align 2
443 %cmp572 = icmp eq i16 %tmp568, %a2
444 br i1 %cmp572, label %lor.lhs.false574, label %if.then658
446 lor.lhs.false574: ; preds = %lor.lhs.false562
447 %tmp580 = load i16* %arrayidx579, align 2
448 %cmp584 = icmp eq i16 %tmp580, %a8
449 br i1 %cmp584, label %lor.lhs.false586, label %if.then658
451 lor.lhs.false586: ; preds = %lor.lhs.false574
452 %tmp592 = load i16* %arrayidx591, align 2
453 %cmp596 = icmp eq i16 %tmp592, %a5
454 br i1 %cmp596, label %lor.lhs.false598, label %if.then658
456 lor.lhs.false598: ; preds = %lor.lhs.false586
457 %tmp604 = load i16* %arrayidx603, align 2
458 %cmp608 = icmp eq i16 %tmp604, %a5
459 br i1 %cmp608, label %lor.lhs.false610, label %if.then658
461 lor.lhs.false610: ; preds = %lor.lhs.false598
462 %tmp616 = load i16* %arrayidx615, align 2
463 %cmp620 = icmp eq i16 %tmp616, %a4
464 br i1 %cmp620, label %lor.lhs.false622, label %if.then658
466 lor.lhs.false622: ; preds = %lor.lhs.false610
467 %tmp628 = load i16* %arrayidx627, align 2
468 %cmp632 = icmp eq i16 %tmp628, %a12
469 br i1 %cmp632, label %lor.lhs.false634, label %if.then658
471 lor.lhs.false634: ; preds = %lor.lhs.false622
472 %tmp640 = load i16* %arrayidx639, align 2
473 %cmp644 = icmp eq i16 %tmp640, %a13
474 br i1 %cmp644, label %lor.lhs.false646, label %if.then658
476 lor.lhs.false646: ; preds = %lor.lhs.false634
477 %tmp652 = load i16* %arrayidx651, align 2
478 %cmp656 = icmp eq i16 %tmp652, %a14
479 br i1 %cmp656, label %if.end659, label %if.then658
481 if.then658: ; preds = %lor.lhs.false646, %lor.lhs.false634, %lor.lhs.false622, %lor.lhs.false610, %lor.lhs.false598, %lor.lhs.false586, %lor.lhs.false574, %lor.lhs.false562, %lor.lhs.false550, %lor.lhs.false538, %for.body527
482 call void @abort() noreturn nounwind
485 if.end659: ; preds = %lor.lhs.false646
488 for.inc660: ; preds = %if.end659
489 %indvar.next = add i64 %indvar, 1
490 br label %for.cond523
492 for.end663: ; preds = %for.cond523
496 declare void @abort() noreturn
498 define i32 @main() nounwind uwtable {
500 call void @check_vect()
501 %call = call i32 @main1(i16 zeroext 15, i16 zeroext 14, i16 zeroext 13, i16 zeroext 12, i16 zeroext 11, i16 zeroext 10, i16 zeroext 9, i16 zeroext 8, i16 zeroext 7, i16 zeroext 6, i16 zeroext 5, i16 zeroext 4, i16 zeroext 3, i16 zeroext 2, i16 zeroext 1, i16 zeroext 0)
505 define internal void @check_vect() nounwind uwtable noinline {
507 %a = alloca i32, align 4
508 %b = alloca i32, align 4
509 %c = alloca i32, align 4
510 %d = alloca i32, align 4
511 %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
512 %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
513 %tobool = icmp eq i32 %call1, 0
514 br i1 %tobool, label %if.then, label %lor.lhs.false
516 lor.lhs.false: ; preds = %entry
517 %tmp4 = load i32* %d, align 4
518 %and6 = and i32 %tmp4, 67108864
519 %cmp = icmp eq i32 %and6, 0
520 br i1 %cmp, label %if.then, label %if.end
522 if.then: ; preds = %entry, %lor.lhs.false
523 call void @exit(i32 0) noreturn nounwind
526 if.end: ; preds = %lor.lhs.false
527 %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
531 declare void (i32)* @signal(i32, void (i32)*) nounwind
533 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
535 call void @exit(i32 0) noreturn nounwind
538 return: ; No predecessors!
542 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
544 %and = and i32 %__level, -2147483648
545 %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
546 %cmp = icmp ult i32 %call, %__level
547 br i1 %cmp, label %if.then, label %if.end
549 if.then: ; preds = %entry
552 if.end: ; preds = %entry
553 %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
554 %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
555 %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
556 %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
557 %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
558 store i32 %asmresult, i32* %__eax, align 4
559 store i32 %asmresult8, i32* %__ebx, align 4
560 store i32 %asmresult9, i32* %__ecx, align 4
561 store i32 %asmresult10, i32* %__edx, align 4
564 return: ; preds = %if.end, %if.then
565 %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
569 declare void @exit(i32) noreturn
571 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
573 %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
574 %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
575 %tobool = icmp eq i32* %__sig, null
576 br i1 %tobool, label %if.end, label %if.then
578 if.then: ; preds = %entry
579 %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
580 store i32 %asmresult1, i32* %__sig, align 4
583 if.end: ; preds = %entry, %if.then
587 !0 = metadata !{i32 -2147340973, i32 -2147340965}
588 !1 = metadata !{i32 -2147341096, i32 -2147341088}