2 @ ** Copyright 2003-2010, VisualOn, Inc.
\r
4 @ ** Licensed under the Apache License, Version 2.0 (the "License");
\r
5 @ ** you may not use this file except in compliance with the License.
\r
6 @ ** You may obtain a copy of the License at
\r
8 @ ** http://www.apache.org/licenses/LICENSE-2.0
\r
10 @ ** Unless required by applicable law or agreed to in writing, software
\r
11 @ ** distributed under the License is distributed on an "AS IS" BASIS,
\r
12 @ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 @ ** See the License for the specific language governing permissions and
\r
14 @ ** limitations under the License.
\r
18 @ Word16 exc[], /* in/out: excitation buffer */
\r
19 @ Word16 T0, /* input : integer pitch lag */
\r
20 @ Word16 frac, /* input : fraction of lag */
\r
21 @ Word16 L_subfr /* input : subframe size */
\r
23 @***********************************************************************
\r
30 .global pred_lt4_asm
\r
35 STMFD r13!, {r4 - r12, r14}
\r
36 SUB r4, r0, r1, LSL #1 @ x = exc - T0
\r
37 RSB r2, r2, #0 @ frac = - frac
\r
38 SUB r4, r4, #30 @ x -= L_INTERPOL2 - 1
\r
40 ADDLT r2, r2, #4 @ frac += UP_SAMP
\r
41 SUBLT r4, r4, #2 @ x--
\r
44 RSB r2, r2, #3 @ k = UP_SAMP - 1 - frac
\r
46 ADD r11, r11, r2, LSL #6 @ get inter4_2[k][]
\r
48 VLD1.S16 {Q0, Q1}, [r11]!
\r
49 VLD1.S16 {Q2, Q3}, [r11]!
\r
53 VLD1.S16 {Q4, Q5}, [r4]! @load 16 x[]
\r
54 VLD1.S16 {Q6, Q7}, [r4]! @load 16 x[]
\r
57 VQDMULL.S16 Q15, D8, D0
\r
58 VQDMLAL.S16 Q15, D9, D1
\r
59 VQDMLAL.S16 Q15, D10, D2
\r
60 VQDMLAL.S16 Q15, D11, D3
\r
62 VQDMLAL.S16 Q15, D12, D4
\r
63 VQDMLAL.S16 Q15, D13, D5
\r
64 VQDMLAL.S16 Q15, D14, D6
\r
65 VQDMLAL.S16 Q15, D15, D7
\r
67 LDRSH r12, [r4], #2
\r
69 VEXT.S16 D8, D8, D9, #1
\r
70 VEXT.S16 D9, D9, D10, #1
\r
71 VEXT.S16 D10, D10, D11, #1
\r
72 VEXT.S16 D11, D11, D12, #1
\r
74 VEXT.S16 D12, D12, D13, #1
\r
75 VEXT.S16 D13, D13, D14, #1
\r
77 VQADD.S32 D30, D30, D31
\r
79 VPADD.S32 D30, D30, D30
\r
81 VMOV.S32 r12, D30[0]
\r
82 VEXT.S16 D14, D14, D15, #1
\r
84 QADD r1, r12, r12 @ L_sum = (L_sum << 2)
\r
85 VEXT.S16 D15, D15, D24, #1
\r
89 STRH r1, [r0], #2 @ exc[j] = (L_sum + 0x8000) >> 16
\r
94 LDMFD r13!, {r4 - r12, r15}
\r