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_32( 1817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients */ 1917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 m, /* (i) : order of LP filter */ 2017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 exc[], /* (i) Qnew: excitation (exc[i] >> Qnew) */ 2117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 Qnew, /* (i) : exc scaling = 0(min) to 8(max) */ 2217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 sig_hi[], /* (o) /16 : synthesis high */ 2317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 sig_lo[], /* (o) /16 : synthesis low */ 2417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Word16 lg /* (i) : size of filtering */ 2517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@) 2617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@*************************************************************** 2717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ 2817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ a[] --- r0 2917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ m --- r1 3017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ exc[] --- r2 3117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ Qnew --- r3 3217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ sig_hi[] --- r4 3317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ sig_lo[] --- r5 3417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong@ lg --- r6 3517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong .section .text 3717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong .global Syn_filt_32_asm 3817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3917299ab50ceb70d904e610e3b2d7fb2361a11e03James DongSyn_filt_32_asm: 4017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 4117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STMFD r13!, {r4 - r12, r14} 4217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r4, [r13, #40] @ get sig_hi[] address 4317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r5, [r13, #44] @ get sig_lo[] address 4417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 4517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r0] @ load Aq[0] 4617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ADD r7, r3, #4 @ 4 + Q_new 4717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MOV r3, r6, ASR r7 @ a0 = Aq[0] >> (4 + Q_new) 4817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 4917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r14, =0xffff 5017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r0, #2] @ load Aq[1] 5117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r0, #4] @ load Aq[2] 5217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r8, [r0, #6] @ load Aq[3] 5317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r0, #8] @ load Aq[4] 5417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r6, r6, r14 5517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r8, r8, r14 5617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r10, r6, r7, LSL #16 @ Aq[2] -- Aq[1] 5717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r11, r8, r9, LSL #16 @ Aq[4] -- Aq[3] 5817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r10, [r13, #-4] 5917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r11, [r13, #-8] 6017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 6117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r0, #10] @ load Aq[5] 6217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r0, #12] @ load Aq[6] 6317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r8, [r0, #14] @ load Aq[7] 6417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r0, #16] @ load Aq[8] 6517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r6, r6, r14 6617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r8, r8, r14 6717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r10, r6, r7, LSL #16 @ Aq[6] -- Aq[5] 6817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r11, r8, r9, LSL #16 @ Aq[8] -- Aq[7] 6917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r10, [r13, #-12] 7017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r11, [r13, #-16] 7117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 7217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r0, #18] @ load Aq[9] 7317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r0, #20] @ load Aq[10] 7417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r8, [r0, #22] @ load Aq[11] 7517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r0, #24] @ load Aq[12] 7617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r6, r6, r14 7717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r8, r8, r14 7817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r10, r6, r7, LSL #16 @ Aq[10] -- Aq[9] 7917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r11, r8, r9, LSL #16 @ Aq[12] -- Aq[11] 8017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r10, [r13, #-20] 8117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r11, [r13, #-24] 8217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 8317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r0, #26] @ load Aq[13] 8417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r0, #28] @ load Aq[14] 8517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r8, [r0, #30] @ load Aq[15] 8617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r0, #32] @ load Aq[16] 8717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r6, r6, r14 8817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong AND r8, r8, r14 8917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r10, r6, r7, LSL #16 @ Aq[14] -- Aq[13] 9017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ORR r11, r8, r9, LSL #16 @ Aq[16] -- Aq[15] 9117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r10, [r13, #-28] 9217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STR r11, [r13, #-32] 9317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 9417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MOV r8, #0 @ i = 0 9517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 9617299ab50ceb70d904e610e3b2d7fb2361a11e03James DongLOOP: 9717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r5, #-2] @ load sig_lo[i-1] 9817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r5, #-4] @ load sig_lo[i-2] 9917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 10017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-4] @ Aq[2] -- Aq[1] 10117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r5, #-6] @ load sig_lo[i-3] 10217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10, [r5, #-8] @ load sig_lo[i-4] 10317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 10417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMULBB r12, r6, r11 @ sig_lo[i-1] * Aq[1] 10517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 10617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r5, #-10] @ load sig_lo[i-5] 10717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_lo[i-2] * Aq[2] 10817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-8] @ Aq[4] -- Aq[3] 10917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r5, #-12] @ load sig_lo[i-6] 11017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_lo[i-3] * Aq[3] 11117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r5, #-14] @ load sig_lo[i-7] 11217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_lo[i-4] * Aq[4] 11317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-12] @ Aq[6] -- Aq[5] 11417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10, [r5, #-16] @ load sig_lo[i-8] 11517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r6, r11, r12 @ sig_lo[i-5] * Aq[5] 11617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r5, #-18] @ load sig_lo[i-9] 11717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_lo[i-6] * Aq[6] 11817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-16] @ Aq[8] -- Aq[7] 11917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r5, #-20] @ load sig_lo[i-10] 12017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_lo[i-7] * Aq[7] 12117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r5, #-22] @ load sig_lo[i-11] 12217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_lo[i-8] * Aq[8] 12317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-20] @ Aq[10] -- Aq[9] 12417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10,[r5, #-24] @ load sig_lo[i-12] 12517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r6, r11, r12 @ sig_lo[i-9] * Aq[9] 12617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r5, #-26] @ load sig_lo[i-13] 12717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_lo[i-10] * Aq[10] 12817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-24] @ Aq[12] -- Aq[11] 12917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r5, #-28] @ load sig_lo[i-14] 13017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_lo[i-11] * Aq[11] 13117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r5, #-30] @ load sig_lo[i-15] 13217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_lo[i-12] * Aq[12] 13317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 13417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-28] @ Aq[14] -- Aq[13] 13517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10, [r5, #-32] @ load sig_lo[i-16] 13617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r6, r11, r12 @ sig_lo[i-13] * Aq[13] 13717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_lo[i-14] * Aq[14] 13817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 13917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-32] @ Aq[16] -- Aq[15] 14017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r2],#2 @ load exc[i] 14117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_lo[i-15] * Aq[15] 14217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_lo[i-16] * Aq[16] 14317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MUL r7, r6, r3 @ exc[i] * a0 14417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong RSB r14, r12, #0 @ L_tmp 14517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MOV r14, r14, ASR #11 @ L_tmp >>= 11 14617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ADD r14, r14, r7, LSL #1 @ L_tmp += (exc[i] * a0) << 1 14717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 14817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 14917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r4, #-2] @ load sig_hi[i-1] 15017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r4, #-4] @ load sig_hi[i-2] 15117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 15217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-4] @ Aq[2] -- Aq[1] 15317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r4, #-6] @ load sig_hi[i-3] 15417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10, [r4, #-8] @ load sig_hi[i-4] 15517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMULBB r12, r6, r11 @ sig_hi[i-1] * Aq[1] 15617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r4, #-10] @ load sig_hi[i-5] 15717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_hi[i-2] * Aq[2] 15817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 15917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-8] @ Aq[4] -- Aq[3] 16017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r4, #-12] @ load sig_hi[i-6] 16117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 16217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_hi[i-3] * Aq[3] 16317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r4, #-14] @ load sig_hi[i-7] 16417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 16517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_hi[i-4] * Aq[4] 16617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 16717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-12] @ Aq[6] -- Aq[5] 16817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10, [r4, #-16] @ load sig_hi[i-8] 16917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 17017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r6, r11, r12 @ sig_hi[i-5] * Aq[5] 17117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 17217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r4, #-18] @ load sig_hi[i-9] 17317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_hi[i-6] * Aq[6] 17417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 17517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-16] @ Aq[8] -- Aq[7] 17617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r4, #-20] @ load sig_hi[i-10] 17717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 17817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_hi[i-7] * Aq[7] 17917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 18017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r4, #-22] @ load sig_hi[i-11] 18117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 18217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_hi[i-8] * Aq[8] 18317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 18417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-20] @ Aq[10] -- Aq[9] 18517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10,[r4, #-24] @ load sig_hi[i-12] 18617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 18717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r6, r11, r12 @ sig_hi[i-9] * Aq[9] 18817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r6, [r4, #-26] @ load sig_hi[i-13] 18917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_hi[i-10] * Aq[10] 19017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 19117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-24] @ Aq[12] -- Aq[11] 19217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r7, [r4, #-28] @ load sig_hi[i-14] 19317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_hi[i-11] * Aq[11] 19417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r9, [r4, #-30] @ load sig_hi[i-15] 19517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_hi[i-12] * Aq[12] 19617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 19717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-28] @ Aq[14] -- Aq[13] 19817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDRSH r10, [r4, #-32] @ load sig_hi[i-16] 19917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r6, r11, r12 @ sig_hi[i-13] * Aq[13] 20017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r7, r11, r12 @ sig_hi[i-14] * Aq[14] 20117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 20217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDR r11, [r13, #-32] @ Aq[16] -- Aq[15] 20317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABB r12, r9, r11, r12 @ sig_hi[i-15] * Aq[15] 20417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SMLABT r12, r10, r11, r12 @ sig_hi[i-16] * Aq[16] 20517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ADD r6, r12, r12 @ r12 << 1 20617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SUB r14, r14, r6 20717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MOV r14, r14, LSL #3 @ L_tmp <<=3 20817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 20917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MOV r7, r14, ASR #16 @ L_tmp >> 16 21017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 21117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MOV r14, r14, ASR #4 @ L_tmp >>=4 21217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STRH r7, [r4], #2 @ sig_hi[i] = L_tmp >> 16 21317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SUB r9, r14, r7, LSL #12 @ sig_lo[i] = L_tmp - (sig_hi[i] << 12) 21417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 21517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ADD r8, r8, #1 21617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong STRH r9, [r5], #2 21717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong CMP r8, #64 21817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong BLT LOOP 21917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 22017299ab50ceb70d904e610e3b2d7fb2361a11e03James DongSyn_filt_32_end: 22117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 22217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong LDMFD r13!, {r4 - r12, r15} 22317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong @ENDFUNC 22417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong .END 22517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 22617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 227