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