117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@/*
217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** Copyright 2003-2010, VisualOn, Inc.
317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ **
417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** Licensed under the Apache License, Version 2.0 (the "License");
517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** you may not use this file except in compliance with the License.
617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** You may obtain a copy of the License at
717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ **
817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ **     http://www.apache.org/licenses/LICENSE-2.0
917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ **
1017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** Unless required by applicable law or agreed to in writing, software
1117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** distributed under the License is distributed on an "AS IS" BASIS,
1217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** See the License for the specific language governing permissions and
1417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ ** limitations under the License.
1517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ */
1617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@**********************************************************************/
1717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@void Syn_filt(
1817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@     Word16 a[],                           /* (i) Q12 : a[m+1] prediction coefficients           */
1917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@     Word16 x[],                           /* (i)     : input signal                             */
2017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@     Word16 y[],                           /* (o)     : output signal                            */
2117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@     Word16 mem[],                         /* (i/o)   : memory associated with this filtering.   */
2217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@)
2317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@***********************************************************************
2417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ a[]    ---   r0
2517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ x[]    ---   r1
2617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ y[]    ---   r2
2717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ mem[]  ---   r3
2817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ m ---  16  lg --- 80  update --- 1
2917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          .section  .text
3117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	  .global   Syn_filt_asm
3217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          .extern   voAWB_Copy
3317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3417299ab50ceb70d904e610e3b2d7fb2361a11e03James DongSyn_filt_asm:
3517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STMFD   	r13!, {r4 - r12, r14}
3717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SUB           r13, r13, #700                   @ y_buf[L_FRAME16k + M16k]
3817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r4, r3                           @ copy mem[] address
4017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r5, r13                          @ copy yy = y_buf address
4117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
4217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @ for(i = 0@ i < m@ i++)
4317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @{
4417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @    *yy++ = mem[i]@
4517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @}
4617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
4717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r6,  [r4], #2
4817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r7,  [r4], #2
4917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r8,  [r4], #2
5017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r9,  [r4], #2
5117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r10, [r4], #2
5217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r11, [r4], #2
5317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r12, [r4], #2
5417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r14, [r4], #2
5517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
5617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r6,  [r5], #2
5717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r7,  [r5], #2
5817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r8,  [r5], #2
5917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r9,  [r5], #2
6017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r10, [r5], #2
6117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r11, [r5], #2
6217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r12, [r5], #2
6317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r14, [r5], #2
6417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
6517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r6,  [r4], #2
6617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r7,  [r4], #2
6717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r8,  [r4], #2
6817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r9,  [r4], #2
6917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r10, [r4], #2
7017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r11, [r4], #2
7117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r12, [r4], #2
7217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRH          r14, [r4], #2
7317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
7417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r6,  [r5], #2
7517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r7,  [r5], #2
7617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r8,  [r5], #2
7717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r9,  [r5], #2
7817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r10, [r5], #2
7917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r11, [r5], #2
8017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r12, [r5], #2
8117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r14, [r5], #2
8217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
8317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r5, [r0]                         @ load a[0]
8417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r8, #0                           @ i = 0
8517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r5, r5, ASR #1                   @ a0 = a[0] >> 1
8617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @MOV           r4, r13
8717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @ load all a[]
8817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
8917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r14, =0xffff
9017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6, [r0, #2]                     @ load a[1]
9117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r7, [r0, #4]                     @ load a[2]
9217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9, [r0, #6]                     @ load a[3]
9317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11,[r0, #8]                     @ load a[4]
9417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r6, r6, r14
9517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r9, r9, r14
9617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r10, r6, r7, LSL #16             @ -a[2] -- -a[1]
9717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r12, r9, r11, LSL #16            @ -a[4] -- -a[3]
9817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r10, [r13, #-4]
9917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r12, [r13, #-8]
10017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
10117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6, [r0, #10]                    @ load a[5]
10217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r7, [r0, #12]                    @ load a[6]
10317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9, [r0, #14]                    @ load a[7]
10417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11,[r0, #16]                    @ load a[8]
10517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r6, r6, r14
10617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r9, r9, r14
10717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r10, r6, r7, LSL #16             @ -a[6] -- -a[5]
10817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r12, r9, r11, LSL #16            @ -a[8] -- -a[7]
10917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r10, [r13, #-12]
11017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r12, [r13, #-16]
11117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
11217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6, [r0, #18]                    @ load a[9]
11317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r7, [r0, #20]                    @ load a[10]
11417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9, [r0, #22]                    @ load a[11]
11517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11,[r0, #24]                    @ load a[12]
11617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r6, r6, r14
11717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r9, r9, r14
11817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r10, r6, r7, LSL #16             @ -a[10] -- -a[9]
11917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r12, r9, r11, LSL #16            @ -a[12] -- -a[11]
12017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r10, [r13, #-20]
12117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r12, [r13, #-24]
12217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
12317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6, [r0, #26]                    @ load a[13]
12417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r7, [r0, #28]                    @ load a[14]
12517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9, [r0, #30]                    @ load a[15]
12617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11,[r0, #32]                    @ load a[16]
12717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r6, r6, r14
12817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          AND           r9, r9, r14
12917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r10, r6, r7, LSL #16             @ -a[14] -- -a[13]
13017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ORR           r12, r9, r11, LSL #16            @ -a[16] -- -a[15]
13117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r10, [r13, #-28]
13217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STR           r12, [r13, #-32]
13317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
13417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ADD           r4, r13, #32
13517299ab50ceb70d904e610e3b2d7fb2361a11e03James DongLOOP:
13617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6,  [r1], #2                    @ load x[i]
13717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ADD           r10, r4, r8, LSL #1              @ temp_p = yy + i
13817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
13917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MUL           r0, r5, r6                      @ L_tmp = x[i] * a0
14017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @ for(j = 1@ j <= m, j+=8)
14117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-4]                  @ -a[2]  -a[1]
14217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9,  [r10, #-2]                  @ *(temp_p - 1)
14317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r12, [r10, #-4]                  @ *(temp_p - 2)
14417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
14517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
14617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMULBB        r14, r9, r7                      @ -a[1] * (*(temp_p -1))
14717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
14817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6,  [r10, #-6]                  @ *(temp_p - 3)
14917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
15017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r12, r7, r14                @ -a[2] * (*(temp_p - 2))
15117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
15217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-8]                  @ -a[4] -a[3]
15317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11, [r10, #-8]                  @ *(temp_p - 4)
15417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
15517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r6, r7, r14                 @ -a[3] * (*(temp_p -3))
15617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
15717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9,  [r10, #-10]                 @ *(temp_p - 5)
15817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
15917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r11, r7, r14                @ -a[4] * (*(temp_p -4))
16017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
16117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-12]                 @ -a[6]  -a[5]
16217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r12, [r10, #-12]                 @ *(temp_p - 6)
16317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
16417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r9, r7, r14                 @ -a[5] * (*(temp_p -5))
16517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
16617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6,  [r10, #-14]                 @ *(temp_p - 7)
16717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
16817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r12, r7, r14                @ -a[6] * (*(temp_p - 6))
16917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
17017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-16]                 @ -a[8] -a[7]
17117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11, [r10, #-16]                 @ *(temp_p - 8)
17217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
17317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r6, r7, r14                 @ -a[7] * (*(temp_p -7))
17417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
17517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9,  [r10, #-18]                 @ *(temp_p - 9)
17617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
17717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r11, r7, r14                @ -a[8] * (*(temp_p -8))
17817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
17917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-20]                 @ -a[10]  -a[9]
18017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r12, [r10, #-20]                 @ *(temp_p - 10)
18117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
18217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r9, r7, r14                 @ -a[9] * (*(temp_p -9))
18317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
18417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6,  [r10, #-22]                 @ *(temp_p - 11)
18517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
18617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r12, r7, r14                @ -a[10] * (*(temp_p - 10))
18717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
18817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-24]                 @ -a[12] -a[11]
18917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11, [r10, #-24]                 @ *(temp_p - 12)
19017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
19117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r6, r7, r14                 @ -a[11] * (*(temp_p -11))
19217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
19317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r9,  [r10, #-26]                 @ *(temp_p - 13)
19417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
19517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r11, r7, r14                @ -a[12] * (*(temp_p -12))
19617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
19717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-28]                 @ -a[14] -a[13]
19817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r12, [r10, #-28]                 @ *(temp_p - 14)
19917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
20017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r9, r7, r14                 @ -a[13] * (*(temp_p -13))
20117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
20217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r6,  [r10, #-30]                 @ *(temp_p - 15)
20317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
20417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r12, r7, r14                @ -a[14] * (*(temp_p - 14))
20517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
20617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDR           r7,  [r13, #-32]                 @ -a[16] -a[15]
20717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDRSH         r11, [r10, #-32]                 @ *(temp_p - 16)
20817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
20917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABB        r14, r6, r7, r14                 @ -a[15] * (*(temp_p -15))
21017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
21117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          SMLABT        r14, r11, r7, r14                @ -a[16] * (*(temp_p -16))
21217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
21317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          RSB           r14, r14, r0
21417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
21517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r7, r14, LSL #4                  @ L_tmp <<=4
21617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ADD           r8, r8, #1
21717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ADD           r14, r7, #0x8000
21817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r7, r14, ASR #16                 @ (L_tmp + 0x8000) >> 16
21917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          CMP           r8, #80
22017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r7, [r10]                        @ yy[i]
22117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          STRH          r7, [r2], #2                     @ y[i]
22217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          BLT           LOOP
22317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
22417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @ update mem[]
22517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ADD           r5, r13, #160                    @ yy[64] address
22617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r1, r3
22717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r0, r5
22817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          MOV           r2, #16
22917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          BL            voAWB_Copy
23017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
23117299ab50ceb70d904e610e3b2d7fb2361a11e03James DongSyn_filt_asm_end:
23217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
23317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          ADD           r13, r13, #700
23417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          LDMFD   	r13!, {r4 - r12, r15}
23517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          @ENDFUNC
23617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong          .END
23717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
23817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
239