forked from len0rd/rockbox
* 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
This commit is contained in:
parent
e12c1c0a62
commit
02c031709c
6 changed files with 125 additions and 127 deletions
|
@ -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 }
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue