[ARM] Cortex-M4 schedule additions
[llvm-complete.git] / test / CodeGen / Thumb / remove-unneeded-push-pop.ll
blob054be2ea8587214388d485ebad33efc39eab7642
1 ; RUN: llc -O0 -mtriple thumbv6m-arm-none-eabi < %s | FileCheck %s
3 @a = external hidden global i32*, align 4
4 @f = external hidden global i32, align 4
6 define hidden void @foo() {
7 entry:
8 ; CHECK-NOT: push       {lr}
9 ; CHECK-NOT: pop        {pc}
10   store i32 24654, i32* @f, align 4
11   br label %if.end
13 if.end:                                           ; preds = %entry
14   %0 = load i32*, i32** @a, align 4
15   %arrayidx1 = getelementptr inbounds i32, i32* %0, i32 2
16   %1 = load i32, i32* %arrayidx1, align 4
17   %tobool2 = icmp ne i32 %1, 0
18   br i1 %tobool2, label %if.then3, label %if.end4
20 if.then3:                                         ; preds = %if.end
21   store i32 17785, i32* @f, align 4
22   br label %if.end4
24 if.end4:                                          ; preds = %if.then3, %if.end
25   %2 = load i32*, i32** @a, align 4
26   %arrayidx5 = getelementptr inbounds i32, i32* %2, i32 3
27   %3 = load i32, i32* %arrayidx5, align 4
28   %tobool6 = icmp ne i32 %3, 0
29   br i1 %tobool6, label %if.then7, label %if.end8
31 if.then7:                                         ; preds = %if.end4
32   store i32 10342, i32* @f, align 4
33   br label %if.end8
35 if.end8:                                          ; preds = %if.then7, %if.end4
36   %4 = load i32*, i32** @a, align 4
37   %arrayidx9 = getelementptr inbounds i32, i32* %4, i32 4
38   %5 = load i32, i32* %arrayidx9, align 4
39   %tobool10 = icmp ne i32 %5, 0
40   br i1 %tobool10, label %if.then11, label %if.end12
42 if.then11:                                        ; preds = %if.end8
43   store i32 29082, i32* @f, align 4
44   br label %if.end12
46 if.end12:                                         ; preds = %if.then11, %if.end8
47   %6 = load i32*, i32** @a, align 4
48   %arrayidx13 = getelementptr inbounds i32, i32* %6, i32 5
49   %7 = load i32, i32* %arrayidx13, align 4
50   %tobool14 = icmp ne i32 %7, 0
51   br i1 %tobool14, label %if.then15, label %if.end16
53 if.then15:                                        ; preds = %if.end12
54   store i32 29893, i32* @f, align 4
55   br label %if.end16
57 if.end16:                                         ; preds = %if.then15, %if.end12
58   %8 = load i32*, i32** @a, align 4
59   %arrayidx17 = getelementptr inbounds i32, i32* %8, i32 6
60   %9 = load i32, i32* %arrayidx17, align 4
61   %tobool18 = icmp ne i32 %9, 0
62   br i1 %tobool18, label %if.then19, label %if.end20
64 if.then19:                                        ; preds = %if.end16
65   store i32 19071, i32* @f, align 4
66   br label %if.end20
68 if.end20:                                         ; preds = %if.then19, %if.end16
69   %10 = load i32*, i32** @a, align 4
70   %arrayidx21 = getelementptr inbounds i32, i32* %10, i32 7
71   %11 = load i32, i32* %arrayidx21, align 4
72   %tobool22 = icmp ne i32 %11, 0
73   br i1 %tobool22, label %if.then23, label %if.end24
75 if.then23:                                        ; preds = %if.end20
76   store i32 6154, i32* @f, align 4
77   br label %if.end24
79 if.end24:                                         ; preds = %if.then23, %if.end20
80   %12 = load i32*, i32** @a, align 4
81   %arrayidx25 = getelementptr inbounds i32, i32* %12, i32 8
82   %13 = load i32, i32* %arrayidx25, align 4
83   %tobool26 = icmp ne i32 %13, 0
84   br i1 %tobool26, label %if.then27, label %if.end28
86 if.then27:                                        ; preds = %if.end24
87   store i32 30498, i32* @f, align 4
88   br label %if.end28
90 if.end28:                                         ; preds = %if.then27, %if.end24
91   %14 = load i32*, i32** @a, align 4
92   %arrayidx29 = getelementptr inbounds i32, i32* %14, i32 9
93   %15 = load i32, i32* %arrayidx29, align 4
94   %tobool30 = icmp ne i32 %15, 0
95   br i1 %tobool30, label %if.then31, label %if.end32
97 if.then31:                                        ; preds = %if.end28
98   store i32 16667, i32* @f, align 4
99   br label %if.end32
101 if.end32:                                         ; preds = %if.then31, %if.end28
102   %16 = load i32*, i32** @a, align 4
103   %arrayidx33 = getelementptr inbounds i32, i32* %16, i32 10
104   %17 = load i32, i32* %arrayidx33, align 4
105   %tobool34 = icmp ne i32 %17, 0
106   br i1 %tobool34, label %if.then35, label %if.end36
108 if.then35:                                        ; preds = %if.end32
109   store i32 195, i32* @f, align 4
110   br label %if.end36
112 if.end36:                                         ; preds = %if.then35, %if.end32
113   %18 = load i32*, i32** @a, align 4
114   %arrayidx37 = getelementptr inbounds i32, i32* %18, i32 11
115   %19 = load i32, i32* %arrayidx37, align 4
116   %tobool38 = icmp ne i32 %19, 0
117   br i1 %tobool38, label %if.then39, label %if.end40
119 if.then39:                                        ; preds = %if.end36
120   store i32 14665, i32* @f, align 4
121   br label %if.end40
123 if.end40:                                         ; preds = %if.then39, %if.end36
124   %20 = load i32*, i32** @a, align 4
125   %arrayidx41 = getelementptr inbounds i32, i32* %20, i32 12
126   %21 = load i32, i32* %arrayidx41, align 4
127   %tobool42 = icmp ne i32 %21, 0
128   br i1 %tobool42, label %if.then43, label %if.end44
130 if.then43:                                        ; preds = %if.end40
131   store i32 19305, i32* @f, align 4
132   br label %if.end44
134 if.end44:                                         ; preds = %if.then43, %if.end40
135   %22 = load i32*, i32** @a, align 4
136   %arrayidx45 = getelementptr inbounds i32, i32* %22, i32 13
137   %23 = load i32, i32* %arrayidx45, align 4
138   %tobool46 = icmp ne i32 %23, 0
139   br i1 %tobool46, label %if.then47, label %if.end48
141 if.then47:                                        ; preds = %if.end44
142   store i32 15133, i32* @f, align 4
143   br label %if.end48
145 if.end48:                                         ; preds = %if.then47, %if.end44
146   %24 = load i32*, i32** @a, align 4
147   %arrayidx49 = getelementptr inbounds i32, i32* %24, i32 14
148   %25 = load i32, i32* %arrayidx49, align 4
149   %tobool50 = icmp ne i32 %25, 0
150   br i1 %tobool50, label %if.then51, label %if.end52
152 if.then51:                                        ; preds = %if.end48
153   store i32 19173, i32* @f, align 4
154   br label %if.end52
156 if.end52:                                         ; preds = %if.then51, %if.end48
157   br label %if.then55
159 if.then55:                                        ; preds = %if.end52
160   store i32 14025, i32* @f, align 4
161   br label %if.end56
163 if.end56:                                         ; preds = %if.then55
164   %26 = load i32*, i32** @a, align 4
165   %arrayidx57 = getelementptr inbounds i32, i32* %26, i32 16
166   %27 = load i32, i32* %arrayidx57, align 4
167   %tobool58 = icmp ne i32 %27, 0
168   br i1 %tobool58, label %if.then59, label %if.end60
170 if.then59:                                        ; preds = %if.end56
171   store i32 8209, i32* @f, align 4
172   br label %if.end60
174 if.end60:                                         ; preds = %if.then59, %if.end56
175   %28 = load i32*, i32** @a, align 4
176   %arrayidx61 = getelementptr inbounds i32, i32* %28, i32 17
177   %29 = load i32, i32* %arrayidx61, align 4
178   %tobool62 = icmp ne i32 %29, 0
179   br i1 %tobool62, label %if.then63, label %if.end64
181 if.then63:                                        ; preds = %if.end60
182   store i32 29621, i32* @f, align 4
183   br label %if.end64
185 if.end64:                                         ; preds = %if.then63, %if.end60
186   %30 = load i32*, i32** @a, align 4
187   %arrayidx65 = getelementptr inbounds i32, i32* %30, i32 18
188   %31 = load i32, i32* %arrayidx65, align 4
189   %tobool66 = icmp ne i32 %31, 0
190   br i1 %tobool66, label %if.then67, label %if.end68
192 if.then67:                                        ; preds = %if.end64
193   store i32 14963, i32* @f, align 4
194   br label %if.end68
196 if.end68:                                         ; preds = %if.then67, %if.end64
197   %32 = load i32*, i32** @a, align 4
198   %arrayidx69 = getelementptr inbounds i32, i32* %32, i32 19
199   %33 = load i32, i32* %arrayidx69, align 4
200   %tobool70 = icmp ne i32 %33, 0
201   br i1 %tobool70, label %if.then71, label %if.end72
203 if.then71:                                        ; preds = %if.end68
204   store i32 32282, i32* @f, align 4
205   br label %if.end72
207 if.end72:                                         ; preds = %if.then71, %if.end68
208   %34 = load i32*, i32** @a, align 4
209   %arrayidx73 = getelementptr inbounds i32, i32* %34, i32 20
210   %35 = load i32, i32* %arrayidx73, align 4
211   %tobool74 = icmp ne i32 %35, 0
212   br i1 %tobool74, label %if.then75, label %if.end76
214 if.then75:                                        ; preds = %if.end72
215   store i32 3072, i32* @f, align 4
216   br label %if.end76
218 if.end76:                                         ; preds = %if.then75, %if.end72
219   %36 = load i32*, i32** @a, align 4
220   %arrayidx77 = getelementptr inbounds i32, i32* %36, i32 21
221   %37 = load i32, i32* %arrayidx77, align 4
222   %tobool78 = icmp ne i32 %37, 0
223   br i1 %tobool78, label %if.then79, label %if.end80
225 if.then79:                                        ; preds = %if.end76
226   store i32 1992, i32* @f, align 4
227   br label %if.end80
229 if.end80:                                         ; preds = %if.then79, %if.end76
230   %38 = load i32*, i32** @a, align 4
231   %arrayidx81 = getelementptr inbounds i32, i32* %38, i32 22
232   %39 = load i32, i32* %arrayidx81, align 4
233   %tobool82 = icmp ne i32 %39, 0
234   br i1 %tobool82, label %if.then83, label %if.end84
236 if.then83:                                        ; preds = %if.end80
237   store i32 9614, i32* @f, align 4
238   br label %if.end84
240 if.end84:                                         ; preds = %if.then83, %if.end80
241   %40 = load i32*, i32** @a, align 4
242   %arrayidx85 = getelementptr inbounds i32, i32* %40, i32 23
243   %41 = load i32, i32* %arrayidx85, align 4
244   %tobool86 = icmp ne i32 %41, 0
245   br i1 %tobool86, label %if.then87, label %if.end88
247 if.then87:                                        ; preds = %if.end84
248   store i32 25931, i32* @f, align 4
249   br label %if.end88
251 if.end88:                                         ; preds = %if.then87, %if.end84
252   %42 = load i32*, i32** @a, align 4
253   %arrayidx89 = getelementptr inbounds i32, i32* %42, i32 24
254   %43 = load i32, i32* %arrayidx89, align 4
255   %tobool90 = icmp ne i32 %43, 0
256   br i1 %tobool90, label %if.then91, label %if.end92
258 if.then91:                                        ; preds = %if.end88
259   store i32 22035, i32* @f, align 4
260   br label %if.end92
262 if.end92:                                         ; preds = %if.then91, %if.end88
263   %44 = load i32*, i32** @a, align 4
264   %arrayidx93 = getelementptr inbounds i32, i32* %44, i32 25
265   %45 = load i32, i32* %arrayidx93, align 4
266   %tobool94 = icmp ne i32 %45, 0
267   br i1 %tobool94, label %if.then95, label %if.end96
269 if.then95:                                        ; preds = %if.end92
270   store i32 10712, i32* @f, align 4
271   br label %if.end96
273 if.end96:                                         ; preds = %if.then95, %if.end92
274   %46 = load i32*, i32** @a, align 4
275   %arrayidx97 = getelementptr inbounds i32, i32* %46, i32 26
276   %47 = load i32, i32* %arrayidx97, align 4
277   %tobool98 = icmp ne i32 %47, 0
278   br i1 %tobool98, label %if.then99, label %if.end100
280 if.then99:                                        ; preds = %if.end96
281   store i32 18267, i32* @f, align 4
282   br label %if.end100
284 if.end100:                                        ; preds = %if.then99, %if.end96
285   %48 = load i32*, i32** @a, align 4
286   %arrayidx101 = getelementptr inbounds i32, i32* %48, i32 27
287   %49 = load i32, i32* %arrayidx101, align 4
288   %tobool102 = icmp ne i32 %49, 0
289   br i1 %tobool102, label %if.then103, label %if.end104
291 if.then103:                                       ; preds = %if.end100
292   store i32 30432, i32* @f, align 4
293   br label %if.end104
295 if.end104:                                        ; preds = %if.then103, %if.end100
296   %50 = load i32*, i32** @a, align 4
297   %arrayidx105 = getelementptr inbounds i32, i32* %50, i32 28
298   %51 = load i32, i32* %arrayidx105, align 4
299   %tobool106 = icmp ne i32 %51, 0
300   br i1 %tobool106, label %if.then107, label %if.end108
302 if.then107:                                       ; preds = %if.end104
303   store i32 5847, i32* @f, align 4
304   br label %if.end108
306 if.end108:                                        ; preds = %if.then107, %if.end104
307   %52 = load i32*, i32** @a, align 4
308   %arrayidx109 = getelementptr inbounds i32, i32* %52, i32 29
309   %53 = load i32, i32* %arrayidx109, align 4
310   %tobool110 = icmp ne i32 %53, 0
311   br i1 %tobool110, label %if.then111, label %if.end112
313 if.then111:                                       ; preds = %if.end108
314   store i32 14705, i32* @f, align 4
315   br label %if.end112
317 if.end112:                                        ; preds = %if.then111, %if.end108
318   %54 = load i32*, i32** @a, align 4
319   %arrayidx113 = getelementptr inbounds i32, i32* %54, i32 30
320   %55 = load i32, i32* %arrayidx113, align 4
321   %tobool114 = icmp ne i32 %55, 0
322   br i1 %tobool114, label %if.then115, label %if.end116
324 if.then115:                                       ; preds = %if.end112
325   store i32 28488, i32* @f, align 4
326   br label %if.end116
328 if.end116:                                        ; preds = %if.then115, %if.end112
329   %56 = load i32*, i32** @a, align 4
330   %arrayidx117 = getelementptr inbounds i32, i32* %56, i32 31
331   %57 = load i32, i32* %arrayidx117, align 4
332   %tobool118 = icmp ne i32 %57, 0
333   br i1 %tobool118, label %if.then119, label %if.end120
335 if.then119:                                       ; preds = %if.end116
336   store i32 13853, i32* @f, align 4
337   br label %if.end120
339 if.end120:                                        ; preds = %if.then119, %if.end116
340   %58 = load i32*, i32** @a, align 4
341   %arrayidx121 = getelementptr inbounds i32, i32* %58, i32 32
342   %59 = load i32, i32* %arrayidx121, align 4
343   %tobool122 = icmp ne i32 %59, 0
344   br i1 %tobool122, label %if.then123, label %if.end124
346 if.then123:                                       ; preds = %if.end120
347   store i32 31379, i32* @f, align 4
348   br label %if.end124
350 if.end124:                                        ; preds = %if.then123, %if.end120
351   %60 = load i32*, i32** @a, align 4
352   %arrayidx125 = getelementptr inbounds i32, i32* %60, i32 33
353   %61 = load i32, i32* %arrayidx125, align 4
354   %tobool126 = icmp ne i32 %61, 0
355   br i1 %tobool126, label %if.then127, label %if.end128
357 if.then127:                                       ; preds = %if.end124
358   store i32 7010, i32* @f, align 4
359   br label %if.end128
361 if.end128:                                        ; preds = %if.then127, %if.end124
362   br label %if.then131
364 if.then131:                                       ; preds = %if.end128
365   store i32 31840, i32* @f, align 4
366   br label %if.end132
368 if.end132:                                        ; preds = %if.then131
369   %62 = load i32*, i32** @a, align 4
370   %arrayidx133 = getelementptr inbounds i32, i32* %62, i32 35
371   %63 = load i32, i32* %arrayidx133, align 4
372   %tobool134 = icmp ne i32 %63, 0
373   br i1 %tobool134, label %if.then135, label %if.end136
375 if.then135:                                       ; preds = %if.end132
376   store i32 16119, i32* @f, align 4
377   br label %if.end136
379 if.end136:                                        ; preds = %if.then135, %if.end132
380   %64 = load i32*, i32** @a, align 4
381   %arrayidx137 = getelementptr inbounds i32, i32* %64, i32 36
382   %65 = load i32, i32* %arrayidx137, align 4
383   %tobool138 = icmp ne i32 %65, 0
384   br i1 %tobool138, label %if.then139, label %if.end140
386 if.then139:                                       ; preds = %if.end136
387   store i32 7119, i32* @f, align 4
388   br label %if.end140
390 if.end140:                                        ; preds = %if.then139, %if.end136
391   %66 = load i32*, i32** @a, align 4
392   %arrayidx141 = getelementptr inbounds i32, i32* %66, i32 37
393   %67 = load i32, i32* %arrayidx141, align 4
394   %tobool142 = icmp ne i32 %67, 0
395   br i1 %tobool142, label %if.then143, label %if.end144
397 if.then143:                                       ; preds = %if.end140
398   store i32 3333, i32* @f, align 4
399   br label %if.end144
401 if.end144:                                        ; preds = %if.then143, %if.end140
402   %68 = load i32*, i32** @a, align 4
403   %arrayidx145 = getelementptr inbounds i32, i32* %68, i32 38
404   %69 = load i32, i32* %arrayidx145, align 4
405   %tobool146 = icmp ne i32 %69, 0
406   br i1 %tobool146, label %if.then147, label %if.end148
408 if.then147:                                       ; preds = %if.end144
409   store i32 6430, i32* @f, align 4
410   br label %if.end148
412 if.end148:                                        ; preds = %if.then147, %if.end144
413   %70 = load i32*, i32** @a, align 4
414   %arrayidx149 = getelementptr inbounds i32, i32* %70, i32 39
415   %71 = load i32, i32* %arrayidx149, align 4
416   %tobool150 = icmp ne i32 %71, 0
417   br i1 %tobool150, label %if.then151, label %if.end152
419 if.then151:                                       ; preds = %if.end148
420   store i32 19857, i32* @f, align 4
421   br label %if.end152
423 if.end152:                                        ; preds = %if.then151, %if.end148
424   %72 = load i32*, i32** @a, align 4
425   %arrayidx153 = getelementptr inbounds i32, i32* %72, i32 40
426   %73 = load i32, i32* %arrayidx153, align 4
427   %tobool154 = icmp ne i32 %73, 0
428   br i1 %tobool154, label %if.then155, label %if.end156
430 if.then155:                                       ; preds = %if.end152
431   store i32 13237, i32* @f, align 4
432   br label %if.end156
434 if.end156:                                        ; preds = %if.then155, %if.end152
435   br label %if.then159
437 if.then159:                                       ; preds = %if.end156
438   store i32 163, i32* @f, align 4
439   br label %if.end160
441 if.end160:                                        ; preds = %if.then159
442   %74 = load i32*, i32** @a, align 4
443   %arrayidx161 = getelementptr inbounds i32, i32* %74, i32 42
444   %75 = load i32, i32* %arrayidx161, align 4
445   %tobool162 = icmp ne i32 %75, 0
446   br i1 %tobool162, label %if.then163, label %if.end164
448 if.then163:                                       ; preds = %if.end160
449   store i32 1961, i32* @f, align 4
450   br label %if.end164
452 if.end164:                                        ; preds = %if.then163, %if.end160
453   %76 = load i32*, i32** @a, align 4
454   %arrayidx165 = getelementptr inbounds i32, i32* %76, i32 43
455   %77 = load i32, i32* %arrayidx165, align 4
456   %tobool166 = icmp ne i32 %77, 0
457   br i1 %tobool166, label %if.then167, label %if.end168
459 if.then167:                                       ; preds = %if.end164
460   store i32 11325, i32* @f, align 4
461   br label %if.end168
463 if.end168:                                        ; preds = %if.then167, %if.end164
464   %78 = load i32*, i32** @a, align 4
465   %arrayidx169 = getelementptr inbounds i32, i32* %78, i32 44
466   %79 = load i32, i32* %arrayidx169, align 4
467   %tobool170 = icmp ne i32 %79, 0
468   br i1 %tobool170, label %if.then171, label %if.end172
470 if.then171:                                       ; preds = %if.end168
471   store i32 12189, i32* @f, align 4
472   br label %if.end172
474 if.end172:                                        ; preds = %if.then171, %if.end168
475   %80 = load i32*, i32** @a, align 4
476   %arrayidx173 = getelementptr inbounds i32, i32* %80, i32 45
477   %81 = load i32, i32* %arrayidx173, align 4
478   %tobool174 = icmp ne i32 %81, 0
479   br i1 %tobool174, label %if.then175, label %if.end176
481 if.then175:                                       ; preds = %if.end172
482   store i32 15172, i32* @f, align 4
483   br label %if.end176
485 if.end176:                                        ; preds = %if.then175, %if.end172
486   br label %if.then179
488 if.then179:                                       ; preds = %if.end176
489   store i32 13491, i32* @f, align 4
490   br label %if.end180
492 if.end180:                                        ; preds = %if.then179
493   %82 = load i32*, i32** @a, align 4
494   %arrayidx181 = getelementptr inbounds i32, i32* %82, i32 47
495   %83 = load i32, i32* %arrayidx181, align 4
496   %tobool182 = icmp ne i32 %83, 0
497   br i1 %tobool182, label %if.then183, label %if.end184
499 if.then183:                                       ; preds = %if.end180
500   store i32 9521, i32* @f, align 4
501   br label %if.end184
503 if.end184:                                        ; preds = %if.then183, %if.end180
504   %84 = load i32*, i32** @a, align 4
505   %arrayidx185 = getelementptr inbounds i32, i32* %84, i32 48
506   %85 = load i32, i32* %arrayidx185, align 4
507   %tobool186 = icmp ne i32 %85, 0
508   br i1 %tobool186, label %if.then187, label %if.end188
510 if.then187:                                       ; preds = %if.end184
511   store i32 448, i32* @f, align 4
512   br label %if.end188
514 if.end188:                                        ; preds = %if.then187, %if.end184
515   %86 = load i32*, i32** @a, align 4
516   %arrayidx189 = getelementptr inbounds i32, i32* %86, i32 49
517   %87 = load i32, i32* %arrayidx189, align 4
518   %tobool190 = icmp ne i32 %87, 0
519   br i1 %tobool190, label %if.then191, label %if.end192
521 if.then191:                                       ; preds = %if.end188
522   store i32 13468, i32* @f, align 4
523   br label %if.end192
525 if.end192:                                        ; preds = %if.then191, %if.end188
526   %88 = load i32*, i32** @a, align 4
527   %arrayidx193 = getelementptr inbounds i32, i32* %88, i32 50
528   %89 = load i32, i32* %arrayidx193, align 4
529   %tobool194 = icmp ne i32 %89, 0
530   br i1 %tobool194, label %if.then195, label %if.end196
532 if.then195:                                       ; preds = %if.end192
533   store i32 16190, i32* @f, align 4
534   br label %if.end196
536 if.end196:                                        ; preds = %if.then195, %if.end192
537   %90 = load i32*, i32** @a, align 4
538   %arrayidx197 = getelementptr inbounds i32, i32* %90, i32 51
539   %91 = load i32, i32* %arrayidx197, align 4
540   %tobool198 = icmp ne i32 %91, 0
541   br i1 %tobool198, label %if.then199, label %if.end200
543 if.then199:                                       ; preds = %if.end196
544   store i32 8602, i32* @f, align 4
545   br label %if.end200
547 if.end200:                                        ; preds = %if.then199, %if.end196
548   %92 = load i32*, i32** @a, align 4
549   %arrayidx201 = getelementptr inbounds i32, i32* %92, i32 52
550   %93 = load i32, i32* %arrayidx201, align 4
551   %tobool202 = icmp ne i32 %93, 0
552   br i1 %tobool202, label %if.then203, label %if.end204
554 if.then203:                                       ; preds = %if.end200
555   store i32 21083, i32* @f, align 4
556   br label %if.end204
558 if.end204:                                        ; preds = %if.then203, %if.end200
559   %94 = load i32*, i32** @a, align 4
560   %arrayidx205 = getelementptr inbounds i32, i32* %94, i32 53
561   %95 = load i32, i32* %arrayidx205, align 4
562   %tobool206 = icmp ne i32 %95, 0
563   br i1 %tobool206, label %if.then207, label %if.end208
565 if.then207:                                       ; preds = %if.end204
566   store i32 5172, i32* @f, align 4
567   br label %if.end208
569 if.end208:                                        ; preds = %if.then207, %if.end204
570   %96 = load i32*, i32** @a, align 4
571   %arrayidx209 = getelementptr inbounds i32, i32* %96, i32 54
572   %97 = load i32, i32* %arrayidx209, align 4
573   %tobool210 = icmp ne i32 %97, 0
574   br i1 %tobool210, label %if.then211, label %if.end212
576 if.then211:                                       ; preds = %if.end208
577   store i32 32505, i32* @f, align 4
578   br label %if.end212
580 if.end212:                                        ; preds = %if.then211, %if.end208
581   br label %if.then215
583 if.then215:                                       ; preds = %if.end212
584   store i32 23490, i32* @f, align 4
585   br label %if.end216
587 if.end216:                                        ; preds = %if.then215
588   %98 = load i32*, i32** @a, align 4
589   %arrayidx217 = getelementptr inbounds i32, i32* %98, i32 56
590   %99 = load i32, i32* %arrayidx217, align 4
591   %tobool218 = icmp ne i32 %99, 0
592   br i1 %tobool218, label %if.then219, label %if.end220
594 if.then219:                                       ; preds = %if.end216
595   store i32 30699, i32* @f, align 4
596   br label %if.end220
598 if.end220:                                        ; preds = %if.then219, %if.end216
599   %100 = load i32*, i32** @a, align 4
600   %arrayidx221 = getelementptr inbounds i32, i32* %100, i32 57
601   %101 = load i32, i32* %arrayidx221, align 4
602   %tobool222 = icmp ne i32 %101, 0
603   br i1 %tobool222, label %if.then223, label %if.end224
605 if.then223:                                       ; preds = %if.end220
606   store i32 16286, i32* @f, align 4
607   br label %if.end224
609 if.end224:                                        ; preds = %if.then223, %if.end220
610   %102 = load i32*, i32** @a, align 4
611   %arrayidx225 = getelementptr inbounds i32, i32* %102, i32 58
612   %103 = load i32, i32* %arrayidx225, align 4
613   %tobool226 = icmp ne i32 %103, 0
614   br i1 %tobool226, label %if.then227, label %if.end228
616 if.then227:                                       ; preds = %if.end224
617   store i32 17939, i32* @f, align 4
618   br label %if.end228
620 if.end228:                                        ; preds = %if.then227, %if.end224
621   %104 = load i32*, i32** @a, align 4
622   %arrayidx229 = getelementptr inbounds i32, i32* %104, i32 59
623   %105 = load i32, i32* %arrayidx229, align 4
624   %tobool230 = icmp ne i32 %105, 0
625   br i1 %tobool230, label %if.then231, label %if.end232
627 if.then231:                                       ; preds = %if.end228
628   store i32 25148, i32* @f, align 4
629   br label %if.end232
631 if.end232:                                        ; preds = %if.then231, %if.end228
632   %106 = load i32*, i32** @a, align 4
633   %arrayidx233 = getelementptr inbounds i32, i32* %106, i32 60
634   %107 = load i32, i32* %arrayidx233, align 4
635   %tobool234 = icmp ne i32 %107, 0
636   br i1 %tobool234, label %if.then235, label %if.end236
638 if.then235:                                       ; preds = %if.end232
639   store i32 644, i32* @f, align 4
640   br label %if.end236
642 if.end236:                                        ; preds = %if.then235, %if.end232
643   br label %if.then239
645 if.then239:                                       ; preds = %if.end236
646   store i32 23457, i32* @f, align 4
647   br label %if.end240
649 if.end240:                                        ; preds = %if.then239
650   %108 = load i32*, i32** @a, align 4
651   %arrayidx241 = getelementptr inbounds i32, i32* %108, i32 62
652   %109 = load i32, i32* %arrayidx241, align 4
653   %tobool242 = icmp ne i32 %109, 0
654   br i1 %tobool242, label %if.then243, label %if.end244
656 if.then243:                                       ; preds = %if.end240
657   store i32 21116, i32* @f, align 4
658   br label %if.end244
660 if.end244:                                        ; preds = %if.then243, %if.end240
661   br label %if.then247
663 if.then247:                                       ; preds = %if.end244
664   store i32 10066, i32* @f, align 4
665   br label %if.end248
667 if.end248:                                        ; preds = %if.then247
668   %110 = load i32*, i32** @a, align 4
669   %arrayidx249 = getelementptr inbounds i32, i32* %110, i32 64
670   %111 = load i32, i32* %arrayidx249, align 4
671   %tobool250 = icmp ne i32 %111, 0
672   br i1 %tobool250, label %if.then251, label %if.end252
674 if.then251:                                       ; preds = %if.end248
675   store i32 9058, i32* @f, align 4
676   br label %if.end252
678 if.end252:                                        ; preds = %if.then251, %if.end248
679   %112 = load i32*, i32** @a, align 4
680   %arrayidx253 = getelementptr inbounds i32, i32* %112, i32 65
681   %113 = load i32, i32* %arrayidx253, align 4
682   %tobool254 = icmp ne i32 %113, 0
683   br i1 %tobool254, label %if.then255, label %if.end256
685 if.then255:                                       ; preds = %if.end252
686   store i32 8383, i32* @f, align 4
687   br label %if.end256
689 if.end256:                                        ; preds = %if.then255, %if.end252
690   %114 = load i32*, i32** @a, align 4
691   %arrayidx257 = getelementptr inbounds i32, i32* %114, i32 66
692   %115 = load i32, i32* %arrayidx257, align 4
693   %tobool258 = icmp ne i32 %115, 0
694   br i1 %tobool258, label %if.then259, label %if.end260
696 if.then259:                                       ; preds = %if.end256
697   store i32 31069, i32* @f, align 4
698   br label %if.end260
700 if.end260:                                        ; preds = %if.then259, %if.end256
701   %116 = load i32*, i32** @a, align 4
702   %arrayidx261 = getelementptr inbounds i32, i32* %116, i32 67
703   %117 = load i32, i32* %arrayidx261, align 4
704   %tobool262 = icmp ne i32 %117, 0
705   br i1 %tobool262, label %if.then263, label %if.end264
707 if.then263:                                       ; preds = %if.end260
708   store i32 32280, i32* @f, align 4
709   br label %if.end264
711 if.end264:                                        ; preds = %if.then263, %if.end260
712   br label %if.then267
714 if.then267:                                       ; preds = %if.end264
715   store i32 1553, i32* @f, align 4
716   br label %if.end268
718 if.end268:                                        ; preds = %if.then267
719   %118 = load i32*, i32** @a, align 4
720   %arrayidx269 = getelementptr inbounds i32, i32* %118, i32 69
721   %119 = load i32, i32* %arrayidx269, align 4
722   %tobool270 = icmp ne i32 %119, 0
723   br i1 %tobool270, label %if.then271, label %if.end272
725 if.then271:                                       ; preds = %if.end268
726   store i32 8118, i32* @f, align 4
727   br label %if.end272
729 if.end272:                                        ; preds = %if.then271, %if.end268
730   %120 = load i32*, i32** @a, align 4
731   %arrayidx273 = getelementptr inbounds i32, i32* %120, i32 70
732   %121 = load i32, i32* %arrayidx273, align 4
733   %tobool274 = icmp ne i32 %121, 0
734   br i1 %tobool274, label %if.then275, label %if.end276
736 if.then275:                                       ; preds = %if.end272
737   store i32 12959, i32* @f, align 4
738   br label %if.end276
740 if.end276:                                        ; preds = %if.then275, %if.end272
741   %122 = load i32*, i32** @a, align 4
742   %arrayidx277 = getelementptr inbounds i32, i32* %122, i32 71
743   %123 = load i32, i32* %arrayidx277, align 4
744   %tobool278 = icmp ne i32 %123, 0
745   br i1 %tobool278, label %if.then279, label %if.end280
747 if.then279:                                       ; preds = %if.end276
748   store i32 675, i32* @f, align 4
749   br label %if.end280
751 if.end280:                                        ; preds = %if.then279, %if.end276
752   %124 = load i32*, i32** @a, align 4
753   %arrayidx281 = getelementptr inbounds i32, i32* %124, i32 72
754   %125 = load i32, i32* %arrayidx281, align 4
755   %tobool282 = icmp ne i32 %125, 0
756   br i1 %tobool282, label %if.then283, label %if.end284
758 if.then283:                                       ; preds = %if.end280
759   store i32 29144, i32* @f, align 4
760   br label %if.end284
762 if.end284:                                        ; preds = %if.then283, %if.end280
763   %126 = load i32*, i32** @a, align 4
764   %arrayidx285 = getelementptr inbounds i32, i32* %126, i32 73
765   %127 = load i32, i32* %arrayidx285, align 4
766   %tobool286 = icmp ne i32 %127, 0
767   br i1 %tobool286, label %if.then287, label %if.end288
769 if.then287:                                       ; preds = %if.end284
770   store i32 26130, i32* @f, align 4
771   br label %if.end288
773 if.end288:                                        ; preds = %if.then287, %if.end284
774   %128 = load i32*, i32** @a, align 4
775   %arrayidx289 = getelementptr inbounds i32, i32* %128, i32 74
776   %129 = load i32, i32* %arrayidx289, align 4
777   %tobool290 = icmp ne i32 %129, 0
778   br i1 %tobool290, label %if.then291, label %if.end292
780 if.then291:                                       ; preds = %if.end288
781   store i32 31934, i32* @f, align 4
782   br label %if.end292
784 if.end292:                                        ; preds = %if.then291, %if.end288
785   %130 = load i32*, i32** @a, align 4
786   %arrayidx293 = getelementptr inbounds i32, i32* %130, i32 75
787   %131 = load i32, i32* %arrayidx293, align 4
788   %tobool294 = icmp ne i32 %131, 0
789   br i1 %tobool294, label %if.then295, label %if.end296
791 if.then295:                                       ; preds = %if.end292
792   store i32 25862, i32* @f, align 4
793   br label %if.end296
795 if.end296:                                        ; preds = %if.then295, %if.end292
796   %132 = load i32*, i32** @a, align 4
797   %arrayidx297 = getelementptr inbounds i32, i32* %132, i32 76
798   %133 = load i32, i32* %arrayidx297, align 4
799   %tobool298 = icmp ne i32 %133, 0
800   br i1 %tobool298, label %if.then299, label %if.end300
802 if.then299:                                       ; preds = %if.end296
803   store i32 10642, i32* @f, align 4
804   br label %if.end300
806 if.end300:                                        ; preds = %if.then299, %if.end296
807   %134 = load i32*, i32** @a, align 4
808   %arrayidx301 = getelementptr inbounds i32, i32* %134, i32 77
809   %135 = load i32, i32* %arrayidx301, align 4
810   %tobool302 = icmp ne i32 %135, 0
811   br i1 %tobool302, label %if.then303, label %if.end304
813 if.then303:                                       ; preds = %if.end300
814   store i32 20209, i32* @f, align 4
815   br label %if.end304
817 if.end304:                                        ; preds = %if.then303, %if.end300
818   %136 = load i32*, i32** @a, align 4
819   %arrayidx305 = getelementptr inbounds i32, i32* %136, i32 78
820   %137 = load i32, i32* %arrayidx305, align 4
821   %tobool306 = icmp ne i32 %137, 0
822   br i1 %tobool306, label %if.then307, label %if.end308
824 if.then307:                                       ; preds = %if.end304
825   store i32 30889, i32* @f, align 4
826   br label %if.end308
828 if.end308:                                        ; preds = %if.then307, %if.end304
829   %138 = load i32*, i32** @a, align 4
830   %arrayidx309 = getelementptr inbounds i32, i32* %138, i32 79
831   %139 = load i32, i32* %arrayidx309, align 4
832   %tobool310 = icmp ne i32 %139, 0
833   br i1 %tobool310, label %if.then311, label %if.end312
835 if.then311:                                       ; preds = %if.end308
836   store i32 18688, i32* @f, align 4
837   br label %if.end312
839 if.end312:                                        ; preds = %if.then311, %if.end308
840   %140 = load i32*, i32** @a, align 4
841   %arrayidx313 = getelementptr inbounds i32, i32* %140, i32 80
842   %141 = load i32, i32* %arrayidx313, align 4
843   %tobool314 = icmp ne i32 %141, 0
844   br i1 %tobool314, label %if.then315, label %if.end316
846 if.then315:                                       ; preds = %if.end312
847   store i32 28726, i32* @f, align 4
848   br label %if.end316
850 if.end316:                                        ; preds = %if.then315, %if.end312
851   %142 = load i32*, i32** @a, align 4
852   %arrayidx317 = getelementptr inbounds i32, i32* %142, i32 81
853   %143 = load i32, i32* %arrayidx317, align 4
854   %tobool318 = icmp ne i32 %143, 0
855   br i1 %tobool318, label %if.then319, label %if.end320
857 if.then319:                                       ; preds = %if.end316
858   store i32 4266, i32* @f, align 4
859   br label %if.end320
861 if.end320:                                        ; preds = %if.then319, %if.end316
862   %144 = load i32*, i32** @a, align 4
863   %arrayidx321 = getelementptr inbounds i32, i32* %144, i32 82
864   %145 = load i32, i32* %arrayidx321, align 4
865   %tobool322 = icmp ne i32 %145, 0
866   br i1 %tobool322, label %if.then323, label %if.end324
868 if.then323:                                       ; preds = %if.end320
869   store i32 15461, i32* @f, align 4
870   br label %if.end324
872 if.end324:                                        ; preds = %if.then323, %if.end320
873   %146 = load i32*, i32** @a, align 4
874   %arrayidx325 = getelementptr inbounds i32, i32* %146, i32 83
875   %147 = load i32, i32* %arrayidx325, align 4
876   %tobool326 = icmp ne i32 %147, 0
877   br i1 %tobool326, label %if.then327, label %if.end328
879 if.then327:                                       ; preds = %if.end324
880   store i32 24716, i32* @f, align 4
881   br label %if.end328
883 if.end328:                                        ; preds = %if.then327, %if.end324
884   br label %if.then331
886 if.then331:                                       ; preds = %if.end328
887   store i32 18727, i32* @f, align 4
888   br label %if.end332
890 if.end332:                                        ; preds = %if.then331
891   %148 = load i32*, i32** @a, align 4
892   %arrayidx333 = getelementptr inbounds i32, i32* %148, i32 85
893   %149 = load i32, i32* %arrayidx333, align 4
894   %tobool334 = icmp ne i32 %149, 0
895   br i1 %tobool334, label %if.then335, label %if.end336
897 if.then335:                                       ; preds = %if.end332
898   store i32 29505, i32* @f, align 4
899   br label %if.end336
901 if.end336:                                        ; preds = %if.then335, %if.end332
902   %150 = load i32*, i32** @a, align 4
903   %arrayidx337 = getelementptr inbounds i32, i32* %150, i32 86
904   %151 = load i32, i32* %arrayidx337, align 4
905   %tobool338 = icmp ne i32 %151, 0
906   br i1 %tobool338, label %if.then339, label %if.end340
908 if.then339:                                       ; preds = %if.end336
909   store i32 27008, i32* @f, align 4
910   br label %if.end340
912 if.end340:                                        ; preds = %if.then339, %if.end336
913   %152 = load i32*, i32** @a, align 4
914   %arrayidx341 = getelementptr inbounds i32, i32* %152, i32 87
915   %153 = load i32, i32* %arrayidx341, align 4
916   %tobool342 = icmp ne i32 %153, 0
917   br i1 %tobool342, label %if.then343, label %if.end344
919 if.then343:                                       ; preds = %if.end340
920   store i32 6550, i32* @f, align 4
921   br label %if.end344
923 if.end344:                                        ; preds = %if.then343, %if.end340
924   br label %if.then347
926 if.then347:                                       ; preds = %if.end344
927   store i32 1117, i32* @f, align 4
928   br label %if.end348
930 if.end348:                                        ; preds = %if.then347
931   %154 = load i32*, i32** @a, align 4
932   %arrayidx349 = getelementptr inbounds i32, i32* %154, i32 89
933   %155 = load i32, i32* %arrayidx349, align 4
934   %tobool350 = icmp ne i32 %155, 0
935   br i1 %tobool350, label %if.then351, label %if.end352
937 if.then351:                                       ; preds = %if.end348
938   store i32 20118, i32* @f, align 4
939   br label %if.end352
941 if.end352:                                        ; preds = %if.then351, %if.end348
942   %156 = load i32*, i32** @a, align 4
943   %arrayidx353 = getelementptr inbounds i32, i32* %156, i32 90
944   %157 = load i32, i32* %arrayidx353, align 4
945   %tobool354 = icmp ne i32 %157, 0
946   br i1 %tobool354, label %if.then355, label %if.end356
948 if.then355:                                       ; preds = %if.end352
949   store i32 13650, i32* @f, align 4
950   br label %if.end356
952 if.end356:                                        ; preds = %if.then355, %if.end352
953   br label %if.then359
955 if.then359:                                       ; preds = %if.end356
956   store i32 18642, i32* @f, align 4
957   br label %if.end360
959 if.end360:                                        ; preds = %if.then359
960   %158 = load i32*, i32** @a, align 4
961   %arrayidx361 = getelementptr inbounds i32, i32* %158, i32 92
962   %159 = load i32, i32* %arrayidx361, align 4
963   %tobool362 = icmp ne i32 %159, 0
964   br i1 %tobool362, label %if.then363, label %if.end364
966 if.then363:                                       ; preds = %if.end360
967   store i32 30662, i32* @f, align 4
968   br label %if.end364
970 if.end364:                                        ; preds = %if.then363, %if.end360
971   %160 = load i32*, i32** @a, align 4
972   %arrayidx365 = getelementptr inbounds i32, i32* %160, i32 93
973   %161 = load i32, i32* %arrayidx365, align 4
974   %tobool366 = icmp ne i32 %161, 0
975   br i1 %tobool366, label %if.then367, label %if.end368
977 if.then367:                                       ; preds = %if.end364
978   store i32 8095, i32* @f, align 4
979   br label %if.end368
981 if.end368:                                        ; preds = %if.then367, %if.end364
982   %162 = load i32*, i32** @a, align 4
983   %arrayidx369 = getelementptr inbounds i32, i32* %162, i32 94
984   %163 = load i32, i32* %arrayidx369, align 4
985   %tobool370 = icmp ne i32 %163, 0
986   br i1 %tobool370, label %if.then371, label %if.end372
988 if.then371:                                       ; preds = %if.end368
989   store i32 8442, i32* @f, align 4
990   br label %if.end372
992 if.end372:                                        ; preds = %if.then371, %if.end368
993   %164 = load i32*, i32** @a, align 4
994   %arrayidx373 = getelementptr inbounds i32, i32* %164, i32 95
995   %165 = load i32, i32* %arrayidx373, align 4
996   %tobool374 = icmp ne i32 %165, 0
997   br i1 %tobool374, label %if.then375, label %if.end376
999 if.then375:                                       ; preds = %if.end372
1000   store i32 8153, i32* @f, align 4
1001   br label %if.end376
1003 if.end376:                                        ; preds = %if.then375, %if.end372
1004   br label %if.then379
1006 if.then379:                                       ; preds = %if.end376
1007   store i32 12965, i32* @f, align 4
1008   br label %if.end380
1010 if.end380:                                        ; preds = %if.then379
1011   %166 = load i32*, i32** @a, align 4
1012   %arrayidx381 = getelementptr inbounds i32, i32* %166, i32 97
1013   %167 = load i32, i32* %arrayidx381, align 4
1014   %tobool382 = icmp ne i32 %167, 0
1015   br i1 %tobool382, label %if.then383, label %if.end384
1017 if.then383:                                       ; preds = %if.end380
1018   store i32 14277, i32* @f, align 4
1019   br label %if.end384
1021 if.end384:                                        ; preds = %if.then383, %if.end380
1022   br label %if.then387
1024 if.then387:                                       ; preds = %if.end384
1025   store i32 1997, i32* @f, align 4
1026   br label %if.end388
1028 if.end388:                                        ; preds = %if.then387
1029   %168 = load i32*, i32** @a, align 4
1030   %arrayidx389 = getelementptr inbounds i32, i32* %168, i32 99
1031   %169 = load i32, i32* %arrayidx389, align 4
1032   %tobool390 = icmp ne i32 %169, 0
1033   br i1 %tobool390, label %if.then391, label %if.end392
1035 if.then391:                                       ; preds = %if.end388
1036   store i32 31385, i32* @f, align 4
1037   br label %if.end392
1039 if.end392:                                        ; preds = %if.then391, %if.end388
1040   %170 = load i32*, i32** @a, align 4
1041   %arrayidx393 = getelementptr inbounds i32, i32* %170, i32 100
1042   %171 = load i32, i32* %arrayidx393, align 4
1043   %tobool394 = icmp ne i32 %171, 0
1044   br i1 %tobool394, label %if.then395, label %if.end396
1046 if.then395:                                       ; preds = %if.end392
1047   store i32 8286, i32* @f, align 4
1048   br label %if.end396
1050 if.end396:                                        ; preds = %if.then395, %if.end392
1051   ret void