diff options
author | Jens Arnold <amiconn@rockbox.org> | 2009-07-12 13:14:35 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2009-07-12 13:14:35 +0000 |
commit | 02c031709c931da6f1ee9db0c6aadda2b37ae0aa (patch) | |
tree | 8bbe5490c0a5fe3c40b18d599e36103ac3eb72fa /apps/plugins/mpegplayer/idct_armv6.S | |
parent | e12c1c0a62a9ffd3456146f16a497ee3e9d5e089 (diff) | |
download | rockbox-02c031709c931da6f1ee9db0c6aadda2b37ae0aa.tar.gz rockbox-02c031709c931da6f1ee9db0c6aadda2b37ae0aa.zip |
* ARM asm DSP and codec/plugin functions: Use r12 scratch register properly
* Fix saving another unused reg in dsp code
* Use less regs in the generic ARM mpegplayer adding idct pure DC case
* Fix ARMv6 mpegplayer adding idct using an unsaved register in pure DC case
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21803 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/mpegplayer/idct_armv6.S')
-rw-r--r-- | apps/plugins/mpegplayer/idct_armv6.S | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/apps/plugins/mpegplayer/idct_armv6.S b/apps/plugins/mpegplayer/idct_armv6.S index 73feed4785..ca97d12b83 100644 --- a/apps/plugins/mpegplayer/idct_armv6.S +++ b/apps/plugins/mpegplayer/idct_armv6.S | |||
@@ -196,7 +196,7 @@ L_W0246: | |||
196 | 196 | ||
197 | 197 | ||
198 | mpeg2_idct_copy: | 198 | mpeg2_idct_copy: |
199 | stmfd sp!, {r1-r2, r4-r12, lr} | 199 | stmfd sp!, {r1-r2, r4-r11, lr} |
200 | bl .idct | 200 | bl .idct |
201 | ldmfd sp!, {r1-r2} | 201 | ldmfd sp!, {r1-r2} |
202 | 202 | ||
@@ -230,7 +230,7 @@ mpeg2_idct_copy: | |||
230 | cmp r0, r12 | 230 | cmp r0, r12 |
231 | blo 1b | 231 | blo 1b |
232 | 232 | ||
233 | ldmfd sp!, {r4-r12, pc} | 233 | ldmfd sp!, {r4-r11, pc} |
234 | 234 | ||
235 | mpeg2_idct_add: | 235 | mpeg2_idct_add: |
236 | cmp r0, #129 | 236 | cmp r0, #129 |
@@ -241,7 +241,7 @@ mpeg2_idct_add: | |||
241 | cmp r1, #0x40 | 241 | cmp r1, #0x40 |
242 | bne 3f | 242 | bne 3f |
243 | 1: | 243 | 1: |
244 | stmfd sp!, {r2-r12, lr} | 244 | stmfd sp!, {r2-r11, lr} |
245 | bl .idct | 245 | bl .idct |
246 | ldmfd sp!, {r1-r2} | 246 | ldmfd sp!, {r1-r2} |
247 | mov r11, #0 | 247 | mov r11, #0 |
@@ -287,21 +287,21 @@ mpeg2_idct_add: | |||
287 | add r1, r1, r2 | 287 | add r1, r1, r2 |
288 | cmp r0, r12 | 288 | cmp r0, r12 |
289 | blo 2b | 289 | blo 2b |
290 | ldmfd sp!, {r4-r12, pc} | 290 | ldmfd sp!, {r4-r11, pc} |
291 | 291 | ||
292 | 3: | 292 | 3: |
293 | stmfd sp!, {r4-r7} | 293 | stmfd sp!, {r4-r6, lr} |
294 | ldrsh r1, [r0, #0] /* r1 = block[0] */ | 294 | ldrsh r1, [r0, #0] /* r1 = block[0] */ |
295 | mov r11, #0 | 295 | mov r4, #0 |
296 | strh r11, [r0, #0] /* block[0] = 0 */ | 296 | strh r4, [r0, #0] /* block[0] = 0 */ |
297 | strh r11, [r0, #126] /* block[63] = 0 */ | 297 | strh r4, [r0, #126] /* block[63] = 0 */ |
298 | add r1, r1, #64 /* r1 = DC << 7 */ | 298 | add r1, r1, #64 /* r1 = DC << 7 */ |
299 | add r0, r2, r3, asl #3 | 299 | add r0, r2, r3, asl #3 |
300 | 4: | 300 | 4: |
301 | ldrb r4, [r2, #0] | 301 | ldrb r4, [r2, #0] |
302 | ldrb r5, [r2, #1] | 302 | ldrb r5, [r2, #1] |
303 | ldrb r6, [r2, #2] | 303 | ldrb r6, [r2, #2] |
304 | ldrb r7, [r2, #3] | 304 | ldrb lr, [r2, #3] |
305 | add r4, r4, r1, asr #7 | 305 | add r4, r4, r1, asr #7 |
306 | usat r4, #8, r4 | 306 | usat r4, #8, r4 |
307 | strb r4, [r2, #0] | 307 | strb r4, [r2, #0] |
@@ -311,13 +311,13 @@ mpeg2_idct_add: | |||
311 | add r6, r6, r1, asr #7 | 311 | add r6, r6, r1, asr #7 |
312 | usat r6, #8, r6 | 312 | usat r6, #8, r6 |
313 | strb r6, [r2, #2] | 313 | strb r6, [r2, #2] |
314 | add r7, r7, r1, asr #7 | 314 | add lr, lr, r1, asr #7 |
315 | usat r7, #8, r7 | 315 | usat lr, #8, lr |
316 | strb r7, [r2, #3] | 316 | strb lr, [r2, #3] |
317 | ldrb r4, [r2, #4] | 317 | ldrb r4, [r2, #4] |
318 | ldrb r5, [r2, #5] | 318 | ldrb r5, [r2, #5] |
319 | ldrb r6, [r2, #6] | 319 | ldrb r6, [r2, #6] |
320 | ldrb r7, [r2, #7] | 320 | ldrb lr, [r2, #7] |
321 | add r4, r4, r1, asr #7 | 321 | add r4, r4, r1, asr #7 |
322 | usat r4, #8, r4 | 322 | usat r4, #8, r4 |
323 | strb r4, [r2, #4] | 323 | strb r4, [r2, #4] |
@@ -327,11 +327,10 @@ mpeg2_idct_add: | |||
327 | add r6, r6, r1, asr #7 | 327 | add r6, r6, r1, asr #7 |
328 | usat r6, #8, r6 | 328 | usat r6, #8, r6 |
329 | strb r6, [r2, #6] | 329 | strb r6, [r2, #6] |
330 | add r7, r7, r1, asr #7 | 330 | add lr, lr, r1, asr #7 |
331 | usat r7, #8, r7 | 331 | usat lr, #8, lr |
332 | strb r7, [r2, #7] | 332 | strb lr, [r2, #7] |
333 | add r2, r2, r3 | 333 | add r2, r2, r3 |
334 | cmp r2, r0 | 334 | cmp r2, r0 |
335 | blo 4b | 335 | blo 4b |
336 | ldmfd sp!, {r4-r7} | 336 | ldmfd sp!, {r4-r6, pc} |
337 | bx lr | ||