forked from len0rd/rockbox
Introduce macros for identical multiply-add blocks.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27535 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
5297db9904
commit
7c33e1b4fe
1 changed files with 19 additions and 59 deletions
|
@ -125,6 +125,16 @@ static channel_unit channel_units[2] IBSS_ATTR_LARGE_IRAM;
|
||||||
int32_t *win,
|
int32_t *win,
|
||||||
unsigned int nIn);
|
unsigned int nIn);
|
||||||
#else
|
#else
|
||||||
|
#define MULTIPLY_ADD_BLOCK(y1, y2, x, c, k) \
|
||||||
|
y1 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y2 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y1 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y2 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y1 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y2 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y1 += fixmul31(c[k], x[k]); k++; \
|
||||||
|
y2 += fixmul31(c[k], x[k]); k++;
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
atrac3_iqmf_dewindowing(int32_t *out,
|
atrac3_iqmf_dewindowing(int32_t *out,
|
||||||
int32_t *in,
|
int32_t *in,
|
||||||
|
@ -133,68 +143,18 @@ static channel_unit channel_units[2] IBSS_ATTR_LARGE_IRAM;
|
||||||
{
|
{
|
||||||
int32_t i, j, s1, s2;
|
int32_t i, j, s1, s2;
|
||||||
|
|
||||||
for (j = nIn; j != 0; j--) {
|
for (j = nIn; j != 0; j--, in+=2, out+=2) {
|
||||||
i = 0;
|
s1 = s2 = i = 0;
|
||||||
/* 0.. 7 */
|
|
||||||
s1 = fixmul31(win[i], in[i]); i++;
|
MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 0.. 7 */
|
||||||
s2 = fixmul31(win[i], in[i]); i++;
|
MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 8..15 */
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 16..23 */
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 24..31 */
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 32..39 */
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 40..47 */
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
/* 8..15 */
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
/* 16..23 */
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
/* 24..31 */
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
/* 32..39 */
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
/* 40..47 */
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s1 += fixmul31(win[i], in[i]); i++;
|
|
||||||
s2 += fixmul31(win[i], in[i]);
|
|
||||||
|
|
||||||
out[0] = s2;
|
out[0] = s2;
|
||||||
out[1] = s1;
|
out[1] = s1;
|
||||||
|
|
||||||
in += 2;
|
|
||||||
out += 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue