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 Pred_lt4(
18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@		  Word16 exc[],                         /* in/out: excitation buffer */
19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@		  Word16 T0,                            /* input : integer pitch lag */
20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@		  Word16 frac,                          /* input : fraction of lag   */
21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@		  Word16 L_subfr                        /* input : subframe size     */
22e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@	      )
23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@******************************
25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@       ARM Register
26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@******************************
27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r0  ---  exc[]
28e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r1  ---  T0
29e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r2  ---  frac
30e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ r3  ---  L_subfr
31e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
32e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         .section  .text
33e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 .global   pred_lt4_asm
34e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 .extern   inter4_2
35e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
36e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardpred_lt4_asm:
37e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
38b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard         STMFD     r13!, {r4 - r12, r14}
39e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         RSB       r4, r1, #0                         @-T0
40e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         RSB       r2, r2, #0                         @frac = -frac
41e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         ADD       r5, r0, r4, LSL #1                 @x = exc - T0
42e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         CMP       r2, #0
43e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         ADDLT     r2, r2, #4                         @frac += UP_SAMP
44e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SUBLT     r5, r5, #2                         @x--
45e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SUB       r5, r5, #30                        @x -= 15
46e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         RSB       r4, r2, #3                         @k = 3 - frac
47c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich         ADRL      r8, Table
48c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich         LDR       r6, [r8]
49c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich         ADD       r6, r8
50b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard	 MOV       r8, r4, LSL #6
51e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         @MOV       r7, #0                             @j = 0
52e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         ADD       r8, r6, r8                         @ptr2 = &(inter4_2[k][0])
53e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
54e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r1, r5
55e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r5, #0x8000
56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r14, #21
57e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard@ used register
58e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         @r0 --- exc[]  r1 --- x  r7 --- j  r8 --- ptr2  r5 --- 0x8000
59e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardTHREE_LOOP:
60e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
61e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         @MOV       r1, r5                             @ptr1 = x
62e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r2, r8                             @ptr = ptr2
63e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDR       r3, [r2], #4                       @h[0], h[1]
64e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[0]
65e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[1]
66e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[2]
67e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
68b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard	 SMULBB    r10, r4, r3                        @x[0] * h[0]
69e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMULBB    r11, r6, r3                        @x[1] * h[0]
70e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMULBB    r12, r9, r3                        @x[2] * h[0]
71e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
72e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r4, [r1], #2                       @x[3]
73e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[1] * h[1]
74e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABT    r11, r9, r3, r11                   @x[2] * h[1]
75e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[3] * h[1]
76e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
77e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[2], h[3]
78e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[4]
79e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[2] * h[2]
80e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r11, r4, r3, r11                   @x[3] * h[2]
81e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r12, r6, r3, r12                   @x[4] * h[2]
82e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
83e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r9, [r1], #2                       @x[5]
84e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABT    r10, r4, r3, r10                   @x[3] * h[3]
85e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABT    r11, r6, r3, r11                   @x[4] * h[3]
86e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABT    r12, r9, r3, r12                   @x[5] * h[3]
87e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
88e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDR       r3, [r2], #4                       @h[4], h[5]
89e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r4, [r1], #2                       @x[6]
90e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r10, r6, r3, r10                   @x[4] * h[4]
91e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r11, r9, r3, r11                   @x[5] * h[4]
92e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r12, r4, r3, r12                   @x[6] * h[4]
93e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
94e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[7]
95e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[5] * h[5]
96e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[6] * h[5]
97e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[7] * h[5]
98e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
99e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDR       r3, [r2], #4                       @h[6], h[7]
100e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[8]
101e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[6] * h[6]
102e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[7] * h[6]
103e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[8] * h[6]
104e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
105e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[9]
106e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[7] * h[7]
107e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[8] * h[7]
108e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[9] * h[7]
109e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
110e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[8], h[9]
111e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[10]
112e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[8] * h[8]
113e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[9] * h[8]
114e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[10] * h[8]
115e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
116e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[11]
117e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[9] * h[9]
118e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[10] * h[9]
119e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[11] * h[9]
120e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
121e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDR       r3, [r2], #4                       @h[10], h[11]
122e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[12]
123e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r10, r6, r3, r10                   @x[10] * h[10]
124e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[11] * h[10]
125e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[12] * h[10]
126e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
127e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[13]
128e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[11] * h[11]
129e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[12] * h[11]
130e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[13] * h[11]
131e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
132e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[12], h[13]
133e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[14]
134e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[12] * h[12]
135e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[13] * h[12]
136e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[14] * h[12]
137e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
138e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[15]
139e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[13] * h[13]
140e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[14] * h[13]
141e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[15] * h[13]
142e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
143e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[14], h[15]
144e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[16]
145e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[14] * h[14]
146e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[15] * h[14]
147e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[16] * h[14]
148e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
149e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[17]
150e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABT    r10, r4, r3, r10                   @x[15] * h[15]
151e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[16] * h[15]
152e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[17] * h[15]
153e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
154e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[16], h[17]
155e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[18]
156e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[16] * h[16]
157e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[17] * h[16]
158e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[18] * h[16]
159e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
160e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r6, [r1], #2                       @x[19]
161e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[17] * h[17]
162e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[18] * h[17]
163e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[19] * h[17]
164e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
165e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[18], h[19]
166e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r9, [r1], #2                       @x[20]
167e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[18] * h[18]
168e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[19] * h[18]
169e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[20] * h[18]
170e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
171e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[21]
172e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[19] * h[19]
173e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[20] * h[19]
174e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[21] * h[19]
175e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
176e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[20], h[21]
177e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[22]
178e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[20] * h[20]
179e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[21] * h[20]
180e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[22] * h[20]
181e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
182e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[23]
183e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[21] * h[21]
184e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[22] * h[21]
185e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[23] * h[21]
186e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
187e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[22], h[23]
188e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[24]
189e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[22] * h[22]
190e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[23] * h[22]
191e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[24] * h[22]
192e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
193e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r6, [r1], #2                       @x[25]
194e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[23] * h[23]
195e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[24] * h[23]
196e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[25] * h[23]
197e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
198e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[24], h[25]
199e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r9, [r1], #2                       @x[26]
200e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[24] * h[24]
201e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[25] * h[24]
202e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[26] * h[24]
203e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
204e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[27]
205e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[25] * h[25]
206e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[26] * h[25]
207e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[27] * h[25]
208e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
209e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[26], h[27]
210e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[28]
211e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[26] * h[26]
212e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[27] * h[26]
213e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[28] * h[26]
214e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
215e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[29]
216e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[27] * h[27]
217e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[28] * h[27]
218e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[29] * h[27]
219e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
220e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[28], h[29]
221e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[30]
222e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[28] * h[28]
223e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[29] * h[28]
224e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[30] * h[28]
225e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
226e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r6, [r1], #2                       @x[31]
227e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[29] * h[29]
228e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[30] * h[29]
229e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[31] * h[29]
230e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
231e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[30], h[31]
232e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r9, [r1], #2                       @x[32]
233e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[30] * h[30]
234e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[31] * h[30]
235e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[32] * h[30]
236e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
237e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #-60                     @x[33]
238e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[31] * h[31]
239e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[32] * h[31]
240e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[33] * h[31]
241e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
242e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 @SSAT      r10, #32, r10, LSL #2
243e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 @SSAT      r11, #32, r11, LSL #2
244e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 @SSAT      r12, #32, r12, LSL #2
245e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
246e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r10, r10, LSL #1
247e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r11, r11, LSL #1
248e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r12, r12, LSL #1
249e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
250e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r10, r10, r10
251e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r11, r11, r11
252e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r12, r12, r12
253e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
254e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r10, r10, r5
255e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r11, r11, r5
256e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r12, r12, r5
257e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
258e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SUBS      r14, r14, #1
259e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
260e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r10, r10, ASR #16
261e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r11, r11, ASR #16
262e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r12, r12, ASR #16
263e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
264e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 STRH      r10, [r0], #2
265e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 STRH      r11, [r0], #2
266e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 STRH      r12, [r0], #2
267e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 BNE       THREE_LOOP
268e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
269e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r2, r8                             @ptr = ptr2
270e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
271e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardLast2LOOP:
272e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
273e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDR       r3, [r2], #4                       @h[0], h[1]
274e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[0]
275e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[1]
276e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[2]
277e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
278e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMULBB    r10, r4, r3                        @x[0] * h[0]
279e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMULBB    r11, r6, r3                        @x[1] * h[0]
280e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
281e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[1] * h[1]
282e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[2] * h[1]
283e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
284e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[2], h[3]
285e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[3]
286e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDRSH     r6, [r1], #2                       @x[4]
287e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
288e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[2] * h[2]
289e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         SMLABB    r11, r4, r3, r11                   @x[3] * h[2]
290b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard
291e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[3] * h[3]
292e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[4] * h[3]
293e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
294e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[4], h[5]
295e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[5]
296e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[6]
297e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
298e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[4] * h[4]
299e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[5] * h[4]
300e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
301e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[5] * h[5]
302e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[6] * h[5]
303e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
304e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[6], h[7]
305e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[7]
306e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[8]
307e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
308e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[6] * h[6]
309e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[7] * h[6]
310e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
311e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[7] * h[7]
312e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[8] * h[7]
313e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
314e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[8], h[9]
315e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[9]
316e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[10]
317e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
318e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[8] * h[8]
319e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[9] * h[8]
320e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
321e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[9] * h[9]
322e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[10] * h[9]
323e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
324e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[10], h[11]
325e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[11]
326e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[12]
327e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
328e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[10] * h[10]
329e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[11] * h[10]
330e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
331e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[11] * h[11]
332e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[12] * h[11]
333e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
334e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[12], h[13]
335e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[13]
336e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[14]
337e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
338e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[12] * h[12]
339e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[13] * h[12]
340e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
341e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[13] * h[13]
342e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[14] * h[13]
343e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
344e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[14], h[15]
345e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[15]
346e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[16]
347e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
348e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[14] * h[14]
349e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[15] * h[14]
350e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
351e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[15] * h[15]
352e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[16] * h[15]
353e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
354e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[16], h[17]
355e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[17]
356e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[18]
357e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
358e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[16] * h[16]
359e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[17] * h[16]
360e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
361e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[17] * h[17]
362e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[18] * h[17]
363e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
364e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[18], h[19]
365e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[19]
366e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[20]
367e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
368e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[18] * h[18]
369e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[19] * h[18]
370e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
371e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[19] * h[19]
372e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[20] * h[19]
373e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
374e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[20], h[21]
375e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[21]
376e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[22]
377e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
378e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[20] * h[20]
379e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[21] * h[20]
380e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
381e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[21] * h[21]
382e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[22] * h[21]
383e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
384e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[22], h[23]
385e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[23]
386e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[24]
387e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
388e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[22] * h[22]
389e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[23] * h[22]
390e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
391e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[23] * h[23]
392e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[24] * h[23]
393e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
394e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[24], h[25]
395e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[25]
396e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[26]
397e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
398e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[24] * h[24]
399e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[25] * h[24]
400e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
401e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[25] * h[25]
402e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[26] * h[25]
403e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
404e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[26], h[27]
405e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[27]
406e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[28]
407e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
408e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[26] * h[26]
409e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[27] * h[26]
410e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
411e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[27] * h[27]
412e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[28] * h[27]
413e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
414e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[28], h[29]
415e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[29]
416e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[30]
417e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
418e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[28] * h[28]
419e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[29] * h[28]
420e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
421e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[29] * h[29]
422e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[30] * h[29]
423e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
424e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDR       r3, [r2], #4                       @h[30], h[31]
425e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[31]
426e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[32]
427e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
428e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[30] * h[30]
429e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[31] * h[30]
430e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
431e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[31] * h[31]
432e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[32] * h[31]
433e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
434e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 @SSAT      r10, #32, r10, LSL #2
435e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 @SSAT      r11, #32, r11, LSL #2
436e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r10, r10, LSL #1
437e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r11, r11, LSL #1
438e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
439e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r10, r10, r10
440b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard	 QADD      r11, r11, r11
441e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
442e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r10, r10, r5
443e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 QADD      r11, r11, r5
444e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
445e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r10, r10, ASR #16
446e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 MOV       r11, r11, ASR #16
447e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
448e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 STRH      r10, [r0], #2
449e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 STRH      r11, [r0], #2
450e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
451e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
452e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardpred_lt4_end:
453e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard         LDMFD     r13!, {r4 - r12, r15}
454e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
455e2e838afcf03e603a41a0455846eaf9614537c16Mans RullgardTable:
456c40e9b86092e67f245ba8f05244f578b26e49fe2Nick Kralevich         .word       inter4_2-Table
457e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 @ENDFUNC
458e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	 .END
459e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
460e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
461e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
462e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
463