Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-2.ll
blobada5ad657dac690641a1411302212da55a8a3cd1
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
6 ; ModuleID = 'slp-2.s'
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 {
11 entry:
12   %out = alloca [2048 x i16], align 16
13   br label %for.cond
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
33   br label %for.inc
35 for.inc:                                          ; preds = %for.body
36   %indvar.next125 = add i64 %indvar124, 1
37   br label %for.cond
39 for.end:                                          ; preds = %for.cond
40   br label %for.cond21
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
78   unreachable
80 if.end:                                           ; preds = %lor.lhs.false57
81   br label %for.inc69
83 for.inc69:                                        ; preds = %if.end
84   %indvar.next118 = add i64 %indvar117, 1
85   br label %for.cond21
87 for.end72:                                        ; preds = %for.cond21
88   br label %for.cond73
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
144   br label %for.inc173
146 for.inc173:                                       ; preds = %for.body77
147   %indvar.next98 = add i64 %indvar97, 1
148   br label %for.cond73
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
273   unreachable
275 if.end373:                                        ; preds = %lor.lhs.false360
276   br label %for.inc374
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
300   br label %for.inc400
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
338   unreachable
340 if.end444:                                        ; preds = %lor.lhs.false431
341   br label %for.inc445
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
389   br label %for.inc519
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
483   unreachable
485 if.end659:                                        ; preds = %lor.lhs.false646
486   br label %for.inc660
488 for.inc660:                                       ; preds = %if.end659
489   %indvar.next = add i64 %indvar, 1
490   br label %for.cond523
492 for.end663:                                       ; preds = %for.cond523
493   ret i32 0
496 declare void @abort() noreturn
498 define i32 @main() nounwind uwtable {
499 entry:
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)
502   ret i32 0
505 define internal void @check_vect() nounwind uwtable noinline {
506 entry:
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
524   unreachable
526 if.end:                                           ; preds = %lor.lhs.false
527   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
528   ret void
531 declare void (i32)* @signal(i32, void (i32)*) nounwind
533 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
534 entry:
535   call void @exit(i32 0) noreturn nounwind
536   unreachable
538 return:                                           ; No predecessors!
539   ret void
542 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
543 entry:
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
550   br label %return
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
562   br label %return
564 return:                                           ; preds = %if.end, %if.then
565   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
566   ret i32 %retval.0
569 declare void @exit(i32) noreturn
571 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
572 entry:
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
581   br label %if.end
583 if.end:                                           ; preds = %entry, %if.then
584   ret i32 %asmresult
587 !0 = metadata !{i32 -2147340973, i32 -2147340965} 
588 !1 = metadata !{i32 -2147341096, i32 -2147341088} 
589 ; CHECK: define