xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/cr-spills.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
4*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; This test case triggers several functions related to cr spilling, both in
7*9880d681SAndroid Build Coastguard Worker; frame lowering and to handle cr register pressure. When the register kill
8*9880d681SAndroid Build Coastguard Worker; flags were not being set correctly, this would cause the register scavenger to
9*9880d681SAndroid Build Coastguard Worker; assert.
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker@SetupFastFullPelSearch.orig_pels = external unnamed_addr global [768 x i16], align 2
12*9880d681SAndroid Build Coastguard Worker@weight_luma = external global i32
13*9880d681SAndroid Build Coastguard Worker@offset_luma = external global i32
14*9880d681SAndroid Build Coastguard Worker@wp_luma_round = external global i32, align 4
15*9880d681SAndroid Build Coastguard Worker@luma_log_weight_denom = external global i32, align 4
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdefine void @SetupFastFullPelSearch() #0 {
18*9880d681SAndroid Build Coastguard Workerentry:
19*9880d681SAndroid Build Coastguard Worker  %mul10 = mul nsw i32 undef, undef
20*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %land.end, label %land.lhs.true
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerland.lhs.true:                                    ; preds = %entry
23*9880d681SAndroid Build Coastguard Worker  switch i32 0, label %land.end [
24*9880d681SAndroid Build Coastguard Worker    i32 0, label %land.rhs
25*9880d681SAndroid Build Coastguard Worker    i32 3, label %land.rhs
26*9880d681SAndroid Build Coastguard Worker  ]
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerland.rhs:                                         ; preds = %land.lhs.true, %land.lhs.true
29*9880d681SAndroid Build Coastguard Worker  %tobool21 = icmp ne i32 undef, 0
30*9880d681SAndroid Build Coastguard Worker  br label %land.end
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerland.end:                                         ; preds = %land.rhs, %land.lhs.true, %entry
33*9880d681SAndroid Build Coastguard Worker  %0 = phi i1 [ %tobool21, %land.rhs ], [ false, %land.lhs.true ], [ false, %entry ]
34*9880d681SAndroid Build Coastguard Worker  %cond = load i32*, i32** undef, align 8
35*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.then95, label %for.body.lr.ph
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerif.then95:                                        ; preds = %land.end
38*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1427 = icmp slt i32 undef, undef
39*9880d681SAndroid Build Coastguard Worker  br label %for.body.lr.ph
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerfor.body.lr.ph:                                   ; preds = %if.then95, %land.end
42*9880d681SAndroid Build Coastguard Worker  br label %for.body
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %for.body, %for.body.lr.ph
45*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.body, label %for.body252
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerfor.body252:                                      ; preds = %for.inc997, %for.body
48*9880d681SAndroid Build Coastguard Worker  %shl263 = add i32 undef, 80
49*9880d681SAndroid Build Coastguard Worker  br i1 %0, label %for.cond286.preheader, label %for.cond713.preheader
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerfor.cond286.preheader:                            ; preds = %for.body252
52*9880d681SAndroid Build Coastguard Worker  br label %for.cond290.preheader
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerfor.cond290.preheader:                            ; preds = %for.end520, %for.cond286.preheader
55*9880d681SAndroid Build Coastguard Worker  %srcptr.31595 = phi i16* [ getelementptr inbounds ([768 x i16], [768 x i16]* @SetupFastFullPelSearch.orig_pels, i64 0, i64 0), %for.cond286.preheader ], [ null, %for.end520 ]
56*9880d681SAndroid Build Coastguard Worker  %1 = load i32, i32* undef, align 4
57*9880d681SAndroid Build Coastguard Worker  %2 = load i32, i32* @weight_luma, align 4
58*9880d681SAndroid Build Coastguard Worker  %3 = load i32, i32* @wp_luma_round, align 4
59*9880d681SAndroid Build Coastguard Worker  %4 = load i32, i32* @luma_log_weight_denom, align 4
60*9880d681SAndroid Build Coastguard Worker  %5 = load i32, i32* @offset_luma, align 4
61*9880d681SAndroid Build Coastguard Worker  %incdec.ptr502.sum = add i64 undef, 16
62*9880d681SAndroid Build Coastguard Worker  br label %for.body293
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerfor.body293:                                      ; preds = %for.body293, %for.cond290.preheader
65*9880d681SAndroid Build Coastguard Worker  %srcptr.41591 = phi i16* [ %srcptr.31595, %for.cond290.preheader ], [ undef, %for.body293 ]
66*9880d681SAndroid Build Coastguard Worker  %refptr.11590 = phi i16* [ undef, %for.cond290.preheader ], [ %add.ptr517, %for.body293 ]
67*9880d681SAndroid Build Coastguard Worker  %LineSadBlk0.01588 = phi i32 [ 0, %for.cond290.preheader ], [ %add346, %for.body293 ]
68*9880d681SAndroid Build Coastguard Worker  %LineSadBlk1.01587 = phi i32 [ 0, %for.cond290.preheader ], [ %add402, %for.body293 ]
69*9880d681SAndroid Build Coastguard Worker  %LineSadBlk3.01586 = phi i32 [ 0, %for.cond290.preheader ], [ %add514, %for.body293 ]
70*9880d681SAndroid Build Coastguard Worker  %LineSadBlk2.01585 = phi i32 [ 0, %for.cond290.preheader ], [ %add458, %for.body293 ]
71*9880d681SAndroid Build Coastguard Worker  %6 = load i16, i16* %refptr.11590, align 2
72*9880d681SAndroid Build Coastguard Worker  %conv294 = zext i16 %6 to i32
73*9880d681SAndroid Build Coastguard Worker  %mul295 = mul nsw i32 %conv294, %2
74*9880d681SAndroid Build Coastguard Worker  %add296 = add nsw i32 %mul295, %3
75*9880d681SAndroid Build Coastguard Worker  %shr = ashr i32 %add296, %4
76*9880d681SAndroid Build Coastguard Worker  %add297 = add nsw i32 %shr, %5
77*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1513 = icmp sgt i32 %add297, 0
78*9880d681SAndroid Build Coastguard Worker  %cond.i.i1514 = select i1 %cmp.i.i1513, i32 %add297, i32 0
79*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1515 = icmp slt i32 %cond.i.i1514, %1
80*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1516 = select i1 %cmp.i4.i1515, i32 %cond.i.i1514, i32 %1
81*9880d681SAndroid Build Coastguard Worker  %7 = load i16, i16* %srcptr.41591, align 2
82*9880d681SAndroid Build Coastguard Worker  %conv300 = zext i16 %7 to i32
83*9880d681SAndroid Build Coastguard Worker  %sub301 = sub nsw i32 %cond.i5.i1516, %conv300
84*9880d681SAndroid Build Coastguard Worker  %idxprom302 = sext i32 %sub301 to i64
85*9880d681SAndroid Build Coastguard Worker  %arrayidx303 = getelementptr inbounds i32, i32* %cond, i64 %idxprom302
86*9880d681SAndroid Build Coastguard Worker  %8 = load i32, i32* %arrayidx303, align 4
87*9880d681SAndroid Build Coastguard Worker  %add304 = add nsw i32 %8, %LineSadBlk0.01588
88*9880d681SAndroid Build Coastguard Worker  %9 = load i32, i32* undef, align 4
89*9880d681SAndroid Build Coastguard Worker  %add318 = add nsw i32 %add304, %9
90*9880d681SAndroid Build Coastguard Worker  %10 = load i16, i16* undef, align 2
91*9880d681SAndroid Build Coastguard Worker  %conv321 = zext i16 %10 to i32
92*9880d681SAndroid Build Coastguard Worker  %mul322 = mul nsw i32 %conv321, %2
93*9880d681SAndroid Build Coastguard Worker  %add323 = add nsw i32 %mul322, %3
94*9880d681SAndroid Build Coastguard Worker  %shr324 = ashr i32 %add323, %4
95*9880d681SAndroid Build Coastguard Worker  %add325 = add nsw i32 %shr324, %5
96*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1505 = icmp sgt i32 %add325, 0
97*9880d681SAndroid Build Coastguard Worker  %cond.i.i1506 = select i1 %cmp.i.i1505, i32 %add325, i32 0
98*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1507 = icmp slt i32 %cond.i.i1506, %1
99*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1508 = select i1 %cmp.i4.i1507, i32 %cond.i.i1506, i32 %1
100*9880d681SAndroid Build Coastguard Worker  %sub329 = sub nsw i32 %cond.i5.i1508, 0
101*9880d681SAndroid Build Coastguard Worker  %idxprom330 = sext i32 %sub329 to i64
102*9880d681SAndroid Build Coastguard Worker  %arrayidx331 = getelementptr inbounds i32, i32* %cond, i64 %idxprom330
103*9880d681SAndroid Build Coastguard Worker  %11 = load i32, i32* %arrayidx331, align 4
104*9880d681SAndroid Build Coastguard Worker  %add332 = add nsw i32 %add318, %11
105*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1501 = icmp sgt i32 undef, 0
106*9880d681SAndroid Build Coastguard Worker  %cond.i.i1502 = select i1 %cmp.i.i1501, i32 undef, i32 0
107*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1503 = icmp slt i32 %cond.i.i1502, %1
108*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1504 = select i1 %cmp.i4.i1503, i32 %cond.i.i1502, i32 %1
109*9880d681SAndroid Build Coastguard Worker  %incdec.ptr341 = getelementptr inbounds i16, i16* %srcptr.41591, i64 4
110*9880d681SAndroid Build Coastguard Worker  %12 = load i16, i16* null, align 2
111*9880d681SAndroid Build Coastguard Worker  %conv342 = zext i16 %12 to i32
112*9880d681SAndroid Build Coastguard Worker  %sub343 = sub nsw i32 %cond.i5.i1504, %conv342
113*9880d681SAndroid Build Coastguard Worker  %idxprom344 = sext i32 %sub343 to i64
114*9880d681SAndroid Build Coastguard Worker  %arrayidx345 = getelementptr inbounds i32, i32* %cond, i64 %idxprom344
115*9880d681SAndroid Build Coastguard Worker  %13 = load i32, i32* %arrayidx345, align 4
116*9880d681SAndroid Build Coastguard Worker  %add346 = add nsw i32 %add332, %13
117*9880d681SAndroid Build Coastguard Worker  %incdec.ptr348 = getelementptr inbounds i16, i16* %refptr.11590, i64 5
118*9880d681SAndroid Build Coastguard Worker  %14 = load i16, i16* null, align 2
119*9880d681SAndroid Build Coastguard Worker  %conv349 = zext i16 %14 to i32
120*9880d681SAndroid Build Coastguard Worker  %mul350 = mul nsw i32 %conv349, %2
121*9880d681SAndroid Build Coastguard Worker  %add351 = add nsw i32 %mul350, %3
122*9880d681SAndroid Build Coastguard Worker  %shr352 = ashr i32 %add351, %4
123*9880d681SAndroid Build Coastguard Worker  %add353 = add nsw i32 %shr352, %5
124*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1497 = icmp sgt i32 %add353, 0
125*9880d681SAndroid Build Coastguard Worker  %cond.i.i1498 = select i1 %cmp.i.i1497, i32 %add353, i32 0
126*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1499 = icmp slt i32 %cond.i.i1498, %1
127*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1500 = select i1 %cmp.i4.i1499, i32 %cond.i.i1498, i32 %1
128*9880d681SAndroid Build Coastguard Worker  %incdec.ptr355 = getelementptr inbounds i16, i16* %srcptr.41591, i64 5
129*9880d681SAndroid Build Coastguard Worker  %15 = load i16, i16* %incdec.ptr341, align 2
130*9880d681SAndroid Build Coastguard Worker  %conv356 = zext i16 %15 to i32
131*9880d681SAndroid Build Coastguard Worker  %sub357 = sub nsw i32 %cond.i5.i1500, %conv356
132*9880d681SAndroid Build Coastguard Worker  %idxprom358 = sext i32 %sub357 to i64
133*9880d681SAndroid Build Coastguard Worker  %arrayidx359 = getelementptr inbounds i32, i32* %cond, i64 %idxprom358
134*9880d681SAndroid Build Coastguard Worker  %16 = load i32, i32* %arrayidx359, align 4
135*9880d681SAndroid Build Coastguard Worker  %add360 = add nsw i32 %16, %LineSadBlk1.01587
136*9880d681SAndroid Build Coastguard Worker  %incdec.ptr362 = getelementptr inbounds i16, i16* %refptr.11590, i64 6
137*9880d681SAndroid Build Coastguard Worker  %17 = load i16, i16* %incdec.ptr348, align 2
138*9880d681SAndroid Build Coastguard Worker  %conv363 = zext i16 %17 to i32
139*9880d681SAndroid Build Coastguard Worker  %mul364 = mul nsw i32 %conv363, %2
140*9880d681SAndroid Build Coastguard Worker  %add365 = add nsw i32 %mul364, %3
141*9880d681SAndroid Build Coastguard Worker  %shr366 = ashr i32 %add365, %4
142*9880d681SAndroid Build Coastguard Worker  %add367 = add nsw i32 %shr366, %5
143*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1493 = icmp sgt i32 %add367, 0
144*9880d681SAndroid Build Coastguard Worker  %cond.i.i1494 = select i1 %cmp.i.i1493, i32 %add367, i32 0
145*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1495 = icmp slt i32 %cond.i.i1494, %1
146*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1496 = select i1 %cmp.i4.i1495, i32 %cond.i.i1494, i32 %1
147*9880d681SAndroid Build Coastguard Worker  %incdec.ptr369 = getelementptr inbounds i16, i16* %srcptr.41591, i64 6
148*9880d681SAndroid Build Coastguard Worker  %18 = load i16, i16* %incdec.ptr355, align 2
149*9880d681SAndroid Build Coastguard Worker  %conv370 = zext i16 %18 to i32
150*9880d681SAndroid Build Coastguard Worker  %sub371 = sub nsw i32 %cond.i5.i1496, %conv370
151*9880d681SAndroid Build Coastguard Worker  %idxprom372 = sext i32 %sub371 to i64
152*9880d681SAndroid Build Coastguard Worker  %arrayidx373 = getelementptr inbounds i32, i32* %cond, i64 %idxprom372
153*9880d681SAndroid Build Coastguard Worker  %19 = load i32, i32* %arrayidx373, align 4
154*9880d681SAndroid Build Coastguard Worker  %add374 = add nsw i32 %add360, %19
155*9880d681SAndroid Build Coastguard Worker  %incdec.ptr376 = getelementptr inbounds i16, i16* %refptr.11590, i64 7
156*9880d681SAndroid Build Coastguard Worker  %20 = load i16, i16* %incdec.ptr362, align 2
157*9880d681SAndroid Build Coastguard Worker  %conv377 = zext i16 %20 to i32
158*9880d681SAndroid Build Coastguard Worker  %mul378 = mul nsw i32 %conv377, %2
159*9880d681SAndroid Build Coastguard Worker  %add379 = add nsw i32 %mul378, %3
160*9880d681SAndroid Build Coastguard Worker  %shr380 = ashr i32 %add379, %4
161*9880d681SAndroid Build Coastguard Worker  %add381 = add nsw i32 %shr380, %5
162*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1489 = icmp sgt i32 %add381, 0
163*9880d681SAndroid Build Coastguard Worker  %cond.i.i1490 = select i1 %cmp.i.i1489, i32 %add381, i32 0
164*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1491 = icmp slt i32 %cond.i.i1490, %1
165*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1492 = select i1 %cmp.i4.i1491, i32 %cond.i.i1490, i32 %1
166*9880d681SAndroid Build Coastguard Worker  %incdec.ptr383 = getelementptr inbounds i16, i16* %srcptr.41591, i64 7
167*9880d681SAndroid Build Coastguard Worker  %21 = load i16, i16* %incdec.ptr369, align 2
168*9880d681SAndroid Build Coastguard Worker  %conv384 = zext i16 %21 to i32
169*9880d681SAndroid Build Coastguard Worker  %sub385 = sub nsw i32 %cond.i5.i1492, %conv384
170*9880d681SAndroid Build Coastguard Worker  %idxprom386 = sext i32 %sub385 to i64
171*9880d681SAndroid Build Coastguard Worker  %arrayidx387 = getelementptr inbounds i32, i32* %cond, i64 %idxprom386
172*9880d681SAndroid Build Coastguard Worker  %22 = load i32, i32* %arrayidx387, align 4
173*9880d681SAndroid Build Coastguard Worker  %add388 = add nsw i32 %add374, %22
174*9880d681SAndroid Build Coastguard Worker  %23 = load i16, i16* %incdec.ptr376, align 2
175*9880d681SAndroid Build Coastguard Worker  %conv391 = zext i16 %23 to i32
176*9880d681SAndroid Build Coastguard Worker  %mul392 = mul nsw i32 %conv391, %2
177*9880d681SAndroid Build Coastguard Worker  %add395 = add nsw i32 0, %5
178*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1485 = icmp sgt i32 %add395, 0
179*9880d681SAndroid Build Coastguard Worker  %cond.i.i1486 = select i1 %cmp.i.i1485, i32 %add395, i32 0
180*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1487 = icmp slt i32 %cond.i.i1486, %1
181*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1488 = select i1 %cmp.i4.i1487, i32 %cond.i.i1486, i32 %1
182*9880d681SAndroid Build Coastguard Worker  %incdec.ptr397 = getelementptr inbounds i16, i16* %srcptr.41591, i64 8
183*9880d681SAndroid Build Coastguard Worker  %24 = load i16, i16* %incdec.ptr383, align 2
184*9880d681SAndroid Build Coastguard Worker  %conv398 = zext i16 %24 to i32
185*9880d681SAndroid Build Coastguard Worker  %sub399 = sub nsw i32 %cond.i5.i1488, %conv398
186*9880d681SAndroid Build Coastguard Worker  %idxprom400 = sext i32 %sub399 to i64
187*9880d681SAndroid Build Coastguard Worker  %arrayidx401 = getelementptr inbounds i32, i32* %cond, i64 %idxprom400
188*9880d681SAndroid Build Coastguard Worker  %25 = load i32, i32* %arrayidx401, align 4
189*9880d681SAndroid Build Coastguard Worker  %add402 = add nsw i32 %add388, %25
190*9880d681SAndroid Build Coastguard Worker  %incdec.ptr404 = getelementptr inbounds i16, i16* %refptr.11590, i64 9
191*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1483 = icmp slt i32 undef, %1
192*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1484 = select i1 %cmp.i4.i1483, i32 undef, i32 %1
193*9880d681SAndroid Build Coastguard Worker  %26 = load i16, i16* %incdec.ptr397, align 2
194*9880d681SAndroid Build Coastguard Worker  %conv412 = zext i16 %26 to i32
195*9880d681SAndroid Build Coastguard Worker  %sub413 = sub nsw i32 %cond.i5.i1484, %conv412
196*9880d681SAndroid Build Coastguard Worker  %idxprom414 = sext i32 %sub413 to i64
197*9880d681SAndroid Build Coastguard Worker  %arrayidx415 = getelementptr inbounds i32, i32* %cond, i64 %idxprom414
198*9880d681SAndroid Build Coastguard Worker  %27 = load i32, i32* %arrayidx415, align 4
199*9880d681SAndroid Build Coastguard Worker  %add416 = add nsw i32 %27, %LineSadBlk2.01585
200*9880d681SAndroid Build Coastguard Worker  %incdec.ptr418 = getelementptr inbounds i16, i16* %refptr.11590, i64 10
201*9880d681SAndroid Build Coastguard Worker  %28 = load i16, i16* %incdec.ptr404, align 2
202*9880d681SAndroid Build Coastguard Worker  %conv419 = zext i16 %28 to i32
203*9880d681SAndroid Build Coastguard Worker  %mul420 = mul nsw i32 %conv419, %2
204*9880d681SAndroid Build Coastguard Worker  %add421 = add nsw i32 %mul420, %3
205*9880d681SAndroid Build Coastguard Worker  %shr422 = ashr i32 %add421, %4
206*9880d681SAndroid Build Coastguard Worker  %add423 = add nsw i32 %shr422, %5
207*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1477 = icmp sgt i32 %add423, 0
208*9880d681SAndroid Build Coastguard Worker  %cond.i.i1478 = select i1 %cmp.i.i1477, i32 %add423, i32 0
209*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1479 = icmp slt i32 %cond.i.i1478, %1
210*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1480 = select i1 %cmp.i4.i1479, i32 %cond.i.i1478, i32 %1
211*9880d681SAndroid Build Coastguard Worker  %incdec.ptr425 = getelementptr inbounds i16, i16* %srcptr.41591, i64 10
212*9880d681SAndroid Build Coastguard Worker  %sub427 = sub nsw i32 %cond.i5.i1480, 0
213*9880d681SAndroid Build Coastguard Worker  %idxprom428 = sext i32 %sub427 to i64
214*9880d681SAndroid Build Coastguard Worker  %arrayidx429 = getelementptr inbounds i32, i32* %cond, i64 %idxprom428
215*9880d681SAndroid Build Coastguard Worker  %29 = load i32, i32* %arrayidx429, align 4
216*9880d681SAndroid Build Coastguard Worker  %add430 = add nsw i32 %add416, %29
217*9880d681SAndroid Build Coastguard Worker  %incdec.ptr432 = getelementptr inbounds i16, i16* %refptr.11590, i64 11
218*9880d681SAndroid Build Coastguard Worker  %30 = load i16, i16* %incdec.ptr418, align 2
219*9880d681SAndroid Build Coastguard Worker  %conv433 = zext i16 %30 to i32
220*9880d681SAndroid Build Coastguard Worker  %mul434 = mul nsw i32 %conv433, %2
221*9880d681SAndroid Build Coastguard Worker  %add435 = add nsw i32 %mul434, %3
222*9880d681SAndroid Build Coastguard Worker  %shr436 = ashr i32 %add435, %4
223*9880d681SAndroid Build Coastguard Worker  %add437 = add nsw i32 %shr436, %5
224*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1473 = icmp sgt i32 %add437, 0
225*9880d681SAndroid Build Coastguard Worker  %cond.i.i1474 = select i1 %cmp.i.i1473, i32 %add437, i32 0
226*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1475 = icmp slt i32 %cond.i.i1474, %1
227*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1476 = select i1 %cmp.i4.i1475, i32 %cond.i.i1474, i32 %1
228*9880d681SAndroid Build Coastguard Worker  %31 = load i16, i16* %incdec.ptr425, align 2
229*9880d681SAndroid Build Coastguard Worker  %conv440 = zext i16 %31 to i32
230*9880d681SAndroid Build Coastguard Worker  %sub441 = sub nsw i32 %cond.i5.i1476, %conv440
231*9880d681SAndroid Build Coastguard Worker  %idxprom442 = sext i32 %sub441 to i64
232*9880d681SAndroid Build Coastguard Worker  %arrayidx443 = getelementptr inbounds i32, i32* %cond, i64 %idxprom442
233*9880d681SAndroid Build Coastguard Worker  %32 = load i32, i32* %arrayidx443, align 4
234*9880d681SAndroid Build Coastguard Worker  %add444 = add nsw i32 %add430, %32
235*9880d681SAndroid Build Coastguard Worker  %incdec.ptr446 = getelementptr inbounds i16, i16* %refptr.11590, i64 12
236*9880d681SAndroid Build Coastguard Worker  %33 = load i16, i16* %incdec.ptr432, align 2
237*9880d681SAndroid Build Coastguard Worker  %conv447 = zext i16 %33 to i32
238*9880d681SAndroid Build Coastguard Worker  %mul448 = mul nsw i32 %conv447, %2
239*9880d681SAndroid Build Coastguard Worker  %add449 = add nsw i32 %mul448, %3
240*9880d681SAndroid Build Coastguard Worker  %shr450 = ashr i32 %add449, %4
241*9880d681SAndroid Build Coastguard Worker  %add451 = add nsw i32 %shr450, %5
242*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1469 = icmp sgt i32 %add451, 0
243*9880d681SAndroid Build Coastguard Worker  %cond.i.i1470 = select i1 %cmp.i.i1469, i32 %add451, i32 0
244*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1471 = icmp slt i32 %cond.i.i1470, %1
245*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1472 = select i1 %cmp.i4.i1471, i32 %cond.i.i1470, i32 %1
246*9880d681SAndroid Build Coastguard Worker  %incdec.ptr453 = getelementptr inbounds i16, i16* %srcptr.41591, i64 12
247*9880d681SAndroid Build Coastguard Worker  %34 = load i16, i16* undef, align 2
248*9880d681SAndroid Build Coastguard Worker  %conv454 = zext i16 %34 to i32
249*9880d681SAndroid Build Coastguard Worker  %sub455 = sub nsw i32 %cond.i5.i1472, %conv454
250*9880d681SAndroid Build Coastguard Worker  %idxprom456 = sext i32 %sub455 to i64
251*9880d681SAndroid Build Coastguard Worker  %arrayidx457 = getelementptr inbounds i32, i32* %cond, i64 %idxprom456
252*9880d681SAndroid Build Coastguard Worker  %35 = load i32, i32* %arrayidx457, align 4
253*9880d681SAndroid Build Coastguard Worker  %add458 = add nsw i32 %add444, %35
254*9880d681SAndroid Build Coastguard Worker  %incdec.ptr460 = getelementptr inbounds i16, i16* %refptr.11590, i64 13
255*9880d681SAndroid Build Coastguard Worker  %36 = load i16, i16* %incdec.ptr446, align 2
256*9880d681SAndroid Build Coastguard Worker  %conv461 = zext i16 %36 to i32
257*9880d681SAndroid Build Coastguard Worker  %mul462 = mul nsw i32 %conv461, %2
258*9880d681SAndroid Build Coastguard Worker  %add463 = add nsw i32 %mul462, %3
259*9880d681SAndroid Build Coastguard Worker  %shr464 = ashr i32 %add463, %4
260*9880d681SAndroid Build Coastguard Worker  %add465 = add nsw i32 %shr464, %5
261*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1465 = icmp sgt i32 %add465, 0
262*9880d681SAndroid Build Coastguard Worker  %cond.i.i1466 = select i1 %cmp.i.i1465, i32 %add465, i32 0
263*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1467 = icmp slt i32 %cond.i.i1466, %1
264*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1468 = select i1 %cmp.i4.i1467, i32 %cond.i.i1466, i32 %1
265*9880d681SAndroid Build Coastguard Worker  %incdec.ptr467 = getelementptr inbounds i16, i16* %srcptr.41591, i64 13
266*9880d681SAndroid Build Coastguard Worker  %37 = load i16, i16* %incdec.ptr453, align 2
267*9880d681SAndroid Build Coastguard Worker  %conv468 = zext i16 %37 to i32
268*9880d681SAndroid Build Coastguard Worker  %sub469 = sub nsw i32 %cond.i5.i1468, %conv468
269*9880d681SAndroid Build Coastguard Worker  %idxprom470 = sext i32 %sub469 to i64
270*9880d681SAndroid Build Coastguard Worker  %arrayidx471 = getelementptr inbounds i32, i32* %cond, i64 %idxprom470
271*9880d681SAndroid Build Coastguard Worker  %38 = load i32, i32* %arrayidx471, align 4
272*9880d681SAndroid Build Coastguard Worker  %add472 = add nsw i32 %38, %LineSadBlk3.01586
273*9880d681SAndroid Build Coastguard Worker  %incdec.ptr474 = getelementptr inbounds i16, i16* %refptr.11590, i64 14
274*9880d681SAndroid Build Coastguard Worker  %add477 = add nsw i32 0, %3
275*9880d681SAndroid Build Coastguard Worker  %shr478 = ashr i32 %add477, %4
276*9880d681SAndroid Build Coastguard Worker  %add479 = add nsw i32 %shr478, %5
277*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1461 = icmp sgt i32 %add479, 0
278*9880d681SAndroid Build Coastguard Worker  %cond.i.i1462 = select i1 %cmp.i.i1461, i32 %add479, i32 0
279*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1463 = icmp slt i32 %cond.i.i1462, %1
280*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1464 = select i1 %cmp.i4.i1463, i32 %cond.i.i1462, i32 %1
281*9880d681SAndroid Build Coastguard Worker  %incdec.ptr481 = getelementptr inbounds i16, i16* %srcptr.41591, i64 14
282*9880d681SAndroid Build Coastguard Worker  %39 = load i16, i16* %incdec.ptr467, align 2
283*9880d681SAndroid Build Coastguard Worker  %conv482 = zext i16 %39 to i32
284*9880d681SAndroid Build Coastguard Worker  %sub483 = sub nsw i32 %cond.i5.i1464, %conv482
285*9880d681SAndroid Build Coastguard Worker  %idxprom484 = sext i32 %sub483 to i64
286*9880d681SAndroid Build Coastguard Worker  %arrayidx485 = getelementptr inbounds i32, i32* %cond, i64 %idxprom484
287*9880d681SAndroid Build Coastguard Worker  %40 = load i32, i32* %arrayidx485, align 4
288*9880d681SAndroid Build Coastguard Worker  %add486 = add nsw i32 %add472, %40
289*9880d681SAndroid Build Coastguard Worker  %incdec.ptr488 = getelementptr inbounds i16, i16* %refptr.11590, i64 15
290*9880d681SAndroid Build Coastguard Worker  %41 = load i16, i16* %incdec.ptr474, align 2
291*9880d681SAndroid Build Coastguard Worker  %conv489 = zext i16 %41 to i32
292*9880d681SAndroid Build Coastguard Worker  %mul490 = mul nsw i32 %conv489, %2
293*9880d681SAndroid Build Coastguard Worker  %add491 = add nsw i32 %mul490, %3
294*9880d681SAndroid Build Coastguard Worker  %shr492 = ashr i32 %add491, %4
295*9880d681SAndroid Build Coastguard Worker  %add493 = add nsw i32 %shr492, %5
296*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1457 = icmp sgt i32 %add493, 0
297*9880d681SAndroid Build Coastguard Worker  %cond.i.i1458 = select i1 %cmp.i.i1457, i32 %add493, i32 0
298*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1459 = icmp slt i32 %cond.i.i1458, %1
299*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1460 = select i1 %cmp.i4.i1459, i32 %cond.i.i1458, i32 %1
300*9880d681SAndroid Build Coastguard Worker  %incdec.ptr495 = getelementptr inbounds i16, i16* %srcptr.41591, i64 15
301*9880d681SAndroid Build Coastguard Worker  %42 = load i16, i16* %incdec.ptr481, align 2
302*9880d681SAndroid Build Coastguard Worker  %conv496 = zext i16 %42 to i32
303*9880d681SAndroid Build Coastguard Worker  %sub497 = sub nsw i32 %cond.i5.i1460, %conv496
304*9880d681SAndroid Build Coastguard Worker  %idxprom498 = sext i32 %sub497 to i64
305*9880d681SAndroid Build Coastguard Worker  %arrayidx499 = getelementptr inbounds i32, i32* %cond, i64 %idxprom498
306*9880d681SAndroid Build Coastguard Worker  %43 = load i32, i32* %arrayidx499, align 4
307*9880d681SAndroid Build Coastguard Worker  %add500 = add nsw i32 %add486, %43
308*9880d681SAndroid Build Coastguard Worker  %44 = load i16, i16* %incdec.ptr488, align 2
309*9880d681SAndroid Build Coastguard Worker  %conv503 = zext i16 %44 to i32
310*9880d681SAndroid Build Coastguard Worker  %mul504 = mul nsw i32 %conv503, %2
311*9880d681SAndroid Build Coastguard Worker  %add505 = add nsw i32 %mul504, %3
312*9880d681SAndroid Build Coastguard Worker  %shr506 = ashr i32 %add505, %4
313*9880d681SAndroid Build Coastguard Worker  %add507 = add nsw i32 %shr506, %5
314*9880d681SAndroid Build Coastguard Worker  %cmp.i.i1453 = icmp sgt i32 %add507, 0
315*9880d681SAndroid Build Coastguard Worker  %cond.i.i1454 = select i1 %cmp.i.i1453, i32 %add507, i32 0
316*9880d681SAndroid Build Coastguard Worker  %cmp.i4.i1455 = icmp slt i32 %cond.i.i1454, %1
317*9880d681SAndroid Build Coastguard Worker  %cond.i5.i1456 = select i1 %cmp.i4.i1455, i32 %cond.i.i1454, i32 %1
318*9880d681SAndroid Build Coastguard Worker  %45 = load i16, i16* %incdec.ptr495, align 2
319*9880d681SAndroid Build Coastguard Worker  %conv510 = zext i16 %45 to i32
320*9880d681SAndroid Build Coastguard Worker  %sub511 = sub nsw i32 %cond.i5.i1456, %conv510
321*9880d681SAndroid Build Coastguard Worker  %idxprom512 = sext i32 %sub511 to i64
322*9880d681SAndroid Build Coastguard Worker  %arrayidx513 = getelementptr inbounds i32, i32* %cond, i64 %idxprom512
323*9880d681SAndroid Build Coastguard Worker  %46 = load i32, i32* %arrayidx513, align 4
324*9880d681SAndroid Build Coastguard Worker  %add514 = add nsw i32 %add500, %46
325*9880d681SAndroid Build Coastguard Worker  %add.ptr517 = getelementptr inbounds i16, i16* %refptr.11590, i64 %incdec.ptr502.sum
326*9880d681SAndroid Build Coastguard Worker  %exitcond1692 = icmp eq i32 undef, 4
327*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond1692, label %for.end520, label %for.body293
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Workerfor.end520:                                       ; preds = %for.body293
330*9880d681SAndroid Build Coastguard Worker  store i32 %add346, i32* undef, align 4
331*9880d681SAndroid Build Coastguard Worker  store i32 %add402, i32* undef, align 4
332*9880d681SAndroid Build Coastguard Worker  store i32 %add458, i32* undef, align 4
333*9880d681SAndroid Build Coastguard Worker  store i32 %add514, i32* null, align 4
334*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.end543, label %for.cond290.preheader
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard Workerfor.end543:                                       ; preds = %for.end520
337*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.inc997, label %for.body549
338*9880d681SAndroid Build Coastguard Worker
339*9880d681SAndroid Build Coastguard Workerfor.body549:                                      ; preds = %for.inc701, %for.end543
340*9880d681SAndroid Build Coastguard Worker  %call554 = call i16* null(i16**** null, i32 signext undef, i32 signext %shl263) #1
341*9880d681SAndroid Build Coastguard Worker  br label %for.cond559.preheader
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Workerfor.cond559.preheader:                            ; preds = %for.cond559.preheader, %for.body549
344*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.inc701, label %for.cond559.preheader
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Workerfor.inc701:                                       ; preds = %for.cond559.preheader
347*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.inc997, label %for.body549
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Workerfor.cond713.preheader:                            ; preds = %for.end850, %for.body252
350*9880d681SAndroid Build Coastguard Worker  br label %for.body716
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerfor.body716:                                      ; preds = %for.body716, %for.cond713.preheader
353*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.end850, label %for.body716
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerfor.end850:                                       ; preds = %for.body716
356*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.end873, label %for.cond713.preheader
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Workerfor.end873:                                       ; preds = %for.end850
359*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.inc997, label %for.body879
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Workerfor.body879:                                      ; preds = %for.inc992, %for.end873
362*9880d681SAndroid Build Coastguard Worker  br label %for.cond889.preheader
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerfor.cond889.preheader:                            ; preds = %for.end964, %for.body879
365*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.cond894.preheader.lr.ph, label %for.end964
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Workerfor.cond894.preheader.lr.ph:                      ; preds = %for.cond889.preheader
368*9880d681SAndroid Build Coastguard Worker  br label %for.body898.lr.ph.us
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Workerfor.end957.us:                                    ; preds = %for.body946.us
371*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.body898.lr.ph.us, label %for.end964
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Workerfor.body946.us:                                   ; preds = %for.body930.us, %for.body946.us
374*9880d681SAndroid Build Coastguard Worker  br i1 false, label %for.body946.us, label %for.end957.us
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard Workerfor.body930.us:                                   ; preds = %for.body914.us, %for.body930.us
377*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.body930.us, label %for.body946.us
378*9880d681SAndroid Build Coastguard Worker
379*9880d681SAndroid Build Coastguard Workerfor.body914.us:                                   ; preds = %for.body898.us, %for.body914.us
380*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.body914.us, label %for.body930.us
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Workerfor.body898.us:                                   ; preds = %for.body898.lr.ph.us, %for.body898.us
383*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.body898.us, label %for.body914.us
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Workerfor.body898.lr.ph.us:                             ; preds = %for.end957.us, %for.cond894.preheader.lr.ph
386*9880d681SAndroid Build Coastguard Worker  br label %for.body898.us
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Workerfor.end964:                                       ; preds = %for.end957.us, %for.cond889.preheader
389*9880d681SAndroid Build Coastguard Worker  %inc990 = add nsw i32 undef, 1
390*9880d681SAndroid Build Coastguard Worker  br i1 false, label %for.inc992, label %for.cond889.preheader
391*9880d681SAndroid Build Coastguard Worker
392*9880d681SAndroid Build Coastguard Workerfor.inc992:                                       ; preds = %for.end964
393*9880d681SAndroid Build Coastguard Worker  br i1 false, label %for.inc997, label %for.body879
394*9880d681SAndroid Build Coastguard Worker
395*9880d681SAndroid Build Coastguard Workerfor.inc997:                                       ; preds = %for.inc992, %for.end873, %for.inc701, %for.end543
396*9880d681SAndroid Build Coastguard Worker  %cmp250 = icmp slt i32 undef, %mul10
397*9880d681SAndroid Build Coastguard Worker  br i1 %cmp250, label %for.body252, label %for.end999
398*9880d681SAndroid Build Coastguard Worker
399*9880d681SAndroid Build Coastguard Workerfor.end999:                                       ; preds = %for.inc997
400*9880d681SAndroid Build Coastguard Worker  ret void
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
404*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind }
405