diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/lib/mdct_arm.S | 12 | ||||
-rw-r--r-- | apps/codecs/libmad/synth_full_arm.S | 36 | ||||
-rwxr-xr-x | apps/codecs/libmusepack/synth_filter_arm.S | 54 | ||||
-rw-r--r-- | apps/dsp_arm.S | 46 | ||||
-rw-r--r-- | apps/plugins/mpegplayer/idct_arm.S | 69 | ||||
-rw-r--r-- | apps/plugins/mpegplayer/idct_armv6.S | 35 |
6 files changed, 125 insertions, 127 deletions
diff --git a/apps/codecs/lib/mdct_arm.S b/apps/codecs/lib/mdct_arm.S index f262951ea8..d082b4e932 100644 --- a/apps/codecs/lib/mdct_arm.S +++ b/apps/codecs/lib/mdct_arm.S | |||
@@ -119,7 +119,7 @@ mdct_butterfly_16: | |||
119 | ldr pc, [sp], #4 | 119 | ldr pc, [sp], #4 |
120 | 120 | ||
121 | mdct_butterfly_32: | 121 | mdct_butterfly_32: |
122 | stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} | 122 | stmdb sp!, {r4-r11, lr} |
123 | 123 | ||
124 | add r1, r0, #16*4 | 124 | add r1, r0, #16*4 |
125 | 125 | ||
@@ -247,13 +247,13 @@ mdct_butterfly_32: | |||
247 | add r0, r0, #16*4 | 247 | add r0, r0, #16*4 |
248 | bl mdct_butterfly_16 | 248 | bl mdct_butterfly_16 |
249 | 249 | ||
250 | ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} | 250 | ldmia sp!, {r4-r11, pc} |
251 | 251 | ||
252 | @ mdct_butterfly_generic_loop(x1, x2, T0, step, Ttop) | 252 | @ mdct_butterfly_generic_loop(x1, x2, T0, step, Ttop) |
253 | mdct_butterfly_generic_loop: | 253 | mdct_butterfly_generic_loop: |
254 | stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} | 254 | stmdb sp!, {r4-r11, lr} |
255 | str r2, [sp, #-4] | 255 | str r2, [sp, #-4] |
256 | ldr r4, [sp, #40] | 256 | ldr r4, [sp, #36] |
257 | 1: | 257 | 1: |
258 | ldmdb r0, {r6, r7, r8, r9} | 258 | ldmdb r0, {r6, r7, r8, r9} |
259 | ldmdb r1, {r10, r11, r12, r14} | 259 | ldmdb r1, {r10, r11, r12, r14} |
@@ -339,7 +339,7 @@ mdct_butterfly_generic_loop: | |||
339 | cmp r2, r4 | 339 | cmp r2, r4 |
340 | bhi 1b | 340 | bhi 1b |
341 | 341 | ||
342 | ldr r4, [sp, #40] | 342 | ldr r4, [sp, #36] |
343 | 1: | 343 | 1: |
344 | ldmdb r0, {r6, r7, r8, r9} | 344 | ldmdb r0, {r6, r7, r8, r9} |
345 | ldmdb r1, {r10, r11, r12, r14} | 345 | ldmdb r1, {r10, r11, r12, r14} |
@@ -425,5 +425,5 @@ mdct_butterfly_generic_loop: | |||
425 | cmp r2, r4 | 425 | cmp r2, r4 |
426 | bhi 1b | 426 | bhi 1b |
427 | 427 | ||
428 | ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} | 428 | ldmia sp!, {r4-r11, pc} |
429 | 429 | ||
diff --git a/apps/codecs/libmad/synth_full_arm.S b/apps/codecs/libmad/synth_full_arm.S index 99a223e784..419bf2b96e 100644 --- a/apps/codecs/libmad/synth_full_arm.S +++ b/apps/codecs/libmad/synth_full_arm.S | |||
@@ -32,8 +32,8 @@ | |||
32 | ;; r3 = D0ptr | 32 | ;; r3 = D0ptr |
33 | ;; r4 = D1ptr | 33 | ;; r4 = D1ptr |
34 | synth_full1: | 34 | synth_full1: |
35 | stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} | 35 | stmdb sp!, {r4-r11, lr} |
36 | ldr r4, [sp, #40] | 36 | ldr r4, [sp, #36] |
37 | ldr r5, =synth_full_sp | 37 | ldr r5, =synth_full_sp |
38 | str sp, [r5] | 38 | str sp, [r5] |
39 | mov r5, #15 | 39 | mov r5, #15 |
@@ -135,11 +135,11 @@ synth_full1: | |||
135 | 135 | ||
136 | ldr r5, =synth_full_sp | 136 | ldr r5, =synth_full_sp |
137 | ldr sp, [r5] | 137 | ldr sp, [r5] |
138 | ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} | 138 | ldmia sp!, {r4-r11, pc} |
139 | 139 | ||
140 | synth_full2: | 140 | synth_full2: |
141 | stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} | 141 | stmdb sp!, {r4-r11, lr} |
142 | ldr r4, [sp, #40] | 142 | ldr r4, [sp, #36] |
143 | ldr r5, =synth_full_sp | 143 | ldr r5, =synth_full_sp |
144 | str sp, [r5] | 144 | str sp, [r5] |
145 | mov r5, #15 | 145 | mov r5, #15 |
@@ -241,12 +241,12 @@ synth_full2: | |||
241 | 241 | ||
242 | ldr r5, =synth_full_sp | 242 | ldr r5, =synth_full_sp |
243 | ldr sp, [r5] | 243 | ldr sp, [r5] |
244 | ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} | 244 | ldmia sp!, {r4-r11, pc} |
245 | 245 | ||
246 | .global III_aliasreduce | 246 | .global III_aliasreduce |
247 | 247 | ||
248 | III_aliasreduce: | 248 | III_aliasreduce: |
249 | stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} | 249 | stmdb sp!, {r4-r11, lr} |
250 | add r1, r0, r1, lsl #2 | 250 | add r1, r0, r1, lsl #2 |
251 | add r0, r0, #72 | 251 | add r0, r0, #72 |
252 | .arl1: | 252 | .arl1: |
@@ -289,7 +289,7 @@ III_aliasreduce: | |||
289 | add r0, r0, #72 | 289 | add r0, r0, #72 |
290 | cmp r0, r1 | 290 | cmp r0, r1 |
291 | blo .arl1 | 291 | blo .arl1 |
292 | ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} | 292 | ldmia sp!, {r4-r11, pc} |
293 | 293 | ||
294 | csa: | 294 | csa: |
295 | .word +0x0db84a81 | 295 | .word +0x0db84a81 |
@@ -311,14 +311,14 @@ csa: | |||
311 | 311 | ||
312 | .global III_overlap | 312 | .global III_overlap |
313 | III_overlap: | 313 | III_overlap: |
314 | stmdb sp!, {r4, r5, r6, r7, r8, lr} | 314 | stmdb sp!, {r4-r7, lr} |
315 | add r2, r2, r3, lsl #2 | 315 | add r2, r2, r3, lsl #2 |
316 | mov r3, #6 | 316 | mov r3, #6 |
317 | .ol: | 317 | .ol: |
318 | ldmia r0!, {r4, r5, r6} | 318 | ldmia r0!, {r4, r5, r6} |
319 | ldmia r1!, {r7, r8, lr} | 319 | ldmia r1!, {r7, r12, lr} |
320 | add r4, r4, r7 | 320 | add r4, r4, r7 |
321 | add r5, r5, r8 | 321 | add r5, r5, r12 |
322 | add r6, r6, lr | 322 | add r6, r6, lr |
323 | str r4, [r2], #128 | 323 | str r4, [r2], #128 |
324 | str r5, [r2], #128 | 324 | str r5, [r2], #128 |
@@ -326,13 +326,13 @@ III_overlap: | |||
326 | subs r3, r3, #1 | 326 | subs r3, r3, #1 |
327 | bne .ol | 327 | bne .ol |
328 | sub r1, r1, #72 | 328 | sub r1, r1, #72 |
329 | ldmia r0!, {r4, r5, r6, r7, r8, lr} | 329 | ldmia r0!, {r4, r5, r6, r7, r12, lr} |
330 | stmia r1!, {r4, r5, r6, r7, r8, lr} | 330 | stmia r1!, {r4, r5, r6, r7, r12, lr} |
331 | ldmia r0!, {r4, r5, r6, r7, r8, lr} | 331 | ldmia r0!, {r4, r5, r6, r7, r12, lr} |
332 | stmia r1!, {r4, r5, r6, r7, r8, lr} | 332 | stmia r1!, {r4, r5, r6, r7, r12, lr} |
333 | ldmia r0!, {r4, r5, r6, r7, r8, lr} | 333 | ldmia r0!, {r4, r5, r6, r7, r12, lr} |
334 | stmia r1!, {r4, r5, r6, r7, r8, lr} | 334 | stmia r1!, {r4, r5, r6, r7, r12, lr} |
335 | ldmia sp!, {r4, r5, r6, r7, r8, pc} | 335 | ldmia sp!, {r4-r7, pc} |
336 | 336 | ||
337 | .section IBSS_SECTION_MPA_ARM,"aw",%nobits | 337 | .section IBSS_SECTION_MPA_ARM,"aw",%nobits |
338 | synth_full_sp: | 338 | synth_full_sp: |
diff --git a/apps/codecs/libmusepack/synth_filter_arm.S b/apps/codecs/libmusepack/synth_filter_arm.S index c2b28bd06f..8c87b61609 100755 --- a/apps/codecs/libmusepack/synth_filter_arm.S +++ b/apps/codecs/libmusepack/synth_filter_arm.S | |||
@@ -9,10 +9,10 @@ | |||
9 | * | 9 | * |
10 | * Copyright (C) 2008 by Andree Buschmann | 10 | * Copyright (C) 2008 by Andree Buschmann |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU General Public License | 13 | * modify it under the terms of the GNU General Public License |
14 | * as published by the Free Software Foundation; either version 2 | 14 | * as published by the Free Software Foundation; either version 2 |
15 | * of the License, or (at your option) any later version. | 15 | * of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | 17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
@@ -41,7 +41,7 @@ mpc_decoder_windowing_D: | |||
41 | /* r2 = D[] */ | 41 | /* r2 = D[] */ |
42 | /* lr = counter */ | 42 | /* lr = counter */ |
43 | 43 | ||
44 | stmfd sp!, {r4-r12, lr} | 44 | stmfd sp!, {r4-r11, lr} |
45 | 45 | ||
46 | mov lr, #32 | 46 | mov lr, #32 |
47 | .loop32: | 47 | .loop32: |
@@ -86,7 +86,7 @@ mpc_decoder_windowing_D: | |||
86 | subs lr, lr, #1 | 86 | subs lr, lr, #1 |
87 | bgt .loop32 | 87 | bgt .loop32 |
88 | 88 | ||
89 | ldmfd sp!, {r4-r12, pc} | 89 | ldmfd sp!, {r4-r11, pc} |
90 | .mpc_dewindowing_end: | 90 | .mpc_dewindowing_end: |
91 | .size mpc_decoder_windowing_D,.mpc_dewindowing_end-mpc_decoder_windowing_D | 91 | .size mpc_decoder_windowing_D,.mpc_dewindowing_end-mpc_decoder_windowing_D |
92 | #else | 92 | #else |
@@ -110,55 +110,55 @@ mpc_decoder_windowing_D: | |||
110 | /************************************************************************ | 110 | /************************************************************************ |
111 | * Reference implementation. | 111 | * Reference implementation. |
112 | ***********************************************************************/ | 112 | ***********************************************************************/ |
113 | stmfd sp!, {r4-r9, lr} | 113 | stmfd sp!, {r4-r8, lr} |
114 | 114 | ||
115 | mov lr, #32 | 115 | mov lr, #32 |
116 | .loop32: | 116 | .loop32: |
117 | ldmia r2!, { r3-r6 } /* load D[00..03] */ | 117 | ldmia r2!, { r3-r6 } /* load D[00..03] */ |
118 | ldr r7, [r1] /* 0 */ | 118 | ldr r7, [r1] /* 0 */ |
119 | smull r8, r9, r7, r3 | 119 | smull r8, r12, r7, r3 |
120 | ldr r7, [r1, #96*4] /* 1 */ | 120 | ldr r7, [r1, #96*4] /* 1 */ |
121 | smlal r8, r9, r7, r4 | 121 | smlal r8, r12, r7, r4 |
122 | ldr r7, [r1, #128*4] /* 2 */ | 122 | ldr r7, [r1, #128*4] /* 2 */ |
123 | smlal r8, r9, r7, r5 | 123 | smlal r8, r12, r7, r5 |
124 | ldr r7, [r1, #224*4] /* 3 */ | 124 | ldr r7, [r1, #224*4] /* 3 */ |
125 | smlal r8, r9, r7, r6 | 125 | smlal r8, r12, r7, r6 |
126 | ldmia r2!, { r3-r6 } /* load D[04..07] */ | 126 | ldmia r2!, { r3-r6 } /* load D[04..07] */ |
127 | ldr r7, [r1, #256*4] /* 4 */ | 127 | ldr r7, [r1, #256*4] /* 4 */ |
128 | smlal r8, r9, r7, r3 | 128 | smlal r8, r12, r7, r3 |
129 | ldr r7, [r1, #352*4] /* 5 */ | 129 | ldr r7, [r1, #352*4] /* 5 */ |
130 | smlal r8, r9, r7, r4 | 130 | smlal r8, r12, r7, r4 |
131 | ldr r7, [r1, #384*4] /* 6 */ | 131 | ldr r7, [r1, #384*4] /* 6 */ |
132 | smlal r8, r9, r7, r5 | 132 | smlal r8, r12, r7, r5 |
133 | ldr r7, [r1, #480*4] /* 7 */ | 133 | ldr r7, [r1, #480*4] /* 7 */ |
134 | smlal r8, r9, r7, r6 | 134 | smlal r8, r12, r7, r6 |
135 | ldmia r2!, { r3-r6 } /* load D[08..11] */ | 135 | ldmia r2!, { r3-r6 } /* load D[08..11] */ |
136 | ldr r7, [r1, #512*4] /* 8 */ | 136 | ldr r7, [r1, #512*4] /* 8 */ |
137 | smlal r8, r9, r7, r3 | 137 | smlal r8, r12, r7, r3 |
138 | ldr r7, [r1, #608*4] /* 9 */ | 138 | ldr r7, [r1, #608*4] /* 9 */ |
139 | smlal r8, r9, r7, r4 | 139 | smlal r8, r12, r7, r4 |
140 | ldr r7, [r1, #640*4] /* 10 */ | 140 | ldr r7, [r1, #640*4] /* 10 */ |
141 | smlal r8, r9, r7, r5 | 141 | smlal r8, r12, r7, r5 |
142 | ldr r7, [r1, #736*4] /* 11 */ | 142 | ldr r7, [r1, #736*4] /* 11 */ |
143 | smlal r8, r9, r7, r6 | 143 | smlal r8, r12, r7, r6 |
144 | ldmia r2!, { r3-r6 } /* load D[12..15] */ | 144 | ldmia r2!, { r3-r6 } /* load D[12..15] */ |
145 | ldr r7, [r1, #768*4] /* 12 */ | 145 | ldr r7, [r1, #768*4] /* 12 */ |
146 | smlal r8, r9, r7, r3 | 146 | smlal r8, r12, r7, r3 |
147 | ldr r7, [r1, #864*4] /* 13 */ | 147 | ldr r7, [r1, #864*4] /* 13 */ |
148 | smlal r8, r9, r7, r4 | 148 | smlal r8, r12, r7, r4 |
149 | ldr r7, [r1, #896*4] /* 14 */ | 149 | ldr r7, [r1, #896*4] /* 14 */ |
150 | smlal r8, r9, r7, r5 | 150 | smlal r8, r12, r7, r5 |
151 | ldr r7, [r1, #992*4] /* 15 */ | 151 | ldr r7, [r1, #992*4] /* 15 */ |
152 | smlal r8, r9, r7, r6 | 152 | smlal r8, r12, r7, r6 |
153 | mov r8, r8, lsr #16 | 153 | mov r8, r8, lsr #16 |
154 | orr r8, r8, r9, lsl #16 /* (lo>>16) || (hi<<16) */ | 154 | orr r8, r8, r12, lsl #16 /* (lo>>16) || (hi<<16) */ |
155 | str r8, [r0], #4 /* store Data */ | 155 | str r8, [r0], #4 /* store Data */ |
156 | add r1, r1, #4 /* V++ */ | 156 | add r1, r1, #4 /* V++ */ |
157 | 157 | ||
158 | subs lr, lr, #1 | 158 | subs lr, lr, #1 |
159 | bgt .loop32 | 159 | bgt .loop32 |
160 | 160 | ||
161 | ldmfd sp!, {r4-r9, pc} | 161 | ldmfd sp!, {r4-r8, pc} |
162 | #else | 162 | #else |
163 | mpc_decoder_windowing_D: | 163 | mpc_decoder_windowing_D: |
164 | /* r0 = Data[] */ | 164 | /* r0 = Data[] */ |
@@ -174,7 +174,7 @@ mpc_decoder_windowing_D: | |||
174 | * The row V[16] can be extracted as it has symmetries within this single | 174 | * The row V[16] can be extracted as it has symmetries within this single |
175 | * row. 8 smull/mlal and 8 ldr's can be saved. | 175 | * row. 8 smull/mlal and 8 ldr's can be saved. |
176 | ***********************************************************************/ | 176 | ***********************************************************************/ |
177 | stmfd sp!, {r4-r12, lr} | 177 | stmfd sp!, {r4-r11, lr} |
178 | 178 | ||
179 | /****************************************** | 179 | /****************************************** |
180 | * row 0 with internal symmetry | 180 | * row 0 with internal symmetry |
@@ -356,7 +356,7 @@ mpc_decoder_windowing_D: | |||
356 | str r8, [r0], #4 /* store Data */ | 356 | str r8, [r0], #4 /* store Data */ |
357 | add r1, r1, #4 /* V++ */ | 357 | add r1, r1, #4 /* V++ */ |
358 | 358 | ||
359 | ldmfd sp!, {r4-r12, pc} | 359 | ldmfd sp!, {r4-r11, pc} |
360 | #endif | 360 | #endif |
361 | .mpc_dewindowing_end: | 361 | .mpc_dewindowing_end: |
362 | .size mpc_decoder_windowing_D,.mpc_dewindowing_end-mpc_decoder_windowing_D | 362 | .size mpc_decoder_windowing_D,.mpc_dewindowing_end-mpc_decoder_windowing_D |
diff --git a/apps/dsp_arm.S b/apps/dsp_arm.S index 11b7ba7141..df05520e85 100644 --- a/apps/dsp_arm.S +++ b/apps/dsp_arm.S | |||
@@ -32,14 +32,14 @@ | |||
32 | .type channels_process_sound_chan_mono, %function | 32 | .type channels_process_sound_chan_mono, %function |
33 | channels_process_sound_chan_mono: | 33 | channels_process_sound_chan_mono: |
34 | @ input: r0 = count, r1 = buf | 34 | @ input: r0 = count, r1 = buf |
35 | stmfd sp!, {r4-r6, lr} | 35 | stmfd sp!, {r4-r5, lr} |
36 | ldmia r1, {r2-r3} @ r4 = buf[0], r5 = buf[1] | 36 | ldmia r1, {r2-r3} @ r4 = buf[0], r5 = buf[1] |
37 | 37 | ||
38 | .monoloop: | 38 | .monoloop: |
39 | ldmia r2, {r4-r5} | 39 | ldmia r2, {r4-r5} |
40 | ldmia r3, {r6,lr} | 40 | ldmia r3, {r12,lr} |
41 | mov r4, r4, asr #1 @ r4 = r4/2 | 41 | mov r4, r4, asr #1 @ r4 = r4/2 |
42 | add r4, r4, r6, asr #1 @ r4 = r4 + r6/2 = (buf[0]+buf[1])/2 | 42 | add r4, r4, r12, asr #1 @ r4 = r4 + r12/2 = (buf[0]+buf[1])/2 |
43 | mov r5, r5, asr #1 @ r5 = r5/2 | 43 | mov r5, r5, asr #1 @ r5 = r5/2 |
44 | add r5, r5, lr, asr #1 @ r5 = r5 + lr/2 = (buf[0]+buf[1])/2 | 44 | add r5, r5, lr, asr #1 @ r5 = r5 + lr/2 = (buf[0]+buf[1])/2 |
45 | stmia r2!, {r4-r5} | 45 | stmia r2!, {r4-r5} |
@@ -47,7 +47,7 @@ channels_process_sound_chan_mono: | |||
47 | subs r0, r0, #2 | 47 | subs r0, r0, #2 |
48 | bgt .monoloop | 48 | bgt .monoloop |
49 | 49 | ||
50 | ldmfd sp!, {r4-r6, pc} | 50 | ldmfd sp!, {r4-r5, pc} |
51 | .monoend: | 51 | .monoend: |
52 | .size channels_process_sound_chan_mono,.monoend-channels_process_sound_chan_mono | 52 | .size channels_process_sound_chan_mono,.monoend-channels_process_sound_chan_mono |
53 | 53 | ||
@@ -63,24 +63,24 @@ channels_process_sound_chan_mono: | |||
63 | .type channels_process_sound_chan_karaoke, %function | 63 | .type channels_process_sound_chan_karaoke, %function |
64 | channels_process_sound_chan_karaoke: | 64 | channels_process_sound_chan_karaoke: |
65 | @ input: r0 = count, r1 = buf | 65 | @ input: r0 = count, r1 = buf |
66 | stmfd sp!, {r4-r6, lr} | 66 | stmfd sp!, {r4-r5, lr} |
67 | ldmia r1, {r2-r3} @ r4 = buf[0], r5 = buf[1] | 67 | ldmia r1, {r2-r3} @ r4 = buf[0], r5 = buf[1] |
68 | 68 | ||
69 | .karaokeloop: | 69 | .karaokeloop: |
70 | ldmia r2, {r4-r5} | 70 | ldmia r2, {r4-r5} |
71 | ldmia r3, {r6,lr} | 71 | ldmia r3, {r12,lr} |
72 | mov r6, r6, asr #1 @ r6 = r6/2 | 72 | mov r12, r12, asr #1 @ r12 = r12/2 |
73 | rsb r4, r6, r4, asr #1 @ r4 = -r6 + r4/2 = (buf[0]-buf[1])/2 | 73 | rsb r4, r12, r4, asr #1 @ r4 = -r12 + r4/2 = (buf[0]-buf[1])/2 |
74 | rsb r6, r4, #0 @ r6 = -r4 | 74 | rsb r12, r4, #0 @ r12 = -r4 |
75 | mov lr, lr, asr #1 @ lr = lr/2 | 75 | mov lr, lr, asr #1 @ lr = lr/2 |
76 | rsb r5, lr, r5, asr #1 @ r5 = -lr + r5/2 = (buf[0]-buf[1])/2 | 76 | rsb r5, lr, r5, asr #1 @ r5 = -lr + r5/2 = (buf[0]-buf[1])/2 |
77 | rsb lr, r5, #0 @ lr = -r5 | 77 | rsb lr, r5, #0 @ lr = -r5 |
78 | stmia r2!, {r4-r5} | 78 | stmia r2!, {r4-r5} |
79 | stmia r3!, {r6,lr} | 79 | stmia r3!, {r12,lr} |
80 | subs r0, r0, #2 | 80 | subs r0, r0, #2 |
81 | bgt .karaokeloop | 81 | bgt .karaokeloop |
82 | 82 | ||
83 | ldmfd sp!, {r4-r6, pc} | 83 | ldmfd sp!, {r4-r5, pc} |
84 | .karaokeend: | 84 | .karaokeend: |
85 | .size channels_process_sound_chan_karaoke,.karaokeend-channels_process_sound_chan_karaoke | 85 | .size channels_process_sound_chan_karaoke,.karaokeend-channels_process_sound_chan_karaoke |
86 | 86 | ||
@@ -97,7 +97,7 @@ channels_process_sound_chan_karaoke: | |||
97 | .type sample_output_mono, %function | 97 | .type sample_output_mono, %function |
98 | sample_output_mono: | 98 | sample_output_mono: |
99 | @ input: r0 = count, r1 = data, r2 = src, r3 = dst | 99 | @ input: r0 = count, r1 = data, r2 = src, r3 = dst |
100 | stmfd sp!, {r4-r9, lr} | 100 | stmfd sp!, {r4-r7, lr} |
101 | 101 | ||
102 | ldr r4, [r2] @ r4 = src[0] | 102 | ldr r4, [r2] @ r4 = src[0] |
103 | ldr r5, [r1] @ lr = data->output_scale | 103 | ldr r5, [r1] @ lr = data->output_scale |
@@ -105,8 +105,8 @@ sample_output_mono: | |||
105 | mov r2, #1 | 105 | mov r2, #1 |
106 | mov r2, r2, asl r1 @ r2 = 1<<r1 = 1 << (scale-1) | 106 | mov r2, r2, asl r1 @ r2 = 1<<r1 = 1 << (scale-1) |
107 | mvn r1, #0x8000 @ r1 needed for clipping | 107 | mvn r1, #0x8000 @ r1 needed for clipping |
108 | mov r8, #0xff00 | 108 | mov r12, #0xff00 |
109 | orr r8, r8, #0xff @ r8 needed for masking | 109 | orr r12, r12, #0xff @ r12 needed for masking |
110 | 110 | ||
111 | .somloop: | 111 | .somloop: |
112 | ldmia r4!, {r6-r7} | 112 | ldmia r4!, {r6-r7} |
@@ -121,16 +121,16 @@ sample_output_mono: | |||
121 | teq lr, lr, asr #31 | 121 | teq lr, lr, asr #31 |
122 | eorne r7, r1, lr, asr #31 @ Clip (-32768...+32767) | 122 | eorne r7, r1, lr, asr #31 @ Clip (-32768...+32767) |
123 | 123 | ||
124 | and r6, r6, r8 | 124 | and r6, r6, r12 |
125 | orr r6, r6, r6, asl #16 @ pack first 2 halfwords into 1 word | 125 | orr r6, r6, r6, asl #16 @ pack first 2 halfwords into 1 word |
126 | and r7, r7, r8 | 126 | and r7, r7, r12 |
127 | orr r7, r7, r7, asl #16 @ pack last 2 halfwords into 1 word | 127 | orr r7, r7, r7, asl #16 @ pack last 2 halfwords into 1 word |
128 | stmia r3!, {r6-r7} | 128 | stmia r3!, {r6-r7} |
129 | 129 | ||
130 | subs r0, r0, #2 | 130 | subs r0, r0, #2 |
131 | bgt .somloop | 131 | bgt .somloop |
132 | 132 | ||
133 | ldmfd sp!, {r4-r9, pc} | 133 | ldmfd sp!, {r4-r7, pc} |
134 | .somend: | 134 | .somend: |
135 | .size sample_output_mono,.somend-sample_output_mono | 135 | .size sample_output_mono,.somend-sample_output_mono |
136 | 136 | ||
@@ -147,7 +147,7 @@ sample_output_mono: | |||
147 | .type sample_output_stereo, %function | 147 | .type sample_output_stereo, %function |
148 | sample_output_stereo: | 148 | sample_output_stereo: |
149 | @ input: r0 = count, r1 = data, r2 = src, r3 = dst | 149 | @ input: r0 = count, r1 = data, r2 = src, r3 = dst |
150 | stmfd sp!, {r4-r11, lr} | 150 | stmfd sp!, {r4-r10, lr} |
151 | 151 | ||
152 | ldmia r2, {r4-r5} @ r4 = src[0], r5 = src[1] | 152 | ldmia r2, {r4-r5} @ r4 = src[0], r5 = src[1] |
153 | ldr r6, [r1] @ r6 = data->output_scale | 153 | ldr r6, [r1] @ r6 = data->output_scale |
@@ -155,8 +155,8 @@ sample_output_stereo: | |||
155 | mov r2, #1 | 155 | mov r2, #1 |
156 | mov r2, r2, asl r1 @ r2 = 1<<r1 = 1 << (scale-1) | 156 | mov r2, r2, asl r1 @ r2 = 1<<r1 = 1 << (scale-1) |
157 | mvn r1, #0x8000 @ r1 needed for clipping | 157 | mvn r1, #0x8000 @ r1 needed for clipping |
158 | mov r11, #0xff00 | 158 | mov r12, #0xff00 |
159 | orr r11, r11, #0xff @ r11 needed for masking | 159 | orr r12, r12, #0xff @ r12 needed for masking |
160 | 160 | ||
161 | .sosloop: | 161 | .sosloop: |
162 | ldmia r4!, {r7-r8} | 162 | ldmia r4!, {r7-r8} |
@@ -183,16 +183,16 @@ sample_output_stereo: | |||
183 | teq lr, lr, asr #31 | 183 | teq lr, lr, asr #31 |
184 | eorne r10, r1, lr, asr #31 @ Clip (-32768...+32767) | 184 | eorne r10, r1, lr, asr #31 @ Clip (-32768...+32767) |
185 | 185 | ||
186 | and r7, r7, r11 | 186 | and r7, r7, r12 |
187 | orr r9, r7, r9, asl #16 @ pack first 2 halfwords into 1 word | 187 | orr r9, r7, r9, asl #16 @ pack first 2 halfwords into 1 word |
188 | and r8, r8, r11 | 188 | and r8, r8, r12 |
189 | orr r10, r8, r10, asl #16 @ pack last 2 halfwords into 1 word | 189 | orr r10, r8, r10, asl #16 @ pack last 2 halfwords into 1 word |
190 | stmia r3!, {r9-r10} | 190 | stmia r3!, {r9-r10} |
191 | 191 | ||
192 | subs r0, r0, #2 | 192 | subs r0, r0, #2 |
193 | bgt .sosloop | 193 | bgt .sosloop |
194 | 194 | ||
195 | ldmfd sp!, {r4-r11, pc} | 195 | ldmfd sp!, {r4-r10, pc} |
196 | .sosend: | 196 | .sosend: |
197 | .size sample_output_stereo,.sosend-sample_output_stereo | 197 | .size sample_output_stereo,.sosend-sample_output_stereo |
198 | 198 | ||
diff --git a/apps/plugins/mpegplayer/idct_arm.S b/apps/plugins/mpegplayer/idct_arm.S index 7de2d7f881..3cb1554de2 100644 --- a/apps/plugins/mpegplayer/idct_arm.S +++ b/apps/plugins/mpegplayer/idct_arm.S | |||
@@ -268,7 +268,7 @@ | |||
268 | bx lr | 268 | bx lr |
269 | 269 | ||
270 | mpeg2_idct_copy: | 270 | mpeg2_idct_copy: |
271 | stmfd sp!, { r1-r2, r4-r12, lr } | 271 | stmfd sp!, { r1-r2, r4-r11, lr } |
272 | bl .idct | 272 | bl .idct |
273 | ldmfd sp!, { r1-r2 } | 273 | ldmfd sp!, { r1-r2 } |
274 | mov r11, #0 | 274 | mov r11, #0 |
@@ -313,7 +313,7 @@ mpeg2_idct_copy: | |||
313 | add r1, r1, r2 | 313 | add r1, r1, r2 |
314 | cmp r0, r12 | 314 | cmp r0, r12 |
315 | blo 1b | 315 | blo 1b |
316 | ldmfd sp!, { r4-r12, pc } | 316 | ldmfd sp!, { r4-r11, pc } |
317 | 317 | ||
318 | mpeg2_idct_add: | 318 | mpeg2_idct_add: |
319 | cmp r0, #129 | 319 | cmp r0, #129 |
@@ -324,7 +324,7 @@ mpeg2_idct_add: | |||
324 | cmp r1, #0x40 | 324 | cmp r1, #0x40 |
325 | bne 3f | 325 | bne 3f |
326 | 1: | 326 | 1: |
327 | stmfd sp!, { r2-r12, lr } | 327 | stmfd sp!, { r2-r11, lr } |
328 | bl .idct | 328 | bl .idct |
329 | ldmfd sp!, { r1-r2 } | 329 | ldmfd sp!, { r1-r2 } |
330 | mov r11, #0 | 330 | mov r11, #0 |
@@ -385,24 +385,20 @@ mpeg2_idct_add: | |||
385 | add r1, r1, r2 | 385 | add r1, r1, r2 |
386 | cmp r0, r12 | 386 | cmp r0, r12 |
387 | blo 2b | 387 | blo 2b |
388 | ldmfd sp!, { r4-r12, pc } | 388 | ldmfd sp!, { r4-r11, pc } |
389 | 3: | 389 | 3: |
390 | stmfd sp!, { r4-r11 } | 390 | stmfd sp!, { r4-r6, lr } |
391 | ldrsh r1, [r0, #0] /* r1 = block[0] */ | 391 | ldrsh r1, [r0, #0] /* r1 = block[0] */ |
392 | mov r11, #0 | 392 | mov r4, #0 |
393 | strh r11, [r0, #0] /* block[0] = 0 */ | 393 | strh r4, [r0, #0] /* block[0] = 0 */ |
394 | strh r11, [r0, #126] /* block[63] = 0 */ | 394 | strh r4, [r0, #126] /* block[63] = 0 */ |
395 | add r1, r1, #64 /* r1 = DC << 7 */ | 395 | add r1, r1, #64 /* r1 = DC << 7 */ |
396 | add r0, r2, r3, asl #3 | 396 | add r0, r2, r3, asl #3 |
397 | 4: | 397 | 4: |
398 | ldrb r4, [r2, #0] | 398 | ldrb r4, [r2, #0] |
399 | ldrb r5, [r2, #1] | 399 | ldrb r5, [r2, #1] |
400 | ldrb r6, [r2, #2] | 400 | ldrb r6, [r2, #2] |
401 | ldrb r7, [r2, #3] | 401 | ldrb lr, [r2, #3] |
402 | ldrb r8, [r2, #4] | ||
403 | ldrb r9, [r2, #5] | ||
404 | ldrb r10, [r2, #6] | ||
405 | ldrb r11, [r2, #7] | ||
406 | add r4, r4, r1, asr #7 | 402 | add r4, r4, r1, asr #7 |
407 | cmp r4, #255 | 403 | cmp r4, #255 |
408 | mvnhi r4, r4, asr #31 | 404 | mvnhi r4, r4, asr #31 |
@@ -415,28 +411,31 @@ mpeg2_idct_add: | |||
415 | cmp r6, #255 | 411 | cmp r6, #255 |
416 | mvnhi r6, r6, asr #31 | 412 | mvnhi r6, r6, asr #31 |
417 | strb r6, [r2, #2] | 413 | strb r6, [r2, #2] |
418 | add r7, r7, r1, asr #7 | 414 | add lr, lr, r1, asr #7 |
419 | cmp r7, #255 | 415 | cmp lr, #255 |
420 | mvnhi r7, r7, asr #31 | 416 | mvnhi lr, lr, asr #31 |
421 | strb r7, [r2, #3] | 417 | strb lr, [r2, #3] |
422 | add r8, r8, r1, asr #7 | 418 | ldrb r4, [r2, #4] |
423 | cmp r8, #255 | 419 | ldrb r5, [r2, #5] |
424 | mvnhi r8, r8, asr #31 | 420 | ldrb r6, [r2, #6] |
425 | strb r8, [r2, #4] | 421 | ldrb lr, [r2, #7] |
426 | add r9, r9, r1, asr #7 | 422 | add r4, r4, r1, asr #7 |
427 | cmp r9, #255 | 423 | cmp r4, #255 |
428 | mvnhi r9, r9, asr #31 | 424 | mvnhi r4, r4, asr #31 |
429 | strb r9, [r2, #5] | 425 | strb r4, [r2, #4] |
430 | add r10, r10, r1, asr #7 | 426 | add r5, r5, r1, asr #7 |
431 | cmp r10, #255 | 427 | cmp r5, #255 |
432 | mvnhi r10, r10, asr #31 | 428 | mvnhi r5, r5, asr #31 |
433 | strb r10, [r2, #6] | 429 | strb r5, [r2, #5] |
434 | add r11, r11, r1, asr #7 | 430 | add r6, r6, r1, asr #7 |
435 | cmp r11, #255 | 431 | cmp r6, #255 |
436 | mvnhi r11, r11, asr #31 | 432 | mvnhi r6, r6, asr #31 |
437 | strb r11, [r2, #7] | 433 | strb r6, [r2, #6] |
434 | add lr, lr, r1, asr #7 | ||
435 | cmp lr, #255 | ||
436 | mvnhi lr, lr, asr #31 | ||
437 | strb lr, [r2, #7] | ||
438 | add r2, r2, r3 | 438 | add r2, r2, r3 |
439 | cmp r2, r0 | 439 | cmp r2, r0 |
440 | blo 4b | 440 | blo 4b |
441 | ldmfd sp!, { r4-r11 } | 441 | ldmfd sp!, { r4-r6, pc } |
442 | bx lr | ||
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 | ||
198 | mpeg2_idct_copy: | 198 | mpeg2_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 | ||
235 | mpeg2_idct_add: | 235 | mpeg2_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 |
243 | 1: | 243 | 1: |
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 | ||
292 | 3: | 292 | 3: |
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 |
300 | 4: | 300 | 4: |
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 | ||