mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 13:12:37 -05:00
Using ARM Unified Assembler Language
Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
This commit is contained in:
parent
a64cad847e
commit
86429dbf1e
23 changed files with 139 additions and 127 deletions
|
|
@ -43,8 +43,8 @@
|
|||
ldrsh r7, [r0, #12] /* d2 */
|
||||
ldrsh r8, [r0, #14] /* d3 */
|
||||
orrs r9, r2, r3
|
||||
orreqs r9, r4, r5
|
||||
orreqs r9, r6, r7
|
||||
orrseq r9, r4, r5
|
||||
orrseq r9, r6, r7
|
||||
cmpeq r8, #0
|
||||
bne 2f
|
||||
mov r1, r1, asl #15
|
||||
|
|
@ -320,7 +320,7 @@ mpeg2_idct_copy:
|
|||
mpeg2_idct_add:
|
||||
cmp r0, #129
|
||||
mov r0, r1
|
||||
ldreqsh r1, [r0, #0]
|
||||
ldrsheq r1, [r0, #0]
|
||||
bne 1f
|
||||
and r1, r1, #0x70
|
||||
cmp r1, #0x40
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
.global mpeg2_idct_copy
|
||||
.type mpeg2_idct_copy, %function
|
||||
|
|
@ -228,7 +229,7 @@ mpeg2_idct_copy:
|
|||
mpeg2_idct_add:
|
||||
cmp r0, #129
|
||||
mov r0, r1
|
||||
ldreqsh r1, [r0, #0]
|
||||
ldrsheq r1, [r0, #0]
|
||||
bne 1f
|
||||
and r1, r1, #0x70
|
||||
cmp r1, #0x40
|
||||
|
|
@ -260,7 +261,7 @@ mpeg2_idct_add:
|
|||
strd r4, [r1] @ r4, r5
|
||||
add r1, r1, r2
|
||||
cmp r0, r3
|
||||
ldrlod r8, [r1] @ r8, r9
|
||||
ldrdlo r8, [r1] @ r8, r9
|
||||
blo 2b
|
||||
|
||||
ldmfd sp!, {r4-r11, pc}
|
||||
|
|
@ -291,7 +292,7 @@ mpeg2_idct_add:
|
|||
strd r0, [r2] @ r0, r1
|
||||
add r2, r2, r3
|
||||
cmp r2, r12
|
||||
ldrlod r0, [r2] @ r0, r1
|
||||
ldrdlo r0, [r2] @ r0, r1
|
||||
blo 4b
|
||||
|
||||
ldmfd sp!, {r4, pc}
|
||||
|
|
|
|||
|
|
@ -53,12 +53,13 @@ enum state_enum
|
|||
#define CMP_3_CONST(_a, _b) \
|
||||
({ int _x; \
|
||||
asm volatile ( \
|
||||
".syntax unified \n" \
|
||||
"ldrb %[x], [%[a], #0] \n" \
|
||||
"eors %[x], %[x], %[b0] \n" \
|
||||
"ldreqb %[x], [%[a], #1] \n" \
|
||||
"eoreqs %[x], %[x], %[b1] \n" \
|
||||
"ldreqb %[x], [%[a], #2] \n" \
|
||||
"eoreqs %[x], %[x], %[b2] \n" \
|
||||
"ldrbeq %[x], [%[a], #1] \n" \
|
||||
"eorseq %[x], %[x], %[b1] \n" \
|
||||
"ldrbeq %[x], [%[a], #2] \n" \
|
||||
"eorseq %[x], %[x], %[b2] \n" \
|
||||
: [x]"=&r"(_x) \
|
||||
: [a]"r"(_a), \
|
||||
[b0]"i"(((_b) >> 24) & 0xff), \
|
||||
|
|
@ -70,14 +71,15 @@ enum state_enum
|
|||
#define CMP_4_CONST(_a, _b) \
|
||||
({ int _x; \
|
||||
asm volatile ( \
|
||||
".syntax unified \n" \
|
||||
"ldrb %[x], [%[a], #0] \n" \
|
||||
"eors %[x], %[x], %[b0] \n" \
|
||||
"ldreqb %[x], [%[a], #1] \n" \
|
||||
"eoreqs %[x], %[x], %[b1] \n" \
|
||||
"ldreqb %[x], [%[a], #2] \n" \
|
||||
"eoreqs %[x], %[x], %[b2] \n" \
|
||||
"ldreqb %[x], [%[a], #3] \n" \
|
||||
"eoreqs %[x], %[x], %[b3] \n" \
|
||||
"ldrbeq %[x], [%[a], #1] \n" \
|
||||
"eorseq %[x], %[x], %[b1] \n" \
|
||||
"ldrbeq %[x], [%[a], #2] \n" \
|
||||
"eorseq %[x], %[x], %[b2] \n" \
|
||||
"ldrbeq %[x], [%[a], #3] \n" \
|
||||
"eorseq %[x], %[x], %[b3] \n" \
|
||||
: [x]"=&r"(_x) \
|
||||
: [a]"r"(_a), \
|
||||
[b0]"i"(((_b) >> 24) & 0xff), \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue