Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-21.ll
blobb5f6b74e5e1b98b775521fcd894752335443f36d
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-21.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-21.s > slp-21.ll
6 ; ModuleID = 'slp-21.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() nounwind uwtable {
11 entry:
12   %out = alloca [1024 x i16], align 16
13   %out2 = alloca [1024 x i16], align 16
14   %in = alloca [1024 x i16], align 16
15   br label %for.cond
17 for.cond:                                         ; preds = %for.inc, %entry
18   %indvar171 = phi i64 [ %indvar.next172, %for.inc ], [ 0, %entry ]
19   %i.0 = trunc i64 %indvar171 to i16
20   %arrayidx = getelementptr [1024 x i16]* %in, i64 0, i64 %indvar171
21   %exitcond173 = icmp ne i64 %indvar171, 1024
22   br i1 %exitcond173, label %for.body, label %for.end
24 for.body:                                         ; preds = %for.cond
25   store i16 %i.0, i16* %arrayidx, align 2
26   br label %for.inc
28 for.inc:                                          ; preds = %for.body
29   %indvar.next172 = add i64 %indvar171, 1
30   br label %for.cond
32 for.end:                                          ; preds = %for.cond
33   br label %for.cond5
35 for.cond5:                                        ; preds = %for.inc114, %for.end
36   %indvar163 = phi i64 [ %indvar.next164, %for.inc114 ], [ 0, %for.end ]
37   %tmp166 = mul i64 %indvar163, 4
38   %tmp167 = add i64 %tmp166, 3
39   %arrayidx113 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp167
40   %tmp168 = add i64 %tmp166, 2
41   %arrayidx106 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp168
42   %tmp169 = add i64 %tmp166, 1
43   %arrayidx99 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp169
44   %arrayidx92 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp166
45   %arrayidx86 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp167
46   %arrayidx79 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp168
47   %arrayidx72 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp169
48   %arrayidx65 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp166
49   %arrayidx34 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp167
50   %arrayidx27 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp168
51   %arrayidx20 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp169
52   %arrayidx14 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp166
53   %exitcond165 = icmp ne i64 %indvar163, 128
54   br i1 %exitcond165, label %for.body10, label %for.end117
56 for.body10:                                       ; preds = %for.cond5
57   %tmp15 = load i16* %arrayidx14, align 8
58   %tmp21 = load i16* %arrayidx20, align 2
59   %tmp28 = load i16* %arrayidx27, align 4
60   %tmp35 = load i16* %arrayidx34, align 2
61   %mul38 = shl i16 %tmp15, 3
62   %add42 = add i16 %tmp21, 7
63   %add46 = add i16 %tmp28, 6
64   %mul50 = mul i16 %tmp35, 5
65   %add54 = add i16 %tmp28, 4
66   %add58 = add i16 %tmp35, 3
67   store i16 %mul38, i16* %arrayidx65, align 8
68   store i16 %add42, i16* %arrayidx72, align 2
69   store i16 %add46, i16* %arrayidx79, align 4
70   store i16 %mul50, i16* %arrayidx86, align 2
71   store i16 %mul38, i16* %arrayidx92, align 8
72   store i16 %add42, i16* %arrayidx99, align 2
73   store i16 %add54, i16* %arrayidx106, align 4
74   store i16 %add58, i16* %arrayidx113, align 2
75   br label %for.inc114
77 for.inc114:                                       ; preds = %for.body10
78   %indvar.next164 = add i64 %indvar163, 1
79   br label %for.cond5
81 for.end117:                                       ; preds = %for.cond5
82   br label %for.cond118
84 for.cond118:                                      ; preds = %for.inc276, %for.end117
85   %indvar156 = phi i64 [ %indvar.next157, %for.inc276 ], [ 0, %for.end117 ]
86   %tmp158 = mul i64 %indvar156, 4
87   %tmp159 = add i64 %tmp158, 3
88   %arrayidx267 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp159
89   %tmp160 = add i64 %tmp158, 2
90   %arrayidx254 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp160
91   %tmp161 = add i64 %tmp158, 1
92   %arrayidx241 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp161
93   %arrayidx228 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp158
94   %arrayidx217 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp159
95   %arrayidx204 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp160
96   %arrayidx191 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp161
97   %arrayidx179 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp158
98   %arrayidx149 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp159
99   %arrayidx142 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp160
100   %arrayidx135 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp161
101   %arrayidx128 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp158
102   %i.2 = trunc i64 %indvar156 to i16
103   %cmp121 = icmp ult i16 %i.2, 128
104   br i1 %cmp121, label %for.body123, label %for.end279
106 for.body123:                                      ; preds = %for.cond118
107   %tmp129 = load i16* %arrayidx128, align 8
108   %tmp136 = load i16* %arrayidx135, align 2
109   %tmp143 = load i16* %arrayidx142, align 4
110   %tmp150 = load i16* %arrayidx149, align 2
111   %mul153 = shl i16 %tmp129, 3
112   %add157 = add i16 %tmp136, 7
113   %add161 = add i16 %tmp143, 6
114   %mul165 = mul i16 %tmp150, 5
115   %add169 = add i16 %tmp143, 4
116   %add173 = add i16 %tmp150, 3
117   %tmp180 = load i16* %arrayidx179, align 8
118   %cmp184 = icmp eq i16 %tmp180, %mul153
119   br i1 %cmp184, label %lor.lhs.false, label %if.then
121 lor.lhs.false:                                    ; preds = %for.body123
122   %tmp192 = load i16* %arrayidx191, align 2
123   %cmp196 = icmp eq i16 %tmp192, %add157
124   br i1 %cmp196, label %lor.lhs.false198, label %if.then
126 lor.lhs.false198:                                 ; preds = %lor.lhs.false
127   %tmp205 = load i16* %arrayidx204, align 4
128   %cmp209 = icmp eq i16 %tmp205, %add161
129   br i1 %cmp209, label %lor.lhs.false211, label %if.then
131 lor.lhs.false211:                                 ; preds = %lor.lhs.false198
132   %tmp218 = load i16* %arrayidx217, align 2
133   %cmp222 = icmp eq i16 %tmp218, %mul165
134   br i1 %cmp222, label %if.end, label %if.then
136 if.then:                                          ; preds = %lor.lhs.false211, %lor.lhs.false198, %lor.lhs.false, %for.body123
137   call void @abort() noreturn nounwind
138   unreachable
140 if.end:                                           ; preds = %lor.lhs.false211
141   %tmp229 = load i16* %arrayidx228, align 8
142   %cmp233 = icmp eq i16 %tmp229, %mul153
143   br i1 %cmp233, label %lor.lhs.false235, label %if.then274
145 lor.lhs.false235:                                 ; preds = %if.end
146   %tmp242 = load i16* %arrayidx241, align 2
147   %cmp246 = icmp eq i16 %tmp242, %add157
148   br i1 %cmp246, label %lor.lhs.false248, label %if.then274
150 lor.lhs.false248:                                 ; preds = %lor.lhs.false235
151   %tmp255 = load i16* %arrayidx254, align 4
152   %cmp259 = icmp eq i16 %tmp255, %add169
153   br i1 %cmp259, label %lor.lhs.false261, label %if.then274
155 lor.lhs.false261:                                 ; preds = %lor.lhs.false248
156   %tmp268 = load i16* %arrayidx267, align 2
157   %cmp272 = icmp eq i16 %tmp268, %add173
158   br i1 %cmp272, label %if.end275, label %if.then274
160 if.then274:                                       ; preds = %lor.lhs.false261, %lor.lhs.false248, %lor.lhs.false235, %if.end
161   call void @abort() noreturn nounwind
162   unreachable
164 if.end275:                                        ; preds = %lor.lhs.false261
165   br label %for.inc276
167 for.inc276:                                       ; preds = %if.end275
168   %indvar.next157 = add i64 %indvar156, 1
169   br label %for.cond118
171 for.end279:                                       ; preds = %for.cond118
172   br label %for.cond280
174 for.cond280:                                      ; preds = %for.inc391, %for.end279
175   %indvar148 = phi i64 [ %indvar.next149, %for.inc391 ], [ 0, %for.end279 ]
176   %tmp151 = mul i64 %indvar148, 4
177   %tmp152 = add i64 %tmp151, 3
178   %arrayidx390 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp152
179   %tmp153 = add i64 %tmp151, 2
180   %arrayidx383 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp153
181   %tmp154 = add i64 %tmp151, 1
182   %arrayidx376 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp154
183   %arrayidx369 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp151
184   %arrayidx363 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp152
185   %arrayidx356 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp153
186   %arrayidx349 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp154
187   %arrayidx342 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp151
188   %arrayidx311 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp152
189   %arrayidx304 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp153
190   %arrayidx297 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp154
191   %arrayidx290 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp151
192   %exitcond150 = icmp ne i64 %indvar148, 128
193   br i1 %exitcond150, label %for.body285, label %for.end394
195 for.body285:                                      ; preds = %for.cond280
196   %tmp291 = load i16* %arrayidx290, align 8
197   %tmp298 = load i16* %arrayidx297, align 2
198   %tmp305 = load i16* %arrayidx304, align 4
199   %tmp312 = load i16* %arrayidx311, align 2
200   %add315 = add i16 %tmp291, 8
201   %add319 = add i16 %tmp298, 7
202   %add323 = add i16 %tmp305, 6
203   %mul327 = mul i16 %tmp312, 5
204   %add331 = add i16 %tmp305, 4
205   %add335 = add i16 %tmp312, 3
206   store i16 %add315, i16* %arrayidx342, align 8
207   store i16 %add319, i16* %arrayidx349, align 2
208   store i16 %add323, i16* %arrayidx356, align 4
209   store i16 %mul327, i16* %arrayidx363, align 2
210   store i16 %add315, i16* %arrayidx369, align 8
211   store i16 %add319, i16* %arrayidx376, align 2
212   store i16 %add331, i16* %arrayidx383, align 4
213   store i16 %add335, i16* %arrayidx390, align 2
214   br label %for.inc391
216 for.inc391:                                       ; preds = %for.body285
217   %indvar.next149 = add i64 %indvar148, 1
218   br label %for.cond280
220 for.end394:                                       ; preds = %for.cond280
221   br label %for.cond395
223 for.cond395:                                      ; preds = %for.inc556, %for.end394
224   %indvar140 = phi i64 [ %indvar.next141, %for.inc556 ], [ 0, %for.end394 ]
225   %tmp142 = mul i64 %indvar140, 4
226   %tmp144 = add i64 %tmp142, 3
227   %arrayidx547 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp144
228   %tmp145 = add i64 %tmp142, 2
229   %arrayidx534 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp145
230   %tmp146 = add i64 %tmp142, 1
231   %arrayidx521 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp146
232   %arrayidx508 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp142
233   %arrayidx495 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp144
234   %arrayidx482 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp145
235   %arrayidx469 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp146
236   %arrayidx456 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp142
237   %arrayidx426 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp144
238   %arrayidx419 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp145
239   %arrayidx412 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp146
240   %arrayidx405 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp142
241   %i.4 = trunc i64 %indvar140 to i16
242   %cmp398 = icmp ult i16 %i.4, 128
243   br i1 %cmp398, label %for.body400, label %for.end559
245 for.body400:                                      ; preds = %for.cond395
246   %tmp406 = load i16* %arrayidx405, align 8
247   %tmp413 = load i16* %arrayidx412, align 2
248   %tmp420 = load i16* %arrayidx419, align 4
249   %tmp427 = load i16* %arrayidx426, align 2
250   %add430 = add i16 %tmp406, 8
251   %add434 = add i16 %tmp413, 7
252   %add438 = add i16 %tmp420, 6
253   %mul442 = mul i16 %tmp427, 5
254   %add446 = add i16 %tmp420, 4
255   %add450 = add i16 %tmp427, 3
256   %tmp457 = load i16* %arrayidx456, align 8
257   %cmp461 = icmp eq i16 %tmp457, %add430
258   br i1 %cmp461, label %lor.lhs.false463, label %if.then502
260 lor.lhs.false463:                                 ; preds = %for.body400
261   %tmp470 = load i16* %arrayidx469, align 2
262   %cmp474 = icmp eq i16 %tmp470, %add434
263   br i1 %cmp474, label %lor.lhs.false476, label %if.then502
265 lor.lhs.false476:                                 ; preds = %lor.lhs.false463
266   %tmp483 = load i16* %arrayidx482, align 4
267   %cmp487 = icmp eq i16 %tmp483, %add438
268   br i1 %cmp487, label %lor.lhs.false489, label %if.then502
270 lor.lhs.false489:                                 ; preds = %lor.lhs.false476
271   %tmp496 = load i16* %arrayidx495, align 2
272   %cmp500 = icmp eq i16 %tmp496, %mul442
273   br i1 %cmp500, label %if.end503, label %if.then502
275 if.then502:                                       ; preds = %lor.lhs.false489, %lor.lhs.false476, %lor.lhs.false463, %for.body400
276   call void @abort() noreturn nounwind
277   unreachable
279 if.end503:                                        ; preds = %lor.lhs.false489
280   %tmp509 = load i16* %arrayidx508, align 8
281   %cmp513 = icmp eq i16 %tmp509, %add430
282   br i1 %cmp513, label %lor.lhs.false515, label %if.then554
284 lor.lhs.false515:                                 ; preds = %if.end503
285   %tmp522 = load i16* %arrayidx521, align 2
286   %cmp526 = icmp eq i16 %tmp522, %add434
287   br i1 %cmp526, label %lor.lhs.false528, label %if.then554
289 lor.lhs.false528:                                 ; preds = %lor.lhs.false515
290   %tmp535 = load i16* %arrayidx534, align 4
291   %cmp539 = icmp eq i16 %tmp535, %add446
292   br i1 %cmp539, label %lor.lhs.false541, label %if.then554
294 lor.lhs.false541:                                 ; preds = %lor.lhs.false528
295   %tmp548 = load i16* %arrayidx547, align 2
296   %cmp552 = icmp eq i16 %tmp548, %add450
297   br i1 %cmp552, label %if.end555, label %if.then554
299 if.then554:                                       ; preds = %lor.lhs.false541, %lor.lhs.false528, %lor.lhs.false515, %if.end503
300   call void @abort() noreturn nounwind
301   unreachable
303 if.end555:                                        ; preds = %lor.lhs.false541
304   br label %for.inc556
306 for.inc556:                                       ; preds = %if.end555
307   %indvar.next141 = add i64 %indvar140, 1
308   br label %for.cond395
310 for.end559:                                       ; preds = %for.cond395
311   br label %for.cond560
313 for.cond560:                                      ; preds = %for.inc671, %for.end559
314   %indvar132 = phi i64 [ %indvar.next133, %for.inc671 ], [ 0, %for.end559 ]
315   %tmp134 = mul i64 %indvar132, 4
316   %tmp135 = add i64 %tmp134, 3
317   %arrayidx670 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp135
318   %tmp137 = add i64 %tmp134, 2
319   %arrayidx663 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp137
320   %tmp138 = add i64 %tmp134, 1
321   %arrayidx656 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp138
322   %arrayidx649 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp134
323   %arrayidx643 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp135
324   %arrayidx636 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp137
325   %arrayidx629 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp138
326   %arrayidx622 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp134
327   %arrayidx591 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp135
328   %arrayidx584 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp137
329   %arrayidx577 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp138
330   %arrayidx570 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp134
331   %exitcond = icmp ne i64 %indvar132, 128
332   br i1 %exitcond, label %for.body565, label %for.end674
334 for.body565:                                      ; preds = %for.cond560
335   %tmp571 = load i16* %arrayidx570, align 8
336   %tmp578 = load i16* %arrayidx577, align 2
337   %tmp585 = load i16* %arrayidx584, align 4
338   %tmp592 = load i16* %arrayidx591, align 2
339   %add595 = add i16 %tmp571, 8
340   %add599 = add i16 %tmp578, 7
341   %add603 = add i16 %tmp585, 6
342   %add607 = add i16 %tmp592, 5
343   %mul611 = shl i16 %tmp585, 2
344   %add615 = add i16 %tmp592, 3
345   store i16 %add595, i16* %arrayidx622, align 8
346   store i16 %add599, i16* %arrayidx629, align 2
347   store i16 %add603, i16* %arrayidx636, align 4
348   store i16 %add607, i16* %arrayidx643, align 2
349   store i16 %add595, i16* %arrayidx649, align 8
350   store i16 %add599, i16* %arrayidx656, align 2
351   store i16 %mul611, i16* %arrayidx663, align 4
352   store i16 %add615, i16* %arrayidx670, align 2
353   br label %for.inc671
355 for.inc671:                                       ; preds = %for.body565
356   %indvar.next133 = add i64 %indvar132, 1
357   br label %for.cond560
359 for.end674:                                       ; preds = %for.cond560
360   br label %for.cond675
362 for.cond675:                                      ; preds = %for.inc836, %for.end674
363   %indvar = phi i64 [ %indvar.next, %for.inc836 ], [ 0, %for.end674 ]
364   %tmp = mul i64 %indvar, 4
365   %tmp127 = add i64 %tmp, 3
366   %arrayidx827 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp127
367   %tmp128 = add i64 %tmp, 2
368   %arrayidx814 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp128
369   %tmp130 = add i64 %tmp, 1
370   %arrayidx801 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp130
371   %arrayidx788 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp
372   %arrayidx775 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp127
373   %arrayidx762 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp128
374   %arrayidx749 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp130
375   %arrayidx736 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp
376   %arrayidx706 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp127
377   %arrayidx699 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp128
378   %arrayidx692 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp130
379   %arrayidx685 = getelementptr [1024 x i16]* %in, i64 0, i64 %tmp
380   %i.6 = trunc i64 %indvar to i16
381   %cmp678 = icmp ult i16 %i.6, 128
382   br i1 %cmp678, label %for.body680, label %for.end839
384 for.body680:                                      ; preds = %for.cond675
385   %tmp686 = load i16* %arrayidx685, align 8
386   %tmp693 = load i16* %arrayidx692, align 2
387   %tmp700 = load i16* %arrayidx699, align 4
388   %tmp707 = load i16* %arrayidx706, align 2
389   %add710 = add i16 %tmp686, 8
390   %add714 = add i16 %tmp693, 7
391   %add718 = add i16 %tmp700, 6
392   %add722 = add i16 %tmp707, 5
393   %mul726 = shl i16 %tmp700, 2
394   %add730 = add i16 %tmp707, 3
395   %tmp737 = load i16* %arrayidx736, align 8
396   %cmp741 = icmp eq i16 %tmp737, %add710
397   br i1 %cmp741, label %lor.lhs.false743, label %if.then782
399 lor.lhs.false743:                                 ; preds = %for.body680
400   %tmp750 = load i16* %arrayidx749, align 2
401   %cmp754 = icmp eq i16 %tmp750, %add714
402   br i1 %cmp754, label %lor.lhs.false756, label %if.then782
404 lor.lhs.false756:                                 ; preds = %lor.lhs.false743
405   %tmp763 = load i16* %arrayidx762, align 4
406   %cmp767 = icmp eq i16 %tmp763, %add718
407   br i1 %cmp767, label %lor.lhs.false769, label %if.then782
409 lor.lhs.false769:                                 ; preds = %lor.lhs.false756
410   %tmp776 = load i16* %arrayidx775, align 2
411   %cmp780 = icmp eq i16 %tmp776, %add722
412   br i1 %cmp780, label %if.end783, label %if.then782
414 if.then782:                                       ; preds = %lor.lhs.false769, %lor.lhs.false756, %lor.lhs.false743, %for.body680
415   call void @abort() noreturn nounwind
416   unreachable
418 if.end783:                                        ; preds = %lor.lhs.false769
419   %tmp789 = load i16* %arrayidx788, align 8
420   %cmp793 = icmp eq i16 %tmp789, %add710
421   br i1 %cmp793, label %lor.lhs.false795, label %if.then834
423 lor.lhs.false795:                                 ; preds = %if.end783
424   %tmp802 = load i16* %arrayidx801, align 2
425   %cmp806 = icmp eq i16 %tmp802, %add714
426   br i1 %cmp806, label %lor.lhs.false808, label %if.then834
428 lor.lhs.false808:                                 ; preds = %lor.lhs.false795
429   %tmp815 = load i16* %arrayidx814, align 4
430   %cmp819 = icmp eq i16 %tmp815, %mul726
431   br i1 %cmp819, label %lor.lhs.false821, label %if.then834
433 lor.lhs.false821:                                 ; preds = %lor.lhs.false808
434   %tmp828 = load i16* %arrayidx827, align 2
435   %cmp832 = icmp eq i16 %tmp828, %add730
436   br i1 %cmp832, label %if.end835, label %if.then834
438 if.then834:                                       ; preds = %lor.lhs.false821, %lor.lhs.false808, %lor.lhs.false795, %if.end783
439   call void @abort() noreturn nounwind
440   unreachable
442 if.end835:                                        ; preds = %lor.lhs.false821
443   br label %for.inc836
445 for.inc836:                                       ; preds = %if.end835
446   %indvar.next = add i64 %indvar, 1
447   br label %for.cond675
449 for.end839:                                       ; preds = %for.cond675
450   ret i32 0
453 declare void @abort() noreturn
455 define i32 @main() nounwind uwtable {
456 entry:
457   call void @check_vect()
458   %call = call i32 @main1()
459   ret i32 0
462 define internal void @check_vect() nounwind uwtable noinline {
463 entry:
464   %a = alloca i32, align 4
465   %b = alloca i32, align 4
466   %c = alloca i32, align 4
467   %d = alloca i32, align 4
468   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
469   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
470   %tobool = icmp eq i32 %call1, 0
471   br i1 %tobool, label %if.then, label %lor.lhs.false
473 lor.lhs.false:                                    ; preds = %entry
474   %tmp4 = load i32* %d, align 4
475   %and6 = and i32 %tmp4, 67108864
476   %cmp = icmp eq i32 %and6, 0
477   br i1 %cmp, label %if.then, label %if.end
479 if.then:                                          ; preds = %entry, %lor.lhs.false
480   call void @exit(i32 0) noreturn nounwind
481   unreachable
483 if.end:                                           ; preds = %lor.lhs.false
484   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
485   ret void
488 declare void (i32)* @signal(i32, void (i32)*) nounwind
490 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
491 entry:
492   call void @exit(i32 0) noreturn nounwind
493   unreachable
495 return:                                           ; No predecessors!
496   ret void
499 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
500 entry:
501   %and = and i32 %__level, -2147483648
502   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
503   %cmp = icmp ult i32 %call, %__level
504   br i1 %cmp, label %if.then, label %if.end
506 if.then:                                          ; preds = %entry
507   br label %return
509 if.end:                                           ; preds = %entry
510   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
511   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
512   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
513   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
514   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
515   store i32 %asmresult, i32* %__eax, align 4
516   store i32 %asmresult8, i32* %__ebx, align 4
517   store i32 %asmresult9, i32* %__ecx, align 4
518   store i32 %asmresult10, i32* %__edx, align 4
519   br label %return
521 return:                                           ; preds = %if.end, %if.then
522   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
523   ret i32 %retval.0
526 declare void @exit(i32) noreturn
528 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
529 entry:
530   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
531   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
532   %tobool = icmp eq i32* %__sig, null
533   br i1 %tobool, label %if.end, label %if.then
535 if.then:                                          ; preds = %entry
536   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
537   store i32 %asmresult1, i32* %__sig, align 4
538   br label %if.end
540 if.end:                                           ; preds = %entry, %if.then
541   ret i32 %asmresult
544 !0 = metadata !{i32 -2147340153, i32 -2147340145} 
545 !1 = metadata !{i32 -2147340276, i32 -2147340268} 
546 ; CHECK: define