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