Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-22.ll
blob1f36b7c9ad2de661854d941944929760b58f5f28
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-22.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-22.s > slp-22.ll
6 ; ModuleID = 'slp-22.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) nounwind uwtable {
11 entry:
12   %out = alloca [1024 x i16], align 16
13   %out2 = alloca [1024 x i16], align 16
14   %out3 = alloca [1024 x i16], align 16
15   br label %for.cond
17 for.cond:                                         ; preds = %for.inc, %entry
18   %indvar81 = phi i64 [ %indvar.next82, %for.inc ], [ 0, %entry ]
19   %b0.0 = phi i16 [ undef, %entry ], [ %add, %for.inc ]
20   %b1.0 = phi i16 [ undef, %entry ], [ %add5, %for.inc ]
21   %b2.0 = phi i16 [ undef, %entry ], [ %add9, %for.inc ]
22   %b3.0 = phi i16 [ undef, %entry ], [ %add13, %for.inc ]
23   %b4.0 = phi i16 [ undef, %entry ], [ %add17, %for.inc ]
24   %b5.0 = phi i16 [ undef, %entry ], [ %add21, %for.inc ]
25   %tmp84 = mul i64 %indvar81, 4
26   %tmp85 = add i64 %tmp84, 3
27   %arrayidx88 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp85
28   %tmp86 = add i64 %tmp84, 2
29   %arrayidx82 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp86
30   %tmp87 = add i64 %tmp84, 1
31   %arrayidx76 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp87
32   %arrayidx70 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp84
33   %arrayidx65 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp85
34   %arrayidx59 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp86
35   %arrayidx53 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp87
36   %arrayidx47 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp84
37   %arrayidx42 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp85
38   %arrayidx36 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp86
39   %arrayidx30 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp87
40   %arrayidx = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp84
41   %exitcond83 = icmp ne i64 %indvar81, 128
42   br i1 %exitcond83, label %for.body, label %for.end
44 for.body:                                         ; preds = %for.cond
45   %add = add i16 %a0, 8
46   %add5 = add i16 %a1, 7
47   %add9 = add i16 %a2, 6
48   %add13 = add i16 %a3, 5
49   %add17 = add i16 %a4, 4
50   %add21 = add i16 %a5, 3
51   store i16 %add, i16* %arrayidx, align 8
52   store i16 %add5, i16* %arrayidx30, align 2
53   store i16 %add9, i16* %arrayidx36, align 4
54   store i16 %add13, i16* %arrayidx42, align 2
55   store i16 %add, i16* %arrayidx47, align 8
56   store i16 %add5, i16* %arrayidx53, align 2
57   store i16 %add17, i16* %arrayidx59, align 4
58   store i16 %add21, i16* %arrayidx65, align 2
59   store i16 %add9, i16* %arrayidx70, align 8
60   store i16 %add5, i16* %arrayidx76, align 2
61   store i16 %add17, i16* %arrayidx82, align 4
62   store i16 %add21, i16* %arrayidx88, align 2
63   br label %for.inc
65 for.inc:                                          ; preds = %for.body
66   %indvar.next82 = add i64 %indvar81, 1
67   br label %for.cond
69 for.end:                                          ; preds = %for.cond
70   %b5.0.lcssa = phi i16 [ %b5.0, %for.cond ]
71   %b4.0.lcssa = phi i16 [ %b4.0, %for.cond ]
72   %b3.0.lcssa = phi i16 [ %b3.0, %for.cond ]
73   %b2.0.lcssa = phi i16 [ %b2.0, %for.cond ]
74   %b1.0.lcssa = phi i16 [ %b1.0, %for.cond ]
75   %b0.0.lcssa = phi i16 [ %b0.0, %for.cond ]
76   br label %for.cond90
78 for.cond90:                                       ; preds = %for.inc236, %for.end
79   %indvar74 = phi i64 [ %indvar.next75, %for.inc236 ], [ 0, %for.end ]
80   %tmp76 = mul i64 %indvar74, 4
81   %tmp77 = add i64 %tmp76, 3
82   %arrayidx227 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp77
83   %tmp78 = add i64 %tmp76, 2
84   %arrayidx215 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp78
85   %tmp79 = add i64 %tmp76, 1
86   %arrayidx203 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp79
87   %arrayidx191 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp76
88   %arrayidx179 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp77
89   %arrayidx167 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp78
90   %arrayidx155 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp79
91   %arrayidx143 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp76
92   %arrayidx133 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp77
93   %arrayidx121 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp78
94   %arrayidx109 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp79
95   %arrayidx98 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp76
96   %i.1 = trunc i64 %indvar74 to i32
97   %cmp92 = icmp slt i32 %i.1, 128
98   br i1 %cmp92, label %for.body94, label %for.end239
100 for.body94:                                       ; preds = %for.cond90
101   %tmp99 = load i16* %arrayidx98, align 8
102   %cmp103 = icmp eq i16 %tmp99, %b0.0.lcssa
103   br i1 %cmp103, label %lor.lhs.false, label %if.then
105 lor.lhs.false:                                    ; preds = %for.body94
106   %tmp110 = load i16* %arrayidx109, align 2
107   %cmp114 = icmp eq i16 %tmp110, %b1.0.lcssa
108   br i1 %cmp114, label %lor.lhs.false116, label %if.then
110 lor.lhs.false116:                                 ; preds = %lor.lhs.false
111   %tmp122 = load i16* %arrayidx121, align 4
112   %cmp126 = icmp eq i16 %tmp122, %b2.0.lcssa
113   br i1 %cmp126, label %lor.lhs.false128, label %if.then
115 lor.lhs.false128:                                 ; preds = %lor.lhs.false116
116   %tmp134 = load i16* %arrayidx133, align 2
117   %cmp138 = icmp eq i16 %tmp134, %b3.0.lcssa
118   br i1 %cmp138, label %if.end, label %if.then
120 if.then:                                          ; preds = %lor.lhs.false128, %lor.lhs.false116, %lor.lhs.false, %for.body94
121   call void @abort() noreturn nounwind
122   unreachable
124 if.end:                                           ; preds = %lor.lhs.false128
125   %tmp144 = load i16* %arrayidx143, align 8
126   %cmp148 = icmp eq i16 %tmp144, %b0.0.lcssa
127   br i1 %cmp148, label %lor.lhs.false150, label %if.then186
129 lor.lhs.false150:                                 ; preds = %if.end
130   %tmp156 = load i16* %arrayidx155, align 2
131   %cmp160 = icmp eq i16 %tmp156, %b1.0.lcssa
132   br i1 %cmp160, label %lor.lhs.false162, label %if.then186
134 lor.lhs.false162:                                 ; preds = %lor.lhs.false150
135   %tmp168 = load i16* %arrayidx167, align 4
136   %cmp172 = icmp eq i16 %tmp168, %b4.0.lcssa
137   br i1 %cmp172, label %lor.lhs.false174, label %if.then186
139 lor.lhs.false174:                                 ; preds = %lor.lhs.false162
140   %tmp180 = load i16* %arrayidx179, align 2
141   %cmp184 = icmp eq i16 %tmp180, %b5.0.lcssa
142   br i1 %cmp184, label %if.end187, label %if.then186
144 if.then186:                                       ; preds = %lor.lhs.false174, %lor.lhs.false162, %lor.lhs.false150, %if.end
145   call void @abort() noreturn nounwind
146   unreachable
148 if.end187:                                        ; preds = %lor.lhs.false174
149   %tmp192 = load i16* %arrayidx191, align 8
150   %cmp196 = icmp eq i16 %tmp192, %b2.0.lcssa
151   br i1 %cmp196, label %lor.lhs.false198, label %if.then234
153 lor.lhs.false198:                                 ; preds = %if.end187
154   %tmp204 = load i16* %arrayidx203, align 2
155   %cmp208 = icmp eq i16 %tmp204, %b1.0.lcssa
156   br i1 %cmp208, label %lor.lhs.false210, label %if.then234
158 lor.lhs.false210:                                 ; preds = %lor.lhs.false198
159   %tmp216 = load i16* %arrayidx215, align 4
160   %cmp220 = icmp eq i16 %tmp216, %b4.0.lcssa
161   br i1 %cmp220, label %lor.lhs.false222, label %if.then234
163 lor.lhs.false222:                                 ; preds = %lor.lhs.false210
164   %tmp228 = load i16* %arrayidx227, align 2
165   %cmp232 = icmp eq i16 %tmp228, %b5.0.lcssa
166   br i1 %cmp232, label %if.end235, label %if.then234
168 if.then234:                                       ; preds = %lor.lhs.false222, %lor.lhs.false210, %lor.lhs.false198, %if.end187
169   call void @abort() noreturn nounwind
170   unreachable
172 if.end235:                                        ; preds = %lor.lhs.false222
173   br label %for.inc236
175 for.inc236:                                       ; preds = %if.end235
176   %indvar.next75 = add i64 %indvar74, 1
177   br label %for.cond90
179 for.end239:                                       ; preds = %for.cond90
180   br label %for.cond240
182 for.cond240:                                      ; preds = %for.inc362, %for.end239
183   %indvar57 = phi i64 [ %indvar.next58, %for.inc362 ], [ 0, %for.end239 ]
184   %b0.1 = phi i16 [ %b0.0.lcssa, %for.end239 ], [ %add247, %for.inc362 ]
185   %b1.1 = phi i16 [ %b1.0.lcssa, %for.end239 ], [ %add251, %for.inc362 ]
186   %b2.1 = phi i16 [ %b2.0.lcssa, %for.end239 ], [ %add255, %for.inc362 ]
187   %b3.1 = phi i16 [ %b3.0.lcssa, %for.end239 ], [ %add259, %for.inc362 ]
188   %b4.1 = phi i16 [ %b4.0.lcssa, %for.end239 ], [ %add263, %for.inc362 ]
189   %b5.1 = phi i16 [ %b5.0.lcssa, %for.end239 ], [ %add267, %for.inc362 ]
190   %b6.0 = phi i32 [ 0, %for.end239 ], [ %phitmp, %for.inc362 ]
191   %b7.0 = phi i32 [ 0, %for.end239 ], [ %phitmp10, %for.inc362 ]
192   %b8.0 = phi i32 [ 0, %for.end239 ], [ %phitmp12, %for.inc362 ]
193   %tmp59 = mul i64 %indvar57, 2
194   %arrayidx361 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp59
195   %tmp60 = add i64 %tmp59, 1
196   %arrayidx356 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp60
197   %tmp61 = mul i64 %indvar57, 8
198   %tmp62 = add i64 %tmp61, 7
199   %arrayidx350 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp62
200   %tmp63 = add i64 %tmp61, 6
201   %arrayidx344 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp63
202   %tmp64 = add i64 %tmp61, 5
203   %arrayidx338 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp64
204   %tmp65 = add i64 %tmp61, 4
205   %arrayidx332 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp65
206   %tmp66 = add i64 %tmp61, 3
207   %arrayidx326 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp66
208   %tmp67 = add i64 %tmp61, 2
209   %arrayidx320 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp67
210   %tmp68 = add i64 %tmp61, 1
211   %arrayidx314 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp68
212   %arrayidx308 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp61
213   %tmp69 = mul i64 %indvar57, 4
214   %tmp70 = add i64 %tmp69, 3
215   %arrayidx303 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp70
216   %tmp71 = add i64 %tmp69, 2
217   %arrayidx297 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp71
218   %tmp72 = add i64 %tmp69, 1
219   %arrayidx291 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp72
220   %arrayidx285 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp69
221   %exitcond = icmp ne i64 %indvar57, 128
222   br i1 %exitcond, label %for.body244, label %for.end365
224 for.body244:                                      ; preds = %for.cond240
225   %add247 = add i16 %a0, 8
226   %add251 = add i16 %a1, 7
227   %add255 = add i16 %a2, 6
228   %add259 = add i16 %a3, 5
229   %add263 = add i16 %a4, 4
230   %add267 = add i16 %a5, 3
231   %conv270 = zext i16 %a6 to i32
232   %add271 = add nsw i32 %conv270, 2
233   %conv272 = trunc i32 %add271 to i16
234   %conv274 = zext i16 %a7 to i32
235   %add275 = add nsw i32 %conv274, 1
236   %conv276 = trunc i32 %add275 to i16
237   %conv278 = zext i16 %a8 to i32
238   %add279 = add nsw i32 %conv278, 9
239   %conv280 = trunc i32 %add279 to i16
240   store i16 %add247, i16* %arrayidx285, align 8
241   store i16 %add251, i16* %arrayidx291, align 2
242   store i16 %add255, i16* %arrayidx297, align 4
243   store i16 %add259, i16* %arrayidx303, align 2
244   store i16 %add247, i16* %arrayidx308, align 16
245   store i16 %add251, i16* %arrayidx314, align 2
246   store i16 %add263, i16* %arrayidx320, align 4
247   store i16 %add267, i16* %arrayidx326, align 2
248   store i16 %conv272, i16* %arrayidx332, align 8
249   store i16 %add255, i16* %arrayidx338, align 2
250   store i16 %conv276, i16* %arrayidx344, align 4
251   store i16 %conv280, i16* %arrayidx350, align 2
252   store i16 %a0, i16* %arrayidx356, align 2
253   store i16 %conv280, i16* %arrayidx361, align 4
254   br label %for.inc362
256 for.inc362:                                       ; preds = %for.body244
257   %phitmp = and i32 %add271, 65535
258   %phitmp10 = and i32 %add275, 65535
259   %phitmp12 = and i32 %add279, 65535
260   %indvar.next58 = add i64 %indvar57, 1
261   br label %for.cond240
263 for.end365:                                       ; preds = %for.cond240
264   %b8.0.lcssa = phi i32 [ %b8.0, %for.cond240 ]
265   %b7.0.lcssa = phi i32 [ %b7.0, %for.cond240 ]
266   %b6.0.lcssa = phi i32 [ %b6.0, %for.cond240 ]
267   %b5.1.lcssa = phi i16 [ %b5.1, %for.cond240 ]
268   %b4.1.lcssa = phi i16 [ %b4.1, %for.cond240 ]
269   %b3.1.lcssa = phi i16 [ %b3.1, %for.cond240 ]
270   %b2.1.lcssa = phi i16 [ %b2.1, %for.cond240 ]
271   %b1.1.lcssa = phi i16 [ %b1.1, %for.cond240 ]
272   %b0.1.lcssa = phi i16 [ %b0.1, %for.cond240 ]
273   br label %for.cond366
275 for.cond366:                                      ; preds = %for.inc539, %for.end365
276   %indvar = phi i64 [ %indvar.next, %for.inc539 ], [ 0, %for.end365 ]
277   %tmp = mul i64 %indvar, 2
278   %tmp43 = add i64 %tmp, 1
279   %arrayidx530 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp43
280   %arrayidx518 = getelementptr [1024 x i16]* %out3, i64 0, i64 %tmp
281   %tmp44 = mul i64 %indvar, 8
282   %tmp45 = add i64 %tmp44, 7
283   %arrayidx506 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp45
284   %tmp46 = add i64 %tmp44, 6
285   %arrayidx494 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp46
286   %tmp47 = add i64 %tmp44, 5
287   %arrayidx482 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp47
288   %tmp48 = add i64 %tmp44, 4
289   %arrayidx470 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp48
290   %tmp49 = add i64 %tmp44, 3
291   %arrayidx458 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp49
292   %tmp50 = add i64 %tmp44, 2
293   %arrayidx446 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp50
294   %tmp51 = add i64 %tmp44, 1
295   %arrayidx434 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp51
296   %arrayidx422 = getelementptr [1024 x i16]* %out2, i64 0, i64 %tmp44
297   %tmp52 = mul i64 %indvar, 4
298   %tmp53 = add i64 %tmp52, 3
299   %arrayidx410 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp53
300   %tmp54 = add i64 %tmp52, 2
301   %arrayidx398 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp54
302   %tmp55 = add i64 %tmp52, 1
303   %arrayidx386 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp55
304   %arrayidx374 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp52
305   %i.3 = trunc i64 %indvar to i32
306   %cmp368 = icmp slt i32 %i.3, 128
307   br i1 %cmp368, label %for.body370, label %for.end542
309 for.body370:                                      ; preds = %for.cond366
310   %tmp375 = load i16* %arrayidx374, align 8
311   %cmp379 = icmp eq i16 %tmp375, %b0.1.lcssa
312   br i1 %cmp379, label %lor.lhs.false381, label %if.then417
314 lor.lhs.false381:                                 ; preds = %for.body370
315   %tmp387 = load i16* %arrayidx386, align 2
316   %cmp391 = icmp eq i16 %tmp387, %b1.1.lcssa
317   br i1 %cmp391, label %lor.lhs.false393, label %if.then417
319 lor.lhs.false393:                                 ; preds = %lor.lhs.false381
320   %tmp399 = load i16* %arrayidx398, align 4
321   %cmp403 = icmp eq i16 %tmp399, %b2.1.lcssa
322   br i1 %cmp403, label %lor.lhs.false405, label %if.then417
324 lor.lhs.false405:                                 ; preds = %lor.lhs.false393
325   %tmp411 = load i16* %arrayidx410, align 2
326   %cmp415 = icmp eq i16 %tmp411, %b3.1.lcssa
327   br i1 %cmp415, label %if.end418, label %if.then417
329 if.then417:                                       ; preds = %lor.lhs.false405, %lor.lhs.false393, %lor.lhs.false381, %for.body370
330   call void @abort() noreturn nounwind
331   unreachable
333 if.end418:                                        ; preds = %lor.lhs.false405
334   %tmp423 = load i16* %arrayidx422, align 16
335   %cmp427 = icmp eq i16 %tmp423, %b0.1.lcssa
336   br i1 %cmp427, label %lor.lhs.false429, label %if.then513
338 lor.lhs.false429:                                 ; preds = %if.end418
339   %tmp435 = load i16* %arrayidx434, align 2
340   %cmp439 = icmp eq i16 %tmp435, %b1.1.lcssa
341   br i1 %cmp439, label %lor.lhs.false441, label %if.then513
343 lor.lhs.false441:                                 ; preds = %lor.lhs.false429
344   %tmp447 = load i16* %arrayidx446, align 4
345   %cmp451 = icmp eq i16 %tmp447, %b4.1.lcssa
346   br i1 %cmp451, label %lor.lhs.false453, label %if.then513
348 lor.lhs.false453:                                 ; preds = %lor.lhs.false441
349   %tmp459 = load i16* %arrayidx458, align 2
350   %cmp463 = icmp eq i16 %tmp459, %b5.1.lcssa
351   br i1 %cmp463, label %lor.lhs.false465, label %if.then513
353 lor.lhs.false465:                                 ; preds = %lor.lhs.false453
354   %tmp471 = load i16* %arrayidx470, align 8
355   %conv472 = zext i16 %tmp471 to i32
356   %cmp475 = icmp eq i32 %conv472, %b6.0.lcssa
357   br i1 %cmp475, label %lor.lhs.false477, label %if.then513
359 lor.lhs.false477:                                 ; preds = %lor.lhs.false465
360   %tmp483 = load i16* %arrayidx482, align 2
361   %cmp487 = icmp eq i16 %tmp483, %b2.1.lcssa
362   br i1 %cmp487, label %lor.lhs.false489, label %if.then513
364 lor.lhs.false489:                                 ; preds = %lor.lhs.false477
365   %tmp495 = load i16* %arrayidx494, align 4
366   %conv496 = zext i16 %tmp495 to i32
367   %cmp499 = icmp eq i32 %conv496, %b7.0.lcssa
368   br i1 %cmp499, label %lor.lhs.false501, label %if.then513
370 lor.lhs.false501:                                 ; preds = %lor.lhs.false489
371   %tmp507 = load i16* %arrayidx506, align 2
372   %conv508 = zext i16 %tmp507 to i32
373   %cmp511 = icmp eq i32 %conv508, %b8.0.lcssa
374   br i1 %cmp511, label %if.end514, label %if.then513
376 if.then513:                                       ; preds = %lor.lhs.false501, %lor.lhs.false489, %lor.lhs.false477, %lor.lhs.false465, %lor.lhs.false453, %lor.lhs.false441, %lor.lhs.false429, %if.end418
377   call void @abort() noreturn nounwind
378   unreachable
380 if.end514:                                        ; preds = %lor.lhs.false501
381   %tmp519 = load i16* %arrayidx518, align 4
382   %conv520 = zext i16 %tmp519 to i32
383   %cmp523 = icmp eq i32 %conv520, %b8.0.lcssa
384   br i1 %cmp523, label %lor.lhs.false525, label %if.then537
386 lor.lhs.false525:                                 ; preds = %if.end514
387   %tmp531 = load i16* %arrayidx530, align 2
388   %cmp535 = icmp eq i16 %tmp531, %a0
389   br i1 %cmp535, label %if.end538, label %if.then537
391 if.then537:                                       ; preds = %lor.lhs.false525, %if.end514
392   call void @abort() noreturn nounwind
393   unreachable
395 if.end538:                                        ; preds = %lor.lhs.false525
396   br label %for.inc539
398 for.inc539:                                       ; preds = %if.end538
399   %indvar.next = add i64 %indvar, 1
400   br label %for.cond366
402 for.end542:                                       ; preds = %for.cond366
403   ret i32 0
406 declare void @abort() noreturn
408 define i32 @main() nounwind uwtable {
409 entry:
410   call void @check_vect()
411   %call = call i32 @main1(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)
412   ret i32 0
415 define internal void @check_vect() nounwind uwtable noinline {
416 entry:
417   %a = alloca i32, align 4
418   %b = alloca i32, align 4
419   %c = alloca i32, align 4
420   %d = alloca i32, align 4
421   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
422   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
423   %tobool = icmp eq i32 %call1, 0
424   br i1 %tobool, label %if.then, label %lor.lhs.false
426 lor.lhs.false:                                    ; preds = %entry
427   %tmp4 = load i32* %d, align 4
428   %and6 = and i32 %tmp4, 67108864
429   %cmp = icmp eq i32 %and6, 0
430   br i1 %cmp, label %if.then, label %if.end
432 if.then:                                          ; preds = %entry, %lor.lhs.false
433   call void @exit(i32 0) noreturn nounwind
434   unreachable
436 if.end:                                           ; preds = %lor.lhs.false
437   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
438   ret void
441 declare void (i32)* @signal(i32, void (i32)*) nounwind
443 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
444 entry:
445   call void @exit(i32 0) noreturn nounwind
446   unreachable
448 return:                                           ; No predecessors!
449   ret void
452 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
453 entry:
454   %and = and i32 %__level, -2147483648
455   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
456   %cmp = icmp ult i32 %call, %__level
457   br i1 %cmp, label %if.then, label %if.end
459 if.then:                                          ; preds = %entry
460   br label %return
462 if.end:                                           ; preds = %entry
463   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
464   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
465   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
466   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
467   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
468   store i32 %asmresult, i32* %__eax, align 4
469   store i32 %asmresult8, i32* %__ebx, align 4
470   store i32 %asmresult9, i32* %__ecx, align 4
471   store i32 %asmresult10, i32* %__edx, align 4
472   br label %return
474 return:                                           ; preds = %if.end, %if.then
475   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
476   ret i32 %retval.0
479 declare void @exit(i32) noreturn
481 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
482 entry:
483   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
484   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
485   %tobool = icmp eq i32* %__sig, null
486   br i1 %tobool, label %if.end, label %if.then
488 if.then:                                          ; preds = %entry
489   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
490   store i32 %asmresult1, i32* %__sig, align 4
491   br label %if.end
493 if.end:                                           ; preds = %entry, %if.then
494   ret i32 %asmresult
497 !0 = metadata !{i32 -2147341564, i32 -2147341556} 
498 !1 = metadata !{i32 -2147341687, i32 -2147341679} 
499 ; CHECK: define