diff options
Diffstat (limited to 'apps/codecs/demac/libdemac/predictor-cf.S')
-rw-r--r-- | apps/codecs/demac/libdemac/predictor-cf.S | 46 |
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 | ||