summaryrefslogtreecommitdiff
path: root/lib/rbcodec/dsp/dsp_arm_v6.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/dsp/dsp_arm_v6.S')
-rw-r--r--lib/rbcodec/dsp/dsp_arm_v6.S32
1 files changed, 18 insertions, 14 deletions
diff --git a/lib/rbcodec/dsp/dsp_arm_v6.S b/lib/rbcodec/dsp/dsp_arm_v6.S
index a9a88ce5bf..a36760f744 100644
--- a/lib/rbcodec/dsp/dsp_arm_v6.S
+++ b/lib/rbcodec/dsp/dsp_arm_v6.S
@@ -20,19 +20,21 @@
20 ****************************************************************************/ 20 ****************************************************************************/
21 21
22/**************************************************************************** 22/****************************************************************************
23 * void sample_output_mono(int count, struct dsp_data *data, 23 * void sample_output_mono(struct sample_io_data *this,
24 * const int32_t *src[], int16_t *dst) 24 * struct dsp_buffer *src,
25 * struct dsp_buffer *dst)
25 */ 26 */
26 .section .text, "ax", %progbits 27 .section .text
27 .align 2
28 .global sample_output_mono 28 .global sample_output_mono
29 .type sample_output_mono, %function 29 .type sample_output_mono, %function
30sample_output_mono: 30sample_output_mono:
31 @ input: r0 = count, r1 = data, r2 = src, r3 = dst 31 @ input: r0 = this, r1 = src, r2 = dst
32 stmfd sp!, { r4, lr } @ 32 stmfd sp!, { r4, lr } @
33 @ 33 @
34 ldr r1, [r1] @ r1 = data->output_scale 34 ldr r0, [r0] @ r0 = this->outcount
35 ldr r2, [r2] @ r2 = src[0] 35 ldr r3, [r2, #4] @ r3 = dst->p16out
36 ldr r2, [r1, #4] @ r2 = src->p32[0]
37 ldrb r1, [r1, #19] @ r1 = src->format.output_scale
36 @ 38 @
37 mov r4, #1 @ r4 = 1 << (scale - 1) 39 mov r4, #1 @ r4 = 1 << (scale - 1)
38 mov r4, r4, lsl r1 @ 40 mov r4, r4, lsl r1 @
@@ -68,19 +70,21 @@ sample_output_mono:
68 .size sample_output_mono, .-sample_output_mono 70 .size sample_output_mono, .-sample_output_mono
69 71
70/**************************************************************************** 72/****************************************************************************
71 * void sample_output_stereo(int count, struct dsp_data *data, 73 * void sample_output_stereo(struct sample_io_data *this,
72 * const int32_t *src[], int16_t *dst) 74 * struct dsp_buffer *src,
75 * struct dsp_buffer *dst)
73 */ 76 */
74 .section .text, "ax", %progbits 77 .section .text
75 .align 2
76 .global sample_output_stereo 78 .global sample_output_stereo
77 .type sample_output_stereo, %function 79 .type sample_output_stereo, %function
78sample_output_stereo: 80sample_output_stereo:
79 @ input: r0 = count, r1 = data, r2 = src, r3 = dst 81 @ input: r0 = this, r1 = src, r2 = dst
80 stmfd sp!, { r4-r7, lr } @ 82 stmfd sp!, { r4-r7, lr } @
81 @ 83 @
82 ldr r1, [r1] @ r1 = data->output_scale 84 ldr r0, [r0] @ r0 = this->outcount
83 ldmia r2, { r2, r4 } @ r2 = src[0], r4 = src[1] 85 ldr r3, [r2, #4] @ r3 = dst->p16out
86 ldmib r1, { r2, r4 } @ r2 = src->p32[0], r4 = src->p32[1]
87 ldrb r1, [r1, #19] @ r1 = src->format.output_scale
84 @ 88 @
85 mov r5, #1 @ r5 = 1 << (scale - 1) 89 mov r5, #1 @ r5 = 1 << (scale - 1)
86 mov r5, r5, lsl r1 @ 90 mov r5, r5, lsl r1 @