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
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 {
12 %out = alloca [1024 x i16], align 16
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
35 for.inc: ; preds = %for.body
36 %indvar.next93 = add i64 %indvar92, 1
39 for.end: ; preds = %for.cond
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
80 if.end: ; preds = %lor.lhs.false47
83 for.inc57: ; preds = %if.end
84 %indvar.next86 = add i64 %indvar85, 1
87 for.end60: ; preds = %for.cond17
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
122 for.inc105: ; preds = %for.body65
123 %indvar.next74 = add i64 %indvar73, 1
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
195 if.end193: ; preds = %lor.lhs.false182
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
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
280 if.end285: ; preds = %lor.lhs.false274
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
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
405 if.end437: ; preds = %lor.lhs.false426
408 for.inc438: ; preds = %if.end437
409 %indvar.next = add i64 %indvar, 1
410 br label %for.cond343
412 for.end441: ; preds = %for.cond343
416 declare void @abort() noreturn
418 define i32 @main() nounwind uwtable {
420 call void @check_vect()
421 %call = call i32 @main1()
425 define internal void @check_vect() nounwind uwtable noinline {
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
446 if.end: ; preds = %lor.lhs.false
447 %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
451 declare void (i32)* @signal(i32, void (i32)*) nounwind
453 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
455 call void @exit(i32 0) noreturn nounwind
458 return: ; No predecessors!
462 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
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
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
484 return: ; preds = %if.end, %if.then
485 %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
489 declare void @exit(i32) noreturn
491 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
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
503 if.end: ; preds = %entry, %if.then
507 !0 = metadata !{i32 -2147341929, i32 -2147341921}
508 !1 = metadata !{i32 -2147342052, i32 -2147342044}