summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/idct_armv6.S
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2009-07-12 13:14:35 +0000
committerJens Arnold <amiconn@rockbox.org>2009-07-12 13:14:35 +0000
commit02c031709c931da6f1ee9db0c6aadda2b37ae0aa (patch)
tree8bbe5490c0a5fe3c40b18d599e36103ac3eb72fa /apps/plugins/mpegplayer/idct_armv6.S
parente12c1c0a62a9ffd3456146f16a497ee3e9d5e089 (diff)
downloadrockbox-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.S35
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
198mpeg2_idct_copy: 198mpeg2_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
235mpeg2_idct_add: 235mpeg2_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
2431: 2431:
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
2923: 2923:
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
3004: 3004:
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