1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=thumbv6-apple-darwin10 | grep rsbs | grep "#0" 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 } 4*9880d681SAndroid Build Coastguard Worker %struct.__sFILEX = type opaque 5*9880d681SAndroid Build Coastguard Worker %struct.__sbuf = type { i8*, i32 } 6*9880d681SAndroid Build Coastguard Worker %struct.adpcm_state = type { i16, i8 } 7*9880d681SAndroid Build Coastguard Worker@stepsizeTable = internal constant [89 x i32] [i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 16, i32 17, i32 19, i32 21, i32 23, i32 25, i32 28, i32 31, i32 34, i32 37, i32 41, i32 45, i32 50, i32 55, i32 60, i32 66, i32 73, i32 80, i32 88, i32 97, i32 107, i32 118, i32 130, i32 143, i32 157, i32 173, i32 190, i32 209, i32 230, i32 253, i32 279, i32 307, i32 337, i32 371, i32 408, i32 449, i32 494, i32 544, i32 598, i32 658, i32 724, i32 796, i32 876, i32 963, i32 1060, i32 1166, i32 1282, i32 1411, i32 1552, i32 1707, i32 1878, i32 2066, i32 2272, i32 2499, i32 2749, i32 3024, i32 3327, i32 3660, i32 4026, i32 4428, i32 4871, i32 5358, i32 5894, i32 6484, i32 7132, i32 7845, i32 8630, i32 9493, i32 10442, i32 11487, i32 12635, i32 13899, i32 15289, i32 16818, i32 18500, i32 20350, i32 22385, i32 24623, i32 27086, i32 29794, i32 32767] ; <[89 x i32]*> [#uses=4] 8*9880d681SAndroid Build Coastguard Worker@indexTable = internal constant [16 x i32] [i32 -1, i32 -1, i32 -1, i32 -1, i32 2, i32 4, i32 6, i32 8, i32 -1, i32 -1, i32 -1, i32 -1, i32 2, i32 4, i32 6, i32 8] ; <[16 x i32]*> [#uses=2] 9*9880d681SAndroid Build Coastguard Worker@abuf = common global [500 x i8] zeroinitializer ; <[500 x i8]*> [#uses=1] 10*9880d681SAndroid Build Coastguard Worker@.str = private constant [11 x i8] c"input file\00", section "__TEXT,__cstring,cstring_literals", align 1 ; <[11 x i8]*> [#uses=1] 11*9880d681SAndroid Build Coastguard Worker@sbuf = common global [1000 x i16] zeroinitializer ; <[1000 x i16]*> [#uses=1] 12*9880d681SAndroid Build Coastguard Worker@state = common global %struct.adpcm_state zeroinitializer ; <%struct.adpcm_state*> [#uses=3] 13*9880d681SAndroid Build Coastguard Worker@__stderrp = external global %struct.FILE* ; <%struct.FILE**> [#uses=1] 14*9880d681SAndroid Build Coastguard Worker@.str1 = private constant [28 x i8] c"Final valprev=%d, index=%d\0A\00", section "__TEXT,__cstring,cstring_literals", align 1 ; <[28 x i8]*> [#uses=1] 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine void @adpcm_coder(i16* nocapture %indata, i8* nocapture %outdata, i32 %len, %struct.adpcm_state* nocapture %state) nounwind { 17*9880d681SAndroid Build Coastguard Workerentry: 18*9880d681SAndroid Build Coastguard Worker %0 = getelementptr %struct.adpcm_state, %struct.adpcm_state* %state, i32 0, i32 0 ; <i16*> [#uses=2] 19*9880d681SAndroid Build Coastguard Worker %1 = load i16, i16* %0, align 2 ; <i16> [#uses=1] 20*9880d681SAndroid Build Coastguard Worker %2 = sext i16 %1 to i32 ; <i32> [#uses=2] 21*9880d681SAndroid Build Coastguard Worker %3 = getelementptr %struct.adpcm_state, %struct.adpcm_state* %state, i32 0, i32 1 ; <i8*> [#uses=2] 22*9880d681SAndroid Build Coastguard Worker %4 = load i8, i8* %3, align 2 ; <i8> [#uses=1] 23*9880d681SAndroid Build Coastguard Worker %5 = sext i8 %4 to i32 ; <i32> [#uses=3] 24*9880d681SAndroid Build Coastguard Worker %6 = getelementptr [89 x i32], [89 x i32]* @stepsizeTable, i32 0, i32 %5 ; <i32*> [#uses=1] 25*9880d681SAndroid Build Coastguard Worker %7 = load i32, i32* %6, align 4 ; <i32> [#uses=1] 26*9880d681SAndroid Build Coastguard Worker %8 = icmp sgt i32 %len, 0 ; <i1> [#uses=1] 27*9880d681SAndroid Build Coastguard Worker br i1 %8, label %bb, label %bb27 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerbb: ; preds = %bb25, %entry 30*9880d681SAndroid Build Coastguard Worker %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb25 ] ; <i32> [#uses=2] 31*9880d681SAndroid Build Coastguard Worker %outp.136 = phi i8* [ %outdata, %entry ], [ %outp.0, %bb25 ] ; <i8*> [#uses=3] 32*9880d681SAndroid Build Coastguard Worker %bufferstep.035 = phi i32 [ 1, %entry ], [ %tmp, %bb25 ] ; <i32> [#uses=3] 33*9880d681SAndroid Build Coastguard Worker %outputbuffer.134 = phi i32 [ undef, %entry ], [ %outputbuffer.0, %bb25 ] ; <i32> [#uses=2] 34*9880d681SAndroid Build Coastguard Worker %index.033 = phi i32 [ %5, %entry ], [ %index.2, %bb25 ] ; <i32> [#uses=1] 35*9880d681SAndroid Build Coastguard Worker %valpred.132 = phi i32 [ %2, %entry ], [ %valpred.2, %bb25 ] ; <i32> [#uses=2] 36*9880d681SAndroid Build Coastguard Worker %step.031 = phi i32 [ %7, %entry ], [ %36, %bb25 ] ; <i32> [#uses=5] 37*9880d681SAndroid Build Coastguard Worker %inp.038 = getelementptr i16, i16* %indata, i32 %indvar ; <i16*> [#uses=1] 38*9880d681SAndroid Build Coastguard Worker %9 = load i16, i16* %inp.038, align 2 ; <i16> [#uses=1] 39*9880d681SAndroid Build Coastguard Worker %10 = sext i16 %9 to i32 ; <i32> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker %11 = sub i32 %10, %valpred.132 ; <i32> [#uses=3] 41*9880d681SAndroid Build Coastguard Worker %12 = icmp slt i32 %11, 0 ; <i1> [#uses=1] 42*9880d681SAndroid Build Coastguard Worker %iftmp.1.0 = select i1 %12, i32 8, i32 0 ; <i32> [#uses=2] 43*9880d681SAndroid Build Coastguard Worker %13 = sub i32 0, %11 ; <i32> [#uses=1] 44*9880d681SAndroid Build Coastguard Worker %14 = icmp eq i32 %iftmp.1.0, 0 ; <i1> [#uses=2] 45*9880d681SAndroid Build Coastguard Worker %. = select i1 %14, i32 %11, i32 %13 ; <i32> [#uses=2] 46*9880d681SAndroid Build Coastguard Worker %15 = ashr i32 %step.031, 3 ; <i32> [#uses=1] 47*9880d681SAndroid Build Coastguard Worker %16 = icmp slt i32 %., %step.031 ; <i1> [#uses=2] 48*9880d681SAndroid Build Coastguard Worker %delta.0 = select i1 %16, i32 0, i32 4 ; <i32> [#uses=2] 49*9880d681SAndroid Build Coastguard Worker %17 = select i1 %16, i32 0, i32 %step.031 ; <i32> [#uses=2] 50*9880d681SAndroid Build Coastguard Worker %diff.1 = sub i32 %., %17 ; <i32> [#uses=2] 51*9880d681SAndroid Build Coastguard Worker %18 = ashr i32 %step.031, 1 ; <i32> [#uses=2] 52*9880d681SAndroid Build Coastguard Worker %19 = icmp slt i32 %diff.1, %18 ; <i1> [#uses=2] 53*9880d681SAndroid Build Coastguard Worker %20 = or i32 %delta.0, 2 ; <i32> [#uses=1] 54*9880d681SAndroid Build Coastguard Worker %21 = select i1 %19, i32 %delta.0, i32 %20 ; <i32> [#uses=1] 55*9880d681SAndroid Build Coastguard Worker %22 = select i1 %19, i32 0, i32 %18 ; <i32> [#uses=2] 56*9880d681SAndroid Build Coastguard Worker %diff.2 = sub i32 %diff.1, %22 ; <i32> [#uses=1] 57*9880d681SAndroid Build Coastguard Worker %23 = ashr i32 %step.031, 2 ; <i32> [#uses=2] 58*9880d681SAndroid Build Coastguard Worker %24 = icmp slt i32 %diff.2, %23 ; <i1> [#uses=2] 59*9880d681SAndroid Build Coastguard Worker %25 = zext i1 %24 to i32 ; <i32> [#uses=1] 60*9880d681SAndroid Build Coastguard Worker %26 = select i1 %24, i32 0, i32 %23 ; <i32> [#uses=1] 61*9880d681SAndroid Build Coastguard Worker %vpdiff.0 = add i32 %17, %15 ; <i32> [#uses=1] 62*9880d681SAndroid Build Coastguard Worker %vpdiff.1 = add i32 %vpdiff.0, %22 ; <i32> [#uses=1] 63*9880d681SAndroid Build Coastguard Worker %vpdiff.2 = add i32 %vpdiff.1, %26 ; <i32> [#uses=2] 64*9880d681SAndroid Build Coastguard Worker %tmp30 = sub i32 0, %vpdiff.2 ; <i32> [#uses=1] 65*9880d681SAndroid Build Coastguard Worker %valpred.0.p = select i1 %14, i32 %vpdiff.2, i32 %tmp30 ; <i32> [#uses=1] 66*9880d681SAndroid Build Coastguard Worker %valpred.0 = add i32 %valpred.0.p, %valpred.132 ; <i32> [#uses=3] 67*9880d681SAndroid Build Coastguard Worker %27 = icmp sgt i32 %valpred.0, 32767 ; <i1> [#uses=1] 68*9880d681SAndroid Build Coastguard Worker br i1 %27, label %bb18, label %bb16 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerbb16: ; preds = %bb 71*9880d681SAndroid Build Coastguard Worker %28 = icmp slt i32 %valpred.0, -32768 ; <i1> [#uses=1] 72*9880d681SAndroid Build Coastguard Worker br i1 %28, label %bb17, label %bb18 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerbb17: ; preds = %bb16 75*9880d681SAndroid Build Coastguard Worker br label %bb18 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerbb18: ; preds = %bb17, %bb16, %bb 78*9880d681SAndroid Build Coastguard Worker %valpred.2 = phi i32 [ -32768, %bb17 ], [ 32767, %bb ], [ %valpred.0, %bb16 ] ; <i32> [#uses=2] 79*9880d681SAndroid Build Coastguard Worker %delta.1 = or i32 %21, %iftmp.1.0 ; <i32> [#uses=1] 80*9880d681SAndroid Build Coastguard Worker %delta.2 = or i32 %delta.1, %25 ; <i32> [#uses=1] 81*9880d681SAndroid Build Coastguard Worker %29 = xor i32 %delta.2, 1 ; <i32> [#uses=3] 82*9880d681SAndroid Build Coastguard Worker %30 = getelementptr [16 x i32], [16 x i32]* @indexTable, i32 0, i32 %29 ; <i32*> [#uses=1] 83*9880d681SAndroid Build Coastguard Worker %31 = load i32, i32* %30, align 4 ; <i32> [#uses=1] 84*9880d681SAndroid Build Coastguard Worker %32 = add i32 %31, %index.033 ; <i32> [#uses=2] 85*9880d681SAndroid Build Coastguard Worker %33 = icmp slt i32 %32, 0 ; <i1> [#uses=1] 86*9880d681SAndroid Build Coastguard Worker %index.1 = select i1 %33, i32 0, i32 %32 ; <i32> [#uses=2] 87*9880d681SAndroid Build Coastguard Worker %34 = icmp sgt i32 %index.1, 88 ; <i1> [#uses=1] 88*9880d681SAndroid Build Coastguard Worker %index.2 = select i1 %34, i32 88, i32 %index.1 ; <i32> [#uses=3] 89*9880d681SAndroid Build Coastguard Worker %35 = getelementptr [89 x i32], [89 x i32]* @stepsizeTable, i32 0, i32 %index.2 ; <i32*> [#uses=1] 90*9880d681SAndroid Build Coastguard Worker %36 = load i32, i32* %35, align 4 ; <i32> [#uses=1] 91*9880d681SAndroid Build Coastguard Worker %37 = icmp eq i32 %bufferstep.035, 0 ; <i1> [#uses=1] 92*9880d681SAndroid Build Coastguard Worker br i1 %37, label %bb24, label %bb23 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerbb23: ; preds = %bb18 95*9880d681SAndroid Build Coastguard Worker %38 = shl i32 %29, 4 ; <i32> [#uses=1] 96*9880d681SAndroid Build Coastguard Worker %39 = and i32 %38, 240 ; <i32> [#uses=1] 97*9880d681SAndroid Build Coastguard Worker br label %bb25 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Workerbb24: ; preds = %bb18 100*9880d681SAndroid Build Coastguard Worker %40 = trunc i32 %29 to i8 ; <i8> [#uses=1] 101*9880d681SAndroid Build Coastguard Worker %41 = and i8 %40, 15 ; <i8> [#uses=1] 102*9880d681SAndroid Build Coastguard Worker %42 = trunc i32 %outputbuffer.134 to i8 ; <i8> [#uses=1] 103*9880d681SAndroid Build Coastguard Worker %43 = or i8 %41, %42 ; <i8> [#uses=1] 104*9880d681SAndroid Build Coastguard Worker store i8 %43, i8* %outp.136, align 1 105*9880d681SAndroid Build Coastguard Worker %44 = getelementptr i8, i8* %outp.136, i32 1 ; <i8*> [#uses=1] 106*9880d681SAndroid Build Coastguard Worker br label %bb25 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workerbb25: ; preds = %bb24, %bb23 109*9880d681SAndroid Build Coastguard Worker %outputbuffer.0 = phi i32 [ %39, %bb23 ], [ %outputbuffer.134, %bb24 ] ; <i32> [#uses=2] 110*9880d681SAndroid Build Coastguard Worker %outp.0 = phi i8* [ %outp.136, %bb23 ], [ %44, %bb24 ] ; <i8*> [#uses=2] 111*9880d681SAndroid Build Coastguard Worker %tmp = xor i32 %bufferstep.035, 1 ; <i32> [#uses=1] 112*9880d681SAndroid Build Coastguard Worker %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2] 113*9880d681SAndroid Build Coastguard Worker %exitcond = icmp eq i32 %indvar.next, %len ; <i1> [#uses=1] 114*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %bb26.bb27_crit_edge, label %bb 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerbb26.bb27_crit_edge: ; preds = %bb25 117*9880d681SAndroid Build Coastguard Worker %phitmp44 = icmp eq i32 %bufferstep.035, 1 ; <i1> [#uses=1] 118*9880d681SAndroid Build Coastguard Worker br label %bb27 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerbb27: ; preds = %bb26.bb27_crit_edge, %entry 121*9880d681SAndroid Build Coastguard Worker %outp.1.lcssa = phi i8* [ %outp.0, %bb26.bb27_crit_edge ], [ %outdata, %entry ] ; <i8*> [#uses=1] 122*9880d681SAndroid Build Coastguard Worker %bufferstep.0.lcssa = phi i1 [ %phitmp44, %bb26.bb27_crit_edge ], [ false, %entry ] ; <i1> [#uses=1] 123*9880d681SAndroid Build Coastguard Worker %outputbuffer.1.lcssa = phi i32 [ %outputbuffer.0, %bb26.bb27_crit_edge ], [ undef, %entry ] ; <i32> [#uses=1] 124*9880d681SAndroid Build Coastguard Worker %index.0.lcssa = phi i32 [ %index.2, %bb26.bb27_crit_edge ], [ %5, %entry ] ; <i32> [#uses=1] 125*9880d681SAndroid Build Coastguard Worker %valpred.1.lcssa = phi i32 [ %valpred.2, %bb26.bb27_crit_edge ], [ %2, %entry ] ; <i32> [#uses=1] 126*9880d681SAndroid Build Coastguard Worker br i1 %bufferstep.0.lcssa, label %bb28, label %bb29 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Workerbb28: ; preds = %bb27 129*9880d681SAndroid Build Coastguard Worker %45 = trunc i32 %outputbuffer.1.lcssa to i8 ; <i8> [#uses=1] 130*9880d681SAndroid Build Coastguard Worker store i8 %45, i8* %outp.1.lcssa, align 1 131*9880d681SAndroid Build Coastguard Worker br label %bb29 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerbb29: ; preds = %bb28, %bb27 134*9880d681SAndroid Build Coastguard Worker %46 = trunc i32 %valpred.1.lcssa to i16 ; <i16> [#uses=1] 135*9880d681SAndroid Build Coastguard Worker store i16 %46, i16* %0, align 2 136*9880d681SAndroid Build Coastguard Worker %47 = trunc i32 %index.0.lcssa to i8 ; <i8> [#uses=1] 137*9880d681SAndroid Build Coastguard Worker store i8 %47, i8* %3, align 2 138*9880d681SAndroid Build Coastguard Worker ret void 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Workerdefine void @adpcm_decoder(i8* nocapture %indata, i16* nocapture %outdata, i32 %len, %struct.adpcm_state* nocapture %state) nounwind { 142*9880d681SAndroid Build Coastguard Workerentry: 143*9880d681SAndroid Build Coastguard Worker %0 = getelementptr %struct.adpcm_state, %struct.adpcm_state* %state, i32 0, i32 0 ; <i16*> [#uses=2] 144*9880d681SAndroid Build Coastguard Worker %1 = load i16, i16* %0, align 2 ; <i16> [#uses=1] 145*9880d681SAndroid Build Coastguard Worker %2 = sext i16 %1 to i32 ; <i32> [#uses=2] 146*9880d681SAndroid Build Coastguard Worker %3 = getelementptr %struct.adpcm_state, %struct.adpcm_state* %state, i32 0, i32 1 ; <i8*> [#uses=2] 147*9880d681SAndroid Build Coastguard Worker %4 = load i8, i8* %3, align 2 ; <i8> [#uses=1] 148*9880d681SAndroid Build Coastguard Worker %5 = sext i8 %4 to i32 ; <i32> [#uses=3] 149*9880d681SAndroid Build Coastguard Worker %6 = getelementptr [89 x i32], [89 x i32]* @stepsizeTable, i32 0, i32 %5 ; <i32*> [#uses=1] 150*9880d681SAndroid Build Coastguard Worker %7 = load i32, i32* %6, align 4 ; <i32> [#uses=1] 151*9880d681SAndroid Build Coastguard Worker %8 = icmp sgt i32 %len, 0 ; <i1> [#uses=1] 152*9880d681SAndroid Build Coastguard Worker br i1 %8, label %bb, label %bb22 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerbb: ; preds = %bb20, %entry 155*9880d681SAndroid Build Coastguard Worker %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb20 ] ; <i32> [#uses=2] 156*9880d681SAndroid Build Coastguard Worker %inp.131 = phi i8* [ %indata, %entry ], [ %inp.0, %bb20 ] ; <i8*> [#uses=3] 157*9880d681SAndroid Build Coastguard Worker %bufferstep.028 = phi i32 [ 0, %entry ], [ %tmp, %bb20 ] ; <i32> [#uses=2] 158*9880d681SAndroid Build Coastguard Worker %inputbuffer.127 = phi i32 [ undef, %entry ], [ %inputbuffer.0, %bb20 ] ; <i32> [#uses=2] 159*9880d681SAndroid Build Coastguard Worker %index.026 = phi i32 [ %5, %entry ], [ %index.2, %bb20 ] ; <i32> [#uses=1] 160*9880d681SAndroid Build Coastguard Worker %valpred.125 = phi i32 [ %2, %entry ], [ %valpred.2, %bb20 ] ; <i32> [#uses=1] 161*9880d681SAndroid Build Coastguard Worker %step.024 = phi i32 [ %7, %entry ], [ %35, %bb20 ] ; <i32> [#uses=4] 162*9880d681SAndroid Build Coastguard Worker %outp.030 = getelementptr i16, i16* %outdata, i32 %indvar ; <i16*> [#uses=1] 163*9880d681SAndroid Build Coastguard Worker %9 = icmp eq i32 %bufferstep.028, 0 ; <i1> [#uses=1] 164*9880d681SAndroid Build Coastguard Worker br i1 %9, label %bb2, label %bb3 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb 167*9880d681SAndroid Build Coastguard Worker %10 = load i8, i8* %inp.131, align 1 ; <i8> [#uses=1] 168*9880d681SAndroid Build Coastguard Worker %11 = sext i8 %10 to i32 ; <i32> [#uses=2] 169*9880d681SAndroid Build Coastguard Worker %12 = getelementptr i8, i8* %inp.131, i32 1 ; <i8*> [#uses=1] 170*9880d681SAndroid Build Coastguard Worker %13 = ashr i32 %11, 4 ; <i32> [#uses=1] 171*9880d681SAndroid Build Coastguard Worker br label %bb3 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerbb3: ; preds = %bb2, %bb 174*9880d681SAndroid Build Coastguard Worker %inputbuffer.0 = phi i32 [ %11, %bb2 ], [ %inputbuffer.127, %bb ] ; <i32> [#uses=1] 175*9880d681SAndroid Build Coastguard Worker %delta.0.in = phi i32 [ %13, %bb2 ], [ %inputbuffer.127, %bb ] ; <i32> [#uses=5] 176*9880d681SAndroid Build Coastguard Worker %inp.0 = phi i8* [ %12, %bb2 ], [ %inp.131, %bb ] ; <i8*> [#uses=1] 177*9880d681SAndroid Build Coastguard Worker %delta.0 = and i32 %delta.0.in, 15 ; <i32> [#uses=1] 178*9880d681SAndroid Build Coastguard Worker %tmp = xor i32 %bufferstep.028, 1 ; <i32> [#uses=1] 179*9880d681SAndroid Build Coastguard Worker %14 = getelementptr [16 x i32], [16 x i32]* @indexTable, i32 0, i32 %delta.0 ; <i32*> [#uses=1] 180*9880d681SAndroid Build Coastguard Worker %15 = load i32, i32* %14, align 4 ; <i32> [#uses=1] 181*9880d681SAndroid Build Coastguard Worker %16 = add i32 %15, %index.026 ; <i32> [#uses=2] 182*9880d681SAndroid Build Coastguard Worker %17 = icmp slt i32 %16, 0 ; <i1> [#uses=1] 183*9880d681SAndroid Build Coastguard Worker %index.1 = select i1 %17, i32 0, i32 %16 ; <i32> [#uses=2] 184*9880d681SAndroid Build Coastguard Worker %18 = icmp sgt i32 %index.1, 88 ; <i1> [#uses=1] 185*9880d681SAndroid Build Coastguard Worker %index.2 = select i1 %18, i32 88, i32 %index.1 ; <i32> [#uses=3] 186*9880d681SAndroid Build Coastguard Worker %19 = and i32 %delta.0.in, 8 ; <i32> [#uses=1] 187*9880d681SAndroid Build Coastguard Worker %20 = ashr i32 %step.024, 3 ; <i32> [#uses=1] 188*9880d681SAndroid Build Coastguard Worker %21 = and i32 %delta.0.in, 4 ; <i32> [#uses=1] 189*9880d681SAndroid Build Coastguard Worker %22 = icmp eq i32 %21, 0 ; <i1> [#uses=1] 190*9880d681SAndroid Build Coastguard Worker %23 = select i1 %22, i32 0, i32 %step.024 ; <i32> [#uses=1] 191*9880d681SAndroid Build Coastguard Worker %vpdiff.0 = add i32 %23, %20 ; <i32> [#uses=2] 192*9880d681SAndroid Build Coastguard Worker %24 = and i32 %delta.0.in, 2 ; <i32> [#uses=1] 193*9880d681SAndroid Build Coastguard Worker %25 = icmp eq i32 %24, 0 ; <i1> [#uses=1] 194*9880d681SAndroid Build Coastguard Worker br i1 %25, label %bb11, label %bb10 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Workerbb10: ; preds = %bb3 197*9880d681SAndroid Build Coastguard Worker %26 = ashr i32 %step.024, 1 ; <i32> [#uses=1] 198*9880d681SAndroid Build Coastguard Worker %27 = add i32 %vpdiff.0, %26 ; <i32> [#uses=1] 199*9880d681SAndroid Build Coastguard Worker br label %bb11 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Workerbb11: ; preds = %bb10, %bb3 202*9880d681SAndroid Build Coastguard Worker %vpdiff.1 = phi i32 [ %27, %bb10 ], [ %vpdiff.0, %bb3 ] ; <i32> [#uses=2] 203*9880d681SAndroid Build Coastguard Worker %28 = and i32 %delta.0.in, 1 ; <i32> [#uses=1] 204*9880d681SAndroid Build Coastguard Worker %toBool = icmp eq i32 %28, 0 ; <i1> [#uses=1] 205*9880d681SAndroid Build Coastguard Worker br i1 %toBool, label %bb13, label %bb12 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerbb12: ; preds = %bb11 208*9880d681SAndroid Build Coastguard Worker %29 = ashr i32 %step.024, 2 ; <i32> [#uses=1] 209*9880d681SAndroid Build Coastguard Worker %30 = add i32 %vpdiff.1, %29 ; <i32> [#uses=1] 210*9880d681SAndroid Build Coastguard Worker br label %bb13 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Workerbb13: ; preds = %bb12, %bb11 213*9880d681SAndroid Build Coastguard Worker %vpdiff.2 = phi i32 [ %30, %bb12 ], [ %vpdiff.1, %bb11 ] ; <i32> [#uses=2] 214*9880d681SAndroid Build Coastguard Worker %31 = icmp eq i32 %19, 0 ; <i1> [#uses=1] 215*9880d681SAndroid Build Coastguard Worker %tmp23 = sub i32 0, %vpdiff.2 ; <i32> [#uses=1] 216*9880d681SAndroid Build Coastguard Worker %valpred.0.p = select i1 %31, i32 %vpdiff.2, i32 %tmp23 ; <i32> [#uses=1] 217*9880d681SAndroid Build Coastguard Worker %valpred.0 = add i32 %valpred.0.p, %valpred.125 ; <i32> [#uses=3] 218*9880d681SAndroid Build Coastguard Worker %32 = icmp sgt i32 %valpred.0, 32767 ; <i1> [#uses=1] 219*9880d681SAndroid Build Coastguard Worker br i1 %32, label %bb20, label %bb18 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Workerbb18: ; preds = %bb13 222*9880d681SAndroid Build Coastguard Worker %33 = icmp slt i32 %valpred.0, -32768 ; <i1> [#uses=1] 223*9880d681SAndroid Build Coastguard Worker br i1 %33, label %bb19, label %bb20 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Workerbb19: ; preds = %bb18 226*9880d681SAndroid Build Coastguard Worker br label %bb20 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerbb20: ; preds = %bb19, %bb18, %bb13 229*9880d681SAndroid Build Coastguard Worker %valpred.2 = phi i32 [ -32768, %bb19 ], [ 32767, %bb13 ], [ %valpred.0, %bb18 ] ; <i32> [#uses=3] 230*9880d681SAndroid Build Coastguard Worker %34 = getelementptr [89 x i32], [89 x i32]* @stepsizeTable, i32 0, i32 %index.2 ; <i32*> [#uses=1] 231*9880d681SAndroid Build Coastguard Worker %35 = load i32, i32* %34, align 4 ; <i32> [#uses=1] 232*9880d681SAndroid Build Coastguard Worker %36 = trunc i32 %valpred.2 to i16 ; <i16> [#uses=1] 233*9880d681SAndroid Build Coastguard Worker store i16 %36, i16* %outp.030, align 2 234*9880d681SAndroid Build Coastguard Worker %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2] 235*9880d681SAndroid Build Coastguard Worker %exitcond = icmp eq i32 %indvar.next, %len ; <i1> [#uses=1] 236*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %bb22, label %bb 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerbb22: ; preds = %bb20, %entry 239*9880d681SAndroid Build Coastguard Worker %index.0.lcssa = phi i32 [ %5, %entry ], [ %index.2, %bb20 ] ; <i32> [#uses=1] 240*9880d681SAndroid Build Coastguard Worker %valpred.1.lcssa = phi i32 [ %2, %entry ], [ %valpred.2, %bb20 ] ; <i32> [#uses=1] 241*9880d681SAndroid Build Coastguard Worker %37 = trunc i32 %valpred.1.lcssa to i16 ; <i16> [#uses=1] 242*9880d681SAndroid Build Coastguard Worker store i16 %37, i16* %0, align 2 243*9880d681SAndroid Build Coastguard Worker %38 = trunc i32 %index.0.lcssa to i8 ; <i8> [#uses=1] 244*9880d681SAndroid Build Coastguard Worker store i8 %38, i8* %3, align 2 245*9880d681SAndroid Build Coastguard Worker ret void 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine i32 @main() nounwind { 249*9880d681SAndroid Build Coastguard Workerentry: 250*9880d681SAndroid Build Coastguard Worker br label %bb 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Workerbb: ; preds = %bb3, %entry 253*9880d681SAndroid Build Coastguard Worker %0 = tail call i32 (...) @read(i32 0, i8* getelementptr ([500 x i8], [500 x i8]* @abuf, i32 0, i32 0), i32 500) nounwind ; <i32> [#uses=4] 254*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i32 %0, 0 ; <i1> [#uses=1] 255*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerbb1: ; preds = %bb 258*9880d681SAndroid Build Coastguard Worker tail call void @perror(i8* getelementptr ([11 x i8], [11 x i8]* @.str, i32 0, i32 0)) nounwind 259*9880d681SAndroid Build Coastguard Worker ret i32 1 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb 262*9880d681SAndroid Build Coastguard Worker %2 = icmp eq i32 %0, 0 ; <i1> [#uses=1] 263*9880d681SAndroid Build Coastguard Worker br i1 %2, label %bb4, label %bb3 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Workerbb3: ; preds = %bb2 266*9880d681SAndroid Build Coastguard Worker %3 = shl i32 %0, 1 ; <i32> [#uses=1] 267*9880d681SAndroid Build Coastguard Worker tail call void @adpcm_decoder(i8* getelementptr ([500 x i8], [500 x i8]* @abuf, i32 0, i32 0), i16* getelementptr ([1000 x i16], [1000 x i16]* @sbuf, i32 0, i32 0), i32 %3, %struct.adpcm_state* @state) nounwind 268*9880d681SAndroid Build Coastguard Worker %4 = shl i32 %0, 2 ; <i32> [#uses=1] 269*9880d681SAndroid Build Coastguard Worker %5 = tail call i32 (...) @write(i32 1, i16* getelementptr ([1000 x i16], [1000 x i16]* @sbuf, i32 0, i32 0), i32 %4) nounwind ; <i32> [#uses=0] 270*9880d681SAndroid Build Coastguard Worker br label %bb 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerbb4: ; preds = %bb2 273*9880d681SAndroid Build Coastguard Worker %6 = load %struct.FILE*, %struct.FILE** @__stderrp, align 4 ; <%struct.FILE*> [#uses=1] 274*9880d681SAndroid Build Coastguard Worker %7 = load i16, i16* getelementptr (%struct.adpcm_state, %struct.adpcm_state* @state, i32 0, i32 0), align 4 ; <i16> [#uses=1] 275*9880d681SAndroid Build Coastguard Worker %8 = sext i16 %7 to i32 ; <i32> [#uses=1] 276*9880d681SAndroid Build Coastguard Worker %9 = load i8, i8* getelementptr (%struct.adpcm_state, %struct.adpcm_state* @state, i32 0, i32 1), align 2 ; <i8> [#uses=1] 277*9880d681SAndroid Build Coastguard Worker %10 = sext i8 %9 to i32 ; <i32> [#uses=1] 278*9880d681SAndroid Build Coastguard Worker %11 = tail call i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* %6, i8* getelementptr ([28 x i8], [28 x i8]* @.str1, i32 0, i32 0), i32 %8, i32 %10) nounwind ; <i32> [#uses=0] 279*9880d681SAndroid Build Coastguard Worker ret i32 0 280*9880d681SAndroid Build Coastguard Worker} 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Workerdeclare i32 @read(...) 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Workerdeclare void @perror(i8* nocapture) nounwind 285*9880d681SAndroid Build Coastguard Worker 286*9880d681SAndroid Build Coastguard Workerdeclare i32 @write(...) 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Workerdeclare i32 @fprintf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind 289