summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/demac/libdemac/predictor-cf.S223
1 files changed, 108 insertions, 115 deletions
diff --git a/apps/codecs/demac/libdemac/predictor-cf.S b/apps/codecs/demac/libdemac/predictor-cf.S
index 0a1ffe9ead..cd2e07fd5e 100644
--- a/apps/codecs/demac/libdemac/predictor-cf.S
+++ b/apps/codecs/demac/libdemac/predictor-cf.S
@@ -69,16 +69,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
69| int count) 69| int count)
70 70
71predictor_decode_stereo: 71predictor_decode_stereo:
72 lea.l (-14*4,%sp), %sp 72 lea.l (-12*4,%sp), %sp
73 movem.l %d2-%d7/%a2-%a6, (3*4,%sp) 73 movem.l %d2-%d7/%a2-%a6, (4,%sp)
74 74
75 movem.l (14*4+8,%sp), %d0-%d2 75 movem.l (12*4+8,%sp), %a3-%a5 | %a3 = decoded0
76 movem.l %d0-%d2, (%sp) | (%sp) = decoded0 76 | %a4 = decoded1
77 | (4,%sp) = decoded1 77 move.l %a5, (%sp) | (%sp) = count
78 | (8,%sp) = count
79 78
80 move.l #0, %macsr | signed integer mode 79 move.l #0, %macsr | signed integer mode
81 move.l (14*4+4,%sp), %a6 | %a6 = p 80 move.l (12*4+4,%sp), %a6 | %a6 = p
82 move.l (%a6), %a5 | %a5 = p->buf 81 move.l (%a6), %a5 | %a5 = p->buf
83 82
84.loop: 83.loop:
@@ -98,15 +97,15 @@ predictor_decode_stereo:
98 97
99 move.l %d2, (YDELAYA-4,%a5) | p->buf[YDELAYA-1] = %d2 98 move.l %d2, (YDELAYA-4,%a5) | p->buf[YDELAYA-1] = %d2
100 99
101 movem.l (YcoeffsA,%a6), %a0-%a3 | %a0 = p->YcoeffsA[0] 100 movem.l (YcoeffsA,%a6), %d4-%d7 | %d4 = p->YcoeffsA[0]
102 | %a1 = p->YcoeffsA[1] 101 | %d5 = p->YcoeffsA[1]
103 | %a2 = p->YcoeffsA[2] 102 | %d6 = p->YcoeffsA[2]
104 | %a3 = p->YcoeffsA[3] 103 | %d7 = p->YcoeffsA[3]
105 104
106 mac.l %d3, %a0, %acc0 | %acc0 = p->buf[YDELAYA] * p->YcoeffsA[0] 105 mac.l %d3, %d4, %acc0 | %acc0 = p->buf[YDELAYA] * p->YcoeffsA[0]
107 mac.l %d2, %a1, %acc0 | %acc0 += p->buf[YDELAYA-1] * p->YcoeffsA[1] 106 mac.l %d2, %d5, %acc0 | %acc0 += p->buf[YDELAYA-1] * p->YcoeffsA[1]
108 mac.l %d1, %a2, %acc0 | %acc0 += p->buf[YDELAYA-2] * p->YcoeffsA[2] 107 mac.l %d1, %d6, %acc0 | %acc0 += p->buf[YDELAYA-2] * p->YcoeffsA[2]
109 mac.l %d0, %a3, %acc0 | %acc0 += p->buf[YDELAYA-3] * p->YcoeffsA[3] 108 mac.l %d0, %d7, %acc0 | %acc0 += p->buf[YDELAYA-3] * p->YcoeffsA[3]
110 109
111 move.l %d3, (YDELAYA,%a5) | p->buf[YDELAYA] = %d3 110 move.l %d3, (YDELAYA,%a5) | p->buf[YDELAYA] = %d3
112 111
@@ -151,17 +150,17 @@ predictor_decode_stereo:
151 150
152 move.l %d7, (YDELAYB-4,%a5) | p->buf[YDELAYB-1] = %d7 151 move.l %d7, (YDELAYB-4,%a5) | p->buf[YDELAYB-1] = %d7
153 152
154 movem.l (YcoeffsB,%a6), %d2/%a0-%a3 | %d2 = p->YcoeffsB[0] 153 movem.l (YcoeffsB,%a6), %d1-%d2/%a0-%a2 | %d1 = p->YcoeffsB[0]
155 | %a0 = p->YcoeffsB[1] 154 | %d2 = p->YcoeffsB[1]
156 | %a1 = p->YcoeffsB[2] 155 | %a0 = p->YcoeffsB[2]
157 | %a2 = p->YcoeffsB[3] 156 | %a1 = p->YcoeffsB[3]
158 | %a3 = p->YcoeffsB[4] 157 | %a2 = p->YcoeffsB[4]
159 158
160 mac.l %d3, %d2, %acc0 | %acc0 = p->buf[YDELAYB] * p->YcoeffsB[0] 159 mac.l %d3, %d1, %acc0 | %acc0 = p->buf[YDELAYB] * p->YcoeffsB[0]
161 mac.l %d7, %a0, %acc0 | %acc0 += p->buf[YDELAYB-1] * p->YcoeffsB[1] 160 mac.l %d7, %d2, %acc0 | %acc0 += p->buf[YDELAYB-1] * p->YcoeffsB[1]
162 mac.l %d6, %a1, %acc0 | %acc0 += p->buf[YDELAYB-2] * p->YcoeffsB[2] 161 mac.l %d6, %a0, %acc0 | %acc0 += p->buf[YDELAYB-2] * p->YcoeffsB[2]
163 mac.l %d5, %a2, %acc0 | %acc0 += p->buf[YDELAYB-3] * p->YcoeffsB[3] 162 mac.l %d5, %a1, %acc0 | %acc0 += p->buf[YDELAYB-3] * p->YcoeffsB[3]
164 mac.l %d4, %a3, %acc0 | %acc0 += p->buf[YDELAYB-4] * p->YcoeffsB[4] 163 mac.l %d4, %a2, %acc0 | %acc0 += p->buf[YDELAYB-4] * p->YcoeffsB[4]
165 164
166 move.l %d3, (YDELAYB, %a5) | p->buf[YDELAYB] = %d3 165 move.l %d3, (YDELAYB, %a5) | p->buf[YDELAYB] = %d3
167 166
@@ -180,40 +179,37 @@ predictor_decode_stereo:
1801: | %d3 = SIGN(%d3) 1791: | %d3 = SIGN(%d3)
181 move.l %d3, (YADAPTCOEFFSB, %a5) | p->buf[YADAPTCOEFFSB] = %d3 180 move.l %d3, (YADAPTCOEFFSB, %a5) | p->buf[YADAPTCOEFFSB] = %d3
182 181
183 movclr.l %acc0, %d1 182 movclr.l %acc0, %d4
184 183
185 | %d0 still contains predictionA 184 | %d0 still contains predictionA
186 | %d1 contains predictionB 185 | %d4 contains predictionB
187 186
188 | Finish Predictor Y 187 | Finish Predictor Y
189 188
190 move.l (%sp), %a4 | %a4 = decoded0 189 asr.l #1, %d4
191 asr.l #1, %d1 190 add.l %d4, %d0 | %d0 += (%d1 >> 1)
192 add.l %d1, %d0 | %d0 += (%d1 >> 1) 191 move.l (%a3), %d5 | %d5 = *decoded0
193 move.l (%a4), %d5 | %d5 = *decoded0 192 move.l %d5, %d4 | %d4 = %d5
194 move.l %d5, %d1 | %d1 = %d5
195 asr.l #8, %d0 193 asr.l #8, %d0
196 asr.l #2, %d0 | %d0 >>= 10 194 asr.l #2, %d0 | %d0 >>= 10
197 add.l %d0, %d1 | %d1 += %d0 195 add.l %d0, %d4 | %d4 += %d0
198 move.l %d1, (YlastA,%a6) | p->YlastA = %d1 196 move.l %d4, (YlastA,%a6) | p->YlastA = %d4
199 197
200 move.l (YfilterA,%a6), %d6 | %d6 = p->YfilterA 198 move.l (YfilterA,%a6), %d6 | %d6 = p->YfilterA
201 move.l %d6, %d0 199 move.l %d6, %d0
202 lsl.l #5, %d6 200 lsl.l #5, %d6
203 sub.l %d0, %d6 | %d6 = 31 * %d6 201 sub.l %d0, %d6 | %d6 = 31 * %d6
204 asr.l #5, %d6 | %d6 >>= 5 202 asr.l #5, %d6 | %d6 >>= 5
205 add.l %d6, %d1 203 add.l %d6, %d4
206 move.l %d1, (YfilterA,%a6) | p->YfilterA = %d1 204 move.l %d4, (YfilterA,%a6) | p->YfilterA = %d4
207 205
208 | %d1 contains p->YfilterA 206 | %d4 contains p->YfilterA
209 | %a4 contains decoded0
210 | %d5 contains *decoded0 207 | %d5 contains *decoded0
211 208
212 | %d2, %a0, %a1, %a2, %a3 contain p->YcoeffsB[0..4] 209 | %d1, %d2, %a0, %a1, %a2 contain p->YcoeffsB[0..4]
213 | %d7, %d3 contain p->buf[YADAPTCOEFFSB-1] and p->buf[YADAPTCOEFFSB] 210 | %d7, %d3 contain p->buf[YADAPTCOEFFSB-1] and p->buf[YADAPTCOEFFSB]
214 211
215 move.l %d1, (%a4)+ | *(decoded0++) = %d1 (p->YfilterA) 212 move.l %d4, (%a3)+ | *(decoded0++) = %d1 (p->YfilterA)
216 move.l %a4, (%sp) | save decoded0
217 tst.l %d5 213 tst.l %d5
218 beq.s 3f 214 beq.s 3f
219 215
@@ -225,13 +221,13 @@ predictor_decode_stereo:
225 221
226 | *decoded0 > 0 222 | *decoded0 > 0
227 223
228 sub.l %d3, %d2 | %d2 = p->YcoeffsB[0] - p->buf[YADAPTCOEFFSB] 224 sub.l %d3, %d1 | %d1 = p->YcoeffsB[0] - p->buf[YADAPTCOEFFSB]
229 sub.l %d7, %a0 | %a0 = p->YcoeffsB[1] - p->buf[YADAPTCOEFFSB-1] 225 sub.l %d7, %d2 | %d2 = p->YcoeffsB[1] - p->buf[YADAPTCOEFFSB-1]
230 sub.l %d6, %a1 | %a1 = p->YcoeffsB[2] - p->buf[YADAPTCOEFFSB-2] 226 sub.l %d6, %a0 | %a0 = p->YcoeffsB[2] - p->buf[YADAPTCOEFFSB-2]
231 sub.l %d5, %a2 | %a2 = p->YcoeffsB[3] - p->buf[YADAPTCOEFFSB-3] 227 sub.l %d5, %a1 | %a1 = p->YcoeffsB[3] - p->buf[YADAPTCOEFFSB-3]
232 sub.l %d4, %a3 | %a3 = p->YcoeffsB[4] - p->buf[YADAPTCOEFFSB-4] 228 sub.l %d4, %a2 | %a2 = p->YcoeffsB[4] - p->buf[YADAPTCOEFFSB-4]
233 229
234 movem.l %d2/%a0-%a3, (YcoeffsB,%a6) | Save p->YcoeffsB[] 230 movem.l %d1-%d2/%a0-%a2, (YcoeffsB,%a6) | Save p->YcoeffsB[]
235 231
236 movem.l (YcoeffsA,%a6), %d4-%d7 | %d4 = p->YcoeffsA[0] 232 movem.l (YcoeffsA,%a6), %d4-%d7 | %d4 = p->YcoeffsA[0]
237 | %d5 = p->YcoeffsA[1] 233 | %d5 = p->YcoeffsA[1]
@@ -252,13 +248,13 @@ predictor_decode_stereo:
252 248
2531: | *decoded0 < 0 2491: | *decoded0 < 0
254 250
255 add.l %d3, %d2 | %d2 = p->YcoeffsB[0] + p->buf[YADAPTCOEFFSB] 251 add.l %d3, %d1 | %d1 = p->YcoeffsB[0] + p->buf[YADAPTCOEFFSB]
256 add.l %d7, %a0 | %a0 = p->YcoeffsB[1] + p->buf[YADAPTCOEFFSB-1] 252 add.l %d7, %d2 | %d2 = p->YcoeffsB[1] + p->buf[YADAPTCOEFFSB-1]
257 add.l %d6, %a1 | %a1 = p->YcoeffsB[2] + p->buf[YADAPTCOEFFSB-2] 253 add.l %d6, %a0 | %a0 = p->YcoeffsB[2] + p->buf[YADAPTCOEFFSB-2]
258 add.l %d5, %a2 | %a2 = p->YcoeffsB[3] + p->buf[YADAPTCOEFFSB-3] 254 add.l %d5, %a1 | %a1 = p->YcoeffsB[3] + p->buf[YADAPTCOEFFSB-3]
259 add.l %d4, %a3 | %a3 = p->YcoeffsB[4] + p->buf[YADAPTCOEFFSB-4] 255 add.l %d4, %a2 | %a2 = p->YcoeffsB[4] + p->buf[YADAPTCOEFFSB-4]
260 256
261 movem.l %d2/%a0-%a3, (YcoeffsB,%a6) | Save p->YcoeffsB[] 257 movem.l %d1-%d2/%a0-%a2, (YcoeffsB,%a6) | Save p->YcoeffsB[]
262 258
263 movem.l (YcoeffsA,%a6), %d4-%d7 | %d4 = p->YcoeffsA[0] 259 movem.l (YcoeffsA,%a6), %d4-%d7 | %d4 = p->YcoeffsA[0]
264 | %d5 = p->YcoeffsA[1] 260 | %d5 = p->YcoeffsA[1]
@@ -295,15 +291,15 @@ predictor_decode_stereo:
295 291
296 move.l %d2, (XDELAYA-4,%a5) | p->buf[XDELAYA-1] = %d2 292 move.l %d2, (XDELAYA-4,%a5) | p->buf[XDELAYA-1] = %d2
297 293
298 movem.l (XcoeffsA,%a6), %a0-%a3 | %a0 = p->XcoeffsA[0] 294 movem.l (XcoeffsA,%a6), %d4-%d7 | %d4 = p->XcoeffsA[0]
299 | %a1 = p->XcoeffsA[1] 295 | %d5 = p->XcoeffsA[1]
300 | %a2 = p->XcoeffsA[2] 296 | %d6 = p->XcoeffsA[2]
301 | %a3 = p->XcoeffsA[3] 297 | %d7 = p->XcoeffsA[3]
302 298
303 mac.l %d3, %a0, %acc0 | %acc0 = p->buf[XDELAYA] * p->XcoeffsA[0] 299 mac.l %d3, %d4, %acc0 | %acc0 = p->buf[XDELAYA] * p->XcoeffsA[0]
304 mac.l %d2, %a1, %acc0 | %acc0 += p->buf[XDELAYA-1] * p->XcoeffsA[1] 300 mac.l %d2, %d5, %acc0 | %acc0 += p->buf[XDELAYA-1] * p->XcoeffsA[1]
305 mac.l %d1, %a2, %acc0 | %acc0 += p->buf[XDELAYA-2] * p->XcoeffsA[2] 301 mac.l %d1, %d6, %acc0 | %acc0 += p->buf[XDELAYA-2] * p->XcoeffsA[2]
306 mac.l %d0, %a3, %acc0 | %acc0 += p->buf[XDELAYA-3] * p->XcoeffsA[3] 302 mac.l %d0, %d7, %acc0 | %acc0 += p->buf[XDELAYA-3] * p->XcoeffsA[3]
307 303
308 move.l %d3, (XDELAYA,%a5) | p->buf[XDELAYA] = %d3 304 move.l %d3, (XDELAYA,%a5) | p->buf[XDELAYA] = %d3
309 305
@@ -348,17 +344,17 @@ predictor_decode_stereo:
348 344
349 move.l %d7, (XDELAYB-4,%a5) | p->buf[XDELAYB-1] = %d7 345 move.l %d7, (XDELAYB-4,%a5) | p->buf[XDELAYB-1] = %d7
350 346
351 movem.l (XcoeffsB,%a6), %d2/%a0-%a3 | %d2 = p->XcoeffsB[0] 347 movem.l (XcoeffsB,%a6), %d1-%d2/%a0-%a2 | %d1 = p->XcoeffsB[0]
352 | %a0 = p->XcoeffsB[1] 348 | %d2 = p->XcoeffsB[1]
353 | %a1 = p->XcoeffsB[2] 349 | %a0 = p->XcoeffsB[2]
354 | %a2 = p->XcoeffsB[3] 350 | %a1 = p->XcoeffsB[3]
355 | %a3 = p->XcoeffsB[4] 351 | %a2 = p->XcoeffsB[4]
356 352
357 mac.l %d3, %d2, %acc0 | %acc0 = p->buf[XDELAYB] * p->XcoeffsB[0] 353 mac.l %d3, %d1, %acc0 | %acc0 = p->buf[XDELAYB] * p->XcoeffsB[0]
358 mac.l %d7, %a0, %acc0 | %acc0 += p->buf[XDELAYB-1] * p->XcoeffsB[1] 354 mac.l %d7, %d2, %acc0 | %acc0 += p->buf[XDELAYB-1] * p->XcoeffsB[1]
359 mac.l %d6, %a1, %acc0 | %acc0 += p->buf[XDELAYB-2] * p->XcoeffsB[2] 355 mac.l %d6, %a0, %acc0 | %acc0 += p->buf[XDELAYB-2] * p->XcoeffsB[2]
360 mac.l %d5, %a2, %acc0 | %acc0 += p->buf[XDELAYB-3] * p->XcoeffsB[3] 356 mac.l %d5, %a1, %acc0 | %acc0 += p->buf[XDELAYB-3] * p->XcoeffsB[3]
361 mac.l %d4, %a3, %acc0 | %acc0 += p->buf[XDELAYB-4] * p->XcoeffsB[4] 357 mac.l %d4, %a2, %acc0 | %acc0 += p->buf[XDELAYB-4] * p->XcoeffsB[4]
362 358
363 move.l %d3, (XDELAYB, %a5) | p->buf[XDELAYB] = %d3 359 move.l %d3, (XDELAYB, %a5) | p->buf[XDELAYB] = %d3
364 360
@@ -378,40 +374,37 @@ predictor_decode_stereo:
3781: | %d3 = SIGN(%d3) 3741: | %d3 = SIGN(%d3)
379 move.l %d3, (XADAPTCOEFFSB, %a5) | p->buf[XADAPTCOEFFSB] = %d3 375 move.l %d3, (XADAPTCOEFFSB, %a5) | p->buf[XADAPTCOEFFSB] = %d3
380 376
381 movclr.l %acc0, %d1 377 movclr.l %acc0, %d4
382 378
383 | %d0 still contains predictionA 379 | %d0 still contains predictionA
384 | %d1 contains predictionB 380 | %d4 contains predictionB
385 381
386 | Finish Predictor X 382 | Finish Predictor X
387 383
388 move.l (4,%sp), %a4 | %a4 = decoded1 384 asr.l #1, %d4
389 asr.l #1, %d1 385 add.l %d4, %d0 | %d0 += (%d1 >> 1)
390 add.l %d1, %d0 | %d0 += (%d1 >> 1)
391 move.l (%a4), %d5 | %d5 = *decoded1 386 move.l (%a4), %d5 | %d5 = *decoded1
392 move.l %d5, %d1 | %d1 = %d5 387 move.l %d5, %d4 | %d4 = %d5
393 asr.l #8, %d0 388 asr.l #8, %d0
394 asr.l #2, %d0 | %d0 >>= 10 389 asr.l #2, %d0 | %d0 >>= 10
395 add.l %d0, %d1 | %d1 += %d0 390 add.l %d0, %d4 | %d4 += %d0
396 move.l %d1, (XlastA,%a6) | p->XlastA = %d1 391 move.l %d4, (XlastA,%a6) | p->XlastA = %d1
397 392
398 move.l (XfilterA,%a6), %d6 | %d6 = p->XfilterA 393 move.l (XfilterA,%a6), %d6 | %d6 = p->XfilterA
399 move.l %d6, %d0 394 move.l %d6, %d0
400 lsl.l #5, %d6 395 lsl.l #5, %d6
401 sub.l %d0, %d6 | %d6 = 31 * %d6 396 sub.l %d0, %d6 | %d6 = 31 * %d6
402 asr.l #5, %d6 | %d6 >>= 5 397 asr.l #5, %d6 | %d6 >>= 5
403 add.l %d6, %d1 398 add.l %d6, %d4
404 move.l %d1, (XfilterA,%a6) | p->XfilterA = %d6 399 move.l %d4, (XfilterA,%a6) | p->XfilterA = %d6
405 400
406 | %d1 contains p->XfilterA 401 | %d4 contains p->XfilterA
407 | %a4 contains decoded1
408 | %d5 contains *decoded1 402 | %d5 contains *decoded1
409 403
410 | %d2, %a0, %a1, %a2, %a3 contain p->XcoeffsB[0..4] 404 | %d1, %d2, %a0, %a1, %a2 contain p->XcoeffsB[0..4]
411 | %d7, %d3 contain p->buf[XADAPTCOEFFSB-1] and p->buf[XADAPTCOEFFSB] 405 | %d7, %d3 contain p->buf[XADAPTCOEFFSB-1] and p->buf[XADAPTCOEFFSB]
412 406
413 move.l %d1, (%a4)+ | *(decoded1++) = %d1 (p->XfilterA) 407 move.l %d4, (%a4)+ | *(decoded1++) = %d1 (p->XfilterA)
414 move.l %a4, (4,%sp) | save decoded1
415 tst.l %d5 408 tst.l %d5
416 beq.s 3f 409 beq.s 3f
417 410
@@ -423,13 +416,13 @@ predictor_decode_stereo:
423 416
424 | *decoded1 > 0 417 | *decoded1 > 0
425 418
426 sub.l %d3, %d2 | %d2 = p->XcoeffsB[0] - p->buf[XADAPTCOEFFSB] 419 sub.l %d3, %d1 | %d1 = p->XcoeffsB[0] - p->buf[XADAPTCOEFFSB]
427 sub.l %d7, %a0 | %a0 = p->XcoeffsB[1] - p->buf[XADAPTCOEFFSB-1] 420 sub.l %d7, %d2 | %d2 = p->XcoeffsB[1] - p->buf[XADAPTCOEFFSB-1]
428 sub.l %d6, %a1 | %a1 = p->XcoeffsB[2] - p->buf[XADAPTCOEFFSB-2] 421 sub.l %d6, %a0 | %a0 = p->XcoeffsB[2] - p->buf[XADAPTCOEFFSB-2]
429 sub.l %d5, %a2 | %a2 = p->XcoeffsB[3] - p->buf[XADAPTCOEFFSB-3] 422 sub.l %d5, %a1 | %a1 = p->XcoeffsB[3] - p->buf[XADAPTCOEFFSB-3]
430 sub.l %d4, %a3 | %a3 = p->XcoeffsB[4] - p->buf[XADAPTCOEFFSB-4] 423 sub.l %d4, %a2 | %a2 = p->XcoeffsB[4] - p->buf[XADAPTCOEFFSB-4]
431 424
432 movem.l %d2/%a0-%a3, (XcoeffsB,%a6) | Save p->XcoeffsB[] 425 movem.l %d1-%d2/%a0-%a2, (XcoeffsB,%a6) | Save p->XcoeffsB[]
433 426
434 movem.l (XcoeffsA,%a6), %d4-%d7 | %d4 = p->XcoeffsA[0] 427 movem.l (XcoeffsA,%a6), %d4-%d7 | %d4 = p->XcoeffsA[0]
435 | %d5 = p->XcoeffsA[1] 428 | %d5 = p->XcoeffsA[1]
@@ -450,13 +443,13 @@ predictor_decode_stereo:
450 443
4511: | *decoded1 < 0 4441: | *decoded1 < 0
452 445
453 add.l %d3, %d2 | %d2 = p->XcoeffsB[0] + p->buf[XADAPTCOEFFSB] 446 add.l %d3, %d1 | %d1 = p->XcoeffsB[0] + p->buf[XADAPTCOEFFSB]
454 add.l %d7, %a0 | %a0 = p->XcoeffsB[1] + p->buf[XADAPTCOEFFSB-1] 447 add.l %d7, %d2 | %d2 = p->XcoeffsB[1] + p->buf[XADAPTCOEFFSB-1]
455 add.l %d6, %a1 | %a1 = p->XcoeffsB[2] + p->buf[XADAPTCOEFFSB-2] 448 add.l %d6, %a0 | %a0 = p->XcoeffsB[2] + p->buf[XADAPTCOEFFSB-2]
456 add.l %d5, %a2 | %a2 = p->XcoeffsB[3] + p->buf[XADAPTCOEFFSB-3] 449 add.l %d5, %a1 | %a1 = p->XcoeffsB[3] + p->buf[XADAPTCOEFFSB-3]
457 add.l %d4, %a3 | %a3 = p->XcoeffsB[4] + p->buf[XADAPTCOEFFSB-4] 450 add.l %d4, %a2 | %a2 = p->XcoeffsB[4] + p->buf[XADAPTCOEFFSB-4]
458 451
459 movem.l %d2/%a0-%a3, (XcoeffsB,%a6) | Save p->XcoeffsB[] 452 movem.l %d1-%d2/%a0-%a2, (XcoeffsB,%a6) | Save p->XcoeffsB[]
460 453
461 movem.l (XcoeffsA,%a6), %d4-%d7 | %d4 = p->XcoeffsA[0] 454 movem.l (XcoeffsA,%a6), %d4-%d7 | %d4 = p->XcoeffsA[0]
462 | %d5 = p->XcoeffsA[1] 455 | %d5 = p->XcoeffsA[1]
@@ -482,42 +475,42 @@ predictor_decode_stereo:
482 475
483 addq.l #4, %a5 | p->buf++ 476 addq.l #4, %a5 | p->buf++
484 477
485 lea.l (historybuffer+PREDICTOR_HISTORY_SIZE*4,%a6), %a3 478 lea.l (historybuffer+PREDICTOR_HISTORY_SIZE*4,%a6), %a2
486 | %a3 = &p->historybuffer[PREDICTOR_HISTORY_SIZE] 479 | %a2 = &p->historybuffer[PREDICTOR_HISTORY_SIZE]
487 480
488 cmp.l %a3, %a5 481 cmp.l %a2, %a5
489 beq.s .move_hist | The history buffer is full, we need to do a memmove 482 beq.s .move_hist | The history buffer is full, we need to do a memmove
490 483
491 subq.l #1, (8,%sp) | decrease loop count 484 subq.l #1, (%sp) | decrease loop count
492 bne.w .loop 485 bne.w .loop
493 486
494.done: 487.done:
495 move.l %a5, (%a6) | Save value of p->buf 488 move.l %a5, (%a6) | Save value of p->buf
496 movem.l (3*4,%sp), %d2-%d7/%a2-%a6 489 movem.l (4,%sp), %d2-%d7/%a2-%a6
497 lea.l (14*4,%sp), %sp 490 lea.l (12*4,%sp), %sp
498 rts 491 rts
499 492
500.move_hist: 493.move_hist:
501 lea.l (historybuffer,%a6), %a3 494 lea.l (historybuffer,%a6), %a2
502 495
503 | dest = %a3 (p->historybuffer) 496 | dest = %a2 (p->historybuffer)
504 | src = %a5 (p->buf) 497 | src = %a5 (p->buf)
505 | n = 200 498 | n = 200
506 499
507 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes 500 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes
508 movem.l %d0-%d7/%a0-%a1, (%a3) 501 movem.l %d0-%d7/%a0-%a1, (%a2)
509 movem.l (40,%a5), %d0-%d7/%a0-%a1 | 40 bytes 502 movem.l (40,%a5), %d0-%d7/%a0-%a1 | 40 bytes
510 movem.l %d0-%d7/%a0-%a1, (40,%a3) 503 movem.l %d0-%d7/%a0-%a1, (40,%a2)
511 movem.l (80,%a5), %d0-%d7/%a0-%a1 | 40 bytes 504 movem.l (80,%a5), %d0-%d7/%a0-%a1 | 40 bytes
512 movem.l %d0-%d7/%a0-%a1, (80,%a3) 505 movem.l %d0-%d7/%a0-%a1, (80,%a2)
513 movem.l (120,%a5), %d0-%d7/%a0-%a1 | 40 bytes 506 movem.l (120,%a5), %d0-%d7/%a0-%a1 | 40 bytes
514 movem.l %d0-%d7/%a0-%a1, (120,%a3) 507 movem.l %d0-%d7/%a0-%a1, (120,%a2)
515 movem.l (160,%a5), %d0-%d7/%a0-%a1 | 40 bytes 508 movem.l (160,%a5), %d0-%d7/%a0-%a1 | 40 bytes
516 movem.l %d0-%d7/%a0-%a1, (160,%a3) 509 movem.l %d0-%d7/%a0-%a1, (160,%a2)
517 510
518 move.l %a3, %a5 | p->buf = &p->historybuffer[0] 511 move.l %a2, %a5 | p->buf = &p->historybuffer[0]
519 512
520 subq.l #1, (8,%sp) | decrease loop count 513 subq.l #1, (%sp) | decrease loop count
521 bne.w .loop 514 bne.w .loop
522 515
523 bra.s .done 516 bra.s .done