Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-6.ll
blobab6adbbe946cbeec9e065694bf8a7ab5a272a87b
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-6.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-6.s > slp-6.ll
6 ; ModuleID = 'slp-6.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 @in = global [64 x i16] [i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15, i16 16, i16 17, i16 18, i16 19, i16 20, i16 21, i16 22, i16 23, i16 24, i16 25, i16 26, i16 27, i16 28, i16 29, i16 30, i16 31, i16 32, i16 33, i16 34, i16 35, i16 36, i16 37, i16 38, i16 39, i16 40, i16 41, i16 42, i16 43, i16 44, i16 45, i16 46, i16 47, i16 48, i16 49, i16 50, i16 51, i16 52, i16 53, i16 54, i16 55, i16 56, i16 57, i16 58, i16 59, i16 60, i16 61, i16 62, i16 63], align 16
11 @in2 = global [64 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], align 16
13 define i32 @main1() nounwind uwtable {
14 entry:
15   %out = alloca [64 x i16], align 16
16   %out2 = alloca [64 x i32], align 16
17   br label %for.cond
19 for.cond:                                         ; preds = %for.inc, %entry
20   %indvar167 = phi i64 [ %indvar.next168, %for.inc ], [ 0, %entry ]
21   %tmp170 = mul i64 %indvar167, 8
22   %tmp171 = add i64 %tmp170, 7
23   %arrayidx105 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp171
24   %arrayidx96 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp171
25   %tmp172 = add i64 %tmp170, 6
26   %arrayidx91 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp172
27   %arrayidx82 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp172
28   %tmp173 = add i64 %tmp170, 5
29   %arrayidx77 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp173
30   %arrayidx68 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp173
31   %tmp174 = add i64 %tmp170, 4
32   %arrayidx63 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp174
33   %arrayidx54 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp174
34   %tmp176 = add i64 %tmp170, 3
35   %arrayidx49 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp176
36   %arrayidx40 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp176
37   %tmp177 = add i64 %tmp170, 2
38   %arrayidx35 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp177
39   %arrayidx26 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp177
40   %tmp178 = add i64 %tmp170, 1
41   %arrayidx21 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp178
42   %arrayidx12 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp178
43   %arrayidx7 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp170
44   %arrayidx = getelementptr [64 x i16]* @in, i64 0, i64 %tmp170
45   %exitcond169 = icmp ne i64 %indvar167, 8
46   br i1 %exitcond169, label %for.body, label %for.end
48 for.body:                                         ; preds = %for.cond
49   %tmp2 = load i16* %arrayidx, align 16
50   %add = add i16 %tmp2, 5
51   store i16 %add, i16* %arrayidx7, align 16
52   %tmp13 = load i16* %arrayidx12, align 2
53   %add15 = add i16 %tmp13, 6
54   store i16 %add15, i16* %arrayidx21, align 2
55   %tmp27 = load i16* %arrayidx26, align 4
56   %add29 = add i16 %tmp27, 7
57   store i16 %add29, i16* %arrayidx35, align 4
58   %tmp41 = load i16* %arrayidx40, align 2
59   %add43 = add i16 %tmp41, 8
60   store i16 %add43, i16* %arrayidx49, align 2
61   %tmp55 = load i16* %arrayidx54, align 8
62   %add57 = add i16 %tmp55, 9
63   store i16 %add57, i16* %arrayidx63, align 8
64   %tmp69 = load i16* %arrayidx68, align 2
65   %add71 = add i16 %tmp69, 10
66   store i16 %add71, i16* %arrayidx77, align 2
67   %tmp83 = load i16* %arrayidx82, align 4
68   %add85 = add i16 %tmp83, 11
69   store i16 %add85, i16* %arrayidx91, align 4
70   %tmp97 = load i16* %arrayidx96, align 2
71   %add99 = add i16 %tmp97, 12
72   store i16 %add99, i16* %arrayidx105, align 2
73   br label %for.inc
75 for.inc:                                          ; preds = %for.body
76   %indvar.next168 = add i64 %indvar167, 1
77   br label %for.cond
79 for.end:                                          ; preds = %for.cond
80   br label %for.cond107
82 for.cond107:                                      ; preds = %for.inc252, %for.end
83   %indvar155 = phi i64 [ %indvar.next156, %for.inc252 ], [ 0, %for.end ]
84   %tmp158 = mul i64 %indvar155, 8
85   %tmp159 = add i64 %tmp158, 7
86   %arrayidx246 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp159
87   %arrayidx239 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp159
88   %tmp160 = add i64 %tmp158, 6
89   %arrayidx228 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp160
90   %arrayidx221 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp160
91   %tmp161 = add i64 %tmp158, 5
92   %arrayidx210 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp161
93   %arrayidx203 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp161
94   %tmp162 = add i64 %tmp158, 4
95   %arrayidx192 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp162
96   %arrayidx185 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp162
97   %tmp163 = add i64 %tmp158, 3
98   %arrayidx174 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp163
99   %arrayidx167 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp163
100   %tmp164 = add i64 %tmp158, 2
101   %arrayidx156 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp164
102   %arrayidx149 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp164
103   %tmp165 = add i64 %tmp158, 1
104   %arrayidx138 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp165
105   %arrayidx131 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp165
106   %arrayidx121 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp158
107   %arrayidx115 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp158
108   %i.1 = trunc i64 %indvar155 to i32
109   %cmp109 = icmp slt i32 %i.1, 8
110   br i1 %cmp109, label %for.body111, label %for.end255
112 for.body111:                                      ; preds = %for.cond107
113   %tmp116 = load i16* %arrayidx115, align 16
114   %conv117 = zext i16 %tmp116 to i32
115   %tmp122 = load i16* %arrayidx121, align 16
116   %conv123 = zext i16 %tmp122 to i32
117   %add124 = add nsw i32 %conv123, 5
118   %cmp125 = icmp eq i32 %conv117, %add124
119   br i1 %cmp125, label %lor.lhs.false, label %if.then
121 lor.lhs.false:                                    ; preds = %for.body111
122   %tmp132 = load i16* %arrayidx131, align 2
123   %conv133 = zext i16 %tmp132 to i32
124   %tmp139 = load i16* %arrayidx138, align 2
125   %conv140 = zext i16 %tmp139 to i32
126   %add141 = add nsw i32 %conv140, 6
127   %cmp142 = icmp eq i32 %conv133, %add141
128   br i1 %cmp142, label %lor.lhs.false144, label %if.then
130 lor.lhs.false144:                                 ; preds = %lor.lhs.false
131   %tmp150 = load i16* %arrayidx149, align 4
132   %conv151 = zext i16 %tmp150 to i32
133   %tmp157 = load i16* %arrayidx156, align 4
134   %conv158 = zext i16 %tmp157 to i32
135   %add159 = add nsw i32 %conv158, 7
136   %cmp160 = icmp eq i32 %conv151, %add159
137   br i1 %cmp160, label %lor.lhs.false162, label %if.then
139 lor.lhs.false162:                                 ; preds = %lor.lhs.false144
140   %tmp168 = load i16* %arrayidx167, align 2
141   %conv169 = zext i16 %tmp168 to i32
142   %tmp175 = load i16* %arrayidx174, align 2
143   %conv176 = zext i16 %tmp175 to i32
144   %add177 = add nsw i32 %conv176, 8
145   %cmp178 = icmp eq i32 %conv169, %add177
146   br i1 %cmp178, label %lor.lhs.false180, label %if.then
148 lor.lhs.false180:                                 ; preds = %lor.lhs.false162
149   %tmp186 = load i16* %arrayidx185, align 8
150   %conv187 = zext i16 %tmp186 to i32
151   %tmp193 = load i16* %arrayidx192, align 8
152   %conv194 = zext i16 %tmp193 to i32
153   %add195 = add nsw i32 %conv194, 9
154   %cmp196 = icmp eq i32 %conv187, %add195
155   br i1 %cmp196, label %lor.lhs.false198, label %if.then
157 lor.lhs.false198:                                 ; preds = %lor.lhs.false180
158   %tmp204 = load i16* %arrayidx203, align 2
159   %conv205 = zext i16 %tmp204 to i32
160   %tmp211 = load i16* %arrayidx210, align 2
161   %conv212 = zext i16 %tmp211 to i32
162   %add213 = add nsw i32 %conv212, 10
163   %cmp214 = icmp eq i32 %conv205, %add213
164   br i1 %cmp214, label %lor.lhs.false216, label %if.then
166 lor.lhs.false216:                                 ; preds = %lor.lhs.false198
167   %tmp222 = load i16* %arrayidx221, align 4
168   %conv223 = zext i16 %tmp222 to i32
169   %tmp229 = load i16* %arrayidx228, align 4
170   %conv230 = zext i16 %tmp229 to i32
171   %add231 = add nsw i32 %conv230, 11
172   %cmp232 = icmp eq i32 %conv223, %add231
173   br i1 %cmp232, label %lor.lhs.false234, label %if.then
175 lor.lhs.false234:                                 ; preds = %lor.lhs.false216
176   %tmp240 = load i16* %arrayidx239, align 2
177   %conv241 = zext i16 %tmp240 to i32
178   %tmp247 = load i16* %arrayidx246, align 2
179   %conv248 = zext i16 %tmp247 to i32
180   %add249 = add nsw i32 %conv248, 12
181   %cmp250 = icmp eq i32 %conv241, %add249
182   br i1 %cmp250, label %if.end, label %if.then
184 if.then:                                          ; preds = %lor.lhs.false234, %lor.lhs.false216, %lor.lhs.false198, %lor.lhs.false180, %lor.lhs.false162, %lor.lhs.false144, %lor.lhs.false, %for.body111
185   call void @abort() noreturn nounwind
186   unreachable
188 if.end:                                           ; preds = %lor.lhs.false234
189   br label %for.inc252
191 for.inc252:                                       ; preds = %if.end
192   %indvar.next156 = add i64 %indvar155, 1
193   br label %for.cond107
195 for.end255:                                       ; preds = %for.cond107
196   br label %for.cond256
198 for.cond256:                                      ; preds = %for.inc315, %for.end255
199   %indvar146 = phi i64 [ %indvar.next147, %for.inc315 ], [ 0, %for.end255 ]
200   %tmp149 = mul i64 %indvar146, 4
201   %tmp151 = add i64 %tmp149, 3
202   %arrayidx314 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp151
203   %arrayidx305 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp151
204   %tmp152 = add i64 %tmp149, 2
205   %arrayidx300 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp152
206   %arrayidx291 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp152
207   %tmp153 = add i64 %tmp149, 1
208   %arrayidx286 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp153
209   %arrayidx277 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp153
210   %arrayidx272 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp149
211   %arrayidx264 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp149
212   %exitcond148 = icmp ne i64 %indvar146, 16
213   br i1 %exitcond148, label %for.body260, label %for.end318
215 for.body260:                                      ; preds = %for.cond256
216   %tmp265 = load i16* %arrayidx264, align 8
217   %add267 = add i16 %tmp265, 2
218   store i16 %add267, i16* %arrayidx272, align 8
219   %tmp278 = load i16* %arrayidx277, align 2
220   %add280 = add i16 %tmp278, 2
221   store i16 %add280, i16* %arrayidx286, align 2
222   %tmp292 = load i16* %arrayidx291, align 4
223   %add294 = add i16 %tmp292, 1
224   store i16 %add294, i16* %arrayidx300, align 4
225   %tmp306 = load i16* %arrayidx305, align 2
226   %add308 = add i16 %tmp306, 3
227   store i16 %add308, i16* %arrayidx314, align 2
228   br label %for.inc315
230 for.inc315:                                       ; preds = %for.body260
231   %indvar.next147 = add i64 %indvar146, 1
232   br label %for.cond256
234 for.end318:                                       ; preds = %for.cond256
235   br label %for.cond319
237 for.cond319:                                      ; preds = %for.inc395, %for.end318
238   %indvar139 = phi i64 [ %indvar.next140, %for.inc395 ], [ 0, %for.end318 ]
239   %tmp141 = mul i64 %indvar139, 4
240   %tmp142 = add i64 %tmp141, 3
241   %arrayidx387 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp142
242   %arrayidx380 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp142
243   %tmp143 = add i64 %tmp141, 2
244   %arrayidx369 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp143
245   %arrayidx362 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp143
246   %tmp144 = add i64 %tmp141, 1
247   %arrayidx351 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp144
248   %arrayidx344 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp144
249   %arrayidx333 = getelementptr [64 x i16]* @in, i64 0, i64 %tmp141
250   %arrayidx327 = getelementptr [64 x i16]* %out, i64 0, i64 %tmp141
251   %i.3 = trunc i64 %indvar139 to i32
252   %cmp321 = icmp slt i32 %i.3, 16
253   br i1 %cmp321, label %for.body323, label %for.end398
255 for.body323:                                      ; preds = %for.cond319
256   %tmp328 = load i16* %arrayidx327, align 8
257   %conv329 = zext i16 %tmp328 to i32
258   %tmp334 = load i16* %arrayidx333, align 8
259   %conv335 = zext i16 %tmp334 to i32
260   %add336 = add nsw i32 %conv335, 2
261   %cmp337 = icmp eq i32 %conv329, %add336
262   br i1 %cmp337, label %lor.lhs.false339, label %if.then393
264 lor.lhs.false339:                                 ; preds = %for.body323
265   %tmp345 = load i16* %arrayidx344, align 2
266   %conv346 = zext i16 %tmp345 to i32
267   %tmp352 = load i16* %arrayidx351, align 2
268   %conv353 = zext i16 %tmp352 to i32
269   %add354 = add nsw i32 %conv353, 2
270   %cmp355 = icmp eq i32 %conv346, %add354
271   br i1 %cmp355, label %lor.lhs.false357, label %if.then393
273 lor.lhs.false357:                                 ; preds = %lor.lhs.false339
274   %tmp363 = load i16* %arrayidx362, align 4
275   %conv364 = zext i16 %tmp363 to i32
276   %tmp370 = load i16* %arrayidx369, align 4
277   %conv371 = zext i16 %tmp370 to i32
278   %add372 = add nsw i32 %conv371, 1
279   %cmp373 = icmp eq i32 %conv364, %add372
280   br i1 %cmp373, label %lor.lhs.false375, label %if.then393
282 lor.lhs.false375:                                 ; preds = %lor.lhs.false357
283   %tmp381 = load i16* %arrayidx380, align 2
284   %conv382 = zext i16 %tmp381 to i32
285   %tmp388 = load i16* %arrayidx387, align 2
286   %conv389 = zext i16 %tmp388 to i32
287   %add390 = add nsw i32 %conv389, 3
288   %cmp391 = icmp eq i32 %conv382, %add390
289   br i1 %cmp391, label %if.end394, label %if.then393
291 if.then393:                                       ; preds = %lor.lhs.false375, %lor.lhs.false357, %lor.lhs.false339, %for.body323
292   call void @abort() noreturn nounwind
293   unreachable
295 if.end394:                                        ; preds = %lor.lhs.false375
296   br label %for.inc395
298 for.inc395:                                       ; preds = %if.end394
299   %indvar.next140 = add i64 %indvar139, 1
300   br label %for.cond319
302 for.end398:                                       ; preds = %for.cond319
303   br label %for.cond399
305 for.cond399:                                      ; preds = %for.inc594, %for.end398
306   %indvar118 = phi i64 [ %indvar.next119, %for.inc594 ], [ 0, %for.end398 ]
307   %tmp120 = mul i64 %indvar118, 16
308   %tmp121 = add i64 %tmp120, 15
309   %arrayidx593 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp121
310   %arrayidx586 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp121
311   %tmp123 = add i64 %tmp120, 14
312   %arrayidx581 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp123
313   %arrayidx574 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp123
314   %tmp124 = add i64 %tmp120, 13
315   %arrayidx569 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp124
316   %arrayidx562 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp124
317   %tmp125 = add i64 %tmp120, 12
318   %arrayidx557 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp125
319   %arrayidx550 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp125
320   %tmp126 = add i64 %tmp120, 11
321   %arrayidx545 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp126
322   %arrayidx538 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp126
323   %tmp127 = add i64 %tmp120, 10
324   %arrayidx533 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp127
325   %arrayidx526 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp127
326   %tmp128 = add i64 %tmp120, 9
327   %arrayidx521 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp128
328   %arrayidx514 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp128
329   %tmp129 = add i64 %tmp120, 8
330   %arrayidx509 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp129
331   %arrayidx502 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp129
332   %tmp130 = add i64 %tmp120, 7
333   %arrayidx497 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp130
334   %arrayidx490 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp130
335   %tmp131 = add i64 %tmp120, 6
336   %arrayidx485 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp131
337   %arrayidx478 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp131
338   %tmp133 = add i64 %tmp120, 5
339   %arrayidx473 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp133
340   %arrayidx466 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp133
341   %tmp134 = add i64 %tmp120, 4
342   %arrayidx461 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp134
343   %arrayidx454 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp134
344   %tmp135 = add i64 %tmp120, 3
345   %arrayidx449 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp135
346   %arrayidx442 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp135
347   %tmp136 = add i64 %tmp120, 2
348   %arrayidx437 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp136
349   %arrayidx430 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp136
350   %tmp137 = add i64 %tmp120, 1
351   %arrayidx425 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp137
352   %arrayidx418 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp137
353   %arrayidx413 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp120
354   %arrayidx407 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp120
355   %exitcond = icmp ne i64 %indvar118, 4
356   br i1 %exitcond, label %for.body403, label %for.end597
358 for.body403:                                      ; preds = %for.cond399
359   %tmp408 = load i32* %arrayidx407, align 16
360   %mul409 = shl i32 %tmp408, 1
361   store i32 %mul409, i32* %arrayidx413, align 16
362   %tmp419 = load i32* %arrayidx418, align 4
363   %mul420 = mul i32 %tmp419, 3
364   store i32 %mul420, i32* %arrayidx425, align 4
365   %tmp431 = load i32* %arrayidx430, align 8
366   %mul432 = shl i32 %tmp431, 2
367   store i32 %mul432, i32* %arrayidx437, align 8
368   %tmp443 = load i32* %arrayidx442, align 4
369   %mul444 = mul i32 %tmp443, 3
370   store i32 %mul444, i32* %arrayidx449, align 4
371   %tmp455 = load i32* %arrayidx454, align 16
372   %mul456 = shl i32 %tmp455, 1
373   store i32 %mul456, i32* %arrayidx461, align 16
374   %tmp467 = load i32* %arrayidx466, align 4
375   %mul468 = mul i32 %tmp467, 3
376   store i32 %mul468, i32* %arrayidx473, align 4
377   %tmp479 = load i32* %arrayidx478, align 8
378   %mul480 = shl i32 %tmp479, 1
379   store i32 %mul480, i32* %arrayidx485, align 8
380   %tmp491 = load i32* %arrayidx490, align 4
381   %mul492 = shl i32 %tmp491, 2
382   store i32 %mul492, i32* %arrayidx497, align 4
383   %tmp503 = load i32* %arrayidx502, align 16
384   %mul504 = shl i32 %tmp503, 1
385   store i32 %mul504, i32* %arrayidx509, align 16
386   %tmp515 = load i32* %arrayidx514, align 4
387   %mul516 = mul i32 %tmp515, 5
388   store i32 %mul516, i32* %arrayidx521, align 4
389   %tmp527 = load i32* %arrayidx526, align 8
390   %mul528 = shl i32 %tmp527, 1
391   store i32 %mul528, i32* %arrayidx533, align 8
392   %tmp539 = load i32* %arrayidx538, align 4
393   %mul540 = mul i32 %tmp539, 3
394   store i32 %mul540, i32* %arrayidx545, align 4
395   %tmp551 = load i32* %arrayidx550, align 16
396   %mul552 = shl i32 %tmp551, 2
397   store i32 %mul552, i32* %arrayidx557, align 16
398   %tmp563 = load i32* %arrayidx562, align 4
399   %mul564 = shl i32 %tmp563, 2
400   store i32 %mul564, i32* %arrayidx569, align 4
401   %tmp575 = load i32* %arrayidx574, align 8
402   %mul576 = mul i32 %tmp575, 3
403   store i32 %mul576, i32* %arrayidx581, align 8
404   %tmp587 = load i32* %arrayidx586, align 4
405   %mul588 = shl i32 %tmp587, 1
406   store i32 %mul588, i32* %arrayidx593, align 4
407   br label %for.inc594
409 for.inc594:                                       ; preds = %for.body403
410   %indvar.next119 = add i64 %indvar118, 1
411   br label %for.cond399
413 for.end597:                                       ; preds = %for.cond399
414   br label %for.cond598
416 for.cond598:                                      ; preds = %for.inc858, %for.end597
417   %indvar = phi i64 [ %indvar.next, %for.inc858 ], [ 0, %for.end597 ]
418   %tmp = mul i64 %indvar, 16
419   %tmp101 = add i64 %tmp, 15
420   %arrayidx851 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp101
421   %arrayidx845 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp101
422   %tmp102 = add i64 %tmp, 14
423   %arrayidx835 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp102
424   %arrayidx829 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp102
425   %tmp103 = add i64 %tmp, 13
426   %arrayidx819 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp103
427   %arrayidx813 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp103
428   %tmp104 = add i64 %tmp, 12
429   %arrayidx803 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp104
430   %arrayidx797 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp104
431   %tmp105 = add i64 %tmp, 11
432   %arrayidx787 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp105
433   %arrayidx781 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp105
434   %tmp106 = add i64 %tmp, 10
435   %arrayidx771 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp106
436   %arrayidx765 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp106
437   %tmp107 = add i64 %tmp, 9
438   %arrayidx755 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp107
439   %arrayidx749 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp107
440   %tmp108 = add i64 %tmp, 8
441   %arrayidx739 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp108
442   %arrayidx733 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp108
443   %tmp109 = add i64 %tmp, 7
444   %arrayidx723 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp109
445   %arrayidx717 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp109
446   %tmp110 = add i64 %tmp, 6
447   %arrayidx707 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp110
448   %arrayidx701 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp110
449   %tmp111 = add i64 %tmp, 5
450   %arrayidx691 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp111
451   %arrayidx685 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp111
452   %tmp112 = add i64 %tmp, 4
453   %arrayidx675 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp112
454   %arrayidx669 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp112
455   %tmp113 = add i64 %tmp, 3
456   %arrayidx659 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp113
457   %arrayidx653 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp113
458   %tmp114 = add i64 %tmp, 2
459   %arrayidx643 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp114
460   %arrayidx637 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp114
461   %tmp115 = add i64 %tmp, 1
462   %arrayidx627 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp115
463   %arrayidx621 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp115
464   %arrayidx611 = getelementptr [64 x i32]* @in2, i64 0, i64 %tmp
465   %arrayidx606 = getelementptr [64 x i32]* %out2, i64 0, i64 %tmp
466   %i.5 = trunc i64 %indvar to i32
467   %cmp600 = icmp slt i32 %i.5, 4
468   br i1 %cmp600, label %for.body602, label %for.end861
470 for.body602:                                      ; preds = %for.cond598
471   %tmp607 = load i32* %arrayidx606, align 16
472   %tmp612 = load i32* %arrayidx611, align 16
473   %mul613 = shl i32 %tmp612, 1
474   %cmp614 = icmp eq i32 %tmp607, %mul613
475   br i1 %cmp614, label %lor.lhs.false616, label %if.then856
477 lor.lhs.false616:                                 ; preds = %for.body602
478   %tmp622 = load i32* %arrayidx621, align 4
479   %tmp628 = load i32* %arrayidx627, align 4
480   %mul629 = mul i32 %tmp628, 3
481   %cmp630 = icmp eq i32 %tmp622, %mul629
482   br i1 %cmp630, label %lor.lhs.false632, label %if.then856
484 lor.lhs.false632:                                 ; preds = %lor.lhs.false616
485   %tmp638 = load i32* %arrayidx637, align 8
486   %tmp644 = load i32* %arrayidx643, align 8
487   %mul645 = shl i32 %tmp644, 2
488   %cmp646 = icmp eq i32 %tmp638, %mul645
489   br i1 %cmp646, label %lor.lhs.false648, label %if.then856
491 lor.lhs.false648:                                 ; preds = %lor.lhs.false632
492   %tmp654 = load i32* %arrayidx653, align 4
493   %tmp660 = load i32* %arrayidx659, align 4
494   %mul661 = mul i32 %tmp660, 3
495   %cmp662 = icmp eq i32 %tmp654, %mul661
496   br i1 %cmp662, label %lor.lhs.false664, label %if.then856
498 lor.lhs.false664:                                 ; preds = %lor.lhs.false648
499   %tmp670 = load i32* %arrayidx669, align 16
500   %tmp676 = load i32* %arrayidx675, align 16
501   %mul677 = shl i32 %tmp676, 1
502   %cmp678 = icmp eq i32 %tmp670, %mul677
503   br i1 %cmp678, label %lor.lhs.false680, label %if.then856
505 lor.lhs.false680:                                 ; preds = %lor.lhs.false664
506   %tmp686 = load i32* %arrayidx685, align 4
507   %tmp692 = load i32* %arrayidx691, align 4
508   %mul693 = mul i32 %tmp692, 3
509   %cmp694 = icmp eq i32 %tmp686, %mul693
510   br i1 %cmp694, label %lor.lhs.false696, label %if.then856
512 lor.lhs.false696:                                 ; preds = %lor.lhs.false680
513   %tmp702 = load i32* %arrayidx701, align 8
514   %tmp708 = load i32* %arrayidx707, align 8
515   %mul709 = shl i32 %tmp708, 1
516   %cmp710 = icmp eq i32 %tmp702, %mul709
517   br i1 %cmp710, label %lor.lhs.false712, label %if.then856
519 lor.lhs.false712:                                 ; preds = %lor.lhs.false696
520   %tmp718 = load i32* %arrayidx717, align 4
521   %tmp724 = load i32* %arrayidx723, align 4
522   %mul725 = shl i32 %tmp724, 2
523   %cmp726 = icmp eq i32 %tmp718, %mul725
524   br i1 %cmp726, label %lor.lhs.false728, label %if.then856
526 lor.lhs.false728:                                 ; preds = %lor.lhs.false712
527   %tmp734 = load i32* %arrayidx733, align 16
528   %tmp740 = load i32* %arrayidx739, align 16
529   %mul741 = shl i32 %tmp740, 1
530   %cmp742 = icmp eq i32 %tmp734, %mul741
531   br i1 %cmp742, label %lor.lhs.false744, label %if.then856
533 lor.lhs.false744:                                 ; preds = %lor.lhs.false728
534   %tmp750 = load i32* %arrayidx749, align 4
535   %tmp756 = load i32* %arrayidx755, align 4
536   %mul757 = mul i32 %tmp756, 5
537   %cmp758 = icmp eq i32 %tmp750, %mul757
538   br i1 %cmp758, label %lor.lhs.false760, label %if.then856
540 lor.lhs.false760:                                 ; preds = %lor.lhs.false744
541   %tmp766 = load i32* %arrayidx765, align 8
542   %tmp772 = load i32* %arrayidx771, align 8
543   %mul773 = shl i32 %tmp772, 1
544   %cmp774 = icmp eq i32 %tmp766, %mul773
545   br i1 %cmp774, label %lor.lhs.false776, label %if.then856
547 lor.lhs.false776:                                 ; preds = %lor.lhs.false760
548   %tmp782 = load i32* %arrayidx781, align 4
549   %tmp788 = load i32* %arrayidx787, align 4
550   %mul789 = mul i32 %tmp788, 3
551   %cmp790 = icmp eq i32 %tmp782, %mul789
552   br i1 %cmp790, label %lor.lhs.false792, label %if.then856
554 lor.lhs.false792:                                 ; preds = %lor.lhs.false776
555   %tmp798 = load i32* %arrayidx797, align 16
556   %tmp804 = load i32* %arrayidx803, align 16
557   %mul805 = shl i32 %tmp804, 2
558   %cmp806 = icmp eq i32 %tmp798, %mul805
559   br i1 %cmp806, label %lor.lhs.false808, label %if.then856
561 lor.lhs.false808:                                 ; preds = %lor.lhs.false792
562   %tmp814 = load i32* %arrayidx813, align 4
563   %tmp820 = load i32* %arrayidx819, align 4
564   %mul821 = shl i32 %tmp820, 2
565   %cmp822 = icmp eq i32 %tmp814, %mul821
566   br i1 %cmp822, label %lor.lhs.false824, label %if.then856
568 lor.lhs.false824:                                 ; preds = %lor.lhs.false808
569   %tmp830 = load i32* %arrayidx829, align 8
570   %tmp836 = load i32* %arrayidx835, align 8
571   %mul837 = mul i32 %tmp836, 3
572   %cmp838 = icmp eq i32 %tmp830, %mul837
573   br i1 %cmp838, label %lor.lhs.false840, label %if.then856
575 lor.lhs.false840:                                 ; preds = %lor.lhs.false824
576   %tmp846 = load i32* %arrayidx845, align 4
577   %tmp852 = load i32* %arrayidx851, align 4
578   %mul853 = shl i32 %tmp852, 1
579   %cmp854 = icmp eq i32 %tmp846, %mul853
580   br i1 %cmp854, label %if.end857, label %if.then856
582 if.then856:                                       ; preds = %lor.lhs.false840, %lor.lhs.false824, %lor.lhs.false808, %lor.lhs.false792, %lor.lhs.false776, %lor.lhs.false760, %lor.lhs.false744, %lor.lhs.false728, %lor.lhs.false712, %lor.lhs.false696, %lor.lhs.false680, %lor.lhs.false664, %lor.lhs.false648, %lor.lhs.false632, %lor.lhs.false616, %for.body602
583   call void @abort() noreturn nounwind
584   unreachable
586 if.end857:                                        ; preds = %lor.lhs.false840
587   br label %for.inc858
589 for.inc858:                                       ; preds = %if.end857
590   %indvar.next = add i64 %indvar, 1
591   br label %for.cond598
593 for.end861:                                       ; preds = %for.cond598
594   ret i32 0
597 declare void @abort() noreturn
599 define i32 @main() nounwind uwtable {
600 entry:
601   call void @check_vect()
602   %call = call i32 @main1()
603   ret i32 0
606 define internal void @check_vect() nounwind uwtable noinline {
607 entry:
608   %a = alloca i32, align 4
609   %b = alloca i32, align 4
610   %c = alloca i32, align 4
611   %d = alloca i32, align 4
612   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
613   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
614   %tobool = icmp eq i32 %call1, 0
615   br i1 %tobool, label %if.then, label %lor.lhs.false
617 lor.lhs.false:                                    ; preds = %entry
618   %tmp4 = load i32* %d, align 4
619   %and6 = and i32 %tmp4, 67108864
620   %cmp = icmp eq i32 %and6, 0
621   br i1 %cmp, label %if.then, label %if.end
623 if.then:                                          ; preds = %entry, %lor.lhs.false
624   call void @exit(i32 0) noreturn nounwind
625   unreachable
627 if.end:                                           ; preds = %lor.lhs.false
628   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
629   ret void
632 declare void (i32)* @signal(i32, void (i32)*) nounwind
634 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
635 entry:
636   call void @exit(i32 0) noreturn nounwind
637   unreachable
639 return:                                           ; No predecessors!
640   ret void
643 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
644 entry:
645   %and = and i32 %__level, -2147483648
646   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
647   %cmp = icmp ult i32 %call, %__level
648   br i1 %cmp, label %if.then, label %if.end
650 if.then:                                          ; preds = %entry
651   br label %return
653 if.end:                                           ; preds = %entry
654   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
655   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
656   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
657   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
658   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
659   store i32 %asmresult, i32* %__eax, align 4
660   store i32 %asmresult8, i32* %__ebx, align 4
661   store i32 %asmresult9, i32* %__ecx, align 4
662   store i32 %asmresult10, i32* %__edx, align 4
663   br label %return
665 return:                                           ; preds = %if.end, %if.then
666   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
667   ret i32 %retval.0
670 declare void @exit(i32) noreturn
672 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
673 entry:
674   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
675   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
676   %tobool = icmp eq i32* %__sig, null
677   br i1 %tobool, label %if.end, label %if.then
679 if.then:                                          ; preds = %entry
680   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
681   store i32 %asmresult1, i32* %__sig, align 4
682   br label %if.end
684 if.end:                                           ; preds = %entry, %if.then
685   ret i32 %asmresult
688 !0 = metadata !{i32 -2147340386, i32 -2147340378} 
689 !1 = metadata !{i32 -2147340509, i32 -2147340501} 
690 ; CHECK: define