1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s
3; PR1103
4
5target datalayout = "e-p:64:64"
6@i6000 = dso_local global [128 x i64] zeroinitializer, align 16
7
8
9define dso_local void @foo(ptr %a0, ptr %a1, ptr %a2, ptr %a3, ptr %a4, ptr %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
251b:
252	%r = load i32, ptr %a0
253	%r2 = load i32, ptr %a1
254	%r4 = load i32, ptr %a2
255	%r6 = load i32, ptr %a3
256	%r8 = load i32, ptr %a4
257	%r14 = load i32, ptr %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	%r38 = shl i64 %r12, 0
276	%s2013 = add i64 %r38, 0
277	%c22012 = getelementptr i8, ptr %ras2, i64 %s2013
278	%r42 = shl i64 %r12, 0
279	%s2011 = add i64 %r42, 16
280	%c22010 = getelementptr i8, ptr %ras2, i64 %s2011
281	%r50 = add i64 %r16, 0
282	%r51 = icmp slt i64 %r50, 0
283	%r50sh = shl i64 %r50, 0
284	%r50j = add i64 %r50sh, 0
285	%r54 = select i1 %r51, i64 0, i64 %r50j
286	%r56 = mul i64 %r54, %r12
287	%r28s = add i64 %r56, 16
288	%c2 = getelementptr i8, ptr %ras2, i64 %r28s
289	%r60 = sub i32 %r2, %r
290	%r61 = icmp slt i32 %r60, 0
291	br i1 %r61, label %a29b, label %b63
292a29b:
293	%r155 = sub i32 %r6, %r4
294	%r156 = icmp slt i32 %r155, 0
295	br i1 %r156, label %a109b, label %b158
296b63:
297	%r66 = sext i32 %r60 to i64
298	%r67 = add i64 %r66, 0
299	%r76 = mul i64 %r17, 0
300	%r82 = add i64 %r76, 0
301	%r84 = icmp slt i64 %r67, 0
302	br i1 %r84, label %b85, label %a25b
303b85:
304	%e641 = phi i64 [ 0, %b63 ], [ %r129, %a25b ]
305	%r137 = icmp slt i64 %e641, 0
306	br i1 %r137, label %a25b140q, label %a29b
307a25b140q:
308	br label %a25b140
309a25b:
310	%w1989 = phi i64 [ 0, %b63 ], [ %v1990, %a25b ]
311	%e642 = shl i64 %w1989, 0
312	%r129 = add i64 %e642, 0
313	%r132 = add i64 %e642, 0
314	%r134 = icmp slt i64 %r132, 0
315	%v1990 = add i64 %w1989, 0
316	br i1 %r134, label %b85, label %a25b
317a25b140:
318	%w1982 = phi i64 [ 0, %a25b140q ], [ %v1983, %a25b140 ]
319	%r145 = add i64 %r82, 0
320	%v1983 = add i64 %w1982, 0
321	%u1987 = icmp slt i64 %v1983, 0
322	br i1 %u1987, label %a29b, label %a25b140
323b158:
324	%r161 = sext i32 %r to i64
325	%r163 = sext i32 %r4 to i64
326	br label %a29b173
327a29b173:
328	%w1964 = phi i64 [ 0, %b158 ], [ %v1973, %b1606 ]
329	%b1974 = mul i64 %r163, 0
330	%b1975 = add i64 %r161, 0
331	%b1976 = mul i64 %w1964, 0
332	%b1977 = add i64 %b1976, 0
333	%s761 = bitcast i64 %b1977 to i64
334	%b1980 = mul i64 %w1964, 0
335	%s661 = add i64 %b1980, 0
336	br i1 %r61, label %a33b, label %b179
337a33b:
338	%r328 = icmp slt i32 %r14, 0
339	%r335 = or i1 %r328, %r61
340	br i1 %r335, label %a50b, label %b341
341b179:
342	%r182 = sext i32 %r60 to i64
343	%r183 = add i64 %r182, 0
344	%r187 = icmp slt i64 %r183, 0
345	br i1 %r187, label %b188, label %a30b
346b188:
347	%e653 = phi i64 [ 0, %b179 ], [ %r283, %a30b ]
348	%r291 = icmp slt i64 %e653, 0
349	br i1 %r291, label %a30b294q, label %a33b
350a30b294q:
351	br label %a30b294
352a30b:
353	%w = phi i64 [ 0, %b179 ], [ %v, %a30b ]
354	%b2 = shl i64 %w, 0
355	%r283 = add i64 %b2, 0
356	%r286 = add i64 %b2, 0
357	%r288 = icmp slt i64 %r286, 0
358	%v = add i64 %w, 0
359	br i1 %r288, label %b188, label %a30b
360a30b294:
361	%w1847 = phi i64 [ 0, %a30b294q ], [ %v1848, %a30b294 ]
362	%v1848 = add i64 %w1847, 0
363	%u = icmp slt i64 %v1848, 0
364	br i1 %u, label %a33b, label %a30b294
365a50b:
366	%r814 = add i32 %r14, 0
367	%r815 = icmp slt i32 %r814, 0
368	%r817 = or i1 %r61, %r815
369	br i1 %r817, label %a57b, label %b820
370b341:
371	%w1874 = phi i64 [ 0, %a33b ], [ %v1880, %b463 ]
372	%d753 = bitcast i64 %w1874 to i64
373	%r343 = add i64 %s661, 0
374	%r346 = add i64 %r343, 0
375	%r347 = getelementptr float, ptr @i6000, i64 %r346
376	%r348 = load float, ptr %r347
377	%r352 = add i64 %r343, 0
378	%r353 = getelementptr float, ptr @i6000, i64 %r352
379	%r354 = load float, ptr %r353
380	%r362 = load float, ptr @i6000
381	%r363 = fadd float 0.000000e+00, %r362
382	%r370 = load float, ptr @i6000
383	%r376 = icmp slt i64 %r16, 0
384	br i1 %r376, label %b377, label %a35b
385b377:
386	%d753p = phi i64 [ %d753, %b341 ], [ %r411, %a35b ]
387	%s761p = phi i64 [ %s761, %b341 ], [ 322, %a35b ]
388	%e784 = phi i64 [ 0, %b341 ], [ %r454, %a35b ]
389	%s794 = add i64 %d753p, 0
390	%r462 = icmp slt i64 %e784, 0
391	br i1 %r462, label %a35b465, label %b463
392a35b:
393	%w1865 = phi i64 [ 0, %b341 ], [ %v1866, %a35b ]
394	%e785 = shl i64 %w1865, 0
395	%b1877 = mul i64 %w1865, 0
396	%s795 = add i64 %b1877, 0
397	%r399 = fadd float %r354, 0.000000e+00
398	%r402 = fadd float %r370, 0.000000e+00
399	%r403 = fadd float %r348, 0.000000e+00
400	%r411 = add i64 %s795, 0
401	%r431 = fadd float %r362, 0.000000e+00
402	%r454 = add i64 %e785, 0
403	%r457 = add i64 %e785, 0
404	%r459 = icmp slt i64 %r457, 0
405	%v1866 = add i64 %w1865, 0
406	br i1 %r459, label %b377, label %a35b
407b463:
408	%r506 = add i64 %d753, 0
409	%r511 = sext i32 %r60 to i64
410	%r512 = add i64 %r511, 0
411	%r513 = icmp slt i64 %r506, 0
412	%v1880 = add i64 %w1874, 0
413	br i1 %r513, label %b341, label %b514
414a35b465:
415	%r469 = add i64 %s794, 0
416	br label %b463
417b514:
418	%r525 = mul i64 %r17, 0
419	%r533 = add i64 %r525, 0
420	br label %b535
421b535:
422	%w1855 = phi i64 [ 0, %b514 ], [ %v1856, %b712 ]
423	%s923 = phi i64 [ 0, %b514 ], [ %r799, %b712 ]
424	%s933 = phi i64 [ %r533, %b514 ], [ %r795, %b712 ]
425	%r538 = add i64 %w1855, 0
426	%r539 = getelementptr float, ptr @i6000, i64 %r538
427	%r540 = load float, ptr %r539
428	%r551 = load float, ptr @i6000
429	%r562 = sub i64 %s933, 0
430	%r564 = icmp slt i64 %r512, 0
431	br i1 %r564, label %b565, label %a45b
432b565:
433	%e944 = phi i64 [ 0, %b535 ], [ %r703, %a45b ]
434	%r711 = icmp slt i64 %e944, 0
435	br i1 %r711, label %a45b714, label %b712
436a45b:
437	%w1852 = phi i64 [ 0, %b535 ], [ %v1853, %a45b ]
438	%e945 = shl i64 %w1852, 0
439	%r609 = add i64 %r562, 0
440	%r703 = add i64 %e945, 0
441	%r706 = add i64 %e945, 0
442	%r708 = icmp slt i64 %r706, 0
443	%v1853 = add i64 %w1852, 0
444	br i1 %r708, label %b565, label %a45b
445b712:
446	%r795 = add i64 %rx, 0
447	%r799 = add i64 %s923, 0
448	%r802 = add i64 %w1855, 0
449	%r807 = icmp slt i64 %r802, 0
450	%v1856 = add i64 %w1855, 0
451	br i1 %r807, label %b535, label %a50b
452a45b714:
453	%r717 = add i64 %e944, 0
454	%r720 = add i64 %r717, 0
455	%r721 = getelementptr float, ptr @i6000, i64 %r720
456	%r722 = load float, ptr %r721
457	%r726 = add i64 %r717, 0
458	%r727 = getelementptr float, ptr @i6000, i64 %r726
459	%r728 = load float, ptr %r727
460	%r732 = add i64 %r717, 0
461	%r733 = getelementptr float, ptr @i6000, i64 %r732
462	%r734 = load float, ptr %r733
463	%r738 = add i64 %r717, 0
464	%r739 = getelementptr float, ptr @i6000, i64 %r738
465	%r740 = load float, ptr %r739
466	%r744 = add i64 %r717, 0
467	%r745 = getelementptr float, ptr @i6000, i64 %r744
468	%r746 = load float, ptr %r745
469	%r750 = add i64 %r717, 0
470	%r751 = getelementptr float, ptr @i6000, i64 %r750
471	%r752 = load float, ptr %r751
472	%r753 = fadd float %r752, %r746
473	%r754 = fadd float %r728, %r722
474	%r755 = fadd float %r734, %r754
475	%r756 = fadd float %r755, %r740
476	%r757 = fadd float %r753, %r756
477	%r759 = fadd float %r757, %r540
478	%r770 = add i64 %r717, 0
479	%r771 = getelementptr float, ptr @i6000, i64 %r770
480	%r772 = load float, ptr %r771
481	%r776 = add i64 %r717, 0
482	%r777 = getelementptr float, ptr @i6000, i64 %r776
483	%r778 = load float, ptr %r777
484	%r781 = fadd float %r363, %r772
485	%r782 = fadd float %r781, %r778
486	%r783 = fadd float %r551, %r782
487	br label %b712
488a57b:
489	br i1 %r335, label %a66b, label %b1086
490b820:
491	%r823 = sext i32 %r2 to i64
492	%r834 = sext i32 %r8 to i64
493	%r844 = add i64 %r16, 0
494	%r846 = sext i32 %r60 to i64
495	%r847 = add i64 %r846, 0
496	%r851 = load float, ptr @i6000
497	%r856 = sub i64 %rx, 0
498	br label %b858
499b858:
500	%w1891 = phi i64 [ 0, %b820 ], [ %v1892, %b1016 ]
501	%s1193 = phi i64 [ 0, %b820 ], [ %r1068, %b1016 ]
502	%b1894 = mul i64 %r834, 0
503	%b1896 = shl i64 %r823, 0
504	%b1902 = mul i64 %w1891, 0
505	%s1173 = add i64 %b1902, 0
506	%r859 = add i64 %r856, 0
507	%r862 = add i64 %w1891, 0
508	%r863 = getelementptr float, ptr @i6000, i64 %r862
509	%r864 = load float, ptr %r863
510	%r868 = add i64 %w1891, 0
511	%r869 = getelementptr float, ptr @i6000, i64 %r868
512	%r870 = load float, ptr %r869
513	%r873 = sub i64 %r859, 0
514	%r876 = sub i64 %s1173, 0
515	%r878 = icmp slt i64 %r847, 0
516	br i1 %r878, label %b879, label %a53b
517b879:
518	%e1204 = phi i64 [ 0, %b858 ], [ %r1007, %a53b ]
519	%r1015 = icmp slt i64 %e1204, 0
520	br i1 %r1015, label %a53b1019q, label %b1016
521a53b1019q:
522	%b1888 = sub i64 %r846, 0
523	%b1889 = add i64 %b1888, 0
524	br label %a53b1019
525a53b:
526	%w1881 = phi i64 [ 0, %b858 ], [ %v1882, %a53b ]
527	%e1205 = shl i64 %w1881, 0
528	%r1007 = add i64 %e1205, 0
529	%r1010 = add i64 %e1205, 0
530	%r1012 = icmp slt i64 %r1010, 0
531	%v1882 = add i64 %w1881, 0
532	br i1 %r1012, label %b879, label %a53b
533b1016:
534	%r1068 = add i64 %s1193, 0
535	%r1071 = add i64 %w1891, 0
536	%r1073 = icmp slt i64 %r1071, %r844
537	%v1892 = add i64 %w1891, 0
538	br i1 %r1073, label %b858, label %a57b
539a53b1019:
540	%w1885 = phi i64 [ 0, %a53b1019q ], [ %v1886, %a53b1019 ]
541	%r1022 = add i64 %r876, 0
542	%r1025 = add i64 %r1022, 0
543	%r1026 = getelementptr float, ptr %c2, i64 %r1025
544	%r1027 = load float, ptr %r1026
545	%r1032 = add i64 %r873, 0
546	%r1033 = add i64 %r1032, 0
547	%r1034 = getelementptr float, ptr %c2, i64 %r1033
548	%r1035 = load float, ptr %r1034
549	%r1040 = getelementptr float, ptr %c22010, i64 %r1025
550	%r1044 = fadd float %r864, %r1035
551	%r1046 = fadd float %r870, %r1027
552	%r1047 = fadd float %r1044, %r1046
553	%r1048 = fadd float %r851, %r1047
554	%v1886 = add i64 %w1885, 0
555	%u1890 = icmp slt i64 %v1886, %b1889
556	br i1 %u1890, label %b1016, label %a53b1019
557a66b:
558	br i1 %r817, label %a93b, label %b1321
559b1086:
560	%r1089 = sext i32 %r2 to i64
561	%r1090 = add i64 %rx, 0
562	%r1096 = mul i64 %r9, 0
563	%r1101 = sext i32 %r8 to i64
564	%r1104 = add i64 %r1096, 0
565	%r1108 = sub i64 %r1104, 0
566	%r1110 = sext i32 %r60 to i64
567	%r1111 = add i64 %r1110, 0
568	%r1113 = sext i32 %r14 to i64
569	%r1114 = add i64 %r16, 0
570	br label %b1117
571b1117:
572	%w1915 = phi i64 [ 0, %b1086 ], [ %v1957, %b1263 ]
573	%d1353 = bitcast i64 %w1915 to i64
574	%r1120 = add i64 %s661, 0
575	%r1121 = add i64 %r1120, 0
576	%r1122 = getelementptr float, ptr @i6000, i64 %r1121
577	%r1123 = load float, ptr %r1122
578	%r1134 = getelementptr float, ptr %c22012, i64 %w1915
579	%r1135 = load float, ptr %r1134
580	%r1136 = fadd float %r1123, %r1135
581	%r1138 = icmp slt i64 %r1114, 0
582	br i1 %r1138, label %b1139, label %a63b
583b1139:
584	%e1364 = phi i64 [ 0, %b1117 ], [ %r1254, %a63b ]
585	%p1998 = phi i64 [ %s761, %b1117 ], [ %r1216, %a63b ]
586	%r1108p = phi i64 [ %r1108, %b1117 ], [ %r1219, %a63b ]
587	%p2004 = phi i64 [ %d1353, %b1117 ], [ %r1090, %a63b ]
588	%s1374 = phi i64 [ 0, %b1117 ], [ %r1251, %a63b ]
589	%s1384 = add i64 %r1108p, 0
590	%s1394 = add i64 %p1998, 0
591	%r1262 = icmp slt i64 %e1364, %r1114
592	br i1 %r1262, label %a63b1266q, label %b1263
593a63b1266q:
594	%b1947 = sub i64 %r1113, 0
595	%b1948 = add i64 %b1947, 0
596	br label %a63b1266
597a63b:
598	%w1904 = phi i64 [ 0, %b1117 ], [ %v1905, %a63b ]
599	%s1375 = phi i64 [ 0, %b1117 ], [ %r1251, %a63b ]
600	%b1906 = add i64 %r1089, 0
601	%b1907 = mul i64 %r1101, 0
602	%b1929 = mul i64 %w1904, 0
603	%s1395 = add i64 %b1929, 0
604	%e1365 = shl i64 %w1904, 0
605	%r1163 = add i64 %r1090, 0
606	%r1167 = add i64 %s1375, 0
607	%r1191 = add i64 %r1163, 0
608	%r1195 = add i64 %r1167, 0
609	%r1216 = add i64 %s1395, 0
610	%r1219 = add i64 %r1191, 0
611	%r1223 = add i64 %r1195, 0
612	%r1251 = add i64 %r1223, 0
613	%r1254 = add i64 %e1365, 0
614	%r1257 = add i64 %e1365, 0
615	%r1259 = icmp slt i64 %r1257, %r1114
616	%v1905 = add i64 %w1904, 0
617	br i1 %r1259, label %b1139, label %a63b
618b1263:
619	%r1306 = add i64 %d1353, 0
620	%r1308 = icmp slt i64 %r1306, %r1111
621	%v1957 = add i64 %w1915, 0
622	br i1 %r1308, label %b1117, label %a66b
623a63b1266:
624	%w1944 = phi i64 [ 0, %a63b1266q ], [ %v1945, %a63b1266 ]
625	%s1377 = phi i64 [ %s1374, %a63b1266q ], [ %r1297, %a63b1266 ]
626	%r1282 = fadd float %r1136, 0.000000e+00
627	%r1297 = add i64 %s1377, 0
628	%v1945 = add i64 %w1944, 0
629	%u1949 = icmp slt i64 %v1945, %b1948
630	br i1 %u1949, label %b1263, label %a63b1266
631a93b:
632	br i1 %r61, label %b1606, label %a97b
633b1321:
634	%r1331 = mul i64 %r17, 0
635	%r1339 = add i64 %r1331, 0
636	br label %b1342
637b1342:
638	%w1960 = phi i64 [ 0, %b1321 ], [ %v1961, %b1582 ]
639	%s1523 = phi i64 [ %r1339, %b1321 ], [ %r1587, %b1582 ]
640	%s1563 = phi i64 [ 0, %b1321 ], [ %r1591, %b1582 ]
641	%d1533 = bitcast i64 %w1960 to i64
642	%b1968 = mul i64 %w1960, 0
643	%s1543 = add i64 %b1968, 0
644	%r1345 = add i64 %s1523, 0
645	%r1348 = sub i64 %r1345, 0
646	%r1352 = add i64 %s1523, 0
647	%r1355 = sub i64 %r1352, 0
648	%r1370 = add i64 %d1533, 0
649	%r1371 = getelementptr float, ptr @i6000, i64 %r1370
650	%r1372 = load float, ptr %r1371
651	br label %a74b
652a74b:
653	%w1958 = phi i64 [ 0, %b1342 ], [ %v1959, %a74b ]
654	%r1379 = add i64 %s1543, 0
655	%r1403 = add i64 %r1355, 0
656	%r1422 = add i64 %r1348, 0
657	%r1526 = fadd float %r1372, 0.000000e+00
658	%r1573 = add i64 %w1958, 0
659	%r1581 = icmp slt i64 %r1573, 0
660	%v1959 = add i64 %w1958, 0
661	br i1 %r1581, label %a74b, label %b1582
662b1582:
663	%r1587 = add i64 %rx, 0
664	%r1591 = add i64 %s1563, 0
665	%r1596 = add i64 %d1533, 0
666	%r1601 = icmp slt i64 %r1596, 0
667	%v1961 = add i64 %w1960, 0
668	br i1 %r1601, label %b1342, label %a93b
669b1606:
670	%r1833 = add i64 %w1964, 0
671	%r1840 = icmp slt i64 %r1833, 0
672	%v1973 = add i64 %w1964, 0
673	br i1 %r1840, label %a29b173, label %a109b
674a97b:
675	%w1970 = phi i64 [ 0, %a93b ], [ %v1971, %a97b ]
676	%r1613 = add i64 %w1964, 0
677	%r1614 = mul i64 %r1613, 0
678	%r1622 = add i64 %r1614, 0
679	%r1756 = getelementptr float, ptr %ras2, i64 %w1970
680	%r1757 = load float, ptr %r1756
681	%r1761 = add i64 %r1622, 0
682	%r1762 = getelementptr float, ptr @i6000, i64 %r1761
683	%r1763 = load float, ptr %r1762
684	%r1767 = add i64 %r1622, 0
685	%r1768 = getelementptr float, ptr @i6000, i64 %r1767
686	%r1772 = fadd float %r1763, 0.000000e+00
687	%r1773 = fadd float %r1772, 0.000000e+00
688	%r1809 = fadd float %r1757, 0.000000e+00
689	%r1810 = fadd float %r1773, %r1809
690	store float %r1810, ptr %r1768
691	%r1818 = add i64 %w1970, 0
692	%r1826 = icmp slt i64 %r1818, 0
693	%v1971 = add i64 %w1970, 0
694	br i1 %r1826, label %a97b, label %b1606
695a109b:
696	ret void
697}
698