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