summaryrefslogtreecommitdiff
path: root/audio_codec/libraac/sbrcov.s (plain)
blob: 0239712ab207581f782883b9d0af0aef3c2c5cc2
1@ ***** BEGIN LICENSE BLOCK *****
2@ Source last modified: $Id: sbrcov.s,v 1.1 2005/04/08 21:59:46 jrecker Exp $
3@
4@ Portions Copyright (c) 1995-2005 RealNetworks, Inc. All Rights Reserved.
5@
6@ The contents of this file, and the files included with this file,
7@ are subject to the current version of the RealNetworks Public
8@ Source License (the "RPSL") available at
9@ http://www.helixcommunity.org/content/rpsl unless you have licensed
10@ the file under the current version of the RealNetworks Community
11@ Source License (the "RCSL") available at
12@ http://www.helixcommunity.org/content/rcsl, in which case the RCSL
13@ will apply. You may also obtain the license terms directly from
14@ RealNetworks. You may not use this file except in compliance with
15@ the RPSL or, if you have a valid RCSL with RealNetworks applicable
16@ to this file, the RCSL. Please see the applicable RPSL or RCSL for
17@ the rights, obligations and limitations governing use of the
18@ contents of the file.
19@
20@ This file is part of the Helix DNA Technology. RealNetworks is the
21@ developer and/or licensor of the Original Code and owns the
22@ copyrights in the portions it created.
23@
24@ This file, and the files included with this file, is distributed
25@ and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
26@ KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
27@ ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
28@ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
29@ ENJOYMENT OR NON-INFRINGEMENT.
30@
31@ Technology Compatibility Kit Test Suite(s) Location:
32@ http://www.helixcommunity.org/content/tck
33@
34@ Contributor(s):
35@
36@ ***** END LICENSE BLOCK *****
37
38 .text
39 .code 32
40 .align
41
42@ void CVKernel1(int *XBuf, int *accBuf)
43@ see comments in sbrhfgen.c
44
45 .global raac_CVKernel1
46 .type raac_CVKernel1, %function
47raac_CVKernel1:
48
49 stmfd sp!, {r4-r11, r14}
50
51 ldr r3, [r0], #4*(1)
52 ldr r4, [r0], #4*(2*64-1)
53 ldr r5, [r0], #4*(1)
54 ldr r6, [r0], #4*(2*64-1)
55 rsb r14, r4, #0
56
57 smull r7, r8, r5, r3
58 smlal r7, r8, r6, r4
59 smull r9, r10, r3, r6
60 smlal r9, r10, r14, r5
61 smull r11, r12, r3, r3
62 smlal r11, r12, r4, r4
63
64 add r2, r1, #(4*6)
65 stmia r2, {r7-r12}
66
67 mov r7, #0
68 mov r8, #0
69 mov r9, #0
70 mov r10, #0
71 mov r11, #0
72 mov r12, #0
73
74 mov r2, #(16*2 + 6)
75CV1_Loop_Start:
76 mov r3, r5
77 ldr r5, [r0], #4*(1)
78 mov r4, r6
79 ldr r6, [r0], #4*(2*64-1)
80 rsb r14, r4, #0
81
82 smlal r7, r8, r5, r3
83 smlal r7, r8, r6, r4
84 smlal r9, r10, r3, r6
85 smlal r9, r10, r14, r5
86 smlal r11, r12, r3, r3
87 smlal r11, r12, r4, r4
88
89 subs r2, r2, #1
90 bne CV1_Loop_Start
91
92 stmia r1, {r7-r12}
93
94 ldr r0, [r1, #4*(6)]
95 ldr r2, [r1, #4*(7)]
96 rsb r3, r3, #0
97 adds r7, r0, r7
98 adc r8, r2, r8
99 smlal r7, r8, r5, r3
100 smlal r7, r8, r6, r14
101
102 ldr r0, [r1, #4*(8)]
103 ldr r2, [r1, #4*(9)]
104 adds r9, r0, r9
105 adc r10, r2, r10
106 smlal r9, r10, r3, r6
107 smlal r9, r10, r4, r5
108
109 ldr r0, [r1, #4*(10)]
110 ldr r2, [r1, #4*(11)]
111 adds r11, r0, r11
112 adc r12, r2, r12
113 rsb r0, r3, #0
114 smlal r11, r12, r3, r0
115 rsb r2, r4, #0
116 smlal r11, r12, r4, r2
117
118 add r1, r1, #(4*6)
119 stmia r1, {r7-r12}
120
121 ldmfd sp!, {r4-r11, pc}
122
123@ void CVKernel2(int *XBuf, int *accBuf)
124@ see comments in sbrhfgen.c
125
126 .global raac_CVKernel2
127 .type raac_CVKernel2, %function
128raac_CVKernel2:
129 stmfd sp!, {r4-r11, r14}
130
131 mov r7, #0
132 mov r8, #0
133 mov r9, #0
134 mov r10, #0
135
136 ldr r3, [r0], #4*(1)
137 ldr r4, [r0], #4*(2*64-1)
138 ldr r5, [r0], #4*(1)
139 ldr r6, [r0], #4*(2*64-1)
140
141 mov r2, #(16*2 + 6)
142CV2_Loop_Start:
143 ldr r11, [r0], #4*(1)
144 ldr r12, [r0], #4*(2*64-1)
145 rsb r14, r4, #0
146
147 smlal r7, r8, r11, r3
148 smlal r7, r8, r12, r4
149 smlal r9, r10, r3, r12
150 smlal r9, r10, r14, r11
151
152 mov r3, r5
153 mov r4, r6
154 mov r5, r11
155 mov r6, r12
156
157 subs r2, r2, #1
158 bne CV2_Loop_Start
159
160 stmia r1, {r7-r10}
161
162 ldmfd sp!, {r4-r11, pc}
163
164 .end
165