summaryrefslogtreecommitdiff
path: root/apps/plugins
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
parente12c1c0a62a9ffd3456146f16a497ee3e9d5e089 (diff)
downloadrockbox-02c031709c931da6f1ee9db0c6aadda2b37ae0aa.zip
rockbox-02c031709c931da6f1ee9db0c6aadda2b37ae0aa.tar.gz
rockbox-02c031709c931da6f1ee9db0c6aadda2b37ae0aa.tar.bz2
rockbox-02c031709c931da6f1ee9db0c6aadda2b37ae0aa.tar.xz
* 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')
-rw-r--r--apps/plugins/mpegplayer/idct_arm.S69
-rw-r--r--apps/plugins/mpegplayer/idct_armv6.S35
2 files changed, 51 insertions, 53 deletions
diff --git a/apps/plugins/mpegplayer/idct_arm.S b/apps/plugins/mpegplayer/idct_arm.S
index 7de2d7f..3cb1554 100644
--- a/apps/plugins/mpegplayer/idct_arm.S
+++ b/apps/plugins/mpegplayer/idct_arm.S
@@ -268,7 +268,7 @@
bx lr
mpeg2_idct_copy:
- stmfd sp!, { r1-r2, r4-r12, lr }
+ stmfd sp!, { r1-r2, r4-r11, lr }
bl .idct
ldmfd sp!, { r1-r2 }
mov r11, #0
@@ -313,7 +313,7 @@ mpeg2_idct_copy:
add r1, r1, r2
cmp r0, r12
blo 1b
- ldmfd sp!, { r4-r12, pc }
+ ldmfd sp!, { r4-r11, pc }
mpeg2_idct_add:
cmp r0, #129
@@ -324,7 +324,7 @@ mpeg2_idct_add:
cmp r1, #0x40
bne 3f
1:
- stmfd sp!, { r2-r12, lr }
+ stmfd sp!, { r2-r11, lr }
bl .idct
ldmfd sp!, { r1-r2 }
mov r11, #0
@@ -385,24 +385,20 @@ mpeg2_idct_add:
add r1, r1, r2
cmp r0, r12
blo 2b
- ldmfd sp!, { r4-r12, pc }
+ ldmfd sp!, { r4-r11, pc }
3:
- stmfd sp!, { r4-r11 }
+ stmfd sp!, { r4-r6, lr }
ldrsh r1, [r0, #0] /* r1 = block[0] */
- mov r11, #0
- strh r11, [r0, #0] /* block[0] = 0 */
- strh r11, [r0, #126] /* block[63] = 0 */
+ mov r4, #0
+ strh r4, [r0, #0] /* block[0] = 0 */
+ strh r4, [r0, #126] /* block[63] = 0 */
add r1, r1, #64 /* r1 = DC << 7 */
add r0, r2, r3, asl #3
4:
ldrb r4, [r2, #0]
ldrb r5, [r2, #1]
ldrb r6, [r2, #2]
- ldrb r7, [r2, #3]
- ldrb r8, [r2, #4]
- ldrb r9, [r2, #5]
- ldrb r10, [r2, #6]
- ldrb r11, [r2, #7]
+ ldrb lr, [r2, #3]
add r4, r4, r1, asr #7
cmp r4, #255
mvnhi r4, r4, asr #31
@@ -415,28 +411,31 @@ mpeg2_idct_add:
cmp r6, #255
mvnhi r6, r6, asr #31
strb r6, [r2, #2]
- add r7, r7, r1, asr #7
- cmp r7, #255
- mvnhi r7, r7, asr #31
- strb r7, [r2, #3]
- add r8, r8, r1, asr #7
- cmp r8, #255
- mvnhi r8, r8, asr #31
- strb r8, [r2, #4]
- add r9, r9, r1, asr #7
- cmp r9, #255
- mvnhi r9, r9, asr #31
- strb r9, [r2, #5]
- add r10, r10, r1, asr #7
- cmp r10, #255
- mvnhi r10, r10, asr #31
- strb r10, [r2, #6]
- add r11, r11, r1, asr #7
- cmp r11, #255
- mvnhi r11, r11, asr #31
- strb r11, [r2, #7]
+ add lr, lr, r1, asr #7
+ cmp lr, #255
+ mvnhi lr, lr, asr #31
+ strb lr, [r2, #3]
+ ldrb r4, [r2, #4]
+ ldrb r5, [r2, #5]
+ ldrb r6, [r2, #6]
+ ldrb lr, [r2, #7]
+ add r4, r4, r1, asr #7
+ cmp r4, #255
+ mvnhi r4, r4, asr #31
+ strb r4, [r2, #4]
+ add r5, r5, r1, asr #7
+ cmp r5, #255
+ mvnhi r5, r5, asr #31
+ strb r5, [r2, #5]
+ add r6, r6, r1, asr #7
+ cmp r6, #255
+ mvnhi r6, r6, asr #31
+ strb r6, [r2, #6]
+ add lr, lr, r1, asr #7
+ cmp lr, #255
+ mvnhi lr, lr, asr #31
+ strb lr, [r2, #7]
add r2, r2, r3
cmp r2, r0
blo 4b
- ldmfd sp!, { r4-r11 }
- bx lr
+ ldmfd sp!, { r4-r6, pc }
diff --git a/apps/plugins/mpegplayer/idct_armv6.S b/apps/plugins/mpegplayer/idct_armv6.S
index 73feed4..ca97d12 100644
--- a/apps/plugins/mpegplayer/idct_armv6.S
+++ b/apps/plugins/mpegplayer/idct_armv6.S
@@ -196,7 +196,7 @@ L_W0246:
mpeg2_idct_copy:
- stmfd sp!, {r1-r2, r4-r12, lr}
+ stmfd sp!, {r1-r2, r4-r11, lr}
bl .idct
ldmfd sp!, {r1-r2}
@@ -230,7 +230,7 @@ mpeg2_idct_copy:
cmp r0, r12
blo 1b
- ldmfd sp!, {r4-r12, pc}
+ ldmfd sp!, {r4-r11, pc}
mpeg2_idct_add:
cmp r0, #129
@@ -241,7 +241,7 @@ mpeg2_idct_add:
cmp r1, #0x40
bne 3f
1:
- stmfd sp!, {r2-r12, lr}
+ stmfd sp!, {r2-r11, lr}
bl .idct
ldmfd sp!, {r1-r2}
mov r11, #0
@@ -287,21 +287,21 @@ mpeg2_idct_add:
add r1, r1, r2
cmp r0, r12
blo 2b
- ldmfd sp!, {r4-r12, pc}
+ ldmfd sp!, {r4-r11, pc}
3:
- stmfd sp!, {r4-r7}
+ stmfd sp!, {r4-r6, lr}
ldrsh r1, [r0, #0] /* r1 = block[0] */
- mov r11, #0
- strh r11, [r0, #0] /* block[0] = 0 */
- strh r11, [r0, #126] /* block[63] = 0 */
+ mov r4, #0
+ strh r4, [r0, #0] /* block[0] = 0 */
+ strh r4, [r0, #126] /* block[63] = 0 */
add r1, r1, #64 /* r1 = DC << 7 */
add r0, r2, r3, asl #3
4:
ldrb r4, [r2, #0]
ldrb r5, [r2, #1]
ldrb r6, [r2, #2]
- ldrb r7, [r2, #3]
+ ldrb lr, [r2, #3]
add r4, r4, r1, asr #7
usat r4, #8, r4
strb r4, [r2, #0]
@@ -311,13 +311,13 @@ mpeg2_idct_add:
add r6, r6, r1, asr #7
usat r6, #8, r6
strb r6, [r2, #2]
- add r7, r7, r1, asr #7
- usat r7, #8, r7
- strb r7, [r2, #3]
+ add lr, lr, r1, asr #7
+ usat lr, #8, lr
+ strb lr, [r2, #3]
ldrb r4, [r2, #4]
ldrb r5, [r2, #5]
ldrb r6, [r2, #6]
- ldrb r7, [r2, #7]
+ ldrb lr, [r2, #7]
add r4, r4, r1, asr #7
usat r4, #8, r4
strb r4, [r2, #4]
@@ -327,11 +327,10 @@ mpeg2_idct_add:
add r6, r6, r1, asr #7
usat r6, #8, r6
strb r6, [r2, #6]
- add r7, r7, r1, asr #7
- usat r7, #8, r7
- strb r7, [r2, #7]
+ add lr, lr, r1, asr #7
+ usat lr, #8, lr
+ strb lr, [r2, #7]
add r2, r2, r3
cmp r2, r0
blo 4b
- ldmfd sp!, {r4-r7}
- bx lr
+ ldmfd sp!, {r4-r6, pc}