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-19c.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-19c.s > slp-19c.ll
6 ; ModuleID = 'slp-19c.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 @main1.in = internal unnamed_addr constant [128 x i32] [i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63], align 16
12 define i32 @main1() nounwind uwtable {
14 %out = alloca [128 x i32], align 16
15 %in = alloca [128 x i32], align 16
16 %ia = alloca [32 x i32], align 16
17 %tmp = bitcast [128 x i32]* %in to i8*
18 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp, i8* bitcast ([128 x i32]* @main1.in to i8*), i64 512, i32 16, i1 false)
21 for.cond: ; preds = %for.inc, %entry
22 %indvar52 = phi i64 [ %indvar.next53, %for.inc ], [ 0, %entry ]
23 %arrayidx141 = getelementptr [32 x i32]* %ia, i64 0, i64 %indvar52
24 %tmp55 = mul i64 %indvar52, 12
25 %tmp56 = add i64 %tmp55, 7
26 %arrayidx82 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp56
27 %tmp57 = add i64 %tmp55, 11
28 %arrayidx132 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp57
29 %arrayidx126 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp57
30 %tmp58 = add i64 %tmp55, 10
31 %arrayidx121 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp58
32 %arrayidx115 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp58
33 %tmp59 = add i64 %tmp55, 9
34 %arrayidx110 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp59
35 %arrayidx104 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp59
36 %tmp60 = add i64 %tmp55, 8
37 %arrayidx99 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp60
38 %arrayidx93 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp60
39 %arrayidx88 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp56
40 %tmp62 = add i64 %tmp55, 6
41 %arrayidx77 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp62
42 %arrayidx71 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp62
43 %tmp63 = add i64 %tmp55, 5
44 %arrayidx66 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp63
45 %arrayidx60 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp63
46 %tmp64 = add i64 %tmp55, 4
47 %arrayidx55 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp64
48 %arrayidx49 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp64
49 %tmp65 = add i64 %tmp55, 3
50 %arrayidx44 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp65
51 %arrayidx38 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp65
52 %tmp66 = add i64 %tmp55, 2
53 %arrayidx33 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp66
54 %arrayidx27 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp66
55 %tmp67 = add i64 %tmp55, 1
56 %arrayidx22 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp67
57 %arrayidx16 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp67
58 %arrayidx12 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp55
59 %arrayidx = getelementptr [128 x i32]* %in, i64 0, i64 %tmp55
60 %exitcond54 = icmp ne i64 %indvar52, 8
61 br i1 %exitcond54, label %for.body, label %for.end
63 for.body: ; preds = %for.cond
64 %tmp8 = load i32* %arrayidx, align 16
65 store i32 %tmp8, i32* %arrayidx12, align 16
66 %tmp17 = load i32* %arrayidx16, align 4
67 store i32 %tmp17, i32* %arrayidx22, align 4
68 %tmp28 = load i32* %arrayidx27, align 8
69 store i32 %tmp28, i32* %arrayidx33, align 8
70 %tmp39 = load i32* %arrayidx38, align 4
71 store i32 %tmp39, i32* %arrayidx44, align 4
72 %tmp50 = load i32* %arrayidx49, align 16
73 store i32 %tmp50, i32* %arrayidx55, align 16
74 %tmp61 = load i32* %arrayidx60, align 4
75 store i32 %tmp61, i32* %arrayidx66, align 4
76 %tmp72 = load i32* %arrayidx71, align 8
77 store i32 %tmp72, i32* %arrayidx77, align 8
78 %tmp83 = load i32* %arrayidx82, align 4
79 store i32 %tmp83, i32* %arrayidx88, align 4
80 %tmp94 = load i32* %arrayidx93, align 16
81 store i32 %tmp94, i32* %arrayidx99, align 16
82 %tmp105 = load i32* %arrayidx104, align 4
83 store i32 %tmp105, i32* %arrayidx110, align 4
84 %tmp116 = load i32* %arrayidx115, align 8
85 store i32 %tmp116, i32* %arrayidx121, align 8
86 %tmp127 = load i32* %arrayidx126, align 4
87 store i32 %tmp127, i32* %arrayidx132, align 4
88 %tmp138 = load i32* %arrayidx82, align 4
89 store i32 %tmp138, i32* %arrayidx141, align 4
92 for.inc: ; preds = %for.body
93 %indvar.next53 = add i64 %indvar52, 1
96 for.end: ; preds = %for.cond
99 for.cond143: ; preds = %for.inc323, %for.end
100 %indvar35 = phi i64 [ %indvar.next36, %for.inc323 ], [ 0, %for.end ]
101 %tmp37 = mul i64 %indvar35, 12
102 %tmp38 = add i64 %tmp37, 7
103 %arrayidx252 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp38
104 %arrayidx314 = getelementptr [32 x i32]* %ia, i64 0, i64 %indvar35
105 %tmp40 = add i64 %tmp37, 11
106 %arrayidx308 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp40
107 %arrayidx302 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp40
108 %tmp41 = add i64 %tmp37, 10
109 %arrayidx294 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp41
110 %arrayidx288 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp41
111 %tmp42 = add i64 %tmp37, 9
112 %arrayidx280 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp42
113 %arrayidx274 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp42
114 %tmp43 = add i64 %tmp37, 8
115 %arrayidx266 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp43
116 %arrayidx260 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp43
117 %arrayidx246 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp38
118 %tmp44 = add i64 %tmp37, 6
119 %arrayidx238 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp44
120 %arrayidx232 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp44
121 %tmp45 = add i64 %tmp37, 5
122 %arrayidx224 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp45
123 %arrayidx218 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp45
124 %tmp46 = add i64 %tmp37, 4
125 %arrayidx210 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp46
126 %arrayidx204 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp46
127 %tmp47 = add i64 %tmp37, 3
128 %arrayidx196 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp47
129 %arrayidx190 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp47
130 %tmp48 = add i64 %tmp37, 2
131 %arrayidx182 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp48
132 %arrayidx176 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp48
133 %tmp49 = add i64 %tmp37, 1
134 %arrayidx168 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp49
135 %arrayidx162 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp49
136 %arrayidx155 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp37
137 %arrayidx150 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp37
138 %i.1 = trunc i64 %indvar35 to i32
139 %cmp145 = icmp ult i32 %i.1, 8
140 br i1 %cmp145, label %for.body146, label %for.end326
142 for.body146: ; preds = %for.cond143
143 %tmp151 = load i32* %arrayidx150, align 16
144 %tmp156 = load i32* %arrayidx155, align 16
145 %cmp157 = icmp eq i32 %tmp151, %tmp156
146 br i1 %cmp157, label %lor.lhs.false, label %if.then
148 lor.lhs.false: ; preds = %for.body146
149 %tmp163 = load i32* %arrayidx162, align 4
150 %tmp169 = load i32* %arrayidx168, align 4
151 %cmp170 = icmp eq i32 %tmp163, %tmp169
152 br i1 %cmp170, label %lor.lhs.false171, label %if.then
154 lor.lhs.false171: ; preds = %lor.lhs.false
155 %tmp177 = load i32* %arrayidx176, align 8
156 %tmp183 = load i32* %arrayidx182, align 8
157 %cmp184 = icmp eq i32 %tmp177, %tmp183
158 br i1 %cmp184, label %lor.lhs.false185, label %if.then
160 lor.lhs.false185: ; preds = %lor.lhs.false171
161 %tmp191 = load i32* %arrayidx190, align 4
162 %tmp197 = load i32* %arrayidx196, align 4
163 %cmp198 = icmp eq i32 %tmp191, %tmp197
164 br i1 %cmp198, label %lor.lhs.false199, label %if.then
166 lor.lhs.false199: ; preds = %lor.lhs.false185
167 %tmp205 = load i32* %arrayidx204, align 16
168 %tmp211 = load i32* %arrayidx210, align 16
169 %cmp212 = icmp eq i32 %tmp205, %tmp211
170 br i1 %cmp212, label %lor.lhs.false213, label %if.then
172 lor.lhs.false213: ; preds = %lor.lhs.false199
173 %tmp219 = load i32* %arrayidx218, align 4
174 %tmp225 = load i32* %arrayidx224, align 4
175 %cmp226 = icmp eq i32 %tmp219, %tmp225
176 br i1 %cmp226, label %lor.lhs.false227, label %if.then
178 lor.lhs.false227: ; preds = %lor.lhs.false213
179 %tmp233 = load i32* %arrayidx232, align 8
180 %tmp239 = load i32* %arrayidx238, align 8
181 %cmp240 = icmp eq i32 %tmp233, %tmp239
182 br i1 %cmp240, label %lor.lhs.false241, label %if.then
184 lor.lhs.false241: ; preds = %lor.lhs.false227
185 %tmp247 = load i32* %arrayidx246, align 4
186 %tmp253 = load i32* %arrayidx252, align 4
187 %cmp254 = icmp eq i32 %tmp247, %tmp253
188 br i1 %cmp254, label %lor.lhs.false255, label %if.then
190 lor.lhs.false255: ; preds = %lor.lhs.false241
191 %tmp261 = load i32* %arrayidx260, align 16
192 %tmp267 = load i32* %arrayidx266, align 16
193 %cmp268 = icmp eq i32 %tmp261, %tmp267
194 br i1 %cmp268, label %lor.lhs.false269, label %if.then
196 lor.lhs.false269: ; preds = %lor.lhs.false255
197 %tmp275 = load i32* %arrayidx274, align 4
198 %tmp281 = load i32* %arrayidx280, align 4
199 %cmp282 = icmp eq i32 %tmp275, %tmp281
200 br i1 %cmp282, label %lor.lhs.false283, label %if.then
202 lor.lhs.false283: ; preds = %lor.lhs.false269
203 %tmp289 = load i32* %arrayidx288, align 8
204 %tmp295 = load i32* %arrayidx294, align 8
205 %cmp296 = icmp eq i32 %tmp289, %tmp295
206 br i1 %cmp296, label %lor.lhs.false297, label %if.then
208 lor.lhs.false297: ; preds = %lor.lhs.false283
209 %tmp303 = load i32* %arrayidx302, align 4
210 %tmp309 = load i32* %arrayidx308, align 4
211 %cmp310 = icmp eq i32 %tmp303, %tmp309
212 br i1 %cmp310, label %lor.lhs.false311, label %if.then
214 lor.lhs.false311: ; preds = %lor.lhs.false297
215 %tmp315 = load i32* %arrayidx314, align 4
216 %tmp321 = load i32* %arrayidx252, align 4
217 %cmp322 = icmp eq i32 %tmp315, %tmp321
218 br i1 %cmp322, label %if.end, label %if.then
220 if.then: ; preds = %lor.lhs.false311, %lor.lhs.false297, %lor.lhs.false283, %lor.lhs.false269, %lor.lhs.false255, %lor.lhs.false241, %lor.lhs.false227, %lor.lhs.false213, %lor.lhs.false199, %lor.lhs.false185, %lor.lhs.false171, %lor.lhs.false, %for.body146
221 call void @abort() noreturn nounwind
224 if.end: ; preds = %lor.lhs.false311
227 for.inc323: ; preds = %if.end
228 %indvar.next36 = add i64 %indvar35, 1
229 br label %for.cond143
231 for.end326: ; preds = %for.cond143
232 br label %for.cond327
234 for.cond327: ; preds = %for.inc399, %for.end326
235 %indvar25 = phi i64 [ %indvar.next26, %for.inc399 ], [ 0, %for.end326 ]
236 %arrayidx398 = getelementptr [32 x i32]* %ia, i64 0, i64 %indvar25
237 %i.2 = trunc i64 %indvar25 to i32
238 %tmp29 = mul i64 %indvar25, 6
239 %tmp30 = add i64 %tmp29, 5
240 %arrayidx394 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp30
241 %arrayidx388 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp30
242 %tmp31 = add i64 %tmp29, 4
243 %arrayidx383 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp31
244 %arrayidx377 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp31
245 %tmp32 = add i64 %tmp29, 3
246 %arrayidx372 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp32
247 %arrayidx366 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp32
248 %tmp33 = add i64 %tmp29, 2
249 %arrayidx361 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp33
250 %arrayidx355 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp33
251 %tmp34 = add i64 %tmp29, 1
252 %arrayidx350 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp34
253 %arrayidx344 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp34
254 %arrayidx339 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp29
255 %arrayidx334 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp29
256 %exitcond = icmp ne i64 %indvar25, 16
257 br i1 %exitcond, label %for.body330, label %for.end402
259 for.body330: ; preds = %for.cond327
260 %tmp335 = load i32* %arrayidx334, align 8
261 store i32 %tmp335, i32* %arrayidx339, align 8
262 %tmp345 = load i32* %arrayidx344, align 4
263 store i32 %tmp345, i32* %arrayidx350, align 4
264 %tmp356 = load i32* %arrayidx355, align 8
265 store i32 %tmp356, i32* %arrayidx361, align 8
266 %tmp367 = load i32* %arrayidx366, align 4
267 store i32 %tmp367, i32* %arrayidx372, align 4
268 %tmp378 = load i32* %arrayidx377, align 8
269 store i32 %tmp378, i32* %arrayidx383, align 8
270 %tmp389 = load i32* %arrayidx388, align 4
271 store i32 %tmp389, i32* %arrayidx394, align 4
272 store i32 %i.2, i32* %arrayidx398, align 4
275 for.inc399: ; preds = %for.body330
276 %indvar.next26 = add i64 %indvar25, 1
277 br label %for.cond327
279 for.end402: ; preds = %for.cond327
280 br label %for.cond403
282 for.cond403: ; preds = %for.inc497, %for.end402
283 %indvar = phi i64 [ %indvar.next, %for.inc497 ], [ 0, %for.end402 ]
284 %i.3 = trunc i64 %indvar to i32
285 %arrayidx491 = getelementptr [32 x i32]* %ia, i64 0, i64 %indvar
286 %tmp19 = mul i64 %indvar, 6
287 %tmp20 = add i64 %tmp19, 5
288 %arrayidx485 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp20
289 %arrayidx479 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp20
290 %tmp21 = add i64 %tmp19, 4
291 %arrayidx471 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp21
292 %arrayidx465 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp21
293 %tmp22 = add i64 %tmp19, 3
294 %arrayidx457 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp22
295 %arrayidx451 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp22
296 %tmp23 = add i64 %tmp19, 2
297 %arrayidx443 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp23
298 %arrayidx437 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp23
299 %tmp24 = add i64 %tmp19, 1
300 %arrayidx429 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp24
301 %arrayidx423 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp24
302 %arrayidx415 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp19
303 %arrayidx410 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp19
304 %cmp405 = icmp ult i32 %i.3, 8
305 br i1 %cmp405, label %for.body406, label %for.end500
307 for.body406: ; preds = %for.cond403
308 %tmp411 = load i32* %arrayidx410, align 8
309 %tmp416 = load i32* %arrayidx415, align 8
310 %cmp417 = icmp eq i32 %tmp411, %tmp416
311 br i1 %cmp417, label %lor.lhs.false418, label %if.then495
313 lor.lhs.false418: ; preds = %for.body406
314 %tmp424 = load i32* %arrayidx423, align 4
315 %tmp430 = load i32* %arrayidx429, align 4
316 %cmp431 = icmp eq i32 %tmp424, %tmp430
317 br i1 %cmp431, label %lor.lhs.false432, label %if.then495
319 lor.lhs.false432: ; preds = %lor.lhs.false418
320 %tmp438 = load i32* %arrayidx437, align 8
321 %tmp444 = load i32* %arrayidx443, align 8
322 %cmp445 = icmp eq i32 %tmp438, %tmp444
323 br i1 %cmp445, label %lor.lhs.false446, label %if.then495
325 lor.lhs.false446: ; preds = %lor.lhs.false432
326 %tmp452 = load i32* %arrayidx451, align 4
327 %tmp458 = load i32* %arrayidx457, align 4
328 %cmp459 = icmp eq i32 %tmp452, %tmp458
329 br i1 %cmp459, label %lor.lhs.false460, label %if.then495
331 lor.lhs.false460: ; preds = %lor.lhs.false446
332 %tmp466 = load i32* %arrayidx465, align 8
333 %tmp472 = load i32* %arrayidx471, align 8
334 %cmp473 = icmp eq i32 %tmp466, %tmp472
335 br i1 %cmp473, label %lor.lhs.false474, label %if.then495
337 lor.lhs.false474: ; preds = %lor.lhs.false460
338 %tmp480 = load i32* %arrayidx479, align 4
339 %tmp486 = load i32* %arrayidx485, align 4
340 %cmp487 = icmp eq i32 %tmp480, %tmp486
341 br i1 %cmp487, label %lor.lhs.false488, label %if.then495
343 lor.lhs.false488: ; preds = %lor.lhs.false474
344 %tmp492 = load i32* %arrayidx491, align 4
345 %cmp494 = icmp eq i32 %tmp492, %i.3
346 br i1 %cmp494, label %if.end496, label %if.then495
348 if.then495: ; preds = %lor.lhs.false488, %lor.lhs.false474, %lor.lhs.false460, %lor.lhs.false446, %lor.lhs.false432, %lor.lhs.false418, %for.body406
349 call void @abort() noreturn nounwind
352 if.end496: ; preds = %lor.lhs.false488
355 for.inc497: ; preds = %if.end496
356 %indvar.next = add i64 %indvar, 1
357 br label %for.cond403
359 for.end500: ; preds = %for.cond403
363 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
365 declare void @abort() noreturn
367 define i32 @main() nounwind uwtable {
369 call void @check_vect()
370 %call = call i32 @main1()
374 define internal void @check_vect() nounwind uwtable noinline {
376 %a = alloca i32, align 4
377 %b = alloca i32, align 4
378 %c = alloca i32, align 4
379 %d = alloca i32, align 4
380 %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
381 %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
382 %tobool = icmp eq i32 %call1, 0
383 br i1 %tobool, label %if.then, label %lor.lhs.false
385 lor.lhs.false: ; preds = %entry
386 %tmp4 = load i32* %d, align 4
387 %and6 = and i32 %tmp4, 67108864
388 %cmp = icmp eq i32 %and6, 0
389 br i1 %cmp, label %if.then, label %if.end
391 if.then: ; preds = %entry, %lor.lhs.false
392 call void @exit(i32 0) noreturn nounwind
395 if.end: ; preds = %lor.lhs.false
396 %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
400 declare void (i32)* @signal(i32, void (i32)*) nounwind
402 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
404 call void @exit(i32 0) noreturn nounwind
407 return: ; No predecessors!
411 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
413 %and = and i32 %__level, -2147483648
414 %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
415 %cmp = icmp ult i32 %call, %__level
416 br i1 %cmp, label %if.then, label %if.end
418 if.then: ; preds = %entry
421 if.end: ; preds = %entry
422 %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
423 %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
424 %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
425 %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
426 %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
427 store i32 %asmresult, i32* %__eax, align 4
428 store i32 %asmresult8, i32* %__ebx, align 4
429 store i32 %asmresult9, i32* %__ecx, align 4
430 store i32 %asmresult10, i32* %__edx, align 4
433 return: ; preds = %if.end, %if.then
434 %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
438 declare void @exit(i32) noreturn
440 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
442 %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
443 %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
444 %tobool = icmp eq i32* %__sig, null
445 br i1 %tobool, label %if.end, label %if.then
447 if.then: ; preds = %entry
448 %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
449 store i32 %asmresult1, i32* %__sig, align 4
452 if.end: ; preds = %entry, %if.then
456 !0 = metadata !{i32 -2147341601, i32 -2147341593}
457 !1 = metadata !{i32 -2147341724, i32 -2147341716}