summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac/predictor-cf.S
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/demac/libdemac/predictor-cf.S')
-rw-r--r--apps/codecs/demac/libdemac/predictor-cf.S46
1 files changed, 20 insertions, 26 deletions
diff --git a/apps/codecs/demac/libdemac/predictor-cf.S b/apps/codecs/demac/libdemac/predictor-cf.S
index b12d0932b0..0a1ffe9ead 100644
--- a/apps/codecs/demac/libdemac/predictor-cf.S
+++ b/apps/codecs/demac/libdemac/predictor-cf.S
@@ -486,10 +486,18 @@ predictor_decode_stereo:
486 | %a3 = &p->historybuffer[PREDICTOR_HISTORY_SIZE] 486 | %a3 = &p->historybuffer[PREDICTOR_HISTORY_SIZE]
487 487
488 cmp.l %a3, %a5 488 cmp.l %a3, %a5
489 bne.s .endofloop 489 beq.s .move_hist | The history buffer is full, we need to do a memmove
490 490
491 | The history buffer is full, we need to do a memmove: 491 subq.l #1, (8,%sp) | decrease loop count
492 bne.w .loop
492 493
494.done:
495 move.l %a5, (%a6) | Save value of p->buf
496 movem.l (3*4,%sp), %d2-%d7/%a2-%a6
497 lea.l (14*4,%sp), %sp
498 rts
499
500.move_hist:
493 lea.l (historybuffer,%a6), %a3 501 lea.l (historybuffer,%a6), %a3
494 502
495 | dest = %a3 (p->historybuffer) 503 | dest = %a3 (p->historybuffer)
@@ -497,33 +505,19 @@ predictor_decode_stereo:
497 | n = 200 505 | n = 200
498 506
499 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes 507 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes
500 lea.l (40,%a5), %a5
501 movem.l %d0-%d7/%a0-%a1, (%a3) 508 movem.l %d0-%d7/%a0-%a1, (%a3)
502 lea.l (40,%a3), %a3 509 movem.l (40,%a5), %d0-%d7/%a0-%a1 | 40 bytes
503 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes 510 movem.l %d0-%d7/%a0-%a1, (40,%a3)
504 lea.l (40,%a5), %a5 511 movem.l (80,%a5), %d0-%d7/%a0-%a1 | 40 bytes
505 movem.l %d0-%d7/%a0-%a1, (%a3) 512 movem.l %d0-%d7/%a0-%a1, (80,%a3)
506 lea.l (40,%a3), %a3 513 movem.l (120,%a5), %d0-%d7/%a0-%a1 | 40 bytes
507 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes 514 movem.l %d0-%d7/%a0-%a1, (120,%a3)
508 lea.l (40,%a5), %a5 515 movem.l (160,%a5), %d0-%d7/%a0-%a1 | 40 bytes
509 movem.l %d0-%d7/%a0-%a1, (%a3) 516 movem.l %d0-%d7/%a0-%a1, (160,%a3)
510 lea.l (40,%a3), %a3
511 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes
512 lea.l (40,%a5), %a5
513 movem.l %d0-%d7/%a0-%a1, (%a3)
514 lea.l (40,%a3), %a3
515 movem.l (%a5), %d0-%d7/%a0-%a1 | 40 bytes
516 lea.l (40,%a5), %a5
517 movem.l %d0-%d7/%a0-%a1, (%a3)
518 lea.l (40,%a3), %a3
519 517
520 lea.l (historybuffer,%a6), %a5 | p->buf = &p->historybuffer[0] 518 move.l %a3, %a5 | p->buf = &p->historybuffer[0]
521 519
522.endofloop:
523 subq.l #1, (8,%sp) | decrease loop count 520 subq.l #1, (8,%sp) | decrease loop count
524 bne.w .loop 521 bne.w .loop
525 522
526 move.l %a5, (%a6) | Save value of p->buf 523 bra.s .done
527 movem.l (3*4,%sp), %d2-%d7/%a2-%a6
528 lea.l (14*4,%sp), %sp
529 rts