xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb/asmprinter-bug.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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