summaryrefslogtreecommitdiff
path: root/apps/codecs/libmad
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libmad')
-rw-r--r--apps/codecs/libmad/layer3.c16
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