diff options
author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2010-07-23 22:06:45 +0000 |
---|---|---|
committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2010-07-23 22:06:45 +0000 |
commit | 7c33e1b4fecfe461c8d4c3d819517158a8e93fcc (patch) | |
tree | 6d6918172b736f913579d30fb366be46d023ac85 /apps/codecs/libatrac/atrac3.c | |
parent | 5297db990412a34dee96de5bf61258ae31f3b4f9 (diff) | |
download | rockbox-7c33e1b4fecfe461c8d4c3d819517158a8e93fcc.tar.gz rockbox-7c33e1b4fecfe461c8d4c3d819517158a8e93fcc.zip |
Introduce macros for identical multiply-add blocks.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27535 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libatrac/atrac3.c')
-rw-r--r-- | apps/codecs/libatrac/atrac3.c | 78 |
1 files changed, 19 insertions, 59 deletions
diff --git a/apps/codecs/libatrac/atrac3.c b/apps/codecs/libatrac/atrac3.c index c746886199..7e05a8b0e2 100644 --- a/apps/codecs/libatrac/atrac3.c +++ b/apps/codecs/libatrac/atrac3.c | |||
@@ -125,6 +125,16 @@ static channel_unit channel_units[2] IBSS_ATTR_LARGE_IRAM; | |||
125 | int32_t *win, | 125 | int32_t *win, |
126 | unsigned int nIn); | 126 | unsigned int nIn); |
127 | #else | 127 | #else |
128 | #define MULTIPLY_ADD_BLOCK(y1, y2, x, c, k) \ | ||
129 | y1 += fixmul31(c[k], x[k]); k++; \ | ||
130 | y2 += fixmul31(c[k], x[k]); k++; \ | ||
131 | y1 += fixmul31(c[k], x[k]); k++; \ | ||
132 | y2 += fixmul31(c[k], x[k]); k++; \ | ||
133 | y1 += fixmul31(c[k], x[k]); k++; \ | ||
134 | y2 += fixmul31(c[k], x[k]); k++; \ | ||
135 | y1 += fixmul31(c[k], x[k]); k++; \ | ||
136 | y2 += fixmul31(c[k], x[k]); k++; | ||
137 | |||
128 | static inline void | 138 | static inline void |
129 | atrac3_iqmf_dewindowing(int32_t *out, | 139 | atrac3_iqmf_dewindowing(int32_t *out, |
130 | int32_t *in, | 140 | int32_t *in, |
@@ -133,68 +143,18 @@ static channel_unit channel_units[2] IBSS_ATTR_LARGE_IRAM; | |||
133 | { | 143 | { |
134 | int32_t i, j, s1, s2; | 144 | int32_t i, j, s1, s2; |
135 | 145 | ||
136 | for (j = nIn; j != 0; j--) { | 146 | for (j = nIn; j != 0; j--, in+=2, out+=2) { |
137 | i = 0; | 147 | s1 = s2 = i = 0; |
138 | /* 0.. 7 */ | 148 | |
139 | s1 = fixmul31(win[i], in[i]); i++; | 149 | MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 0.. 7 */ |
140 | s2 = fixmul31(win[i], in[i]); i++; | 150 | MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 8..15 */ |
141 | s1 += fixmul31(win[i], in[i]); i++; | 151 | MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 16..23 */ |
142 | s2 += fixmul31(win[i], in[i]); i++; | 152 | MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 24..31 */ |
143 | s1 += fixmul31(win[i], in[i]); i++; | 153 | MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 32..39 */ |
144 | s2 += fixmul31(win[i], in[i]); i++; | 154 | MULTIPLY_ADD_BLOCK(s1, s2, in, win, i); /* 40..47 */ |
145 | s1 += fixmul31(win[i], in[i]); i++; | ||
146 | s2 += fixmul31(win[i], in[i]); i++; | ||
147 | /* 8..15 */ | ||
148 | s1 += fixmul31(win[i], in[i]); i++; | ||
149 | s2 += fixmul31(win[i], in[i]); i++; | ||
150 | s1 += fixmul31(win[i], in[i]); i++; | ||
151 | s2 += fixmul31(win[i], in[i]); i++; | ||
152 | s1 += fixmul31(win[i], in[i]); i++; | ||
153 | s2 += fixmul31(win[i], in[i]); i++; | ||
154 | s1 += fixmul31(win[i], in[i]); i++; | ||
155 | s2 += fixmul31(win[i], in[i]); i++; | ||
156 | /* 16..23 */ | ||
157 | s1 += fixmul31(win[i], in[i]); i++; | ||
158 | s2 += fixmul31(win[i], in[i]); i++; | ||
159 | s1 += fixmul31(win[i], in[i]); i++; | ||
160 | s2 += fixmul31(win[i], in[i]); i++; | ||
161 | s1 += fixmul31(win[i], in[i]); i++; | ||
162 | s2 += fixmul31(win[i], in[i]); i++; | ||
163 | s1 += fixmul31(win[i], in[i]); i++; | ||
164 | s2 += fixmul31(win[i], in[i]); i++; | ||
165 | /* 24..31 */ | ||
166 | s1 += fixmul31(win[i], in[i]); i++; | ||
167 | s2 += fixmul31(win[i], in[i]); i++; | ||
168 | s1 += fixmul31(win[i], in[i]); i++; | ||
169 | s2 += fixmul31(win[i], in[i]); i++; | ||
170 | s1 += fixmul31(win[i], in[i]); i++; | ||
171 | s2 += fixmul31(win[i], in[i]); i++; | ||
172 | s1 += fixmul31(win[i], in[i]); i++; | ||
173 | s2 += fixmul31(win[i], in[i]); i++; | ||
174 | /* 32..39 */ | ||
175 | s1 += fixmul31(win[i], in[i]); i++; | ||
176 | s2 += fixmul31(win[i], in[i]); i++; | ||
177 | s1 += fixmul31(win[i], in[i]); i++; | ||
178 | s2 += fixmul31(win[i], in[i]); i++; | ||
179 | s1 += fixmul31(win[i], in[i]); i++; | ||
180 | s2 += fixmul31(win[i], in[i]); i++; | ||
181 | s1 += fixmul31(win[i], in[i]); i++; | ||
182 | s2 += fixmul31(win[i], in[i]); i++; | ||
183 | /* 40..47 */ | ||
184 | s1 += fixmul31(win[i], in[i]); i++; | ||
185 | s2 += fixmul31(win[i], in[i]); i++; | ||
186 | s1 += fixmul31(win[i], in[i]); i++; | ||
187 | s2 += fixmul31(win[i], in[i]); i++; | ||
188 | s1 += fixmul31(win[i], in[i]); i++; | ||
189 | s2 += fixmul31(win[i], in[i]); i++; | ||
190 | s1 += fixmul31(win[i], in[i]); i++; | ||
191 | s2 += fixmul31(win[i], in[i]); | ||
192 | 155 | ||
193 | out[0] = s2; | 156 | out[0] = s2; |
194 | out[1] = s1; | 157 | out[1] = s1; |
195 | |||
196 | in += 2; | ||
197 | out += 2; | ||
198 | } | 158 | } |
199 | } | 159 | } |
200 | #endif | 160 | #endif |