Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-1.ll
blob6c2119d8653539437e885535b29d026aca3437d4
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-1.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-1.s > slp-1.ll
6 ; ModuleID = 'slp-1.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   br label %for.cond
15 for.cond:                                         ; preds = %for.inc, %entry
16   %indvar92 = phi i64 [ %indvar.next93, %for.inc ], [ 0, %entry ]
17   %tmp95 = mul i64 %indvar92, 4
18   %tmp96 = add i64 %tmp95, 3
19   %arrayidx15 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp96
20   %tmp97 = add i64 %tmp95, 2
21   %arrayidx10 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp97
22   %tmp98 = add i64 %tmp95, 1
23   %arrayidx5 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp98
24   %arrayidx = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp95
25   %exitcond94 = icmp ne i64 %indvar92, 128
26   br i1 %exitcond94, label %for.body, label %for.end
28 for.body:                                         ; preds = %for.cond
29   store i16 8, i16* %arrayidx, align 8
30   store i16 18, i16* %arrayidx5, align 2
31   store i16 28, i16* %arrayidx10, align 4
32   store i16 38, i16* %arrayidx15, align 2
33   br label %for.inc
35 for.inc:                                          ; preds = %for.body
36   %indvar.next93 = add i64 %indvar92, 1
37   br label %for.cond
39 for.end:                                          ; preds = %for.cond
40   br label %for.cond17
42 for.cond17:                                       ; preds = %for.inc57, %for.end
43   %indvar85 = phi i64 [ %indvar.next86, %for.inc57 ], [ 0, %for.end ]
44   %tmp87 = mul i64 %indvar85, 4
45   %tmp88 = add i64 %tmp87, 3
46   %arrayidx52 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp88
47   %tmp89 = add i64 %tmp87, 2
48   %arrayidx42 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp89
49   %tmp90 = add i64 %tmp87, 1
50   %arrayidx32 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp90
51   %arrayidx24 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp87
52   %i.1 = trunc i64 %indvar85 to i32
53   %cmp19 = icmp slt i32 %i.1, 128
54   br i1 %cmp19, label %for.body20, label %for.end60
56 for.body20:                                       ; preds = %for.cond17
57   %tmp25 = load i16* %arrayidx24, align 8
58   %cmp26 = icmp eq i16 %tmp25, 8
59   br i1 %cmp26, label %lor.lhs.false, label %if.then
61 lor.lhs.false:                                    ; preds = %for.body20
62   %tmp33 = load i16* %arrayidx32, align 2
63   %cmp35 = icmp eq i16 %tmp33, 18
64   br i1 %cmp35, label %lor.lhs.false37, label %if.then
66 lor.lhs.false37:                                  ; preds = %lor.lhs.false
67   %tmp43 = load i16* %arrayidx42, align 4
68   %cmp45 = icmp eq i16 %tmp43, 28
69   br i1 %cmp45, label %lor.lhs.false47, label %if.then
71 lor.lhs.false47:                                  ; preds = %lor.lhs.false37
72   %tmp53 = load i16* %arrayidx52, align 2
73   %cmp55 = icmp eq i16 %tmp53, 38
74   br i1 %cmp55, label %if.end, label %if.then
76 if.then:                                          ; preds = %lor.lhs.false47, %lor.lhs.false37, %lor.lhs.false, %for.body20
77   call void @abort() noreturn nounwind
78   unreachable
80 if.end:                                           ; preds = %lor.lhs.false47
81   br label %for.inc57
83 for.inc57:                                        ; preds = %if.end
84   %indvar.next86 = add i64 %indvar85, 1
85   br label %for.cond17
87 for.end60:                                        ; preds = %for.cond17
88   br label %for.cond61
90 for.cond61:                                       ; preds = %for.inc105, %for.end60
91   %indvar73 = phi i64 [ %indvar.next74, %for.inc105 ], [ 0, %for.end60 ]
92   %tmp76 = mul i64 %indvar73, 8
93   %tmp77 = add i64 %tmp76, 7
94   %arrayidx104 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp77
95   %tmp78 = add i64 %tmp76, 6
96   %arrayidx99 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp78
97   %tmp79 = add i64 %tmp76, 5
98   %arrayidx94 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp79
99   %tmp80 = add i64 %tmp76, 4
100   %arrayidx89 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp80
101   %tmp81 = add i64 %tmp76, 3
102   %arrayidx84 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp81
103   %tmp82 = add i64 %tmp76, 2
104   %arrayidx79 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp82
105   %tmp83 = add i64 %tmp76, 1
106   %arrayidx74 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp83
107   %arrayidx69 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp76
108   %exitcond75 = icmp ne i64 %indvar73, 128
109   br i1 %exitcond75, label %for.body65, label %for.end108
111 for.body65:                                       ; preds = %for.cond61
112   store i16 8, i16* %arrayidx69, align 16
113   store i16 7, i16* %arrayidx74, align 2
114   store i16 81, i16* %arrayidx79, align 4
115   store i16 28, i16* %arrayidx84, align 2
116   store i16 18, i16* %arrayidx89, align 8
117   store i16 85, i16* %arrayidx94, align 2
118   store i16 5, i16* %arrayidx99, align 4
119   store i16 4, i16* %arrayidx104, align 2
120   br label %for.inc105
122 for.inc105:                                       ; preds = %for.body65
123   %indvar.next74 = add i64 %indvar73, 1
124   br label %for.cond61
126 for.end108:                                       ; preds = %for.cond61
127   br label %for.cond109
129 for.cond109:                                      ; preds = %for.inc194, %for.end108
130   %indvar62 = phi i64 [ %indvar.next63, %for.inc194 ], [ 0, %for.end108 ]
131   %tmp64 = mul i64 %indvar62, 8
132   %tmp65 = add i64 %tmp64, 7
133   %arrayidx187 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp65
134   %tmp66 = add i64 %tmp64, 6
135   %arrayidx177 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp66
136   %tmp67 = add i64 %tmp64, 5
137   %arrayidx167 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp67
138   %tmp68 = add i64 %tmp64, 4
139   %arrayidx157 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp68
140   %tmp69 = add i64 %tmp64, 3
141   %arrayidx147 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp69
142   %tmp70 = add i64 %tmp64, 2
143   %arrayidx137 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp70
144   %tmp71 = add i64 %tmp64, 1
145   %arrayidx127 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp71
146   %arrayidx117 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp64
147   %i.3 = trunc i64 %indvar62 to i32
148   %cmp111 = icmp slt i32 %i.3, 128
149   br i1 %cmp111, label %for.body113, label %for.end197
151 for.body113:                                      ; preds = %for.cond109
152   %tmp118 = load i16* %arrayidx117, align 16
153   %cmp120 = icmp eq i16 %tmp118, 8
154   br i1 %cmp120, label %lor.lhs.false122, label %if.then192
156 lor.lhs.false122:                                 ; preds = %for.body113
157   %tmp128 = load i16* %arrayidx127, align 2
158   %cmp130 = icmp eq i16 %tmp128, 7
159   br i1 %cmp130, label %lor.lhs.false132, label %if.then192
161 lor.lhs.false132:                                 ; preds = %lor.lhs.false122
162   %tmp138 = load i16* %arrayidx137, align 4
163   %cmp140 = icmp eq i16 %tmp138, 81
164   br i1 %cmp140, label %lor.lhs.false142, label %if.then192
166 lor.lhs.false142:                                 ; preds = %lor.lhs.false132
167   %tmp148 = load i16* %arrayidx147, align 2
168   %cmp150 = icmp eq i16 %tmp148, 28
169   br i1 %cmp150, label %lor.lhs.false152, label %if.then192
171 lor.lhs.false152:                                 ; preds = %lor.lhs.false142
172   %tmp158 = load i16* %arrayidx157, align 8
173   %cmp160 = icmp eq i16 %tmp158, 18
174   br i1 %cmp160, label %lor.lhs.false162, label %if.then192
176 lor.lhs.false162:                                 ; preds = %lor.lhs.false152
177   %tmp168 = load i16* %arrayidx167, align 2
178   %cmp170 = icmp eq i16 %tmp168, 85
179   br i1 %cmp170, label %lor.lhs.false172, label %if.then192
181 lor.lhs.false172:                                 ; preds = %lor.lhs.false162
182   %tmp178 = load i16* %arrayidx177, align 4
183   %cmp180 = icmp eq i16 %tmp178, 5
184   br i1 %cmp180, label %lor.lhs.false182, label %if.then192
186 lor.lhs.false182:                                 ; preds = %lor.lhs.false172
187   %tmp188 = load i16* %arrayidx187, align 2
188   %cmp190 = icmp eq i16 %tmp188, 4
189   br i1 %cmp190, label %if.end193, label %if.then192
191 if.then192:                                       ; preds = %lor.lhs.false182, %lor.lhs.false172, %lor.lhs.false162, %lor.lhs.false152, %lor.lhs.false142, %lor.lhs.false132, %lor.lhs.false122, %for.body113
192   call void @abort() noreturn nounwind
193   unreachable
195 if.end193:                                        ; preds = %lor.lhs.false182
196   br label %for.inc194
198 for.inc194:                                       ; preds = %if.end193
199   %indvar.next63 = add i64 %indvar62, 1
200   br label %for.cond109
202 for.end197:                                       ; preds = %for.cond109
203   br label %for.cond198
205 for.cond198:                                      ; preds = %for.inc227, %for.end197
206   %indvar53 = phi i64 [ %indvar.next54, %for.inc227 ], [ 0, %for.end197 ]
207   %tmp56 = mul i64 %indvar53, 5
208   %tmp57 = add i64 %tmp56, 4
209   %arrayidx226 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp57
210   %tmp58 = add i64 %tmp56, 3
211   %arrayidx221 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp58
212   %tmp59 = add i64 %tmp56, 2
213   %arrayidx216 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp59
214   %tmp60 = add i64 %tmp56, 1
215   %arrayidx211 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp60
216   %arrayidx206 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp56
217   %exitcond55 = icmp ne i64 %indvar53, 128
218   br i1 %exitcond55, label %for.body202, label %for.end230
220 for.body202:                                      ; preds = %for.cond198
221   store i16 8, i16* %arrayidx206, align 2
222   store i16 7, i16* %arrayidx211, align 2
223   store i16 81, i16* %arrayidx216, align 2
224   store i16 28, i16* %arrayidx221, align 2
225   store i16 18, i16* %arrayidx226, align 2
226   br label %for.inc227
228 for.inc227:                                       ; preds = %for.body202
229   %indvar.next54 = add i64 %indvar53, 1
230   br label %for.cond198
232 for.end230:                                       ; preds = %for.cond198
233   br label %for.cond231
235 for.cond231:                                      ; preds = %for.inc286, %for.end230
236   %indvar45 = phi i64 [ %indvar.next46, %for.inc286 ], [ 0, %for.end230 ]
237   %tmp47 = mul i64 %indvar45, 5
238   %tmp48 = add i64 %tmp47, 4
239   %arrayidx279 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp48
240   %tmp49 = add i64 %tmp47, 3
241   %arrayidx269 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp49
242   %tmp50 = add i64 %tmp47, 2
243   %arrayidx259 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp50
244   %tmp51 = add i64 %tmp47, 1
245   %arrayidx249 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp51
246   %arrayidx239 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp47
247   %i.5 = trunc i64 %indvar45 to i32
248   %cmp233 = icmp slt i32 %i.5, 128
249   br i1 %cmp233, label %for.body235, label %for.end289
251 for.body235:                                      ; preds = %for.cond231
252   %tmp240 = load i16* %arrayidx239, align 2
253   %cmp242 = icmp eq i16 %tmp240, 8
254   br i1 %cmp242, label %lor.lhs.false244, label %if.then284
256 lor.lhs.false244:                                 ; preds = %for.body235
257   %tmp250 = load i16* %arrayidx249, align 2
258   %cmp252 = icmp eq i16 %tmp250, 7
259   br i1 %cmp252, label %lor.lhs.false254, label %if.then284
261 lor.lhs.false254:                                 ; preds = %lor.lhs.false244
262   %tmp260 = load i16* %arrayidx259, align 2
263   %cmp262 = icmp eq i16 %tmp260, 81
264   br i1 %cmp262, label %lor.lhs.false264, label %if.then284
266 lor.lhs.false264:                                 ; preds = %lor.lhs.false254
267   %tmp270 = load i16* %arrayidx269, align 2
268   %cmp272 = icmp eq i16 %tmp270, 28
269   br i1 %cmp272, label %lor.lhs.false274, label %if.then284
271 lor.lhs.false274:                                 ; preds = %lor.lhs.false264
272   %tmp280 = load i16* %arrayidx279, align 2
273   %cmp282 = icmp eq i16 %tmp280, 18
274   br i1 %cmp282, label %if.end285, label %if.then284
276 if.then284:                                       ; preds = %lor.lhs.false274, %lor.lhs.false264, %lor.lhs.false254, %lor.lhs.false244, %for.body235
277   call void @abort() noreturn nounwind
278   unreachable
280 if.end285:                                        ; preds = %lor.lhs.false274
281   br label %for.inc286
283 for.inc286:                                       ; preds = %if.end285
284   %indvar.next46 = add i64 %indvar45, 1
285   br label %for.cond231
287 for.end289:                                       ; preds = %for.cond231
288   br label %for.cond290
290 for.cond290:                                      ; preds = %for.inc339, %for.end289
291   %indvar31 = phi i64 [ %indvar.next32, %for.inc339 ], [ 0, %for.end289 ]
292   %tmp34 = mul i64 %indvar31, 9
293   %tmp35 = add i64 %tmp34, 8
294   %arrayidx338 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp35
295   %tmp36 = add i64 %tmp34, 7
296   %arrayidx333 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp36
297   %tmp37 = add i64 %tmp34, 6
298   %arrayidx328 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp37
299   %tmp38 = add i64 %tmp34, 5
300   %arrayidx323 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp38
301   %tmp39 = add i64 %tmp34, 4
302   %arrayidx318 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp39
303   %tmp40 = add i64 %tmp34, 3
304   %arrayidx313 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp40
305   %tmp41 = add i64 %tmp34, 2
306   %arrayidx308 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp41
307   %tmp42 = add i64 %tmp34, 1
308   %arrayidx303 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp42
309   %arrayidx298 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp34
310   %exitcond = icmp ne i64 %indvar31, 64
311   br i1 %exitcond, label %for.body294, label %for.end342
313 for.body294:                                      ; preds = %for.cond290
314   store i16 8, i16* %arrayidx298, align 2
315   store i16 7, i16* %arrayidx303, align 2
316   store i16 81, i16* %arrayidx308, align 2
317   store i16 28, i16* %arrayidx313, align 2
318   store i16 18, i16* %arrayidx318, align 2
319   store i16 85, i16* %arrayidx323, align 2
320   store i16 5, i16* %arrayidx328, align 2
321   store i16 4, i16* %arrayidx333, align 2
322   store i16 14, i16* %arrayidx338, align 2
323   br label %for.inc339
325 for.inc339:                                       ; preds = %for.body294
326   %indvar.next32 = add i64 %indvar31, 1
327   br label %for.cond290
329 for.end342:                                       ; preds = %for.cond290
330   br label %for.cond343
332 for.cond343:                                      ; preds = %for.inc438, %for.end342
333   %indvar = phi i64 [ %indvar.next, %for.inc438 ], [ 0, %for.end342 ]
334   %tmp = mul i64 %indvar, 9
335   %tmp21 = add i64 %tmp, 8
336   %arrayidx431 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp21
337   %tmp22 = add i64 %tmp, 7
338   %arrayidx421 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp22
339   %tmp23 = add i64 %tmp, 6
340   %arrayidx411 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp23
341   %tmp24 = add i64 %tmp, 5
342   %arrayidx401 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp24
343   %tmp26 = add i64 %tmp, 4
344   %arrayidx391 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp26
345   %tmp27 = add i64 %tmp, 3
346   %arrayidx381 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp27
347   %tmp28 = add i64 %tmp, 2
348   %arrayidx371 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp28
349   %tmp29 = add i64 %tmp, 1
350   %arrayidx361 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp29
351   %arrayidx351 = getelementptr [1024 x i16]* %out, i64 0, i64 %tmp
352   %i.7 = trunc i64 %indvar to i32
353   %cmp345 = icmp slt i32 %i.7, 64
354   br i1 %cmp345, label %for.body347, label %for.end441
356 for.body347:                                      ; preds = %for.cond343
357   %tmp352 = load i16* %arrayidx351, align 2
358   %cmp354 = icmp eq i16 %tmp352, 8
359   br i1 %cmp354, label %lor.lhs.false356, label %if.then436
361 lor.lhs.false356:                                 ; preds = %for.body347
362   %tmp362 = load i16* %arrayidx361, align 2
363   %cmp364 = icmp eq i16 %tmp362, 7
364   br i1 %cmp364, label %lor.lhs.false366, label %if.then436
366 lor.lhs.false366:                                 ; preds = %lor.lhs.false356
367   %tmp372 = load i16* %arrayidx371, align 2
368   %cmp374 = icmp eq i16 %tmp372, 81
369   br i1 %cmp374, label %lor.lhs.false376, label %if.then436
371 lor.lhs.false376:                                 ; preds = %lor.lhs.false366
372   %tmp382 = load i16* %arrayidx381, align 2
373   %cmp384 = icmp eq i16 %tmp382, 28
374   br i1 %cmp384, label %lor.lhs.false386, label %if.then436
376 lor.lhs.false386:                                 ; preds = %lor.lhs.false376
377   %tmp392 = load i16* %arrayidx391, align 2
378   %cmp394 = icmp eq i16 %tmp392, 18
379   br i1 %cmp394, label %lor.lhs.false396, label %if.then436
381 lor.lhs.false396:                                 ; preds = %lor.lhs.false386
382   %tmp402 = load i16* %arrayidx401, align 2
383   %cmp404 = icmp eq i16 %tmp402, 85
384   br i1 %cmp404, label %lor.lhs.false406, label %if.then436
386 lor.lhs.false406:                                 ; preds = %lor.lhs.false396
387   %tmp412 = load i16* %arrayidx411, align 2
388   %cmp414 = icmp eq i16 %tmp412, 5
389   br i1 %cmp414, label %lor.lhs.false416, label %if.then436
391 lor.lhs.false416:                                 ; preds = %lor.lhs.false406
392   %tmp422 = load i16* %arrayidx421, align 2
393   %cmp424 = icmp eq i16 %tmp422, 4
394   br i1 %cmp424, label %lor.lhs.false426, label %if.then436
396 lor.lhs.false426:                                 ; preds = %lor.lhs.false416
397   %tmp432 = load i16* %arrayidx431, align 2
398   %cmp434 = icmp eq i16 %tmp432, 14
399   br i1 %cmp434, label %if.end437, label %if.then436
401 if.then436:                                       ; preds = %lor.lhs.false426, %lor.lhs.false416, %lor.lhs.false406, %lor.lhs.false396, %lor.lhs.false386, %lor.lhs.false376, %lor.lhs.false366, %lor.lhs.false356, %for.body347
402   call void @abort() noreturn nounwind
403   unreachable
405 if.end437:                                        ; preds = %lor.lhs.false426
406   br label %for.inc438
408 for.inc438:                                       ; preds = %if.end437
409   %indvar.next = add i64 %indvar, 1
410   br label %for.cond343
412 for.end441:                                       ; preds = %for.cond343
413   ret i32 0
416 declare void @abort() noreturn
418 define i32 @main() nounwind uwtable {
419 entry:
420   call void @check_vect()
421   %call = call i32 @main1()
422   ret i32 0
425 define internal void @check_vect() nounwind uwtable noinline {
426 entry:
427   %a = alloca i32, align 4
428   %b = alloca i32, align 4
429   %c = alloca i32, align 4
430   %d = alloca i32, align 4
431   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
432   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
433   %tobool = icmp eq i32 %call1, 0
434   br i1 %tobool, label %if.then, label %lor.lhs.false
436 lor.lhs.false:                                    ; preds = %entry
437   %tmp4 = load i32* %d, align 4
438   %and6 = and i32 %tmp4, 67108864
439   %cmp = icmp eq i32 %and6, 0
440   br i1 %cmp, label %if.then, label %if.end
442 if.then:                                          ; preds = %entry, %lor.lhs.false
443   call void @exit(i32 0) noreturn nounwind
444   unreachable
446 if.end:                                           ; preds = %lor.lhs.false
447   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
448   ret void
451 declare void (i32)* @signal(i32, void (i32)*) nounwind
453 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
454 entry:
455   call void @exit(i32 0) noreturn nounwind
456   unreachable
458 return:                                           ; No predecessors!
459   ret void
462 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
463 entry:
464   %and = and i32 %__level, -2147483648
465   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
466   %cmp = icmp ult i32 %call, %__level
467   br i1 %cmp, label %if.then, label %if.end
469 if.then:                                          ; preds = %entry
470   br label %return
472 if.end:                                           ; preds = %entry
473   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
474   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
475   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
476   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
477   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
478   store i32 %asmresult, i32* %__eax, align 4
479   store i32 %asmresult8, i32* %__ebx, align 4
480   store i32 %asmresult9, i32* %__ecx, align 4
481   store i32 %asmresult10, i32* %__edx, align 4
482   br label %return
484 return:                                           ; preds = %if.end, %if.then
485   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
486   ret i32 %retval.0
489 declare void @exit(i32) noreturn
491 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
492 entry:
493   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
494   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
495   %tobool = icmp eq i32* %__sig, null
496   br i1 %tobool, label %if.end, label %if.then
498 if.then:                                          ; preds = %entry
499   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
500   store i32 %asmresult1, i32* %__sig, align 4
501   br label %if.end
503 if.end:                                           ; preds = %entry, %if.then
504   ret i32 %asmresult
507 !0 = metadata !{i32 -2147341929, i32 -2147341921} 
508 !1 = metadata !{i32 -2147342052, i32 -2147342044} 
509 ; CHECK: define