Add compile command to each testcase
[gcc-vect-testsuite.git] / slp-14.ll
blob3212d77559dcb4d1c20ba2c2a55c9905b76c02e6
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-14.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer slp-14.s > slp-14.ll
6 ; ModuleID = 'slp-14.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 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
11 @in2 = global [128 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, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0], align 16
13 define i32 @main1(i32 %n) nounwind uwtable {
14 entry:
15   %out = alloca [64 x i32], align 16
16   %out2 = alloca [128 x i16], align 16
17   %tmp120 = icmp sgt i32 %n, 0
18   %smax = select i1 %tmp120, i32 %n, i32 0
19   br label %for.cond
21 for.cond:                                         ; preds = %for.inc, %entry
22   %tmp147 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
23   %mul124 = mul i32 %tmp147, 16
24   %add33294 = add i32 %mul124, 15
25   %add31892 = add i32 %mul124, 14
26   %add30490 = add i32 %mul124, 13
27   %add29088 = add i32 %mul124, 12
28   %add27686 = add i32 %mul124, 11
29   %add26284 = add i32 %mul124, 10
30   %add24882 = add i32 %mul124, 9
31   %add23480 = add i32 %mul124, 8
32   %add22078 = add i32 %mul124, 7
33   %add20676 = add i32 %mul124, 6
34   %add19274 = add i32 %mul124, 5
35   %add17872 = add i32 %mul124, 4
36   %add16470 = add i32 %mul124, 3
37   %add15068 = add i32 %mul124, 2
38   %add13666 = add i32 %mul124, 1
39   %mul = mul i32 %tmp147, 8
40   %add4854 = add i32 %mul, 7
41   %add4153 = add i32 %mul, 6
42   %add3452 = add i32 %mul, 5
43   %add2751 = add i32 %mul, 4
44   %add2050 = add i32 %mul, 3
45   %add1349 = add i32 %mul, 2
46   %add648 = add i32 %mul, 1
47   %exitcond = icmp ne i32 %tmp147, %smax
48   br i1 %exitcond, label %for.body, label %for.end
50 for.body:                                         ; preds = %for.cond
51   %idxprom = sext i32 %mul to i64
52   %arrayidx = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom
53   %tmp3 = load i32* %arrayidx, align 16
54   %idxprom7 = sext i32 %add648 to i64
55   %arrayidx8 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom7
56   %tmp9 = load i32* %arrayidx8, align 4
57   %idxprom14 = sext i32 %add1349 to i64
58   %arrayidx15 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom14
59   %tmp16 = load i32* %arrayidx15, align 8
60   %idxprom21 = sext i32 %add2050 to i64
61   %arrayidx22 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom21
62   %tmp23 = load i32* %arrayidx22, align 4
63   %idxprom28 = sext i32 %add2751 to i64
64   %arrayidx29 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom28
65   %tmp30 = load i32* %arrayidx29, align 16
66   %idxprom35 = sext i32 %add3452 to i64
67   %arrayidx36 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom35
68   %tmp37 = load i32* %arrayidx36, align 4
69   %idxprom42 = sext i32 %add4153 to i64
70   %arrayidx43 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom42
71   %tmp44 = load i32* %arrayidx43, align 8
72   %idxprom49 = sext i32 %add4854 to i64
73   %arrayidx50 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom49
74   %tmp51 = load i32* %arrayidx50, align 4
75   %tmp55 = mul i32 %tmp3, 3
76   %add10 = shl i32 %tmp9, 1
77   %tmp56 = mul i32 %tmp16, 12
78   %tmp57 = mul i32 %tmp23, 5
79   %add31 = shl i32 %tmp30, 3
80   %add38 = shl i32 %tmp37, 2
81   %tmp58 = mul i32 %tmp44, 3
82   %add52 = shl i32 %tmp51, 1
83   %sub = add i32 %tmp55, 13
84   %idxprom72 = sext i32 %mul to i64
85   %arrayidx73 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom72
86   store i32 %sub, i32* %arrayidx73, align 16
87   %sub75 = add i32 %add10, 9
88   %idxprom79 = sext i32 %add648 to i64
89   %arrayidx80 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom79
90   store i32 %sub75, i32* %arrayidx80, align 4
91   %sub82 = add i32 %tmp56, 82
92   %idxprom86 = sext i32 %add1349 to i64
93   %arrayidx87 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom86
94   store i32 %sub82, i32* %arrayidx87, align 8
95   %sub89 = add i32 %tmp57, 39
96   %idxprom93 = sext i32 %add2050 to i64
97   %arrayidx94 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom93
98   store i32 %sub89, i32* %arrayidx94, align 4
99   %sub96 = add i32 %add31, 64
100   %idxprom100 = sext i32 %add2751 to i64
101   %arrayidx101 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom100
102   store i32 %sub96, i32* %arrayidx101, align 16
103   %sub103 = add i32 %add38, 33
104   %idxprom107 = sext i32 %add3452 to i64
105   %arrayidx108 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom107
106   store i32 %sub103, i32* %arrayidx108, align 4
107   %sub110 = add i32 %tmp58, 30
108   %idxprom114 = sext i32 %add4153 to i64
109   %arrayidx115 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom114
110   store i32 %sub110, i32* %arrayidx115, align 8
111   %sub117 = add i32 %add52, 17
112   %idxprom121 = sext i32 %add4854 to i64
113   %arrayidx122 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom121
114   store i32 %sub117, i32* %arrayidx122, align 4
115   %idxprom125 = sext i32 %mul124 to i64
116   %arrayidx126 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom125
117   %tmp127 = load i16* %arrayidx126, align 16
118   %add128 = add i16 %tmp127, 2
119   %idxprom132 = sext i32 %mul124 to i64
120   %arrayidx133 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom132
121   store i16 %add128, i16* %arrayidx133, align 16
122   %idxprom137 = sext i32 %add13666 to i64
123   %arrayidx138 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom137
124   %tmp139 = load i16* %arrayidx138, align 2
125   %add141 = add i16 %tmp139, 3
126   %idxprom146 = sext i32 %add13666 to i64
127   %arrayidx147 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom146
128   store i16 %add141, i16* %arrayidx147, align 2
129   %idxprom151 = sext i32 %add15068 to i64
130   %arrayidx152 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom151
131   %tmp153 = load i16* %arrayidx152, align 4
132   %add155 = add i16 %tmp153, 4
133   %idxprom160 = sext i32 %add15068 to i64
134   %arrayidx161 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom160
135   store i16 %add155, i16* %arrayidx161, align 4
136   %idxprom165 = sext i32 %add16470 to i64
137   %arrayidx166 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom165
138   %tmp167 = load i16* %arrayidx166, align 2
139   %add169 = add i16 %tmp167, 3
140   %idxprom174 = sext i32 %add16470 to i64
141   %arrayidx175 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom174
142   store i16 %add169, i16* %arrayidx175, align 2
143   %idxprom179 = sext i32 %add17872 to i64
144   %arrayidx180 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom179
145   %tmp181 = load i16* %arrayidx180, align 8
146   %add183 = add i16 %tmp181, 2
147   %idxprom188 = sext i32 %add17872 to i64
148   %arrayidx189 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom188
149   store i16 %add183, i16* %arrayidx189, align 8
150   %idxprom193 = sext i32 %add19274 to i64
151   %arrayidx194 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom193
152   %tmp195 = load i16* %arrayidx194, align 2
153   %add197 = add i16 %tmp195, 3
154   %idxprom202 = sext i32 %add19274 to i64
155   %arrayidx203 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom202
156   store i16 %add197, i16* %arrayidx203, align 2
157   %idxprom207 = sext i32 %add20676 to i64
158   %arrayidx208 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom207
159   %tmp209 = load i16* %arrayidx208, align 4
160   %add211 = add i16 %tmp209, 2
161   %idxprom216 = sext i32 %add20676 to i64
162   %arrayidx217 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom216
163   store i16 %add211, i16* %arrayidx217, align 4
164   %idxprom221 = sext i32 %add22078 to i64
165   %arrayidx222 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom221
166   %tmp223 = load i16* %arrayidx222, align 2
167   %add225 = add i16 %tmp223, 4
168   %idxprom230 = sext i32 %add22078 to i64
169   %arrayidx231 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom230
170   store i16 %add225, i16* %arrayidx231, align 2
171   %idxprom235 = sext i32 %add23480 to i64
172   %arrayidx236 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom235
173   %tmp237 = load i16* %arrayidx236, align 16
174   %add239 = add i16 %tmp237, 2
175   %idxprom244 = sext i32 %add23480 to i64
176   %arrayidx245 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom244
177   store i16 %add239, i16* %arrayidx245, align 16
178   %idxprom249 = sext i32 %add24882 to i64
179   %arrayidx250 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom249
180   %tmp251 = load i16* %arrayidx250, align 2
181   %add253 = add i16 %tmp251, 5
182   %idxprom258 = sext i32 %add24882 to i64
183   %arrayidx259 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom258
184   store i16 %add253, i16* %arrayidx259, align 2
185   %idxprom263 = sext i32 %add26284 to i64
186   %arrayidx264 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom263
187   %tmp265 = load i16* %arrayidx264, align 4
188   %add267 = add i16 %tmp265, 2
189   %idxprom272 = sext i32 %add26284 to i64
190   %arrayidx273 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom272
191   store i16 %add267, i16* %arrayidx273, align 4
192   %idxprom277 = sext i32 %add27686 to i64
193   %arrayidx278 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom277
194   %tmp279 = load i16* %arrayidx278, align 2
195   %add281 = add i16 %tmp279, 3
196   %idxprom286 = sext i32 %add27686 to i64
197   %arrayidx287 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom286
198   store i16 %add281, i16* %arrayidx287, align 2
199   %idxprom291 = sext i32 %add29088 to i64
200   %arrayidx292 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom291
201   %tmp293 = load i16* %arrayidx292, align 8
202   %add295 = add i16 %tmp293, 4
203   %idxprom300 = sext i32 %add29088 to i64
204   %arrayidx301 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom300
205   store i16 %add295, i16* %arrayidx301, align 8
206   %idxprom305 = sext i32 %add30490 to i64
207   %arrayidx306 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom305
208   %tmp307 = load i16* %arrayidx306, align 2
209   %add309 = add i16 %tmp307, 4
210   %idxprom314 = sext i32 %add30490 to i64
211   %arrayidx315 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom314
212   store i16 %add309, i16* %arrayidx315, align 2
213   %idxprom319 = sext i32 %add31892 to i64
214   %arrayidx320 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom319
215   %tmp321 = load i16* %arrayidx320, align 4
216   %add323 = add i16 %tmp321, 3
217   %idxprom328 = sext i32 %add31892 to i64
218   %arrayidx329 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom328
219   store i16 %add323, i16* %arrayidx329, align 4
220   %idxprom333 = sext i32 %add33294 to i64
221   %arrayidx334 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom333
222   %tmp335 = load i16* %arrayidx334, align 2
223   %add337 = add i16 %tmp335, 2
224   %idxprom342 = sext i32 %add33294 to i64
225   %arrayidx343 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom342
226   store i16 %add337, i16* %arrayidx343, align 2
227   br label %for.inc
229 for.inc:                                          ; preds = %for.body
230   %inc = add nsw i32 %tmp147, 1
231   br label %for.cond
233 for.end:                                          ; preds = %for.cond
234   br label %for.cond345
236 for.cond345:                                      ; preds = %for.inc778, %for.end
237   %tmp148 = phi i32 [ 0, %for.end ], [ %inc780, %for.inc778 ]
238   %mul492 = mul i32 %tmp148, 16
239   %add76146 = add i32 %mul492, 15
240   %add74344 = add i32 %mul492, 14
241   %add72542 = add i32 %mul492, 13
242   %add70740 = add i32 %mul492, 12
243   %add68938 = add i32 %mul492, 11
244   %add67136 = add i32 %mul492, 10
245   %add65334 = add i32 %mul492, 9
246   %add63532 = add i32 %mul492, 8
247   %add61730 = add i32 %mul492, 7
248   %add59928 = add i32 %mul492, 6
249   %add58126 = add i32 %mul492, 5
250   %add56324 = add i32 %mul492, 4
251   %add54522 = add i32 %mul492, 3
252   %add52720 = add i32 %mul492, 2
253   %add50918 = add i32 %mul492, 1
254   %mul352 = mul i32 %tmp148, 8
255   %add47616 = add i32 %mul352, 7
256   %add45813 = add i32 %mul352, 6
257   %add44011 = add i32 %mul352, 5
258   %add4229 = add i32 %mul352, 4
259   %add4046 = add i32 %mul352, 3
260   %add3863 = add i32 %mul352, 2
261   %add3681 = add i32 %mul352, 1
262   %cmp348 = icmp slt i32 %tmp148, %n
263   br i1 %cmp348, label %for.body350, label %for.end781
265 for.body350:                                      ; preds = %for.cond345
266   %idxprom353 = sext i32 %mul352 to i64
267   %arrayidx354 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom353
268   %tmp355 = load i32* %arrayidx354, align 16
269   %idxprom358 = sext i32 %mul352 to i64
270   %arrayidx359 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom358
271   %tmp360 = load i32* %arrayidx359, align 16
272   %tmp = mul i32 %tmp360, 3
273   %sub363 = add i32 %tmp, 13
274   %cmp364 = icmp eq i32 %tmp355, %sub363
275   br i1 %cmp364, label %lor.lhs.false, label %if.then
277 lor.lhs.false:                                    ; preds = %for.body350
278   %idxprom369 = sext i32 %add3681 to i64
279   %arrayidx370 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom369
280   %tmp371 = load i32* %arrayidx370, align 4
281   %idxprom375 = sext i32 %add3681 to i64
282   %arrayidx376 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom375
283   %tmp377 = load i32* %arrayidx376, align 4
284   %add378 = shl i32 %tmp377, 1
285   %sub380 = add i32 %add378, 9
286   %cmp381 = icmp eq i32 %tmp371, %sub380
287   br i1 %cmp381, label %lor.lhs.false383, label %if.then
289 lor.lhs.false383:                                 ; preds = %lor.lhs.false
290   %idxprom387 = sext i32 %add3863 to i64
291   %arrayidx388 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom387
292   %tmp389 = load i32* %arrayidx388, align 8
293   %idxprom393 = sext i32 %add3863 to i64
294   %arrayidx394 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom393
295   %tmp395 = load i32* %arrayidx394, align 8
296   %tmp5 = mul i32 %tmp395, 12
297   %sub398 = add i32 %tmp5, 82
298   %cmp399 = icmp eq i32 %tmp389, %sub398
299   br i1 %cmp399, label %lor.lhs.false401, label %if.then
301 lor.lhs.false401:                                 ; preds = %lor.lhs.false383
302   %idxprom405 = sext i32 %add4046 to i64
303   %arrayidx406 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom405
304   %tmp407 = load i32* %arrayidx406, align 4
305   %idxprom411 = sext i32 %add4046 to i64
306   %arrayidx412 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom411
307   %tmp413 = load i32* %arrayidx412, align 4
308   %tmp8 = mul i32 %tmp413, 5
309   %sub416 = add i32 %tmp8, 39
310   %cmp417 = icmp eq i32 %tmp407, %sub416
311   br i1 %cmp417, label %lor.lhs.false419, label %if.then
313 lor.lhs.false419:                                 ; preds = %lor.lhs.false401
314   %idxprom423 = sext i32 %add4229 to i64
315   %arrayidx424 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom423
316   %tmp425 = load i32* %arrayidx424, align 16
317   %idxprom429 = sext i32 %add4229 to i64
318   %arrayidx430 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom429
319   %tmp431 = load i32* %arrayidx430, align 16
320   %add432 = shl i32 %tmp431, 3
321   %sub434 = add i32 %add432, 64
322   %cmp435 = icmp eq i32 %tmp425, %sub434
323   br i1 %cmp435, label %lor.lhs.false437, label %if.then
325 lor.lhs.false437:                                 ; preds = %lor.lhs.false419
326   %idxprom441 = sext i32 %add44011 to i64
327   %arrayidx442 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom441
328   %tmp443 = load i32* %arrayidx442, align 4
329   %idxprom447 = sext i32 %add44011 to i64
330   %arrayidx448 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom447
331   %tmp449 = load i32* %arrayidx448, align 4
332   %add450 = shl i32 %tmp449, 2
333   %sub452 = add i32 %add450, 33
334   %cmp453 = icmp eq i32 %tmp443, %sub452
335   br i1 %cmp453, label %lor.lhs.false455, label %if.then
337 lor.lhs.false455:                                 ; preds = %lor.lhs.false437
338   %idxprom459 = sext i32 %add45813 to i64
339   %arrayidx460 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom459
340   %tmp461 = load i32* %arrayidx460, align 8
341   %idxprom465 = sext i32 %add45813 to i64
342   %arrayidx466 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom465
343   %tmp467 = load i32* %arrayidx466, align 8
344   %tmp15 = mul i32 %tmp467, 3
345   %sub470 = add i32 %tmp15, 30
346   %cmp471 = icmp eq i32 %tmp461, %sub470
347   br i1 %cmp471, label %lor.lhs.false473, label %if.then
349 lor.lhs.false473:                                 ; preds = %lor.lhs.false455
350   %idxprom477 = sext i32 %add47616 to i64
351   %arrayidx478 = getelementptr inbounds [64 x i32]* %out, i64 0, i64 %idxprom477
352   %tmp479 = load i32* %arrayidx478, align 4
353   %idxprom483 = sext i32 %add47616 to i64
354   %arrayidx484 = getelementptr inbounds [64 x i32]* @in, i64 0, i64 %idxprom483
355   %tmp485 = load i32* %arrayidx484, align 4
356   %add486 = shl i32 %tmp485, 1
357   %sub488 = add i32 %add486, 17
358   %cmp489 = icmp eq i32 %tmp479, %sub488
359   br i1 %cmp489, label %if.end, label %if.then
361 if.then:                                          ; preds = %lor.lhs.false473, %lor.lhs.false455, %lor.lhs.false437, %lor.lhs.false419, %lor.lhs.false401, %lor.lhs.false383, %lor.lhs.false, %for.body350
362   call void @abort() noreturn nounwind
363   unreachable
365 if.end:                                           ; preds = %lor.lhs.false473
366   %idxprom493 = sext i32 %mul492 to i64
367   %arrayidx494 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom493
368   %tmp495 = load i16* %arrayidx494, align 16
369   %conv496 = zext i16 %tmp495 to i32
370   %idxprom499 = sext i32 %mul492 to i64
371   %arrayidx500 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom499
372   %tmp501 = load i16* %arrayidx500, align 16
373   %conv502 = zext i16 %tmp501 to i32
374   %add503 = add nsw i32 %conv502, 2
375   %cmp504 = icmp eq i32 %conv496, %add503
376   br i1 %cmp504, label %lor.lhs.false506, label %if.then776
378 lor.lhs.false506:                                 ; preds = %if.end
379   %idxprom510 = sext i32 %add50918 to i64
380   %arrayidx511 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom510
381   %tmp512 = load i16* %arrayidx511, align 2
382   %conv513 = zext i16 %tmp512 to i32
383   %idxprom517 = sext i32 %add50918 to i64
384   %arrayidx518 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom517
385   %tmp519 = load i16* %arrayidx518, align 2
386   %conv520 = zext i16 %tmp519 to i32
387   %add521 = add nsw i32 %conv520, 3
388   %cmp522 = icmp eq i32 %conv513, %add521
389   br i1 %cmp522, label %lor.lhs.false524, label %if.then776
391 lor.lhs.false524:                                 ; preds = %lor.lhs.false506
392   %idxprom528 = sext i32 %add52720 to i64
393   %arrayidx529 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom528
394   %tmp530 = load i16* %arrayidx529, align 4
395   %conv531 = zext i16 %tmp530 to i32
396   %idxprom535 = sext i32 %add52720 to i64
397   %arrayidx536 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom535
398   %tmp537 = load i16* %arrayidx536, align 4
399   %conv538 = zext i16 %tmp537 to i32
400   %add539 = add nsw i32 %conv538, 4
401   %cmp540 = icmp eq i32 %conv531, %add539
402   br i1 %cmp540, label %lor.lhs.false542, label %if.then776
404 lor.lhs.false542:                                 ; preds = %lor.lhs.false524
405   %idxprom546 = sext i32 %add54522 to i64
406   %arrayidx547 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom546
407   %tmp548 = load i16* %arrayidx547, align 2
408   %conv549 = zext i16 %tmp548 to i32
409   %idxprom553 = sext i32 %add54522 to i64
410   %arrayidx554 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom553
411   %tmp555 = load i16* %arrayidx554, align 2
412   %conv556 = zext i16 %tmp555 to i32
413   %add557 = add nsw i32 %conv556, 3
414   %cmp558 = icmp eq i32 %conv549, %add557
415   br i1 %cmp558, label %lor.lhs.false560, label %if.then776
417 lor.lhs.false560:                                 ; preds = %lor.lhs.false542
418   %idxprom564 = sext i32 %add56324 to i64
419   %arrayidx565 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom564
420   %tmp566 = load i16* %arrayidx565, align 8
421   %conv567 = zext i16 %tmp566 to i32
422   %idxprom571 = sext i32 %add56324 to i64
423   %arrayidx572 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom571
424   %tmp573 = load i16* %arrayidx572, align 8
425   %conv574 = zext i16 %tmp573 to i32
426   %add575 = add nsw i32 %conv574, 2
427   %cmp576 = icmp eq i32 %conv567, %add575
428   br i1 %cmp576, label %lor.lhs.false578, label %if.then776
430 lor.lhs.false578:                                 ; preds = %lor.lhs.false560
431   %idxprom582 = sext i32 %add58126 to i64
432   %arrayidx583 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom582
433   %tmp584 = load i16* %arrayidx583, align 2
434   %conv585 = zext i16 %tmp584 to i32
435   %idxprom589 = sext i32 %add58126 to i64
436   %arrayidx590 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom589
437   %tmp591 = load i16* %arrayidx590, align 2
438   %conv592 = zext i16 %tmp591 to i32
439   %add593 = add nsw i32 %conv592, 3
440   %cmp594 = icmp eq i32 %conv585, %add593
441   br i1 %cmp594, label %lor.lhs.false596, label %if.then776
443 lor.lhs.false596:                                 ; preds = %lor.lhs.false578
444   %idxprom600 = sext i32 %add59928 to i64
445   %arrayidx601 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom600
446   %tmp602 = load i16* %arrayidx601, align 4
447   %conv603 = zext i16 %tmp602 to i32
448   %idxprom607 = sext i32 %add59928 to i64
449   %arrayidx608 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom607
450   %tmp609 = load i16* %arrayidx608, align 4
451   %conv610 = zext i16 %tmp609 to i32
452   %add611 = add nsw i32 %conv610, 2
453   %cmp612 = icmp eq i32 %conv603, %add611
454   br i1 %cmp612, label %lor.lhs.false614, label %if.then776
456 lor.lhs.false614:                                 ; preds = %lor.lhs.false596
457   %idxprom618 = sext i32 %add61730 to i64
458   %arrayidx619 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom618
459   %tmp620 = load i16* %arrayidx619, align 2
460   %conv621 = zext i16 %tmp620 to i32
461   %idxprom625 = sext i32 %add61730 to i64
462   %arrayidx626 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom625
463   %tmp627 = load i16* %arrayidx626, align 2
464   %conv628 = zext i16 %tmp627 to i32
465   %add629 = add nsw i32 %conv628, 4
466   %cmp630 = icmp eq i32 %conv621, %add629
467   br i1 %cmp630, label %lor.lhs.false632, label %if.then776
469 lor.lhs.false632:                                 ; preds = %lor.lhs.false614
470   %idxprom636 = sext i32 %add63532 to i64
471   %arrayidx637 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom636
472   %tmp638 = load i16* %arrayidx637, align 16
473   %conv639 = zext i16 %tmp638 to i32
474   %idxprom643 = sext i32 %add63532 to i64
475   %arrayidx644 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom643
476   %tmp645 = load i16* %arrayidx644, align 16
477   %conv646 = zext i16 %tmp645 to i32
478   %add647 = add nsw i32 %conv646, 2
479   %cmp648 = icmp eq i32 %conv639, %add647
480   br i1 %cmp648, label %lor.lhs.false650, label %if.then776
482 lor.lhs.false650:                                 ; preds = %lor.lhs.false632
483   %idxprom654 = sext i32 %add65334 to i64
484   %arrayidx655 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom654
485   %tmp656 = load i16* %arrayidx655, align 2
486   %conv657 = zext i16 %tmp656 to i32
487   %idxprom661 = sext i32 %add65334 to i64
488   %arrayidx662 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom661
489   %tmp663 = load i16* %arrayidx662, align 2
490   %conv664 = zext i16 %tmp663 to i32
491   %add665 = add nsw i32 %conv664, 5
492   %cmp666 = icmp eq i32 %conv657, %add665
493   br i1 %cmp666, label %lor.lhs.false668, label %if.then776
495 lor.lhs.false668:                                 ; preds = %lor.lhs.false650
496   %idxprom672 = sext i32 %add67136 to i64
497   %arrayidx673 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom672
498   %tmp674 = load i16* %arrayidx673, align 4
499   %conv675 = zext i16 %tmp674 to i32
500   %idxprom679 = sext i32 %add67136 to i64
501   %arrayidx680 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom679
502   %tmp681 = load i16* %arrayidx680, align 4
503   %conv682 = zext i16 %tmp681 to i32
504   %add683 = add nsw i32 %conv682, 2
505   %cmp684 = icmp eq i32 %conv675, %add683
506   br i1 %cmp684, label %lor.lhs.false686, label %if.then776
508 lor.lhs.false686:                                 ; preds = %lor.lhs.false668
509   %idxprom690 = sext i32 %add68938 to i64
510   %arrayidx691 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom690
511   %tmp692 = load i16* %arrayidx691, align 2
512   %conv693 = zext i16 %tmp692 to i32
513   %idxprom697 = sext i32 %add68938 to i64
514   %arrayidx698 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom697
515   %tmp699 = load i16* %arrayidx698, align 2
516   %conv700 = zext i16 %tmp699 to i32
517   %add701 = add nsw i32 %conv700, 3
518   %cmp702 = icmp eq i32 %conv693, %add701
519   br i1 %cmp702, label %lor.lhs.false704, label %if.then776
521 lor.lhs.false704:                                 ; preds = %lor.lhs.false686
522   %idxprom708 = sext i32 %add70740 to i64
523   %arrayidx709 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom708
524   %tmp710 = load i16* %arrayidx709, align 8
525   %conv711 = zext i16 %tmp710 to i32
526   %idxprom715 = sext i32 %add70740 to i64
527   %arrayidx716 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom715
528   %tmp717 = load i16* %arrayidx716, align 8
529   %conv718 = zext i16 %tmp717 to i32
530   %add719 = add nsw i32 %conv718, 4
531   %cmp720 = icmp eq i32 %conv711, %add719
532   br i1 %cmp720, label %lor.lhs.false722, label %if.then776
534 lor.lhs.false722:                                 ; preds = %lor.lhs.false704
535   %idxprom726 = sext i32 %add72542 to i64
536   %arrayidx727 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom726
537   %tmp728 = load i16* %arrayidx727, align 2
538   %conv729 = zext i16 %tmp728 to i32
539   %idxprom733 = sext i32 %add72542 to i64
540   %arrayidx734 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom733
541   %tmp735 = load i16* %arrayidx734, align 2
542   %conv736 = zext i16 %tmp735 to i32
543   %add737 = add nsw i32 %conv736, 4
544   %cmp738 = icmp eq i32 %conv729, %add737
545   br i1 %cmp738, label %lor.lhs.false740, label %if.then776
547 lor.lhs.false740:                                 ; preds = %lor.lhs.false722
548   %idxprom744 = sext i32 %add74344 to i64
549   %arrayidx745 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom744
550   %tmp746 = load i16* %arrayidx745, align 4
551   %conv747 = zext i16 %tmp746 to i32
552   %idxprom751 = sext i32 %add74344 to i64
553   %arrayidx752 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom751
554   %tmp753 = load i16* %arrayidx752, align 4
555   %conv754 = zext i16 %tmp753 to i32
556   %add755 = add nsw i32 %conv754, 3
557   %cmp756 = icmp eq i32 %conv747, %add755
558   br i1 %cmp756, label %lor.lhs.false758, label %if.then776
560 lor.lhs.false758:                                 ; preds = %lor.lhs.false740
561   %idxprom762 = sext i32 %add76146 to i64
562   %arrayidx763 = getelementptr inbounds [128 x i16]* %out2, i64 0, i64 %idxprom762
563   %tmp764 = load i16* %arrayidx763, align 2
564   %conv765 = zext i16 %tmp764 to i32
565   %idxprom769 = sext i32 %add76146 to i64
566   %arrayidx770 = getelementptr inbounds [128 x i16]* @in2, i64 0, i64 %idxprom769
567   %tmp771 = load i16* %arrayidx770, align 2
568   %conv772 = zext i16 %tmp771 to i32
569   %add773 = add nsw i32 %conv772, 2
570   %cmp774 = icmp eq i32 %conv765, %add773
571   br i1 %cmp774, label %if.end777, label %if.then776
573 if.then776:                                       ; preds = %lor.lhs.false758, %lor.lhs.false740, %lor.lhs.false722, %lor.lhs.false704, %lor.lhs.false686, %lor.lhs.false668, %lor.lhs.false650, %lor.lhs.false632, %lor.lhs.false614, %lor.lhs.false596, %lor.lhs.false578, %lor.lhs.false560, %lor.lhs.false542, %lor.lhs.false524, %lor.lhs.false506, %if.end
574   call void @abort() noreturn nounwind
575   unreachable
577 if.end777:                                        ; preds = %lor.lhs.false758
578   br label %for.inc778
580 for.inc778:                                       ; preds = %if.end777
581   %inc780 = add nsw i32 %tmp148, 1
582   br label %for.cond345
584 for.end781:                                       ; preds = %for.cond345
585   ret i32 0
588 declare void @abort() noreturn
590 define i32 @main() nounwind uwtable {
591 entry:
592   call void @check_vect()
593   %call = call i32 @main1(i32 8)
594   ret i32 0
597 define internal void @check_vect() nounwind uwtable noinline {
598 entry:
599   %a = alloca i32, align 4
600   %b = alloca i32, align 4
601   %c = alloca i32, align 4
602   %d = alloca i32, align 4
603   %call = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* @sig_ill_handler) nounwind
604   %call1 = call i32 @__get_cpuid(i32 1, i32* %a, i32* %b, i32* %c, i32* %d)
605   %tobool = icmp eq i32 %call1, 0
606   br i1 %tobool, label %if.then, label %lor.lhs.false
608 lor.lhs.false:                                    ; preds = %entry
609   %tmp4 = load i32* %d, align 4
610   %and6 = and i32 %tmp4, 67108864
611   %cmp = icmp eq i32 %and6, 0
612   br i1 %cmp, label %if.then, label %if.end
614 if.then:                                          ; preds = %entry, %lor.lhs.false
615   call void @exit(i32 0) noreturn nounwind
616   unreachable
618 if.end:                                           ; preds = %lor.lhs.false
619   %call7 = call void (i32)* (i32, void (i32)*)* @signal(i32 4, void (i32)* null) nounwind
620   ret void
623 declare void (i32)* @signal(i32, void (i32)*) nounwind
625 define internal void @sig_ill_handler(i32 %sig) nounwind uwtable {
626 entry:
627   call void @exit(i32 0) noreturn nounwind
628   unreachable
630 return:                                           ; No predecessors!
631   ret void
634 define internal i32 @__get_cpuid(i32 %__level, i32* %__eax, i32* %__ebx, i32* %__ecx, i32* %__edx) nounwind uwtable inlinehint {
635 entry:
636   %and = and i32 %__level, -2147483648
637   %call = call i32 @__get_cpuid_max(i32 %and, i32* null)
638   %cmp = icmp ult i32 %call, %__level
639   br i1 %cmp, label %if.then, label %if.end
641 if.then:                                          ; preds = %entry
642   br label %return
644 if.end:                                           ; preds = %entry
645   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__level) nounwind, !srcloc !0
646   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
647   %asmresult8 = extractvalue { i32, i32, i32, i32 } %tmp, 1
648   %asmresult9 = extractvalue { i32, i32, i32, i32 } %tmp, 2
649   %asmresult10 = extractvalue { i32, i32, i32, i32 } %tmp, 3
650   store i32 %asmresult, i32* %__eax, align 4
651   store i32 %asmresult8, i32* %__ebx, align 4
652   store i32 %asmresult9, i32* %__ecx, align 4
653   store i32 %asmresult10, i32* %__edx, align 4
654   br label %return
656 return:                                           ; preds = %if.end, %if.then
657   %retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.end ]
658   ret i32 %retval.0
661 declare void @exit(i32) noreturn
663 define internal i32 @__get_cpuid_max(i32 %__ext, i32* %__sig) nounwind uwtable inlinehint {
664 entry:
665   %tmp = call { i32, i32, i32, i32 } asm "cpuid\0A\09", "={ax},={bx},={cx},={dx},0,~{dirflag},~{fpsr},~{flags}"(i32 %__ext) nounwind, !srcloc !1
666   %asmresult = extractvalue { i32, i32, i32, i32 } %tmp, 0
667   %tobool = icmp eq i32* %__sig, null
668   br i1 %tobool, label %if.end, label %if.then
670 if.then:                                          ; preds = %entry
671   %asmresult1 = extractvalue { i32, i32, i32, i32 } %tmp, 1
672   store i32 %asmresult1, i32* %__sig, align 4
673   br label %if.end
675 if.end:                                           ; preds = %entry, %if.then
676   ret i32 %asmresult
679 !0 = metadata !{i32 -2147340623, i32 -2147340615} 
680 !1 = metadata !{i32 -2147340746, i32 -2147340738} 
681 ; CHECK: define