diff options
author | Thom Johansen <thomj@rockbox.org> | 2005-09-13 14:12:52 +0000 |
---|---|---|
committer | Thom Johansen <thomj@rockbox.org> | 2005-09-13 14:12:52 +0000 |
commit | 14f2e4539793214e938ff1c833fbff3c1e1c34a3 (patch) | |
tree | 2421a380ffdf8aba42d8726c45fb0f906a02b701 /apps/codecs/libmad | |
parent | 9e3b755f1e2a0d7693481250eaf18f1d02cfcef9 (diff) | |
download | rockbox-14f2e4539793214e938ff1c833fbff3c1e1c34a3.tar.gz rockbox-14f2e4539793214e938ff1c833fbff3c1e1c34a3.zip |
Replaced standard libmad accumulator sequence with EMAC optimised one.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7514 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libmad')
-rw-r--r-- | apps/codecs/libmad/layer3.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/apps/codecs/libmad/layer3.c b/apps/codecs/libmad/layer3.c index 6d528ea52c..ac804f303d 100644 --- a/apps/codecs/libmad/layer3.c +++ b/apps/codecs/libmad/layer3.c | |||
@@ -1554,6 +1554,21 @@ void III_aliasreduce(mad_fixed_t xr[576], int lines) | |||
1554 | # if defined(ASO_ZEROCHECK) | 1554 | # if defined(ASO_ZEROCHECK) |
1555 | if (a | b) { | 1555 | if (a | b) { |
1556 | # endif | 1556 | # endif |
1557 | # if defined(CPU_COLDFIRE) && !defined(SIMULATOR) | ||
1558 | (void)hi, (void)lo; | ||
1559 | asm volatile ("mac.l %[a], %[csi], %%acc0\n\t" | ||
1560 | "msac.l %[b], %[cai], %%acc0\n\t" | ||
1561 | "mac.l %[b], %[csi], %%acc1\n\t" | ||
1562 | "mac.l %[a], %[cai], %%acc1\n\t" | ||
1563 | "movclr.l %%acc0, %[a]\n\t" | ||
1564 | "asl.l #3, %[a]\n\t" | ||
1565 | "movclr.l %%acc1, %[b]\n\t" | ||
1566 | "asl.l #3, %[b]\n\t" | ||
1567 | : [a] "+d" (a), [b] "+d" (b) | ||
1568 | : [csi] "r" (cs[i]), [cai] "r" (ca[i])); | ||
1569 | xr[-1 - i] = a; | ||
1570 | xr[ i] = b; | ||
1571 | # else | ||
1557 | MAD_F_ML0(hi, lo, a, cs[i]); | 1572 | MAD_F_ML0(hi, lo, a, cs[i]); |
1558 | MAD_F_MLA(hi, lo, -b, ca[i]); | 1573 | MAD_F_MLA(hi, lo, -b, ca[i]); |
1559 | 1574 | ||
@@ -1563,6 +1578,7 @@ void III_aliasreduce(mad_fixed_t xr[576], int lines) | |||
1563 | MAD_F_MLA(hi, lo, a, ca[i]); | 1578 | MAD_F_MLA(hi, lo, a, ca[i]); |
1564 | 1579 | ||
1565 | xr[ i] = MAD_F_MLZ(hi, lo); | 1580 | xr[ i] = MAD_F_MLZ(hi, lo); |
1581 | # endif | ||
1566 | # if defined(ASO_ZEROCHECK) | 1582 | # if defined(ASO_ZEROCHECK) |
1567 | } | 1583 | } |
1568 | # endif | 1584 | # endif |