1e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@/*
2e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** Copyright 2003-2010, VisualOn, Inc.
3e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ **
4e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** Licensed under the Apache License, Version 2.0 (the "License");
5e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** you may not use this file except in compliance with the License.
6e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** You may obtain a copy of the License at
7e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ **
8e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ **     http://www.apache.org/licenses/LICENSE-2.0
9e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ **
10e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** Unless required by applicable law or agreed to in writing, software
11e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** distributed under the License is distributed on an "AS IS" BASIS,
12e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** See the License for the specific language governing permissions and
14e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ ** limitations under the License.
15e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ */
16e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@**********************************************************************/
17e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@void Syn_filt(
18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@     Word16 a[],                           /* (i) Q12 : a[m+1] prediction coefficients           */
19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@     Word16 x[],                           /* (i)     : input signal                             */
20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@     Word16 y[],                           /* (o)     : output signal                            */
21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@     Word16 mem[],                         /* (i/o)   : memory associated with this filtering.   */
22e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@)
23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@***********************************************************************
24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ a[]    ---   r0
25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ x[]    ---   r1
26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ y[]    ---   r2
27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ mem[]  ---   r3
28e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ m ---  16  lg --- 80  update --- 1
29e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
30e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          .section  .text
31e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	  .global   Syn_filt_asm
32e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          .extern   voAWB_Copy
33e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
34e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardSyn_filt_asm:
35e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
36b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          STMFD   	r13!, {r4 - r12, r14}
37e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SUB           r13, r13, #700                   @ y_buf[L_FRAME16k + M16k]
38b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
39e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r4, r3                           @ copy mem[] address
40e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r5, r13                          @ copy yy = y_buf address
41e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
42e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @ for(i = 0@ i < m@ i++)
43e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @{
44e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @    *yy++ = mem[i]@
45b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          @}
46e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
47b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          LDRH          r6,  [r4], #2
48e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r7,  [r4], #2
49e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r8,  [r4], #2
50e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r9,  [r4], #2
51e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r10, [r4], #2
52e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r11, [r4], #2
53e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r12, [r4], #2
54e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r14, [r4], #2
55e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r6,  [r5], #2
57e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r7,  [r5], #2
58e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r8,  [r5], #2
59e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r9,  [r5], #2
60e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r10, [r5], #2
61e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r11, [r5], #2
62e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r12, [r5], #2
63e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r14, [r5], #2
64e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
65b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          LDRH          r6,  [r4], #2
66e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r7,  [r4], #2
67e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r8,  [r4], #2
68e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r9,  [r4], #2
69e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r10, [r4], #2
70e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r11, [r4], #2
71e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r12, [r4], #2
72e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRH          r14, [r4], #2
73e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
74e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r6,  [r5], #2
75e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r7,  [r5], #2
76e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r8,  [r5], #2
77e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r9,  [r5], #2
78e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r10, [r5], #2
79e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r11, [r5], #2
80e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r12, [r5], #2
81e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r14, [r5], #2
82e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
83e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r5, [r0]                         @ load a[0]
84e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r8, #0                           @ i = 0
85e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r5, r5, ASR #1                   @ a0 = a[0] >> 1
86e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @MOV           r4, r13
87e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @ load all a[]
88e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
89e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r14, =0xffff
90e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6, [r0, #2]                     @ load a[1]
91e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r7, [r0, #4]                     @ load a[2]
92e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9, [r0, #6]                     @ load a[3]
93e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11,[r0, #8]                     @ load a[4]
94e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          AND           r6, r6, r14
95b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          AND           r9, r9, r14
96e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r10, r6, r7, LSL #16             @ -a[2] -- -a[1]
97e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r12, r9, r11, LSL #16            @ -a[4] -- -a[3]
98e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STR           r10, [r13, #-4]
99e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STR           r12, [r13, #-8]
100b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
101e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6, [r0, #10]                    @ load a[5]
102e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r7, [r0, #12]                    @ load a[6]
103e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9, [r0, #14]                    @ load a[7]
104e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11,[r0, #16]                    @ load a[8]
105e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          AND           r6, r6, r14
106b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          AND           r9, r9, r14
107e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r10, r6, r7, LSL #16             @ -a[6] -- -a[5]
108e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r12, r9, r11, LSL #16            @ -a[8] -- -a[7]
109e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STR           r10, [r13, #-12]
110b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          STR           r12, [r13, #-16]
111b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
112e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6, [r0, #18]                    @ load a[9]
113e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r7, [r0, #20]                    @ load a[10]
114e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9, [r0, #22]                    @ load a[11]
115e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11,[r0, #24]                    @ load a[12]
116e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          AND           r6, r6, r14
117b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          AND           r9, r9, r14
118e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r10, r6, r7, LSL #16             @ -a[10] -- -a[9]
119e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r12, r9, r11, LSL #16            @ -a[12] -- -a[11]
120e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STR           r10, [r13, #-20]
121b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          STR           r12, [r13, #-24]
122e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
123e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6, [r0, #26]                    @ load a[13]
124e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r7, [r0, #28]                    @ load a[14]
125e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9, [r0, #30]                    @ load a[15]
126e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11,[r0, #32]                    @ load a[16]
127e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          AND           r6, r6, r14
128b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          AND           r9, r9, r14
129e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r10, r6, r7, LSL #16             @ -a[14] -- -a[13]
130e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ORR           r12, r9, r11, LSL #16            @ -a[16] -- -a[15]
131e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STR           r10, [r13, #-28]
132b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          STR           r12, [r13, #-32]
133b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
134e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ADD           r4, r13, #32
135e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardLOOP:
136e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6,  [r1], #2                    @ load x[i]
137e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ADD           r10, r4, r8, LSL #1              @ temp_p = yy + i
138e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
139e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MUL           r0, r5, r6                      @ L_tmp = x[i] * a0
140e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @ for(j = 1@ j <= m, j+=8)
141e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-4]                  @ -a[2]  -a[1]
142e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9,  [r10, #-2]                  @ *(temp_p - 1)
143e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r12, [r10, #-4]                  @ *(temp_p - 2)
144e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
145e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
146e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMULBB        r14, r9, r7                      @ -a[1] * (*(temp_p -1))
147e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
148e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6,  [r10, #-6]                  @ *(temp_p - 3)
149e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
150e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABT        r14, r12, r7, r14                @ -a[2] * (*(temp_p - 2))
151e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
152e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-8]                  @ -a[4] -a[3]
153e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11, [r10, #-8]                  @ *(temp_p - 4)
154e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
155e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r6, r7, r14                 @ -a[3] * (*(temp_p -3))
156e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
157e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9,  [r10, #-10]                 @ *(temp_p - 5)
158b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
159b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          SMLABT        r14, r11, r7, r14                @ -a[4] * (*(temp_p -4))
160e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
161e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-12]                 @ -a[6]  -a[5]
162e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r12, [r10, #-12]                 @ *(temp_p - 6)
163e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
164e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r9, r7, r14                 @ -a[5] * (*(temp_p -5))
165e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
166e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6,  [r10, #-14]                 @ *(temp_p - 7)
167e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
168e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABT        r14, r12, r7, r14                @ -a[6] * (*(temp_p - 6))
169e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
170e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-16]                 @ -a[8] -a[7]
171e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11, [r10, #-16]                 @ *(temp_p - 8)
172b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
173e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r6, r7, r14                 @ -a[7] * (*(temp_p -7))
174e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
175e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9,  [r10, #-18]                 @ *(temp_p - 9)
176e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
177b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          SMLABT        r14, r11, r7, r14                @ -a[8] * (*(temp_p -8))
178b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
179e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-20]                 @ -a[10]  -a[9]
180e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r12, [r10, #-20]                 @ *(temp_p - 10)
181e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
182e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r9, r7, r14                 @ -a[9] * (*(temp_p -9))
183e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
184e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6,  [r10, #-22]                 @ *(temp_p - 11)
185e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
186e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABT        r14, r12, r7, r14                @ -a[10] * (*(temp_p - 10))
187e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
188e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-24]                 @ -a[12] -a[11]
189e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11, [r10, #-24]                 @ *(temp_p - 12)
190e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
191e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r6, r7, r14                 @ -a[11] * (*(temp_p -11))
192e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
193e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r9,  [r10, #-26]                 @ *(temp_p - 13)
194e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
195b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          SMLABT        r14, r11, r7, r14                @ -a[12] * (*(temp_p -12))
196e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
197e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-28]                 @ -a[14] -a[13]
198e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r12, [r10, #-28]                 @ *(temp_p - 14)
199b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
200e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r9, r7, r14                 @ -a[13] * (*(temp_p -13))
201e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
202e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r6,  [r10, #-30]                 @ *(temp_p - 15)
203e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
204e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABT        r14, r12, r7, r14                @ -a[14] * (*(temp_p - 14))
205e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
206e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDR           r7,  [r13, #-32]                 @ -a[16] -a[15]
207e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          LDRSH         r11, [r10, #-32]                 @ *(temp_p - 16)
208e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
209e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABB        r14, r6, r7, r14                 @ -a[15] * (*(temp_p -15))
210e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
211e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          SMLABT        r14, r11, r7, r14                @ -a[16] * (*(temp_p -16))
212e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
213e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          RSB           r14, r14, r0
214b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
215e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r7, r14, LSL #4                  @ L_tmp <<=4
216e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ADD           r8, r8, #1
217b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          ADD           r14, r7, #0x8000
218e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r7, r14, ASR #16                 @ (L_tmp + 0x8000) >> 16
219e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          CMP           r8, #80
220e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r7, [r10]                        @ yy[i]
221e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          STRH          r7, [r2], #2                     @ y[i]
222e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          BLT           LOOP
223b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
224e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @ update mem[]
225e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          ADD           r5, r13, #160                    @ yy[64] address
226e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r1, r3
227e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r0, r5
228e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          MOV           r2, #16
229b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          BL            voAWB_Copy
230e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
231e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardSyn_filt_asm_end:
232b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
233b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          ADD           r13, r13, #700
234b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard          LDMFD   	r13!, {r4 - r12, r15}
235e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          @ENDFUNC
236e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard          .END
237b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
238e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
239