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-5.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-5.s > slp-5.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 @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 [16 x i16], align 16
17 %ib = alloca [32 x i32], align 16
18 %tmp = bitcast [128 x i32]* %in to i8*
19 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp, i8* bitcast ([128 x i32]* @main1.in to i8*), i64 512, i32 16, i1 false)
22 for.cond: ; preds = %for.inc, %entry
23 %indvar170 = phi i64 [ %indvar.next171, %for.inc ], [ 0, %entry ]
24 %tmp173 = mul i64 %indvar170, 8
25 %tmp174 = add i64 %tmp173, 7
26 %arrayidx85 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp174
27 %arrayidx79 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp174
28 %tmp175 = add i64 %tmp173, 6
29 %arrayidx74 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp175
30 %arrayidx68 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp175
31 %tmp176 = add i64 %tmp173, 5
32 %arrayidx63 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp176
33 %arrayidx57 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp176
34 %tmp177 = add i64 %tmp173, 4
35 %arrayidx52 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp177
36 %arrayidx46 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp177
37 %tmp178 = add i64 %tmp173, 3
38 %arrayidx41 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp178
39 %arrayidx35 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp178
40 %tmp179 = add i64 %tmp173, 2
41 %arrayidx30 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp179
42 %arrayidx24 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp179
43 %tmp181 = add i64 %tmp173, 1
44 %arrayidx19 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp181
45 %arrayidx13 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp181
46 %arrayidx9 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp173
47 %arrayidx = getelementptr [128 x i32]* %in, i64 0, i64 %tmp173
48 %arrayidx88 = getelementptr [16 x i16]* %ia, i64 0, i64 %indvar170
49 %exitcond172 = icmp ne i64 %indvar170, 16
50 br i1 %exitcond172, label %for.body, label %for.end
52 for.body: ; preds = %for.cond
53 %tmp5 = load i32* %arrayidx, align 16
54 store i32 %tmp5, i32* %arrayidx9, align 16
55 %tmp14 = load i32* %arrayidx13, align 4
56 store i32 %tmp14, i32* %arrayidx19, align 4
57 %tmp25 = load i32* %arrayidx24, align 8
58 store i32 %tmp25, i32* %arrayidx30, align 8
59 %tmp36 = load i32* %arrayidx35, align 4
60 store i32 %tmp36, i32* %arrayidx41, align 4
61 %tmp47 = load i32* %arrayidx46, align 16
62 store i32 %tmp47, i32* %arrayidx52, align 16
63 %tmp58 = load i32* %arrayidx57, align 4
64 store i32 %tmp58, i32* %arrayidx63, align 4
65 %tmp69 = load i32* %arrayidx68, align 8
66 store i32 %tmp69, i32* %arrayidx74, align 8
67 %tmp80 = load i32* %arrayidx79, align 4
68 store i32 %tmp80, i32* %arrayidx85, align 4
69 store i16 7, i16* %arrayidx88, align 2
72 for.inc: ; preds = %for.body
73 %indvar.next171 = add i64 %indvar170, 1
76 for.end: ; preds = %for.cond
79 for.cond90: ; preds = %for.inc209, %for.end
80 %indvar158 = phi i64 [ %indvar.next159, %for.inc209 ], [ 0, %for.end ]
81 %tmp160 = mul i64 %indvar158, 8
82 %tmp161 = add i64 %tmp160, 7
83 %arrayidx199 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp161
84 %arrayidx193 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp161
85 %tmp162 = add i64 %tmp160, 6
86 %arrayidx185 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp162
87 %arrayidx179 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp162
88 %tmp163 = add i64 %tmp160, 5
89 %arrayidx171 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp163
90 %arrayidx165 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp163
91 %tmp164 = add i64 %tmp160, 4
92 %arrayidx157 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp164
93 %arrayidx151 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp164
94 %tmp165 = add i64 %tmp160, 3
95 %arrayidx143 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp165
96 %arrayidx137 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp165
97 %tmp167 = add i64 %tmp160, 2
98 %arrayidx129 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp167
99 %arrayidx123 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp167
100 %tmp168 = add i64 %tmp160, 1
101 %arrayidx115 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp168
102 %arrayidx109 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp168
103 %arrayidx102 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp160
104 %arrayidx97 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp160
105 %arrayidx205 = getelementptr [16 x i16]* %ia, i64 0, i64 %indvar158
106 %i.1 = trunc i64 %indvar158 to i32
107 %cmp92 = icmp slt i32 %i.1, 16
108 br i1 %cmp92, label %for.body93, label %for.end212
110 for.body93: ; preds = %for.cond90
111 %tmp98 = load i32* %arrayidx97, align 16
112 %tmp103 = load i32* %arrayidx102, align 16
113 %cmp104 = icmp eq i32 %tmp98, %tmp103
114 br i1 %cmp104, label %lor.lhs.false, label %if.then
116 lor.lhs.false: ; preds = %for.body93
117 %tmp110 = load i32* %arrayidx109, align 4
118 %tmp116 = load i32* %arrayidx115, align 4
119 %cmp117 = icmp eq i32 %tmp110, %tmp116
120 br i1 %cmp117, label %lor.lhs.false118, label %if.then
122 lor.lhs.false118: ; preds = %lor.lhs.false
123 %tmp124 = load i32* %arrayidx123, align 8
124 %tmp130 = load i32* %arrayidx129, align 8
125 %cmp131 = icmp eq i32 %tmp124, %tmp130
126 br i1 %cmp131, label %lor.lhs.false132, label %if.then
128 lor.lhs.false132: ; preds = %lor.lhs.false118
129 %tmp138 = load i32* %arrayidx137, align 4
130 %tmp144 = load i32* %arrayidx143, align 4
131 %cmp145 = icmp eq i32 %tmp138, %tmp144
132 br i1 %cmp145, label %lor.lhs.false146, label %if.then
134 lor.lhs.false146: ; preds = %lor.lhs.false132
135 %tmp152 = load i32* %arrayidx151, align 16
136 %tmp158 = load i32* %arrayidx157, align 16
137 %cmp159 = icmp eq i32 %tmp152, %tmp158
138 br i1 %cmp159, label %lor.lhs.false160, label %if.then
140 lor.lhs.false160: ; preds = %lor.lhs.false146
141 %tmp166 = load i32* %arrayidx165, align 4
142 %tmp172 = load i32* %arrayidx171, align 4
143 %cmp173 = icmp eq i32 %tmp166, %tmp172
144 br i1 %cmp173, label %lor.lhs.false174, label %if.then
146 lor.lhs.false174: ; preds = %lor.lhs.false160
147 %tmp180 = load i32* %arrayidx179, align 8
148 %tmp186 = load i32* %arrayidx185, align 8
149 %cmp187 = icmp eq i32 %tmp180, %tmp186
150 br i1 %cmp187, label %lor.lhs.false188, label %if.then
152 lor.lhs.false188: ; preds = %lor.lhs.false174
153 %tmp194 = load i32* %arrayidx193, align 4
154 %tmp200 = load i32* %arrayidx199, align 4
155 %cmp201 = icmp eq i32 %tmp194, %tmp200
156 br i1 %cmp201, label %lor.lhs.false202, label %if.then
158 lor.lhs.false202: ; preds = %lor.lhs.false188
159 %tmp206 = load i16* %arrayidx205, align 2
160 %cmp207 = icmp eq i16 %tmp206, 7
161 br i1 %cmp207, label %if.end, label %if.then
163 if.then: ; preds = %lor.lhs.false202, %lor.lhs.false188, %lor.lhs.false174, %lor.lhs.false160, %lor.lhs.false146, %lor.lhs.false132, %lor.lhs.false118, %lor.lhs.false, %for.body93
164 call void @abort() noreturn nounwind
167 if.end: ; preds = %lor.lhs.false202
170 for.inc209: ; preds = %if.end
171 %indvar.next159 = add i64 %indvar158, 1
174 for.end212: ; preds = %for.cond90
175 br label %for.cond213
177 for.cond213: ; preds = %for.inc263, %for.end212
178 %indvar150 = phi i64 [ %indvar.next151, %for.inc263 ], [ 0, %for.end212 ]
179 %tmp153 = mul i64 %indvar150, 4
180 %tmp154 = add i64 %tmp153, 3
181 %arrayidx259 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp154
182 %arrayidx253 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp154
183 %tmp155 = add i64 %tmp153, 2
184 %arrayidx248 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp155
185 %arrayidx242 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp155
186 %tmp156 = add i64 %tmp153, 1
187 %arrayidx237 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp156
188 %arrayidx231 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp156
189 %arrayidx226 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp153
190 %arrayidx221 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp153
191 %arrayidx262 = getelementptr [32 x i32]* %ib, i64 0, i64 %indvar150
192 %exitcond152 = icmp ne i64 %indvar150, 32
193 br i1 %exitcond152, label %for.body217, label %for.end266
195 for.body217: ; preds = %for.cond213
196 %tmp222 = load i32* %arrayidx221, align 16
197 store i32 %tmp222, i32* %arrayidx226, align 16
198 %tmp232 = load i32* %arrayidx231, align 4
199 store i32 %tmp232, i32* %arrayidx237, align 4
200 %tmp243 = load i32* %arrayidx242, align 8
201 store i32 %tmp243, i32* %arrayidx248, align 8
202 %tmp254 = load i32* %arrayidx253, align 4
203 store i32 %tmp254, i32* %arrayidx259, align 4
204 store i32 12, i32* %arrayidx262, align 4
207 for.inc263: ; preds = %for.body217
208 %indvar.next151 = add i64 %indvar150, 1
209 br label %for.cond213
211 for.end266: ; preds = %for.cond213
212 br label %for.cond267
214 for.cond267: ; preds = %for.inc338, %for.end266
215 %indvar143 = phi i64 [ %indvar.next144, %for.inc338 ], [ 0, %for.end266 ]
216 %tmp145 = mul i64 %indvar143, 4
217 %tmp146 = add i64 %tmp145, 3
218 %arrayidx325 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp146
219 %arrayidx319 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp146
220 %tmp147 = add i64 %tmp145, 2
221 %arrayidx310 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp147
222 %arrayidx304 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp147
223 %tmp148 = add i64 %tmp145, 1
224 %arrayidx295 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp148
225 %arrayidx289 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp148
226 %arrayidx280 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp145
227 %arrayidx275 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp145
228 %arrayidx332 = getelementptr [32 x i32]* %ib, i64 0, i64 %indvar143
229 %i.3 = trunc i64 %indvar143 to i32
230 %cmp269 = icmp slt i32 %i.3, 32
231 br i1 %cmp269, label %for.body271, label %for.end341
233 for.body271: ; preds = %for.cond267
234 %tmp276 = load i32* %arrayidx275, align 16
235 %tmp281 = load i32* %arrayidx280, align 16
236 %cmp282 = icmp eq i32 %tmp276, %tmp281
237 br i1 %cmp282, label %lor.lhs.false284, label %if.then336
239 lor.lhs.false284: ; preds = %for.body271
240 %tmp290 = load i32* %arrayidx289, align 4
241 %tmp296 = load i32* %arrayidx295, align 4
242 %cmp297 = icmp eq i32 %tmp290, %tmp296
243 br i1 %cmp297, label %lor.lhs.false299, label %if.then336
245 lor.lhs.false299: ; preds = %lor.lhs.false284
246 %tmp305 = load i32* %arrayidx304, align 8
247 %tmp311 = load i32* %arrayidx310, align 8
248 %cmp312 = icmp eq i32 %tmp305, %tmp311
249 br i1 %cmp312, label %lor.lhs.false314, label %if.then336
251 lor.lhs.false314: ; preds = %lor.lhs.false299
252 %tmp320 = load i32* %arrayidx319, align 4
253 %tmp326 = load i32* %arrayidx325, align 4
254 %cmp327 = icmp eq i32 %tmp320, %tmp326
255 br i1 %cmp327, label %lor.lhs.false329, label %if.then336
257 lor.lhs.false329: ; preds = %lor.lhs.false314
258 %tmp333 = load i32* %arrayidx332, align 4
259 %cmp334 = icmp eq i32 %tmp333, 12
260 br i1 %cmp334, label %if.end337, label %if.then336
262 if.then336: ; preds = %lor.lhs.false329, %lor.lhs.false314, %lor.lhs.false299, %lor.lhs.false284, %for.body271
263 call void @abort() noreturn nounwind
266 if.end337: ; preds = %lor.lhs.false329
269 for.inc338: ; preds = %if.end337
270 %indvar.next144 = add i64 %indvar143, 1
271 br label %for.cond267
273 for.end341: ; preds = %for.cond267
274 br label %for.cond342
276 for.cond342: ; preds = %for.inc521, %for.end341
277 %indvar121 = phi i64 [ %indvar.next122, %for.inc521 ], [ 0, %for.end341 ]
278 %tmp123 = mul i64 %indvar121, 16
279 %tmp125 = add i64 %tmp123, 15
280 %arrayidx520 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp125
281 %arrayidx514 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp125
282 %tmp126 = add i64 %tmp123, 14
283 %arrayidx509 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp126
284 %arrayidx503 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp126
285 %tmp127 = add i64 %tmp123, 13
286 %arrayidx498 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp127
287 %arrayidx492 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp127
288 %tmp128 = add i64 %tmp123, 12
289 %arrayidx487 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp128
290 %arrayidx481 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp128
291 %tmp129 = add i64 %tmp123, 11
292 %arrayidx476 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp129
293 %arrayidx470 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp129
294 %tmp131 = add i64 %tmp123, 10
295 %arrayidx465 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp131
296 %arrayidx459 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp131
297 %tmp132 = add i64 %tmp123, 9
298 %arrayidx454 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp132
299 %arrayidx448 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp132
300 %tmp133 = add i64 %tmp123, 8
301 %arrayidx443 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp133
302 %arrayidx437 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp133
303 %tmp134 = add i64 %tmp123, 7
304 %arrayidx432 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp134
305 %arrayidx426 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp134
306 %tmp135 = add i64 %tmp123, 6
307 %arrayidx421 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp135
308 %arrayidx415 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp135
309 %tmp136 = add i64 %tmp123, 5
310 %arrayidx410 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp136
311 %arrayidx404 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp136
312 %tmp137 = add i64 %tmp123, 4
313 %arrayidx399 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp137
314 %arrayidx393 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp137
315 %tmp139 = add i64 %tmp123, 3
316 %arrayidx388 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp139
317 %arrayidx382 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp139
318 %tmp140 = add i64 %tmp123, 2
319 %arrayidx377 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp140
320 %arrayidx371 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp140
321 %tmp141 = add i64 %tmp123, 1
322 %arrayidx366 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp141
323 %arrayidx360 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp141
324 %arrayidx355 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp123
325 %arrayidx350 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp123
326 %exitcond = icmp ne i64 %indvar121, 8
327 br i1 %exitcond, label %for.body346, label %for.end524
329 for.body346: ; preds = %for.cond342
330 %tmp351 = load i32* %arrayidx350, align 16
331 store i32 %tmp351, i32* %arrayidx355, align 16
332 %tmp361 = load i32* %arrayidx360, align 4
333 store i32 %tmp361, i32* %arrayidx366, align 4
334 %tmp372 = load i32* %arrayidx371, align 8
335 store i32 %tmp372, i32* %arrayidx377, align 8
336 %tmp383 = load i32* %arrayidx382, align 4
337 store i32 %tmp383, i32* %arrayidx388, align 4
338 %tmp394 = load i32* %arrayidx393, align 16
339 store i32 %tmp394, i32* %arrayidx399, align 16
340 %tmp405 = load i32* %arrayidx404, align 4
341 store i32 %tmp405, i32* %arrayidx410, align 4
342 %tmp416 = load i32* %arrayidx415, align 8
343 store i32 %tmp416, i32* %arrayidx421, align 8
344 %tmp427 = load i32* %arrayidx426, align 4
345 store i32 %tmp427, i32* %arrayidx432, align 4
346 %tmp438 = load i32* %arrayidx437, align 16
347 store i32 %tmp438, i32* %arrayidx443, align 16
348 %tmp449 = load i32* %arrayidx448, align 4
349 store i32 %tmp449, i32* %arrayidx454, align 4
350 %tmp460 = load i32* %arrayidx459, align 8
351 store i32 %tmp460, i32* %arrayidx465, align 8
352 %tmp471 = load i32* %arrayidx470, align 4
353 store i32 %tmp471, i32* %arrayidx476, align 4
354 %tmp482 = load i32* %arrayidx481, align 16
355 store i32 %tmp482, i32* %arrayidx487, align 16
356 %tmp493 = load i32* %arrayidx492, align 4
357 store i32 %tmp493, i32* %arrayidx498, align 4
358 %tmp504 = load i32* %arrayidx503, align 8
359 store i32 %tmp504, i32* %arrayidx509, align 8
360 %tmp515 = load i32* %arrayidx514, align 4
361 store i32 %tmp515, i32* %arrayidx520, align 4
364 for.inc521: ; preds = %for.body346
365 %indvar.next122 = add i64 %indvar121, 1
366 br label %for.cond342
368 for.end524: ; preds = %for.cond342
369 br label %for.cond525
371 for.cond525: ; preds = %for.inc769, %for.end524
372 %indvar = phi i64 [ %indvar.next, %for.inc769 ], [ 0, %for.end524 ]
373 %tmp101 = mul i64 %indvar, 16
374 %tmp102 = add i64 %tmp101, 15
375 %arrayidx763 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp102
376 %arrayidx757 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp102
377 %tmp104 = add i64 %tmp101, 14
378 %arrayidx748 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp104
379 %arrayidx742 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp104
380 %tmp105 = add i64 %tmp101, 13
381 %arrayidx733 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp105
382 %arrayidx727 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp105
383 %tmp106 = add i64 %tmp101, 12
384 %arrayidx718 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp106
385 %arrayidx712 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp106
386 %tmp107 = add i64 %tmp101, 11
387 %arrayidx703 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp107
388 %arrayidx697 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp107
389 %tmp108 = add i64 %tmp101, 10
390 %arrayidx688 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp108
391 %arrayidx682 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp108
392 %tmp109 = add i64 %tmp101, 9
393 %arrayidx673 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp109
394 %arrayidx667 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp109
395 %tmp111 = add i64 %tmp101, 8
396 %arrayidx658 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp111
397 %arrayidx652 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp111
398 %tmp112 = add i64 %tmp101, 7
399 %arrayidx643 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp112
400 %arrayidx637 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp112
401 %tmp113 = add i64 %tmp101, 6
402 %arrayidx628 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp113
403 %arrayidx622 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp113
404 %tmp114 = add i64 %tmp101, 5
405 %arrayidx613 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp114
406 %arrayidx607 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp114
407 %tmp115 = add i64 %tmp101, 4
408 %arrayidx598 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp115
409 %arrayidx592 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp115
410 %tmp117 = add i64 %tmp101, 3
411 %arrayidx583 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp117
412 %arrayidx577 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp117
413 %tmp118 = add i64 %tmp101, 2
414 %arrayidx568 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp118
415 %arrayidx562 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp118
416 %tmp119 = add i64 %tmp101, 1
417 %arrayidx553 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp119
418 %arrayidx547 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp119
419 %arrayidx538 = getelementptr [128 x i32]* %in, i64 0, i64 %tmp101
420 %arrayidx533 = getelementptr [128 x i32]* %out, i64 0, i64 %tmp101
421 %i.5 = trunc i64 %indvar to i32
422 %cmp527 = icmp slt i32 %i.5, 8
423 br i1 %cmp527, label %for.body529, label %for.end772
425 for.body529: ; preds = %for.cond525
426 %tmp534 = load i32* %arrayidx533, align 16
427 %tmp539 = load i32* %arrayidx538, align 16
428 %cmp540 = icmp eq i32 %tmp534, %tmp539
429 br i1 %cmp540, label %lor.lhs.false542, label %if.then767
431 lor.lhs.false542: ; preds = %for.body529
432 %tmp548 = load i32* %arrayidx547, align 4
433 %tmp554 = load i32* %arrayidx553, align 4
434 %cmp555 = icmp eq i32 %tmp548, %tmp554
435 br i1 %cmp555, label %lor.lhs.false557, label %if.then767
437 lor.lhs.false557: ; preds = %lor.lhs.false542
438 %tmp563 = load i32* %arrayidx562, align 8
439 %tmp569 = load i32* %arrayidx568, align 8
440 %cmp570 = icmp eq i32 %tmp563, %tmp569
441 br i1 %cmp570, label %lor.lhs.false572, label %if.then767
443 lor.lhs.false572: ; preds = %lor.lhs.false557
444 %tmp578 = load i32* %arrayidx577, align 4
445 %tmp584 = load i32* %arrayidx583, align 4
446 %cmp585 = icmp eq i32 %tmp578, %tmp584
447 br i1 %cmp585, label %lor.lhs.false587, label %if.then767
449 lor.lhs.false587: ; preds = %lor.lhs.false572
450 %tmp593 = load i32* %arrayidx592, align 16
451 %tmp599 = load i32* %arrayidx598, align 16
452 %cmp600 = icmp eq i32 %tmp593, %tmp599
453 br i1 %cmp600, label %lor.lhs.false602, label %if.then767
455 lor.lhs.false602: ; preds = %lor.lhs.false587
456 %tmp608 = load i32* %arrayidx607, align 4
457 %tmp614 = load i32* %arrayidx613, align 4
458 %cmp615 = icmp eq i32 %tmp608, %tmp614
459 br i1 %cmp615, label %lor.lhs.false617, label %if.then767
461 lor.lhs.false617: ; preds = %lor.lhs.false602
462 %tmp623 = load i32* %arrayidx622, align 8
463 %tmp629 = load i32* %arrayidx628, align 8
464 %cmp630 = icmp eq i32 %tmp623, %tmp629
465 br i1 %cmp630, label %lor.lhs.false632, label %if.then767
467 lor.lhs.false632: ; preds = %lor.lhs.false617
468 %tmp638 = load i32* %arrayidx637, align 4
469 %tmp644 = load i32* %arrayidx643, align 4
470 %cmp645 = icmp eq i32 %tmp638, %tmp644
471 br i1 %cmp645, label %lor.lhs.false647, label %if.then767
473 lor.lhs.false647: ; preds = %lor.lhs.false632
474 %tmp653 = load i32* %arrayidx652, align 16
475 %tmp659 = load i32* %arrayidx658, align 16
476 %cmp660 = icmp eq i32 %tmp653, %tmp659
477 br i1 %cmp660, label %lor.lhs.false662, label %if.then767
479 lor.lhs.false662: ; preds = %lor.lhs.false647
480 %tmp668 = load i32* %arrayidx667, align 4
481 %tmp674 = load i32* %arrayidx673, align 4
482 %cmp675 = icmp eq i32 %tmp668, %tmp674
483 br i1 %cmp675, label %lor.lhs.false677, label %if.then767
485 lor.lhs.false677: ; preds = %lor.lhs.false662
486 %tmp683 = load i32* %arrayidx682, align 8
487 %tmp689 = load i32* %arrayidx688, align 8
488 %cmp690 = icmp eq i32 %tmp683, %tmp689
489 br i1 %cmp690, label %lor.lhs.false692, label %if.then767
491 lor.lhs.false692: ; preds = %lor.lhs.false677
492 %tmp698 = load i32* %arrayidx697, align 4
493 %tmp704 = load i32* %arrayidx703, align 4
494 %cmp705 = icmp eq i32 %tmp698, %tmp704
495 br i1 %cmp705, label %lor.lhs.false707, label %if.then767
497 lor.lhs.false707: ; preds = %lor.lhs.false692
498 %tmp713 = load i32* %arrayidx712, align 16
499 %tmp719 = load i32* %arrayidx718, align 16
500 %cmp720 = icmp eq i32 %tmp713, %tmp719
501 br i1 %cmp720, label %lor.lhs.false722, label %if.then767
503 lor.lhs.false722: ; preds = %lor.lhs.false707
504 %tmp728 = load i32* %arrayidx727, align 4
505 %tmp734 = load i32* %arrayidx733, align 4
506 %cmp735 = icmp eq i32 %tmp728, %tmp734
507 br i1 %cmp735, label %lor.lhs.false737, label %if.then767
509 lor.lhs.false737: ; preds = %lor.lhs.false722
510 %tmp743 = load i32* %arrayidx742, align 8
511 %tmp749 = load i32* %arrayidx748, align 8
512 %cmp750 = icmp eq i32 %tmp743, %tmp749
513 br i1 %cmp750, label %lor.lhs.false752, label %if.then767
515 lor.lhs.false752: ; preds = %lor.lhs.false737
516 %tmp758 = load i32* %arrayidx757, align 4
517 %tmp764 = load i32* %arrayidx763, align 4
518 %cmp765 = icmp eq i32 %tmp758, %tmp764
519 br i1 %cmp765, label %if.end768, label %if.then767
521 if.then767: ; preds = %lor.lhs.false752, %lor.lhs.false737, %lor.lhs.false722, %lor.lhs.false707, %lor.lhs.false692, %lor.lhs.false677, %lor.lhs.false662, %lor.lhs.false647, %lor.lhs.false632, %lor.lhs.false617, %lor.lhs.false602, %lor.lhs.false587, %lor.lhs.false572, %lor.lhs.false557, %lor.lhs.false542, %for.body529
522 call void @abort() noreturn nounwind
525 if.end768: ; preds = %lor.lhs.false752
528 for.inc769: ; preds = %if.end768
529 %indvar.next = add i64 %indvar, 1
530 br label %for.cond525
532 for.end772: ; preds = %for.cond525
536 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
538 declare void @abort() noreturn
540 define i32 @main() nounwind uwtable {
542 call void @check_vect()
543 %call = call i32 @main1()
547 define internal void @check_vect() nounwind uwtable noinline {
549 %a = alloca i32, align 4
550 %b = alloca i32, align 4
551 %c = alloca i32, align 4
552 %d = alloca i32, align 4
553 %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
554 %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
555 %tobool = icmp eq i32 %call1, 0
556 br i1 %tobool, label %if.then, label %lor.lhs.false
558 lor.lhs.false: ; preds = %entry
559 %tmp4 = load i32* %d, align 4
560 %and6 = and i32 %tmp4, 67108864
561 %cmp = icmp eq i32 %and6, 0
562 br i1 %cmp, label %if.then, label %if.end
564 if.then: ; preds = %entry, %lor.lhs.false
565 call void @exit(i32 0) noreturn nounwind
568 if.end: ; preds = %lor.lhs.false
569 %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
573 declare void (i32)* @signal(i32, void (i32)*) nounwind
575 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
577 call void @exit(i32 0) noreturn nounwind
580 return: ; No predecessors!
584 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
586 %and = and i32 %__level, -2147483648
587 %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
588 %cmp = icmp ult i32 %call, %__level
589 br i1 %cmp, label %if.then, label %if.end
591 if.then: ; preds = %entry
594 if.end: ; preds = %entry
595 %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
596 %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
597 %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
598 %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
599 %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
600 store i32 %asmresult, i32* %__eax, align 4
601 store i32 %asmresult8, i32* %__ebx, align 4
602 store i32 %asmresult9, i32* %__ecx, align 4
603 store i32 %asmresult10, i32* %__edx, align 4
606 return: ; preds = %if.end, %if.then
607 %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
611 declare void @exit(i32) noreturn
613 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
615 %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
616 %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
617 %tobool = icmp eq i32* %__sig, null
618 br i1 %tobool, label %if.end, label %if.then
620 if.then: ; preds = %entry
621 %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
622 store i32 %asmresult1, i32* %__sig, align 4
625 if.end: ; preds = %entry, %if.then
629 !0 = metadata !{i32 -2147340821, i32 -2147340813}
630 !1 = metadata !{i32 -2147340944, i32 -2147340936}