1219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@/*
2219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** Copyright 2003-2010, VisualOn, Inc.
3219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ **
4219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** Licensed under the Apache License, Version 2.0 (the "License");
5219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** you may not use this file except in compliance with the License.
6219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** You may obtain a copy of the License at
7219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ **
8219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ **     http://www.apache.org/licenses/LICENSE-2.0
9219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ **
10219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** Unless required by applicable law or agreed to in writing, software
11219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** distributed under the License is distributed on an "AS IS" BASIS,
12219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** See the License for the specific language governing permissions and
14219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ ** limitations under the License.
15219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ */
16219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@
17219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@void Pred_lt4(
18219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@		  Word16 exc[],                         /* in/out: excitation buffer */
19219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@		  Word16 T0,                            /* input : integer pitch lag */
20219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@		  Word16 frac,                          /* input : fraction of lag   */
21219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@		  Word16 L_subfr                        /* input : subframe size     */
22219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@	      )
23219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
24219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@******************************
25219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@       ARM Register
26219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@******************************
27219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ r0  ---  exc[]
28219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ r1  ---  T0
29219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ r2  ---  frac
30219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ r3  ---  L_subfr
31219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
32219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         .section  .text
33219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 .global   pred_lt4_asm
34219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 .extern   inter4_2
35219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
36219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardpred_lt4_asm:
37219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
38219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         STMFD     r13!, {r4 - r12, r14}
39219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         RSB       r4, r1, #0                         @-T0
40219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         RSB       r2, r2, #0                         @frac = -frac
41219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         ADD       r5, r0, r4, LSL #1                 @x = exc - T0
42219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         CMP       r2, #0
43219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         ADDLT     r2, r2, #4                         @frac += UP_SAMP
44219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SUBLT     r5, r5, #2                         @x--
45219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SUB       r5, r5, #30                        @x -= 15
46219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         RSB       r4, r2, #3                         @k = 3 - frac
47219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDR       r6, Table
48219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r8, r4, LSL #6
49219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         @MOV       r7, #0                             @j = 0
50219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         ADD       r8, r6, r8                         @ptr2 = &(inter4_2[k][0])
51219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
52219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r1, r5
53219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r5, #0x8000
54219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r14, #21
55219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard@ used register
56219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         @r0 --- exc[]  r1 --- x  r7 --- j  r8 --- ptr2  r5 --- 0x8000
57219e2627f1e062c10645664b0d2470d4dfaf5083Mans RullgardTHREE_LOOP:
58219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
59219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         @MOV       r1, r5                             @ptr1 = x
60219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r2, r8                             @ptr = ptr2
61219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDR       r3, [r2], #4                       @h[0], h[1]
62219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[0]
63219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[1]
64219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[2]
65219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
66219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMULBB    r10, r4, r3                        @x[0] * h[0]
67219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMULBB    r11, r6, r3                        @x[1] * h[0]
68219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMULBB    r12, r9, r3                        @x[2] * h[0]
69219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
70219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r4, [r1], #2                       @x[3]
71219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[1] * h[1]
72219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABT    r11, r9, r3, r11                   @x[2] * h[1]
73219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[3] * h[1]
74219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
75219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[2], h[3]
76219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[4]
77219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[2] * h[2]
78219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r11, r4, r3, r11                   @x[3] * h[2]
79219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r12, r6, r3, r12                   @x[4] * h[2]
80219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
81219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r9, [r1], #2                       @x[5]
82219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABT    r10, r4, r3, r10                   @x[3] * h[3]
83219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABT    r11, r6, r3, r11                   @x[4] * h[3]
84219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABT    r12, r9, r3, r12                   @x[5] * h[3]
85219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
86219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDR       r3, [r2], #4                       @h[4], h[5]
87219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r4, [r1], #2                       @x[6]
88219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r10, r6, r3, r10                   @x[4] * h[4]
89219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r11, r9, r3, r11                   @x[5] * h[4]
90219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r12, r4, r3, r12                   @x[6] * h[4]
91219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
92219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[7]
93219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[5] * h[5]
94219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[6] * h[5]
95219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[7] * h[5]
96219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
97219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDR       r3, [r2], #4                       @h[6], h[7]
98219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[8]
99219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[6] * h[6]
100219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[7] * h[6]
101219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[8] * h[6]
102219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
103219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[9]
104219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[7] * h[7]
105219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[8] * h[7]
106219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[9] * h[7]
107219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
108219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[8], h[9]
109219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[10]
110219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[8] * h[8]
111219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[9] * h[8]
112219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[10] * h[8]
113219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
114219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[11]
115219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[9] * h[9]
116219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[10] * h[9]
117219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[11] * h[9]
118219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
119219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDR       r3, [r2], #4                       @h[10], h[11]
120219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[12]
121219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r10, r6, r3, r10                   @x[10] * h[10]
122219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[11] * h[10]
123219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[12] * h[10]
124219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
125219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[13]
126219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[11] * h[11]
127219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[12] * h[11]
128219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[13] * h[11]
129219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
130219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[12], h[13]
131219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[14]
132219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[12] * h[12]
133219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[13] * h[12]
134219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[14] * h[12]
135219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
136219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[15]
137219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[13] * h[13]
138219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[14] * h[13]
139219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[15] * h[13]
140219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
141219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[14], h[15]
142219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[16]
143219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[14] * h[14]
144219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[15] * h[14]
145219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[16] * h[14]
146219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
147219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[17]
148219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABT    r10, r4, r3, r10                   @x[15] * h[15]
149219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[16] * h[15]
150219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[17] * h[15]
151219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
152219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[16], h[17]
153219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[18]
154219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[16] * h[16]
155219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[17] * h[16]
156219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[18] * h[16]
157219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
158219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r6, [r1], #2                       @x[19]
159219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[17] * h[17]
160219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[18] * h[17]
161219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[19] * h[17]
162219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
163219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[18], h[19]
164219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r9, [r1], #2                       @x[20]
165219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[18] * h[18]
166219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[19] * h[18]
167219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[20] * h[18]
168219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
169219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[21]
170219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[19] * h[19]
171219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[20] * h[19]
172219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[21] * h[19]
173219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
174219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[20], h[21]
175219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[22]
176219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[20] * h[20]
177219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[21] * h[20]
178219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[22] * h[20]
179219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
180219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[23]
181219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[21] * h[21]
182219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[22] * h[21]
183219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[23] * h[21]
184219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
185219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[22], h[23]
186219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[24]
187219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[22] * h[22]
188219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[23] * h[22]
189219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[24] * h[22]
190219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
191219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r6, [r1], #2                       @x[25]
192219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[23] * h[23]
193219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[24] * h[23]
194219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[25] * h[23]
195219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
196219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[24], h[25]
197219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r9, [r1], #2                       @x[26]
198219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[24] * h[24]
199219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[25] * h[24]
200219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[26] * h[24]
201219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
202219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[27]
203219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[25] * h[25]
204219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[26] * h[25]
205219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[27] * h[25]
206219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
207219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[26], h[27]
208219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[28]
209219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[26] * h[26]
210219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[27] * h[26]
211219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r6, r3, r12                   @x[28] * h[26]
212219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
213219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[29]
214219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[27] * h[27]
215219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[28] * h[27]
216219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r9, r3, r12                   @x[29] * h[27]
217219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
218219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[28], h[29]
219219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[30]
220219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[28] * h[28]
221219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[29] * h[28]
222219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r4, r3, r12                   @x[30] * h[28]
223219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
224219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r6, [r1], #2                       @x[31]
225219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[29] * h[29]
226219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[30] * h[29]
227219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r6, r3, r12                   @x[31] * h[29]
228219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
229219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[30], h[31]
230219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r9, [r1], #2                       @x[32]
231219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[30] * h[30]
232219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[31] * h[30]
233219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r12, r9, r3, r12                   @x[32] * h[30]
234219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
235219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #-60                     @x[33]
236219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[31] * h[31]
237219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[32] * h[31]
238219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r12, r4, r3, r12                   @x[33] * h[31]
239219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
240219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 @SSAT      r10, #32, r10, LSL #2
241219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 @SSAT      r11, #32, r11, LSL #2
242219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 @SSAT      r12, #32, r12, LSL #2
243219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
244219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r10, r10, LSL #1
245219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r11, r11, LSL #1
246219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r12, r12, LSL #1
247219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
248219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r10, r10, r10
249219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r11, r11, r11
250219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r12, r12, r12
251219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
252219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r10, r10, r5
253219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r11, r11, r5
254219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r12, r12, r5
255219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
256219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SUBS      r14, r14, #1
257219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
258219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r10, r10, ASR #16
259219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r11, r11, ASR #16
260219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r12, r12, ASR #16
261219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
262219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 STRH      r10, [r0], #2
263219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 STRH      r11, [r0], #2
264219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 STRH      r12, [r0], #2
265219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 BNE       THREE_LOOP
266219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
267219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r2, r8                             @ptr = ptr2
268219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
269219e2627f1e062c10645664b0d2470d4dfaf5083Mans RullgardLast2LOOP:
270219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
271219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDR       r3, [r2], #4                       @h[0], h[1]
272219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[0]
273219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[1]
274219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[2]
275219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
276219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMULBB    r10, r4, r3                        @x[0] * h[0]
277219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMULBB    r11, r6, r3                        @x[1] * h[0]
278219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
279219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[1] * h[1]
280219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[2] * h[1]
281219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
282219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[2], h[3]
283219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[3]
284219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDRSH     r6, [r1], #2                       @x[4]
285219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
286219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[2] * h[2]
287219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         SMLABB    r11, r4, r3, r11                   @x[3] * h[2]
288219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
289219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[3] * h[3]
290219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[4] * h[3]
291219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
292219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[4], h[5]
293219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[5]
294219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[6]
295219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
296219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[4] * h[4]
297219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[5] * h[4]
298219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
299219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[5] * h[5]
300219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[6] * h[5]
301219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
302219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[6], h[7]
303219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[7]
304219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[8]
305219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
306219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[6] * h[6]
307219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[7] * h[6]
308219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
309219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[7] * h[7]
310219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[8] * h[7]
311219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
312219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[8], h[9]
313219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[9]
314219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[10]
315219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
316219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[8] * h[8]
317219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[9] * h[8]
318219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
319219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[9] * h[9]
320219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[10] * h[9]
321219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
322219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[10], h[11]
323219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[11]
324219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[12]
325219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
326219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[10] * h[10]
327219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[11] * h[10]
328219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
329219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[11] * h[11]
330219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[12] * h[11]
331219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
332219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[12], h[13]
333219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[13]
334219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[14]
335219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
336219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[12] * h[12]
337219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[13] * h[12]
338219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
339219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[13] * h[13]
340219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[14] * h[13]
341219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
342219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[14], h[15]
343219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[15]
344219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[16]
345219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
346219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[14] * h[14]
347219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[15] * h[14]
348219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
349219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[15] * h[15]
350219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[16] * h[15]
351219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
352219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[16], h[17]
353219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[17]
354219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[18]
355219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
356219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[16] * h[16]
357219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[17] * h[16]
358219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
359219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[17] * h[17]
360219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[18] * h[17]
361219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
362219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[18], h[19]
363219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[19]
364219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[20]
365219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
366219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[18] * h[18]
367219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[19] * h[18]
368219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
369219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[19] * h[19]
370219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[20] * h[19]
371219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
372219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[20], h[21]
373219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[21]
374219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[22]
375219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
376219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[20] * h[20]
377219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[21] * h[20]
378219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
379219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[21] * h[21]
380219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[22] * h[21]
381219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
382219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[22], h[23]
383219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[23]
384219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[24]
385219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
386219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[22] * h[22]
387219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[23] * h[22]
388219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
389219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[23] * h[23]
390219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[24] * h[23]
391219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
392219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[24], h[25]
393219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[25]
394219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[26]
395219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
396219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[24] * h[24]
397219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[25] * h[24]
398219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
399219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[25] * h[25]
400219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[26] * h[25]
401219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
402219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[26], h[27]
403219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[27]
404219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[28]
405219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
406219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r9, r3, r10                   @x[26] * h[26]
407219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r4, r3, r11                   @x[27] * h[26]
408219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
409219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r4, r3, r10                   @x[27] * h[27]
410219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r6, r3, r11                   @x[28] * h[27]
411219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
412219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[28], h[29]
413219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[29]
414219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r4, [r1], #2                       @x[30]
415219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
416219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r6, r3, r10                   @x[28] * h[28]
417219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r9, r3, r11                   @x[29] * h[28]
418219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
419219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r9, r3, r10                   @x[29] * h[29]
420219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r4, r3, r11                   @x[30] * h[29]
421219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
422219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDR       r3, [r2], #4                       @h[30], h[31]
423219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r6, [r1], #2                       @x[31]
424219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 LDRSH     r9, [r1], #2                       @x[32]
425219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
426219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r10, r4, r3, r10                   @x[30] * h[30]
427219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABB    r11, r6, r3, r11                   @x[31] * h[30]
428219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
429219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r10, r6, r3, r10                   @x[31] * h[31]
430219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 SMLABT    r11, r9, r3, r11                   @x[32] * h[31]
431219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
432219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 @SSAT      r10, #32, r10, LSL #2
433219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 @SSAT      r11, #32, r11, LSL #2
434219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r10, r10, LSL #1
435219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r11, r11, LSL #1
436219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
437219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r10, r10, r10
438219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r11, r11, r11
439219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
440219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r10, r10, r5
441219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 QADD      r11, r11, r5
442219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
443219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r10, r10, ASR #16
444219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 MOV       r11, r11, ASR #16
445219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
446219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 STRH      r10, [r0], #2
447219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 STRH      r11, [r0], #2
448219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
449219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
450219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardpred_lt4_end:
451219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         LDMFD     r13!, {r4 - r12, r15}
452219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
453219e2627f1e062c10645664b0d2470d4dfaf5083Mans RullgardTable:
454219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard         .word       inter4_2
455219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 @ENDFUNC
456219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard	 .END
457219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
458219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
459219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
460219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard
461