diff options
author | Chris Chua <someone42@gmail.com> | 2023-03-19 06:22:08 +1100 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2023-03-23 13:28:22 -0400 |
commit | 86429dbf1eca8ee0e08176997f508647c3abf6bd (patch) | |
tree | 4d35e56e338a326d1a04c8d1f620821fa7909678 /apps | |
parent | a64cad847e7d24dc4d01d5ab22f6c8dc42f960ae (diff) | |
download | rockbox-86429dbf1eca8ee0e08176997f508647c3abf6bd.tar.gz rockbox-86429dbf1eca8ee0e08176997f508647c3abf6bd.zip |
Using ARM Unified Assembler Language
Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/mpegplayer/libmpeg2/idct_arm.S | 6 | ||||
-rw-r--r-- | apps/plugins/mpegplayer/libmpeg2/idct_armv6.S | 7 | ||||
-rw-r--r-- | apps/plugins/mpegplayer/mpeg_misc.h | 22 | ||||
-rw-r--r-- | apps/recorder/jpeg_idct_arm.S | 12 |
4 files changed, 25 insertions, 22 deletions
diff --git a/apps/plugins/mpegplayer/libmpeg2/idct_arm.S b/apps/plugins/mpegplayer/libmpeg2/idct_arm.S index 97a87a8b59..90eb5031c7 100644 --- a/apps/plugins/mpegplayer/libmpeg2/idct_arm.S +++ b/apps/plugins/mpegplayer/libmpeg2/idct_arm.S | |||
@@ -43,8 +43,8 @@ | |||
43 | ldrsh r7, [r0, #12] /* d2 */ | 43 | ldrsh r7, [r0, #12] /* d2 */ |
44 | ldrsh r8, [r0, #14] /* d3 */ | 44 | ldrsh r8, [r0, #14] /* d3 */ |
45 | orrs r9, r2, r3 | 45 | orrs r9, r2, r3 |
46 | orreqs r9, r4, r5 | 46 | orrseq r9, r4, r5 |
47 | orreqs r9, r6, r7 | 47 | orrseq r9, r6, r7 |
48 | cmpeq r8, #0 | 48 | cmpeq r8, #0 |
49 | bne 2f | 49 | bne 2f |
50 | mov r1, r1, asl #15 | 50 | mov r1, r1, asl #15 |
@@ -320,7 +320,7 @@ mpeg2_idct_copy: | |||
320 | mpeg2_idct_add: | 320 | mpeg2_idct_add: |
321 | cmp r0, #129 | 321 | cmp r0, #129 |
322 | mov r0, r1 | 322 | mov r0, r1 |
323 | ldreqsh r1, [r0, #0] | 323 | ldrsheq r1, [r0, #0] |
324 | bne 1f | 324 | bne 1f |
325 | and r1, r1, #0x70 | 325 | and r1, r1, #0x70 |
326 | cmp r1, #0x40 | 326 | cmp r1, #0x40 |
diff --git a/apps/plugins/mpegplayer/libmpeg2/idct_armv6.S b/apps/plugins/mpegplayer/libmpeg2/idct_armv6.S index dc53cbd7bd..a259721410 100644 --- a/apps/plugins/mpegplayer/libmpeg2/idct_armv6.S +++ b/apps/plugins/mpegplayer/libmpeg2/idct_armv6.S | |||
@@ -19,6 +19,7 @@ | |||
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | #include "config.h" | ||
22 | 23 | ||
23 | .global mpeg2_idct_copy | 24 | .global mpeg2_idct_copy |
24 | .type mpeg2_idct_copy, %function | 25 | .type mpeg2_idct_copy, %function |
@@ -228,7 +229,7 @@ mpeg2_idct_copy: | |||
228 | mpeg2_idct_add: | 229 | mpeg2_idct_add: |
229 | cmp r0, #129 | 230 | cmp r0, #129 |
230 | mov r0, r1 | 231 | mov r0, r1 |
231 | ldreqsh r1, [r0, #0] | 232 | ldrsheq r1, [r0, #0] |
232 | bne 1f | 233 | bne 1f |
233 | and r1, r1, #0x70 | 234 | and r1, r1, #0x70 |
234 | cmp r1, #0x40 | 235 | cmp r1, #0x40 |
@@ -260,7 +261,7 @@ mpeg2_idct_add: | |||
260 | strd r4, [r1] @ r4, r5 | 261 | strd r4, [r1] @ r4, r5 |
261 | add r1, r1, r2 | 262 | add r1, r1, r2 |
262 | cmp r0, r3 | 263 | cmp r0, r3 |
263 | ldrlod r8, [r1] @ r8, r9 | 264 | ldrdlo r8, [r1] @ r8, r9 |
264 | blo 2b | 265 | blo 2b |
265 | 266 | ||
266 | ldmfd sp!, {r4-r11, pc} | 267 | ldmfd sp!, {r4-r11, pc} |
@@ -291,7 +292,7 @@ mpeg2_idct_add: | |||
291 | strd r0, [r2] @ r0, r1 | 292 | strd r0, [r2] @ r0, r1 |
292 | add r2, r2, r3 | 293 | add r2, r2, r3 |
293 | cmp r2, r12 | 294 | cmp r2, r12 |
294 | ldrlod r0, [r2] @ r0, r1 | 295 | ldrdlo r0, [r2] @ r0, r1 |
295 | blo 4b | 296 | blo 4b |
296 | 297 | ||
297 | ldmfd sp!, {r4, pc} | 298 | ldmfd sp!, {r4, pc} |
diff --git a/apps/plugins/mpegplayer/mpeg_misc.h b/apps/plugins/mpegplayer/mpeg_misc.h index e04db0e19d..68ee8cac3c 100644 --- a/apps/plugins/mpegplayer/mpeg_misc.h +++ b/apps/plugins/mpegplayer/mpeg_misc.h | |||
@@ -53,12 +53,13 @@ enum state_enum | |||
53 | #define CMP_3_CONST(_a, _b) \ | 53 | #define CMP_3_CONST(_a, _b) \ |
54 | ({ int _x; \ | 54 | ({ int _x; \ |
55 | asm volatile ( \ | 55 | asm volatile ( \ |
56 | ".syntax unified \n" \ | ||
56 | "ldrb %[x], [%[a], #0] \n" \ | 57 | "ldrb %[x], [%[a], #0] \n" \ |
57 | "eors %[x], %[x], %[b0] \n" \ | 58 | "eors %[x], %[x], %[b0] \n" \ |
58 | "ldreqb %[x], [%[a], #1] \n" \ | 59 | "ldrbeq %[x], [%[a], #1] \n" \ |
59 | "eoreqs %[x], %[x], %[b1] \n" \ | 60 | "eorseq %[x], %[x], %[b1] \n" \ |
60 | "ldreqb %[x], [%[a], #2] \n" \ | 61 | "ldrbeq %[x], [%[a], #2] \n" \ |
61 | "eoreqs %[x], %[x], %[b2] \n" \ | 62 | "eorseq %[x], %[x], %[b2] \n" \ |
62 | : [x]"=&r"(_x) \ | 63 | : [x]"=&r"(_x) \ |
63 | : [a]"r"(_a), \ | 64 | : [a]"r"(_a), \ |
64 | [b0]"i"(((_b) >> 24) & 0xff), \ | 65 | [b0]"i"(((_b) >> 24) & 0xff), \ |
@@ -70,14 +71,15 @@ enum state_enum | |||
70 | #define CMP_4_CONST(_a, _b) \ | 71 | #define CMP_4_CONST(_a, _b) \ |
71 | ({ int _x; \ | 72 | ({ int _x; \ |
72 | asm volatile ( \ | 73 | asm volatile ( \ |
74 | ".syntax unified \n" \ | ||
73 | "ldrb %[x], [%[a], #0] \n" \ | 75 | "ldrb %[x], [%[a], #0] \n" \ |
74 | "eors %[x], %[x], %[b0] \n" \ | 76 | "eors %[x], %[x], %[b0] \n" \ |
75 | "ldreqb %[x], [%[a], #1] \n" \ | 77 | "ldrbeq %[x], [%[a], #1] \n" \ |
76 | "eoreqs %[x], %[x], %[b1] \n" \ | 78 | "eorseq %[x], %[x], %[b1] \n" \ |
77 | "ldreqb %[x], [%[a], #2] \n" \ | 79 | "ldrbeq %[x], [%[a], #2] \n" \ |
78 | "eoreqs %[x], %[x], %[b2] \n" \ | 80 | "eorseq %[x], %[x], %[b2] \n" \ |
79 | "ldreqb %[x], [%[a], #3] \n" \ | 81 | "ldrbeq %[x], [%[a], #3] \n" \ |
80 | "eoreqs %[x], %[x], %[b3] \n" \ | 82 | "eorseq %[x], %[x], %[b3] \n" \ |
81 | : [x]"=&r"(_x) \ | 83 | : [x]"=&r"(_x) \ |
82 | : [a]"r"(_a), \ | 84 | : [a]"r"(_a), \ |
83 | [b0]"i"(((_b) >> 24) & 0xff), \ | 85 | [b0]"i"(((_b) >> 24) & 0xff), \ |
diff --git a/apps/recorder/jpeg_idct_arm.S b/apps/recorder/jpeg_idct_arm.S index e7eb4b87f1..1f2603da1b 100644 --- a/apps/recorder/jpeg_idct_arm.S +++ b/apps/recorder/jpeg_idct_arm.S | |||
@@ -410,7 +410,7 @@ jpeg_idct8v: | |||
410 | #if ARM_ARCH < 5 | 410 | #if ARM_ARCH < 5 |
411 | mov r8, r4, lsl #16 | 411 | mov r8, r4, lsl #16 |
412 | orrs r9, r6, r7 | 412 | orrs r9, r6, r7 |
413 | orreqs r9, r5, r4, lsr #16 | 413 | orrseq r9, r5, r4, lsr #16 |
414 | bne 2f | 414 | bne 2f |
415 | mov r8, r8, asr #14 | 415 | mov r8, r8, asr #14 |
416 | strh r8, [r2] | 416 | strh r8, [r2] |
@@ -505,7 +505,7 @@ jpeg_idct8v: | |||
505 | #else /* ARMv5+ */ | 505 | #else /* ARMv5+ */ |
506 | mov r12, r4, lsl #16 | 506 | mov r12, r4, lsl #16 |
507 | orrs r9, r6, r7 | 507 | orrs r9, r6, r7 |
508 | orreqs r9, r5, r4, lsr #16 | 508 | orrseq r9, r5, r4, lsr #16 |
509 | bne 2f | 509 | bne 2f |
510 | mov r12, r12, asr #14 | 510 | mov r12, r12, asr #14 |
511 | strh r12, [r2] | 511 | strh r12, [r2] |
@@ -615,7 +615,7 @@ jpeg_idct8h: | |||
615 | #if ARM_ARCH < 5 | 615 | #if ARM_ARCH < 5 |
616 | add r8, r14, r4, lsl #16 | 616 | add r8, r14, r4, lsl #16 |
617 | orrs r9, r6, r7 | 617 | orrs r9, r6, r7 |
618 | orreqs r9, r5, r4, lsr #16 | 618 | orrseq r9, r5, r4, lsr #16 |
619 | bne 2f | 619 | bne 2f |
620 | mov r8, r8, asr #21 | 620 | mov r8, r8, asr #21 |
621 | cmp r8, #255 | 621 | cmp r8, #255 |
@@ -727,7 +727,7 @@ jpeg_idct8h: | |||
727 | #else /* ARMv5+ */ | 727 | #else /* ARMv5+ */ |
728 | add r12, r14, r4, lsl #16 | 728 | add r12, r14, r4, lsl #16 |
729 | orrs r9, r6, r7 | 729 | orrs r9, r6, r7 |
730 | orreqs r9, r5, r4, lsr #16 | 730 | orrseq r9, r5, r4, lsr #16 |
731 | bne 2f | 731 | bne 2f |
732 | mov r12, r12, asr #21 | 732 | mov r12, r12, asr #21 |
733 | cmp r12, #255 | 733 | cmp r12, #255 |
@@ -835,7 +835,7 @@ jpeg_idct8v: | |||
835 | 1: | 835 | 1: |
836 | ldmia r0!, { r4-r7 } | 836 | ldmia r0!, { r4-r7 } |
837 | orrs r9, r6, r7 | 837 | orrs r9, r6, r7 |
838 | orreqs r9, r5, r4, lsr #16 | 838 | orrseq r9, r5, r4, lsr #16 |
839 | bne 2f | 839 | bne 2f |
840 | mov r4, r4, lsl #2 | 840 | mov r4, r4, lsl #2 |
841 | strh r4, [r2] | 841 | strh r4, [r2] |
@@ -939,7 +939,7 @@ jpeg_idct8h: | |||
939 | ldmia r0!, { r4-r7 } | 939 | ldmia r0!, { r4-r7 } |
940 | sadd16 r4, r4, r14 | 940 | sadd16 r4, r4, r14 |
941 | orrs r9, r6, r7 | 941 | orrs r9, r6, r7 |
942 | orreqs r9, r5, r4, lsr #16 | 942 | orrseq r9, r5, r4, lsr #16 |
943 | bne 2f | 943 | bne 2f |
944 | sxth r4, r4 | 944 | sxth r4, r4 |
945 | usat r4, #8, r4, asr #5 | 945 | usat r4, #8, r4, asr #5 |