summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/lib/mdct_arm.S12
-rw-r--r--apps/codecs/libmad/synth_full_arm.S36
-rwxr-xr-xapps/codecs/libmusepack/synth_filter_arm.S54
-rw-r--r--apps/dsp_arm.S46
-rw-r--r--apps/plugins/mpegplayer/idct_arm.S69
-rw-r--r--apps/plugins/mpegplayer/idct_armv6.S35
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
121mdct_butterfly_32: 121mdct_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)
253mdct_butterfly_generic_loop: 253mdct_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]
2571: 2571:
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]
3431: 3431:
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
34synth_full1: 34synth_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
140synth_full2: 140synth_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
248III_aliasreduce: 248III_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
294csa: 294csa:
295 .word +0x0db84a81 295 .word +0x0db84a81
@@ -311,14 +311,14 @@ csa:
311 311
312 .global III_overlap 312 .global III_overlap
313III_overlap: 313III_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
338synth_full_sp: 338synth_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
163mpc_decoder_windowing_D: 163mpc_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
33channels_process_sound_chan_mono: 33channels_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
64channels_process_sound_chan_karaoke: 64channels_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
98sample_output_mono: 98sample_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
148sample_output_stereo: 148sample_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
270mpeg2_idct_copy: 270mpeg2_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
318mpeg2_idct_add: 318mpeg2_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
3261: 3261:
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 }
3893: 3893:
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
3974: 3974:
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
198mpeg2_idct_copy: 198mpeg2_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
235mpeg2_idct_add: 235mpeg2_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
2431: 2431:
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
2923: 2923:
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
3004: 3004:
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