Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-5.ll
blobfca837e880112fb2f7dd42c6dbf9b6572cfc796e
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
6 ; ModuleID = 'slp-5.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 {
13 entry:
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)
20   br label %for.cond
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
70   br label %for.inc
72 for.inc:                                          ; preds = %for.body
73   %indvar.next171 = add i64 %indvar170, 1
74   br label %for.cond
76 for.end:                                          ; preds = %for.cond
77   br label %for.cond90
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
165   unreachable
167 if.end:                                           ; preds = %lor.lhs.false202
168   br label %for.inc209
170 for.inc209:                                       ; preds = %if.end
171   %indvar.next159 = add i64 %indvar158, 1
172   br label %for.cond90
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
205   br label %for.inc263
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
264   unreachable
266 if.end337:                                        ; preds = %lor.lhs.false329
267   br label %for.inc338
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
362   br label %for.inc521
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
523   unreachable
525 if.end768:                                        ; preds = %lor.lhs.false752
526   br label %for.inc769
528 for.inc769:                                       ; preds = %if.end768
529   %indvar.next = add i64 %indvar, 1
530   br label %for.cond525
532 for.end772:                                       ; preds = %for.cond525
533   ret i32 0
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 {
541 entry:
542   call void @check_vect()
543   %call = call i32 @main1()
544   ret i32 0
547 define internal void @check_vect() nounwind uwtable noinline {
548 entry:
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
566   unreachable
568 if.end:                                           ; preds = %lor.lhs.false
569   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
570   ret void
573 declare void (i32)* @signal(i32, void (i32)*) nounwind
575 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
576 entry:
577   call void @exit(i32 0) noreturn nounwind
578   unreachable
580 return:                                           ; No predecessors!
581   ret void
584 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
585 entry:
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
592   br label %return
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
604   br label %return
606 return:                                           ; preds = %if.end, %if.then
607   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
608   ret i32 %retval.0
611 declare void @exit(i32) noreturn
613 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
614 entry:
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
623   br label %if.end
625 if.end:                                           ; preds = %entry, %if.then
626   ret i32 %asmresult
629 !0 = metadata !{i32 -2147340821, i32 -2147340813} 
630 !1 = metadata !{i32 -2147340944, i32 -2147340936} 
631 ; CHECK: define