[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / X86 / 2007-01-13-StackPtrIndex.ll
blob5ad7d50ca1fc6de8746c9d2bc71847ed01760461
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s
3 ; PR1103
5 target datalayout = "e-p:64:64"
6 @i6000 = dso_local global [128 x i64] zeroinitializer, align 16
9 define dso_local void @foo(i32* %a0, i32* %a1, i32* %a2, i32* %a3, i32* %a4, i32* %a5) {
10 ; CHECK-LABEL: foo:
11 ; CHECK:       # %bb.0: # %b
12 ; CHECK-NEXT:    pushq %rbp
13 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
14 ; CHECK-NEXT:    .cfi_offset %rbp, -16
15 ; CHECK-NEXT:    movq %rsp, %rbp
16 ; CHECK-NEXT:    .cfi_def_cfa_register %rbp
17 ; CHECK-NEXT:    movslq (%rdi), %rdi
18 ; CHECK-NEXT:    movslq (%rsi), %r8
19 ; CHECK-NEXT:    movslq (%rdx), %r10
20 ; CHECK-NEXT:    movl (%rcx), %esi
21 ; CHECK-NEXT:    movq %rsp, %rcx
22 ; CHECK-NEXT:    subl %edi, %r8d
23 ; CHECK-NEXT:    movslq %r8d, %rdx
24 ; CHECK-NEXT:    js .LBB0_1
25 ; CHECK-NEXT:  # %bb.11: # %b63
26 ; CHECK-NEXT:    testq %rdx, %rdx
27 ; CHECK-NEXT:    js .LBB0_14
28 ; CHECK-NEXT:  # %bb.12:
29 ; CHECK-NEXT:    xorl %edi, %edi
30 ; CHECK-NEXT:    .p2align 4, 0x90
31 ; CHECK-NEXT:  .LBB0_13: # %a25b
32 ; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1
33 ; CHECK-NEXT:    testb %dil, %dil
34 ; CHECK-NEXT:    je .LBB0_13
35 ; CHECK-NEXT:  .LBB0_14: # %b85
36 ; CHECK-NEXT:    movb $1, %al
37 ; CHECK-NEXT:    testb %al, %al
38 ; CHECK-NEXT:    jne .LBB0_1
39 ; CHECK-NEXT:  # %bb.15:
40 ; CHECK-NEXT:    xorl %edi, %edi
41 ; CHECK-NEXT:    .p2align 4, 0x90
42 ; CHECK-NEXT:  .LBB0_16: # %a25b140
43 ; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1
44 ; CHECK-NEXT:    testb %dil, %dil
45 ; CHECK-NEXT:    je .LBB0_16
46 ; CHECK-NEXT:  .LBB0_1: # %a29b
47 ; CHECK-NEXT:    cmpl %r10d, %esi
48 ; CHECK-NEXT:    js .LBB0_10
49 ; CHECK-NEXT:  # %bb.2: # %b158
50 ; CHECK-NEXT:    movslq (%r9), %rsi
51 ; CHECK-NEXT:    xorl %edi, %edi
52 ; CHECK-NEXT:    xorps %xmm0, %xmm0
53 ; CHECK-NEXT:    movb $1, %r9b
54 ; CHECK-NEXT:    jmp .LBB0_3
55 ; CHECK-NEXT:    .p2align 4, 0x90
56 ; CHECK-NEXT:  .LBB0_9: # %b1606
57 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
58 ; CHECK-NEXT:    testb %dil, %dil
59 ; CHECK-NEXT:    je .LBB0_10
60 ; CHECK-NEXT:  .LBB0_3: # %a29b173
61 ; CHECK-NEXT:    # =>This Loop Header: Depth=1
62 ; CHECK-NEXT:    # Child Loop BB0_37 Depth 2
63 ; CHECK-NEXT:    # Child Loop BB0_19 Depth 2
64 ; CHECK-NEXT:    # Child Loop BB0_20 Depth 2
65 ; CHECK-NEXT:    # Child Loop BB0_21 Depth 3
66 ; CHECK-NEXT:    # Child Loop BB0_23 Depth 2
67 ; CHECK-NEXT:    # Child Loop BB0_24 Depth 3
68 ; CHECK-NEXT:    # Child Loop BB0_26 Depth 2
69 ; CHECK-NEXT:    # Child Loop BB0_38 Depth 3
70 ; CHECK-NEXT:    # Child Loop BB0_29 Depth 3
71 ; CHECK-NEXT:    # Child Loop BB0_30 Depth 2
72 ; CHECK-NEXT:    # Child Loop BB0_39 Depth 3
73 ; CHECK-NEXT:    # Child Loop BB0_33 Depth 3
74 ; CHECK-NEXT:    # Child Loop BB0_34 Depth 2
75 ; CHECK-NEXT:    # Child Loop BB0_36 Depth 2
76 ; CHECK-NEXT:    testl %r8d, %r8d
77 ; CHECK-NEXT:    js .LBB0_4
78 ; CHECK-NEXT:  # %bb.17: # %b179
79 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
80 ; CHECK-NEXT:    testq %rdx, %rdx
81 ; CHECK-NEXT:    js .LBB0_18
82 ; CHECK-NEXT:    .p2align 4, 0x90
83 ; CHECK-NEXT:  .LBB0_37: # %a30b
84 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
85 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=2
86 ; CHECK-NEXT:    testb %dil, %dil
87 ; CHECK-NEXT:    je .LBB0_37
88 ; CHECK-NEXT:  .LBB0_18: # %b188
89 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
90 ; CHECK-NEXT:    testb %r9b, %r9b
91 ; CHECK-NEXT:    jne .LBB0_4
92 ; CHECK-NEXT:    .p2align 4, 0x90
93 ; CHECK-NEXT:  .LBB0_19: # %a30b294
94 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
95 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=2
96 ; CHECK-NEXT:    testb %dil, %dil
97 ; CHECK-NEXT:    je .LBB0_19
98 ; CHECK-NEXT:  .LBB0_4: # %a33b
99 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
100 ; CHECK-NEXT:    movl %esi, %r10d
101 ; CHECK-NEXT:    orl %r8d, %r10d
102 ; CHECK-NEXT:    jns .LBB0_20
103 ; CHECK-NEXT:  .LBB0_5: # %a50b
104 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
105 ; CHECK-NEXT:    shrl $31, %r10d
106 ; CHECK-NEXT:    movl %r8d, %eax
107 ; CHECK-NEXT:    orl %esi, %eax
108 ; CHECK-NEXT:    jns .LBB0_26
109 ; CHECK-NEXT:  .LBB0_6: # %a57b
110 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
111 ; CHECK-NEXT:    shrl $31, %eax
112 ; CHECK-NEXT:    testb %r10b, %r10b
113 ; CHECK-NEXT:    je .LBB0_30
114 ; CHECK-NEXT:  .LBB0_7: # %a66b
115 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
116 ; CHECK-NEXT:    testb %al, %al
117 ; CHECK-NEXT:    jne .LBB0_8
118 ; CHECK-NEXT:    .p2align 4, 0x90
119 ; CHECK-NEXT:  .LBB0_34: # %a74b
120 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
121 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=2
122 ; CHECK-NEXT:    testb %dil, %dil
123 ; CHECK-NEXT:    jne .LBB0_34
124 ; CHECK-NEXT:  # %bb.35: # %b1582
125 ; CHECK-NEXT:    # in Loop: Header=BB0_34 Depth=2
126 ; CHECK-NEXT:    testb %dil, %dil
127 ; CHECK-NEXT:    jne .LBB0_34
128 ; CHECK-NEXT:  .LBB0_8: # %a93b
129 ; CHECK-NEXT:    # in Loop: Header=BB0_3 Depth=1
130 ; CHECK-NEXT:    testl %r8d, %r8d
131 ; CHECK-NEXT:    js .LBB0_9
132 ; CHECK-NEXT:    .p2align 4, 0x90
133 ; CHECK-NEXT:  .LBB0_36: # %a97b
134 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
135 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=2
136 ; CHECK-NEXT:    movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
137 ; CHECK-NEXT:    addss %xmm0, %xmm1
138 ; CHECK-NEXT:    addss %xmm0, %xmm1
139 ; CHECK-NEXT:    movss {{.*#+}} xmm2 = mem[0],zero,zero,zero
140 ; CHECK-NEXT:    addss %xmm0, %xmm2
141 ; CHECK-NEXT:    addss %xmm1, %xmm2
142 ; CHECK-NEXT:    movss %xmm2, i6000(%rip)
143 ; CHECK-NEXT:    testb %dil, %dil
144 ; CHECK-NEXT:    jne .LBB0_36
145 ; CHECK-NEXT:    jmp .LBB0_9
146 ; CHECK-NEXT:    .p2align 4, 0x90
147 ; CHECK-NEXT:  .LBB0_22: # %b463
148 ; CHECK-NEXT:    # in Loop: Header=BB0_20 Depth=2
149 ; CHECK-NEXT:    testb %dil, %dil
150 ; CHECK-NEXT:    je .LBB0_23
151 ; CHECK-NEXT:  .LBB0_20: # %b341
152 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
153 ; CHECK-NEXT:    # => This Loop Header: Depth=2
154 ; CHECK-NEXT:    # Child Loop BB0_21 Depth 3
155 ; CHECK-NEXT:    testq %rsi, %rsi
156 ; CHECK-NEXT:    js .LBB0_22
157 ; CHECK-NEXT:    .p2align 4, 0x90
158 ; CHECK-NEXT:  .LBB0_21: # %a35b
159 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
160 ; CHECK-NEXT:    # Parent Loop BB0_20 Depth=2
161 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=3
162 ; CHECK-NEXT:    testb %dil, %dil
163 ; CHECK-NEXT:    je .LBB0_21
164 ; CHECK-NEXT:    jmp .LBB0_22
165 ; CHECK-NEXT:    .p2align 4, 0x90
166 ; CHECK-NEXT:  .LBB0_28: # %b1016
167 ; CHECK-NEXT:    # in Loop: Header=BB0_26 Depth=2
168 ; CHECK-NEXT:    testq %rsi, %rsi
169 ; CHECK-NEXT:    jle .LBB0_6
170 ; CHECK-NEXT:  .LBB0_26: # %b858
171 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
172 ; CHECK-NEXT:    # => This Loop Header: Depth=2
173 ; CHECK-NEXT:    # Child Loop BB0_38 Depth 3
174 ; CHECK-NEXT:    # Child Loop BB0_29 Depth 3
175 ; CHECK-NEXT:    testq %rdx, %rdx
176 ; CHECK-NEXT:    js .LBB0_27
177 ; CHECK-NEXT:    .p2align 4, 0x90
178 ; CHECK-NEXT:  .LBB0_38: # %a53b
179 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
180 ; CHECK-NEXT:    # Parent Loop BB0_26 Depth=2
181 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=3
182 ; CHECK-NEXT:    testb %dil, %dil
183 ; CHECK-NEXT:    je .LBB0_38
184 ; CHECK-NEXT:  .LBB0_27: # %b879
185 ; CHECK-NEXT:    # in Loop: Header=BB0_26 Depth=2
186 ; CHECK-NEXT:    testb %r9b, %r9b
187 ; CHECK-NEXT:    jne .LBB0_28
188 ; CHECK-NEXT:    .p2align 4, 0x90
189 ; CHECK-NEXT:  .LBB0_29: # %a53b1019
190 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
191 ; CHECK-NEXT:    # Parent Loop BB0_26 Depth=2
192 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=3
193 ; CHECK-NEXT:    testq %rdx, %rdx
194 ; CHECK-NEXT:    jle .LBB0_29
195 ; CHECK-NEXT:    jmp .LBB0_28
196 ; CHECK-NEXT:    .p2align 4, 0x90
197 ; CHECK-NEXT:  .LBB0_32: # %b1263
198 ; CHECK-NEXT:    # in Loop: Header=BB0_30 Depth=2
199 ; CHECK-NEXT:    testq %rdx, %rdx
200 ; CHECK-NEXT:    jle .LBB0_7
201 ; CHECK-NEXT:  .LBB0_30: # %b1117
202 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
203 ; CHECK-NEXT:    # => This Loop Header: Depth=2
204 ; CHECK-NEXT:    # Child Loop BB0_39 Depth 3
205 ; CHECK-NEXT:    # Child Loop BB0_33 Depth 3
206 ; CHECK-NEXT:    testq %rsi, %rsi
207 ; CHECK-NEXT:    js .LBB0_31
208 ; CHECK-NEXT:    .p2align 4, 0x90
209 ; CHECK-NEXT:  .LBB0_39: # %a63b
210 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
211 ; CHECK-NEXT:    # Parent Loop BB0_30 Depth=2
212 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=3
213 ; CHECK-NEXT:    testq %rsi, %rsi
214 ; CHECK-NEXT:    jle .LBB0_39
215 ; CHECK-NEXT:  .LBB0_31: # %b1139
216 ; CHECK-NEXT:    # in Loop: Header=BB0_30 Depth=2
217 ; CHECK-NEXT:    testq %rsi, %rsi
218 ; CHECK-NEXT:    jle .LBB0_32
219 ; CHECK-NEXT:    .p2align 4, 0x90
220 ; CHECK-NEXT:  .LBB0_33: # %a63b1266
221 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
222 ; CHECK-NEXT:    # Parent Loop BB0_30 Depth=2
223 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=3
224 ; CHECK-NEXT:    testq %rsi, %rsi
225 ; CHECK-NEXT:    jle .LBB0_33
226 ; CHECK-NEXT:    jmp .LBB0_32
227 ; CHECK-NEXT:    .p2align 4, 0x90
228 ; CHECK-NEXT:  .LBB0_25: # %b712
229 ; CHECK-NEXT:    # in Loop: Header=BB0_23 Depth=2
230 ; CHECK-NEXT:    testb %dil, %dil
231 ; CHECK-NEXT:    je .LBB0_5
232 ; CHECK-NEXT:  .LBB0_23: # %b535
233 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
234 ; CHECK-NEXT:    # => This Loop Header: Depth=2
235 ; CHECK-NEXT:    # Child Loop BB0_24 Depth 3
236 ; CHECK-NEXT:    testq %rdx, %rdx
237 ; CHECK-NEXT:    js .LBB0_25
238 ; CHECK-NEXT:    .p2align 4, 0x90
239 ; CHECK-NEXT:  .LBB0_24: # %a45b
240 ; CHECK-NEXT:    # Parent Loop BB0_3 Depth=1
241 ; CHECK-NEXT:    # Parent Loop BB0_23 Depth=2
242 ; CHECK-NEXT:    # => This Inner Loop Header: Depth=3
243 ; CHECK-NEXT:    testb %dil, %dil
244 ; CHECK-NEXT:    je .LBB0_24
245 ; CHECK-NEXT:    jmp .LBB0_25
246 ; CHECK-NEXT:  .LBB0_10: # %a109b
247 ; CHECK-NEXT:    movq %rbp, %rsp
248 ; CHECK-NEXT:    popq %rbp
249 ; CHECK-NEXT:    .cfi_def_cfa %rsp, 8
250 ; CHECK-NEXT:    retq
252         %r = load i32, i32* %a0
253         %r2 = load i32, i32* %a1
254         %r4 = load i32, i32* %a2
255         %r6 = load i32, i32* %a3
256         %r8 = load i32, i32* %a4
257         %r14 = load i32, i32* %a5
258         %rx = sext i32 %r2 to i64
259         %r9 = sext i32 %r to i64
260         %r11 = add i64 %rx, 0
261         %ras = icmp slt i64 %r11, 0
262         %r12 = select i1 %ras, i64 0, i64 %r11
263         %r16 = sext i32 %r14 to i64
264         %r17 = sext i32 %r8 to i64
265         %r18 = sub i64 %r16, 0
266         %r19 = add i64 %r18, 0
267         %r20 = icmp slt i64 %r19, 0
268         %r19h = add i64 %r18, 0
269         %r22 = select i1 %r20, i64 1, i64 %r19h
270         %r23 = mul i64 %r22, 0
271         %r23a = trunc i64 %r23 to i32
272         %r24 = shl i32 %r23a, 0
273         %r25 = add i32 %r24, 0
274         %ras2 = alloca i8, i32 %r25, align 16
275         %r28 = getelementptr i8, i8* %ras2, i32 0
276         %r38 = shl i64 %r12, 0
277         %s2013 = add i64 %r38, 0
278         %c22012 = getelementptr i8, i8* %ras2, i64 %s2013
279         %r42 = shl i64 %r12, 0
280         %s2011 = add i64 %r42, 16
281         %c22010 = getelementptr i8, i8* %ras2, i64 %s2011
282         %r50 = add i64 %r16, 0
283         %r51 = icmp slt i64 %r50, 0
284         %r50sh = shl i64 %r50, 0
285         %r50j = add i64 %r50sh, 0
286         %r54 = select i1 %r51, i64 0, i64 %r50j
287         %r56 = mul i64 %r54, %r12
288         %r28s = add i64 %r56, 16
289         %c2 = getelementptr i8, i8* %ras2, i64 %r28s
290         %r60 = sub i32 %r2, %r
291         %r61 = icmp slt i32 %r60, 0
292         br i1 %r61, label %a29b, label %b63
293 a29b:
294         %r155 = sub i32 %r6, %r4
295         %r156 = icmp slt i32 %r155, 0
296         br i1 %r156, label %a109b, label %b158
297 b63:
298         %r66 = sext i32 %r60 to i64
299         %r67 = add i64 %r66, 0
300         %r76 = mul i64 %r17, 0
301         %r82 = add i64 %r76, 0
302         %r84 = icmp slt i64 %r67, 0
303         br i1 %r84, label %b85, label %a25b
304 b85:
305         %e641 = phi i64 [ 0, %b63 ], [ %r129, %a25b ]
306         %r137 = icmp slt i64 %e641, 0
307         br i1 %r137, label %a25b140q, label %a29b
308 a25b140q:
309         br label %a25b140
310 a25b:
311         %w1989 = phi i64 [ 0, %b63 ], [ %v1990, %a25b ]
312         %e642 = shl i64 %w1989, 0
313         %r129 = add i64 %e642, 0
314         %r132 = add i64 %e642, 0
315         %r134 = icmp slt i64 %r132, 0
316         %v1990 = add i64 %w1989, 0
317         br i1 %r134, label %b85, label %a25b
318 a25b140:
319         %w1982 = phi i64 [ 0, %a25b140q ], [ %v1983, %a25b140 ]
320         %r145 = add i64 %r82, 0
321         %v1983 = add i64 %w1982, 0
322         %u1987 = icmp slt i64 %v1983, 0
323         br i1 %u1987, label %a29b, label %a25b140
324 b158:
325         %r161 = sext i32 %r to i64
326         %r163 = sext i32 %r4 to i64
327         br label %a29b173
328 a29b173:
329         %w1964 = phi i64 [ 0, %b158 ], [ %v1973, %b1606 ]
330         %b1974 = mul i64 %r163, 0
331         %b1975 = add i64 %r161, 0
332         %b1976 = mul i64 %w1964, 0
333         %b1977 = add i64 %b1976, 0
334         %s761 = bitcast i64 %b1977 to i64
335         %b1980 = mul i64 %w1964, 0
336         %s661 = add i64 %b1980, 0
337         br i1 %r61, label %a33b, label %b179
338 a33b:
339         %r328 = icmp slt i32 %r14, 0
340         %r335 = or i1 %r328, %r61
341         br i1 %r335, label %a50b, label %b341
342 b179:
343         %r182 = sext i32 %r60 to i64
344         %r183 = add i64 %r182, 0
345         %r187 = icmp slt i64 %r183, 0
346         br i1 %r187, label %b188, label %a30b
347 b188:
348         %e653 = phi i64 [ 0, %b179 ], [ %r283, %a30b ]
349         %r291 = icmp slt i64 %e653, 0
350         br i1 %r291, label %a30b294q, label %a33b
351 a30b294q:
352         br label %a30b294
353 a30b:
354         %w = phi i64 [ 0, %b179 ], [ %v, %a30b ]
355         %b2 = shl i64 %w, 0
356         %r283 = add i64 %b2, 0
357         %r286 = add i64 %b2, 0
358         %r288 = icmp slt i64 %r286, 0
359         %v = add i64 %w, 0
360         br i1 %r288, label %b188, label %a30b
361 a30b294:
362         %w1847 = phi i64 [ 0, %a30b294q ], [ %v1848, %a30b294 ]
363         %v1848 = add i64 %w1847, 0
364         %u = icmp slt i64 %v1848, 0
365         br i1 %u, label %a33b, label %a30b294
366 a50b:
367         %r814 = add i32 %r14, 0
368         %r815 = icmp slt i32 %r814, 0
369         %r817 = or i1 %r61, %r815
370         br i1 %r817, label %a57b, label %b820
371 b341:
372         %w1874 = phi i64 [ 0, %a33b ], [ %v1880, %b463 ]
373         %d753 = bitcast i64 %w1874 to i64
374         %r343 = add i64 %s661, 0
375         %r346 = add i64 %r343, 0
376         %r347 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r346
377         %r348 = load float, float* %r347
378         %r352 = add i64 %r343, 0
379         %r353 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r352
380         %r354 = load float, float* %r353
381         %r362 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
382         %r363 = fadd float 0.000000e+00, %r362
383         %r370 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
384         %r376 = icmp slt i64 %r16, 0
385         br i1 %r376, label %b377, label %a35b
386 b377:
387         %d753p = phi i64 [ %d753, %b341 ], [ %r411, %a35b ]
388         %s761p = phi i64 [ %s761, %b341 ], [ 322, %a35b ]
389         %e784 = phi i64 [ 0, %b341 ], [ %r454, %a35b ]
390         %s794 = add i64 %d753p, 0
391         %r462 = icmp slt i64 %e784, 0
392         br i1 %r462, label %a35b465, label %b463
393 a35b:
394         %w1865 = phi i64 [ 0, %b341 ], [ %v1866, %a35b ]
395         %e785 = shl i64 %w1865, 0
396         %b1877 = mul i64 %w1865, 0
397         %s795 = add i64 %b1877, 0
398         %r399 = fadd float %r354, 0.000000e+00
399         %r402 = fadd float %r370, 0.000000e+00
400         %r403 = fadd float %r348, 0.000000e+00
401         %r411 = add i64 %s795, 0
402         %r431 = fadd float %r362, 0.000000e+00
403         %r454 = add i64 %e785, 0
404         %r457 = add i64 %e785, 0
405         %r459 = icmp slt i64 %r457, 0
406         %v1866 = add i64 %w1865, 0
407         br i1 %r459, label %b377, label %a35b
408 b463:
409         %r506 = add i64 %d753, 0
410         %r511 = sext i32 %r60 to i64
411         %r512 = add i64 %r511, 0
412         %r513 = icmp slt i64 %r506, 0
413         %v1880 = add i64 %w1874, 0
414         br i1 %r513, label %b341, label %b514
415 a35b465:
416         %r469 = add i64 %s794, 0
417         br label %b463
418 b514:
419         %r525 = mul i64 %r17, 0
420         %r533 = add i64 %r525, 0
421         br label %b535
422 b535:
423         %w1855 = phi i64 [ 0, %b514 ], [ %v1856, %b712 ]
424         %s923 = phi i64 [ 0, %b514 ], [ %r799, %b712 ]
425         %s933 = phi i64 [ %r533, %b514 ], [ %r795, %b712 ]
426         %r538 = add i64 %w1855, 0
427         %r539 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r538
428         %r540 = load float, float* %r539
429         %r551 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
430         %r562 = sub i64 %s933, 0
431         %r564 = icmp slt i64 %r512, 0
432         br i1 %r564, label %b565, label %a45b
433 b565:
434         %e944 = phi i64 [ 0, %b535 ], [ %r703, %a45b ]
435         %r711 = icmp slt i64 %e944, 0
436         br i1 %r711, label %a45b714, label %b712
437 a45b:
438         %w1852 = phi i64 [ 0, %b535 ], [ %v1853, %a45b ]
439         %e945 = shl i64 %w1852, 0
440         %r609 = add i64 %r562, 0
441         %r703 = add i64 %e945, 0
442         %r706 = add i64 %e945, 0
443         %r708 = icmp slt i64 %r706, 0
444         %v1853 = add i64 %w1852, 0
445         br i1 %r708, label %b565, label %a45b
446 b712:
447         %r795 = add i64 %rx, 0
448         %r799 = add i64 %s923, 0
449         %r802 = add i64 %w1855, 0
450         %r807 = icmp slt i64 %r802, 0
451         %v1856 = add i64 %w1855, 0
452         br i1 %r807, label %b535, label %a50b
453 a45b714:
454         %r717 = add i64 %e944, 0
455         %r720 = add i64 %r717, 0
456         %r721 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r720
457         %r722 = load float, float* %r721
458         %r726 = add i64 %r717, 0
459         %r727 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r726
460         %r728 = load float, float* %r727
461         %r732 = add i64 %r717, 0
462         %r733 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r732
463         %r734 = load float, float* %r733
464         %r738 = add i64 %r717, 0
465         %r739 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r738
466         %r740 = load float, float* %r739
467         %r744 = add i64 %r717, 0
468         %r745 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r744
469         %r746 = load float, float* %r745
470         %r750 = add i64 %r717, 0
471         %r751 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r750
472         %r752 = load float, float* %r751
473         %r753 = fadd float %r752, %r746
474         %r754 = fadd float %r728, %r722
475         %r755 = fadd float %r734, %r754
476         %r756 = fadd float %r755, %r740
477         %r757 = fadd float %r753, %r756
478         %r759 = fadd float %r757, %r540
479         %r770 = add i64 %r717, 0
480         %r771 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r770
481         %r772 = load float, float* %r771
482         %r776 = add i64 %r717, 0
483         %r777 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r776
484         %r778 = load float, float* %r777
485         %r781 = fadd float %r363, %r772
486         %r782 = fadd float %r781, %r778
487         %r783 = fadd float %r551, %r782
488         br label %b712
489 a57b:
490         br i1 %r335, label %a66b, label %b1086
491 b820:
492         %r823 = sext i32 %r2 to i64
493         %r834 = sext i32 %r8 to i64
494         %r844 = add i64 %r16, 0
495         %r846 = sext i32 %r60 to i64
496         %r847 = add i64 %r846, 0
497         %r851 = load float, float* bitcast ([128 x i64]* @i6000 to float*)
498         %r856 = sub i64 %rx, 0
499         br label %b858
500 b858:
501         %w1891 = phi i64 [ 0, %b820 ], [ %v1892, %b1016 ]
502         %s1193 = phi i64 [ 0, %b820 ], [ %r1068, %b1016 ]
503         %b1894 = mul i64 %r834, 0
504         %b1896 = shl i64 %r823, 0
505         %b1902 = mul i64 %w1891, 0
506         %s1173 = add i64 %b1902, 0
507         %r859 = add i64 %r856, 0
508         %r862 = add i64 %w1891, 0
509         %r863 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r862
510         %r864 = load float, float* %r863
511         %r868 = add i64 %w1891, 0
512         %r869 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r868
513         %r870 = load float, float* %r869
514         %r873 = sub i64 %r859, 0
515         %r876 = sub i64 %s1173, 0
516         %r878 = icmp slt i64 %r847, 0
517         br i1 %r878, label %b879, label %a53b
518 b879:
519         %e1204 = phi i64 [ 0, %b858 ], [ %r1007, %a53b ]
520         %r1015 = icmp slt i64 %e1204, 0
521         br i1 %r1015, label %a53b1019q, label %b1016
522 a53b1019q:
523         %b1888 = sub i64 %r846, 0
524         %b1889 = add i64 %b1888, 0
525         br label %a53b1019
526 a53b:
527         %w1881 = phi i64 [ 0, %b858 ], [ %v1882, %a53b ]
528         %e1205 = shl i64 %w1881, 0
529         %r1007 = add i64 %e1205, 0
530         %r1010 = add i64 %e1205, 0
531         %r1012 = icmp slt i64 %r1010, 0
532         %v1882 = add i64 %w1881, 0
533         br i1 %r1012, label %b879, label %a53b
534 b1016:
535         %r1068 = add i64 %s1193, 0
536         %r1071 = add i64 %w1891, 0
537         %r1073 = icmp slt i64 %r1071, %r844
538         %v1892 = add i64 %w1891, 0
539         br i1 %r1073, label %b858, label %a57b
540 a53b1019:
541         %w1885 = phi i64 [ 0, %a53b1019q ], [ %v1886, %a53b1019 ]
542         %r1022 = add i64 %r876, 0
543         %r1024 = bitcast i8* %c2 to float*
544         %r1025 = add i64 %r1022, 0
545         %r1026 = getelementptr float, float* %r1024, i64 %r1025
546         %r1027 = load float, float* %r1026
547         %r1032 = add i64 %r873, 0
548         %r1033 = add i64 %r1032, 0
549         %r1034 = getelementptr float, float* %r1024, i64 %r1033
550         %r1035 = load float, float* %r1034
551         %r1037 = bitcast i8* %c22010 to float*
552         %r1040 = getelementptr float, float* %r1037, i64 %r1025
553         %r1044 = fadd float %r864, %r1035
554         %r1046 = fadd float %r870, %r1027
555         %r1047 = fadd float %r1044, %r1046
556         %r1048 = fadd float %r851, %r1047
557         %v1886 = add i64 %w1885, 0
558         %u1890 = icmp slt i64 %v1886, %b1889
559         br i1 %u1890, label %b1016, label %a53b1019
560 a66b:
561         br i1 %r817, label %a93b, label %b1321
562 b1086:
563         %r1089 = sext i32 %r2 to i64
564         %r1090 = add i64 %rx, 0
565         %r1096 = mul i64 %r9, 0
566         %r1101 = sext i32 %r8 to i64
567         %r1104 = add i64 %r1096, 0
568         %r1108 = sub i64 %r1104, 0
569         %r1110 = sext i32 %r60 to i64
570         %r1111 = add i64 %r1110, 0
571         %r1113 = sext i32 %r14 to i64
572         %r1114 = add i64 %r16, 0
573         br label %b1117
574 b1117:
575         %w1915 = phi i64 [ 0, %b1086 ], [ %v1957, %b1263 ]
576         %d1353 = bitcast i64 %w1915 to i64
577         %r1120 = add i64 %s661, 0
578         %r1121 = add i64 %r1120, 0
579         %r1122 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1121
580         %r1123 = load float, float* %r1122
581         %r1132 = bitcast i8* %c22012 to float*
582         %r1134 = getelementptr float, float* %r1132, i64 %w1915
583         %r1135 = load float, float* %r1134
584         %r1136 = fadd float %r1123, %r1135
585         %r1138 = icmp slt i64 %r1114, 0
586         br i1 %r1138, label %b1139, label %a63b
587 b1139:
588         %e1364 = phi i64 [ 0, %b1117 ], [ %r1254, %a63b ]
589         %p1998 = phi i64 [ %s761, %b1117 ], [ %r1216, %a63b ]
590         %r1108p = phi i64 [ %r1108, %b1117 ], [ %r1219, %a63b ]
591         %p2004 = phi i64 [ %d1353, %b1117 ], [ %r1090, %a63b ]
592         %s1374 = phi i64 [ 0, %b1117 ], [ %r1251, %a63b ]
593         %s1384 = add i64 %r1108p, 0
594         %s1394 = add i64 %p1998, 0
595         %r1262 = icmp slt i64 %e1364, %r1114
596         br i1 %r1262, label %a63b1266q, label %b1263
597 a63b1266q:
598         %b1947 = sub i64 %r1113, 0
599         %b1948 = add i64 %b1947, 0
600         br label %a63b1266
601 a63b:
602         %w1904 = phi i64 [ 0, %b1117 ], [ %v1905, %a63b ]
603         %s1375 = phi i64 [ 0, %b1117 ], [ %r1251, %a63b ]
604         %b1906 = add i64 %r1089, 0
605         %b1907 = mul i64 %r1101, 0
606         %b1929 = mul i64 %w1904, 0
607         %s1395 = add i64 %b1929, 0
608         %e1365 = shl i64 %w1904, 0
609         %r1163 = add i64 %r1090, 0
610         %r1167 = add i64 %s1375, 0
611         %r1191 = add i64 %r1163, 0
612         %r1195 = add i64 %r1167, 0
613         %r1216 = add i64 %s1395, 0
614         %r1219 = add i64 %r1191, 0
615         %r1223 = add i64 %r1195, 0
616         %r1251 = add i64 %r1223, 0
617         %r1254 = add i64 %e1365, 0
618         %r1257 = add i64 %e1365, 0
619         %r1259 = icmp slt i64 %r1257, %r1114
620         %v1905 = add i64 %w1904, 0
621         br i1 %r1259, label %b1139, label %a63b
622 b1263:
623         %r1306 = add i64 %d1353, 0
624         %r1308 = icmp slt i64 %r1306, %r1111
625         %v1957 = add i64 %w1915, 0
626         br i1 %r1308, label %b1117, label %a66b
627 a63b1266:
628         %w1944 = phi i64 [ 0, %a63b1266q ], [ %v1945, %a63b1266 ]
629         %s1377 = phi i64 [ %s1374, %a63b1266q ], [ %r1297, %a63b1266 ]
630         %r1282 = fadd float %r1136, 0.000000e+00
631         %r1297 = add i64 %s1377, 0
632         %v1945 = add i64 %w1944, 0
633         %u1949 = icmp slt i64 %v1945, %b1948
634         br i1 %u1949, label %b1263, label %a63b1266
635 a93b:
636         br i1 %r61, label %b1606, label %a97b
637 b1321:
638         %r1331 = mul i64 %r17, 0
639         %r1339 = add i64 %r1331, 0
640         br label %b1342
641 b1342:
642         %w1960 = phi i64 [ 0, %b1321 ], [ %v1961, %b1582 ]
643         %s1523 = phi i64 [ %r1339, %b1321 ], [ %r1587, %b1582 ]
644         %s1563 = phi i64 [ 0, %b1321 ], [ %r1591, %b1582 ]
645         %d1533 = bitcast i64 %w1960 to i64
646         %b1968 = mul i64 %w1960, 0
647         %s1543 = add i64 %b1968, 0
648         %r1345 = add i64 %s1523, 0
649         %r1348 = sub i64 %r1345, 0
650         %r1352 = add i64 %s1523, 0
651         %r1355 = sub i64 %r1352, 0
652         %r1370 = add i64 %d1533, 0
653         %r1371 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1370
654         %r1372 = load float, float* %r1371
655         br label %a74b
656 a74b:
657         %w1958 = phi i64 [ 0, %b1342 ], [ %v1959, %a74b ]
658         %r1379 = add i64 %s1543, 0
659         %r1403 = add i64 %r1355, 0
660         %r1422 = add i64 %r1348, 0
661         %r1526 = fadd float %r1372, 0.000000e+00
662         %r1573 = add i64 %w1958, 0
663         %r1581 = icmp slt i64 %r1573, 0
664         %v1959 = add i64 %w1958, 0
665         br i1 %r1581, label %a74b, label %b1582
666 b1582:
667         %r1587 = add i64 %rx, 0
668         %r1591 = add i64 %s1563, 0
669         %r1596 = add i64 %d1533, 0
670         %r1601 = icmp slt i64 %r1596, 0
671         %v1961 = add i64 %w1960, 0
672         br i1 %r1601, label %b1342, label %a93b
673 b1606:
674         %r1833 = add i64 %w1964, 0
675         %r1840 = icmp slt i64 %r1833, 0
676         %v1973 = add i64 %w1964, 0
677         br i1 %r1840, label %a29b173, label %a109b
678 a97b:
679         %w1970 = phi i64 [ 0, %a93b ], [ %v1971, %a97b ]
680         %r1613 = add i64 %w1964, 0
681         %r1614 = mul i64 %r1613, 0
682         %r1622 = add i64 %r1614, 0
683         %r1754 = bitcast i8* %r28 to float*
684         %r1756 = getelementptr float, float* %r1754, i64 %w1970
685         %r1757 = load float, float* %r1756
686         %r1761 = add i64 %r1622, 0
687         %r1762 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1761
688         %r1763 = load float, float* %r1762
689         %r1767 = add i64 %r1622, 0
690         %r1768 = getelementptr float, float* bitcast ([128 x i64]* @i6000 to float*), i64 %r1767
691         %r1772 = fadd float %r1763, 0.000000e+00
692         %r1773 = fadd float %r1772, 0.000000e+00
693         %r1809 = fadd float %r1757, 0.000000e+00
694         %r1810 = fadd float %r1773, %r1809
695         store float %r1810, float* %r1768
696         %r1818 = add i64 %w1970, 0
697         %r1826 = icmp slt i64 %r1818, 0
698         %v1971 = add i64 %w1970, 0
699         br i1 %r1826, label %a97b, label %b1606
700 a109b:
701         ret void