xref: /aosp_15_r20/external/libxaac/decoder/armv8/ixheaacd_post_twiddle.s (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker///******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker// *
3*15dc779aSAndroid Build Coastguard Worker// * Copyright (C) 2018 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker// *
5*15dc779aSAndroid Build Coastguard Worker// * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker// * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker// * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker// *
9*15dc779aSAndroid Build Coastguard Worker// * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker// *
11*15dc779aSAndroid Build Coastguard Worker// * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker// * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker// * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker// * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker// *
17*15dc779aSAndroid Build Coastguard Worker// *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker// * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker//*/
20*15dc779aSAndroid Build Coastguard Worker
21*15dc779aSAndroid Build Coastguard Worker
22*15dc779aSAndroid Build Coastguard Worker.macro push_v_regs
23*15dc779aSAndroid Build Coastguard Worker    stp             q8, q9, [sp, #-32]!
24*15dc779aSAndroid Build Coastguard Worker    stp             q10, q11, [sp, #-32]!
25*15dc779aSAndroid Build Coastguard Worker    stp             q12, q13, [sp, #-32]!
26*15dc779aSAndroid Build Coastguard Worker    stp             q14, q15, [sp, #-32]!
27*15dc779aSAndroid Build Coastguard Worker    stp             x21, x22, [sp, #-16]!
28*15dc779aSAndroid Build Coastguard Worker    stp             x23, x24, [sp, #-16]!
29*15dc779aSAndroid Build Coastguard Worker.endm
30*15dc779aSAndroid Build Coastguard Worker.macro pop_v_regs
31*15dc779aSAndroid Build Coastguard Worker    ldp             x23, x24, [sp], #16
32*15dc779aSAndroid Build Coastguard Worker    ldp             x21, x22, [sp], #16
33*15dc779aSAndroid Build Coastguard Worker    ldp             q14, q15, [sp], #32
34*15dc779aSAndroid Build Coastguard Worker    ldp             q12, q13, [sp], #32
35*15dc779aSAndroid Build Coastguard Worker    ldp             q10, q11, [sp], #32
36*15dc779aSAndroid Build Coastguard Worker    ldp             q8, q9, [sp], #32
37*15dc779aSAndroid Build Coastguard Worker.endm
38*15dc779aSAndroid Build Coastguard Worker.macro swp reg1, reg2
39*15dc779aSAndroid Build Coastguard Worker    MOV             X16, \reg1
40*15dc779aSAndroid Build Coastguard Worker    MOV             \reg1, \reg2
41*15dc779aSAndroid Build Coastguard Worker    MOV             \reg2, x16
42*15dc779aSAndroid Build Coastguard Worker.endm
43*15dc779aSAndroid Build Coastguard Worker.text
44*15dc779aSAndroid Build Coastguard Worker.global ixheaacd_post_twiddle_armv8
45*15dc779aSAndroid Build Coastguard Workerixheaacd_post_twiddle_armv8:
46*15dc779aSAndroid Build Coastguard Worker
47*15dc779aSAndroid Build Coastguard Worker
48*15dc779aSAndroid Build Coastguard Worker    push_v_regs
49*15dc779aSAndroid Build Coastguard Worker
50*15dc779aSAndroid Build Coastguard WorkerARM_PROLOGUE:
51*15dc779aSAndroid Build Coastguard Worker    CMP             w3, #0x400
52*15dc779aSAndroid Build Coastguard Worker    MOV             x21, #7500
53*15dc779aSAndroid Build Coastguard Worker    ADD             x2, x2, x21
54*15dc779aSAndroid Build Coastguard Worker    BLT             NEXT
55*15dc779aSAndroid Build Coastguard Worker    MOV             w4, #50
56*15dc779aSAndroid Build Coastguard Worker    MOV             w5, #-50
57*15dc779aSAndroid Build Coastguard Worker    MOV             x6, #4
58*15dc779aSAndroid Build Coastguard Worker    dup             v10.4h, w4
59*15dc779aSAndroid Build Coastguard Worker    B               NEXT1
60*15dc779aSAndroid Build Coastguard Worker
61*15dc779aSAndroid Build Coastguard WorkerNEXT:
62*15dc779aSAndroid Build Coastguard Worker    MOV             w4, #0x192
63*15dc779aSAndroid Build Coastguard Worker    MOV             w5, #0xfe6e
64*15dc779aSAndroid Build Coastguard Worker    MOV             x6, #32
65*15dc779aSAndroid Build Coastguard Worker    dup             v10.4h, w4
66*15dc779aSAndroid Build Coastguard Worker
67*15dc779aSAndroid Build Coastguard WorkerNEXT1:
68*15dc779aSAndroid Build Coastguard Worker    LDR             w9, [x2]
69*15dc779aSAndroid Build Coastguard Worker    LSL             W22, W9, #16
70*15dc779aSAndroid Build Coastguard Worker    AND             W21, W9, #0xFFFF0000
71*15dc779aSAndroid Build Coastguard Worker
72*15dc779aSAndroid Build Coastguard Worker    LDR             w7, [x1], #4
73*15dc779aSAndroid Build Coastguard Worker    LDR             w8, [x1], #4
74*15dc779aSAndroid Build Coastguard Worker
75*15dc779aSAndroid Build Coastguard Worker    ADD             x2, x2, x6
76*15dc779aSAndroid Build Coastguard Worker
77*15dc779aSAndroid Build Coastguard Worker
78*15dc779aSAndroid Build Coastguard Worker    SMULL           X11, w8, w21
79*15dc779aSAndroid Build Coastguard Worker    ASR             X11, x11, #32
80*15dc779aSAndroid Build Coastguard Worker    SMULL           X10, w8, w22
81*15dc779aSAndroid Build Coastguard Worker    ASR             X10, x10, #32
82*15dc779aSAndroid Build Coastguard Worker    SMULL           X12, w7, w21
83*15dc779aSAndroid Build Coastguard Worker    ASR             X12, x12, #32
84*15dc779aSAndroid Build Coastguard Worker    SMULL           X23, w7, w22
85*15dc779aSAndroid Build Coastguard Worker    ASR             X23, x23, #32
86*15dc779aSAndroid Build Coastguard Worker    ADD             w8, w11, w23
87*15dc779aSAndroid Build Coastguard Worker
88*15dc779aSAndroid Build Coastguard Worker
89*15dc779aSAndroid Build Coastguard Worker    SUB             w10, w10, w12
90*15dc779aSAndroid Build Coastguard Worker
91*15dc779aSAndroid Build Coastguard Worker    MVN             w8, w8
92*15dc779aSAndroid Build Coastguard Worker    ADD             w8, w8, #1
93*15dc779aSAndroid Build Coastguard Worker
94*15dc779aSAndroid Build Coastguard Worker
95*15dc779aSAndroid Build Coastguard Worker
96*15dc779aSAndroid Build Coastguard Worker    LSL             w21, w5, #16
97*15dc779aSAndroid Build Coastguard Worker    LSL             w22, w4, #16
98*15dc779aSAndroid Build Coastguard Worker    SMULL           X23, w10, w21
99*15dc779aSAndroid Build Coastguard Worker    ASR             X23, x23, #32
100*15dc779aSAndroid Build Coastguard Worker    ADD             w9, w8, w23
101*15dc779aSAndroid Build Coastguard Worker    SMULL           X23, w8, w22
102*15dc779aSAndroid Build Coastguard Worker    ASR             X23, x23, #32
103*15dc779aSAndroid Build Coastguard Worker    ADD             w11, w10, w23
104*15dc779aSAndroid Build Coastguard Worker
105*15dc779aSAndroid Build Coastguard Worker    LSL             x7, x3, #2
106*15dc779aSAndroid Build Coastguard Worker    ADD             x7, x0, x7
107*15dc779aSAndroid Build Coastguard Worker    SUB             x7, x7, #4
108*15dc779aSAndroid Build Coastguard Worker
109*15dc779aSAndroid Build Coastguard Worker    STR             w11, [x7], #-4
110*15dc779aSAndroid Build Coastguard Worker
111*15dc779aSAndroid Build Coastguard Worker    STR             w9, [x0], #4
112*15dc779aSAndroid Build Coastguard Worker
113*15dc779aSAndroid Build Coastguard Worker    LSL             x5, x3, #2
114*15dc779aSAndroid Build Coastguard Worker    ADD             x5, x1, x5
115*15dc779aSAndroid Build Coastguard Worker    SUB             x5, x5, #40
116*15dc779aSAndroid Build Coastguard Worker
117*15dc779aSAndroid Build Coastguard Worker
118*15dc779aSAndroid Build Coastguard Worker    SUB             w3, w3, #1
119*15dc779aSAndroid Build Coastguard Worker    ASR             w3, w3, #4
120*15dc779aSAndroid Build Coastguard Worker
121*15dc779aSAndroid Build Coastguard Worker
122*15dc779aSAndroid Build Coastguard Worker    SUB             x7, x7, #28
123*15dc779aSAndroid Build Coastguard Worker
124*15dc779aSAndroid Build Coastguard Worker
125*15dc779aSAndroid Build Coastguard Worker
126*15dc779aSAndroid Build Coastguard Worker
127*15dc779aSAndroid Build Coastguard Worker
128*15dc779aSAndroid Build Coastguard Worker
129*15dc779aSAndroid Build Coastguard Worker
130*15dc779aSAndroid Build Coastguard Worker
131*15dc779aSAndroid Build Coastguard Worker
132*15dc779aSAndroid Build Coastguard Worker
133*15dc779aSAndroid Build Coastguard Worker
134*15dc779aSAndroid Build Coastguard Worker
135*15dc779aSAndroid Build Coastguard Worker    MOV             x8, #-32
136*15dc779aSAndroid Build Coastguard Worker
137*15dc779aSAndroid Build Coastguard WorkerNEON_PROLOGUE:
138*15dc779aSAndroid Build Coastguard Worker
139*15dc779aSAndroid Build Coastguard Worker    LD4             {v0.4h, v1.4h, v2.4h, v3.4h}, [x5], x8
140*15dc779aSAndroid Build Coastguard Worker
141*15dc779aSAndroid Build Coastguard Worker    LD4             {v4.4h, v5.4h, v6.4h, v7.4h}, [x1], #32
142*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[0], [x2], x6
143*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[1], [x2], x6
144*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[2], [x2], x6
145*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[3], [x2], x6
146*15dc779aSAndroid Build Coastguard Worker
147*15dc779aSAndroid Build Coastguard Worker    rev64           v12.4h, v8.4h
148*15dc779aSAndroid Build Coastguard Worker    rev64           v13.4h, v9.4h
149*15dc779aSAndroid Build Coastguard Worker
150*15dc779aSAndroid Build Coastguard Worker    uMULL           v30.4s, v2.4h, v13.4h
151*15dc779aSAndroid Build Coastguard Worker    uMULL           v28.4s, v0.4h, v13.4h
152*15dc779aSAndroid Build Coastguard Worker    uMULL           v26.4s, v2.4h, v12.4h
153*15dc779aSAndroid Build Coastguard Worker    uMULL           v24.4s, v0.4h, v12.4h
154*15dc779aSAndroid Build Coastguard Worker
155*15dc779aSAndroid Build Coastguard Worker    ushR            v30.4s, v30.4s, #16
156*15dc779aSAndroid Build Coastguard Worker    ushR            v28.4s, v28.4s, #16
157*15dc779aSAndroid Build Coastguard Worker    ushR            v26.4s, v26.4s, #16
158*15dc779aSAndroid Build Coastguard Worker    ushR            v24.4s, v24.4s, #16
159*15dc779aSAndroid Build Coastguard Worker
160*15dc779aSAndroid Build Coastguard Worker    sMLAL           v30.4s, v3.4h, v13.4h
161*15dc779aSAndroid Build Coastguard Worker    sMLAL           v28.4s, v1.4h, v13.4h
162*15dc779aSAndroid Build Coastguard Worker    sMLAL           v26.4s, v3.4h, v12.4h
163*15dc779aSAndroid Build Coastguard Worker    sMLAL           v24.4s, v1.4h, v12.4h
164*15dc779aSAndroid Build Coastguard Worker
165*15dc779aSAndroid Build Coastguard Worker    uMULL           v22.4s, v6.4h, v9.4h
166*15dc779aSAndroid Build Coastguard Worker    uMULL           v20.4s, v4.4h, v9.4h
167*15dc779aSAndroid Build Coastguard Worker
168*15dc779aSAndroid Build Coastguard Worker    ADD             v28.4s, v28.4s , v26.4s
169*15dc779aSAndroid Build Coastguard Worker    SUB             v30.4s, v30.4s , v24.4s
170*15dc779aSAndroid Build Coastguard Worker    NEG             v28.4s, v28.4s
171*15dc779aSAndroid Build Coastguard Worker
172*15dc779aSAndroid Build Coastguard Worker    uMULL           v18.4s, v6.4h, v8.4h
173*15dc779aSAndroid Build Coastguard Worker    uMULL           v16.4s, v4.4h, v8.4h
174*15dc779aSAndroid Build Coastguard Worker
175*15dc779aSAndroid Build Coastguard Worker    mov             v31.8b, v30.8b
176*15dc779aSAndroid Build Coastguard Worker    mov             v27.D[0], v30.D[1]
177*15dc779aSAndroid Build Coastguard Worker    ushR            v22.4s, v22.4s, #16
178*15dc779aSAndroid Build Coastguard Worker
179*15dc779aSAndroid Build Coastguard Worker    mov             v24.8b, v28.8b
180*15dc779aSAndroid Build Coastguard Worker    mov             v25.D[0], v28.D[1]
181*15dc779aSAndroid Build Coastguard Worker    ushR            v20.4s, v20.4s, #16
182*15dc779aSAndroid Build Coastguard Worker
183*15dc779aSAndroid Build Coastguard Worker
184*15dc779aSAndroid Build Coastguard Worker    UZP1            v26.4h, v31.4h, v27.4h
185*15dc779aSAndroid Build Coastguard Worker    UZP2            v27.4h, v31.4h, v27.4h
186*15dc779aSAndroid Build Coastguard Worker    ushR            v18.4s, v18.4s, #16
187*15dc779aSAndroid Build Coastguard Worker
188*15dc779aSAndroid Build Coastguard Worker
189*15dc779aSAndroid Build Coastguard Worker    mov             v31.8B , v24.8B
190*15dc779aSAndroid Build Coastguard Worker    UZP1            v24.4h, v31.4h, v25.4h
191*15dc779aSAndroid Build Coastguard Worker    UZP2            v25.4h, v31.4h, v25.4h
192*15dc779aSAndroid Build Coastguard Worker    ushR            v16.4s, v16.4s, #16
193*15dc779aSAndroid Build Coastguard Worker
194*15dc779aSAndroid Build Coastguard Worker
195*15dc779aSAndroid Build Coastguard Worker    sMLAL           v22.4s, v7.4h, v9.4h
196*15dc779aSAndroid Build Coastguard Worker    sMLAL           v20.4s, v5.4h, v9.4h
197*15dc779aSAndroid Build Coastguard Worker    sMLAL           v18.4s, v7.4h, v8.4h
198*15dc779aSAndroid Build Coastguard Worker    sMLAL           v16.4s, v5.4h, v8.4h
199*15dc779aSAndroid Build Coastguard Worker
200*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[0], [x2], x6
201*15dc779aSAndroid Build Coastguard Worker    uMULL           v0.4s, v26.4h, v10.4h
202*15dc779aSAndroid Build Coastguard Worker
203*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[1], [x2], x6
204*15dc779aSAndroid Build Coastguard Worker    uMULL           v2.4s, v24.4h, v10.4h
205*15dc779aSAndroid Build Coastguard Worker
206*15dc779aSAndroid Build Coastguard Worker
207*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[2], [x2], x6
208*15dc779aSAndroid Build Coastguard Worker    ADD             v22.4s, v22.4s , v16.4s
209*15dc779aSAndroid Build Coastguard Worker
210*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[3], [x2], x6
211*15dc779aSAndroid Build Coastguard Worker    SUB             v20.4s, v18.4s , v20.4s
212*15dc779aSAndroid Build Coastguard Worker
213*15dc779aSAndroid Build Coastguard Worker    rev64           v12.4h, v8.4h
214*15dc779aSAndroid Build Coastguard Worker    rev64           v13.4h, v9.4h
215*15dc779aSAndroid Build Coastguard Worker    NEG             v22.4s, v22.4s
216*15dc779aSAndroid Build Coastguard Worker
217*15dc779aSAndroid Build Coastguard Worker
218*15dc779aSAndroid Build Coastguard Worker    mov             v18.8b, v22.8b
219*15dc779aSAndroid Build Coastguard Worker    mov             v19.D[0], v22.D[1]
220*15dc779aSAndroid Build Coastguard Worker    ushR            v0.4s, v0.4s, #16
221*15dc779aSAndroid Build Coastguard Worker
222*15dc779aSAndroid Build Coastguard Worker    mov             v16.16b, v20.16b
223*15dc779aSAndroid Build Coastguard Worker    mov             v17.D[0], v20.D[1]
224*15dc779aSAndroid Build Coastguard Worker    ushR            v2.4s, v2.4s, #16
225*15dc779aSAndroid Build Coastguard Worker
226*15dc779aSAndroid Build Coastguard Worker
227*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8b, v18.8b
228*15dc779aSAndroid Build Coastguard Worker    UZP1            v18.4h, v31.4h, v19.4h
229*15dc779aSAndroid Build Coastguard Worker    UZP2            v19.4h, v31.4h, v19.4h
230*15dc779aSAndroid Build Coastguard Worker    sMLAL           v0.4s, v27.4h, v10.4h
231*15dc779aSAndroid Build Coastguard Worker
232*15dc779aSAndroid Build Coastguard Worker
233*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8b, v16.8b
234*15dc779aSAndroid Build Coastguard Worker    UZP1            v16.4h, v31.4h, v17.4h
235*15dc779aSAndroid Build Coastguard Worker    UZP2            v17.4h, v31.4h, v17.4h
236*15dc779aSAndroid Build Coastguard Worker    sMLAL           v2.4s, v25.4h, v10.4h
237*15dc779aSAndroid Build Coastguard Worker
238*15dc779aSAndroid Build Coastguard Worker    uMULL           v4.4s, v18.4h, v10.4h
239*15dc779aSAndroid Build Coastguard Worker    uMULL           v6.4s, v16.4h, v10.4h
240*15dc779aSAndroid Build Coastguard Worker
241*15dc779aSAndroid Build Coastguard Worker    NEG             v0.4s, v0.4s
242*15dc779aSAndroid Build Coastguard Worker    ADD             v14.4s, v30.4s , v2.4s
243*15dc779aSAndroid Build Coastguard Worker    ADD             v26.4s, v28.4s , v0.4s
244*15dc779aSAndroid Build Coastguard Worker
245*15dc779aSAndroid Build Coastguard Worker    rev64           v14.4s, v14.4s
246*15dc779aSAndroid Build Coastguard Worker    ushR            v4.4s, v4.4s, #16
247*15dc779aSAndroid Build Coastguard Worker
248*15dc779aSAndroid Build Coastguard Worker    swp             v14.D[0], v14.D[1]
249*15dc779aSAndroid Build Coastguard Worker    ushR            v6.4s, v6.4s, #16
250*15dc779aSAndroid Build Coastguard Worker
251*15dc779aSAndroid Build Coastguard Worker    sMLAL           v4.4s, v19.4h, v10.4h
252*15dc779aSAndroid Build Coastguard Worker    LD4             {v0.4h, v1.4h, v2.4h, v3.4h}, [x5], x8
253*15dc779aSAndroid Build Coastguard Worker    sMLAL           v6.4s, v17.4h, v10.4h
254*15dc779aSAndroid Build Coastguard Worker
255*15dc779aSAndroid Build Coastguard Worker
256*15dc779aSAndroid Build Coastguard Worker    SUB             x3, x3, #2
257*15dc779aSAndroid Build Coastguard Worker
258*15dc779aSAndroid Build Coastguard Worker    ADD             v24.4s, v20.4s , v4.4s
259*15dc779aSAndroid Build Coastguard Worker
260*15dc779aSAndroid Build Coastguard Worker    rev64           v24.4s, v24.4s
261*15dc779aSAndroid Build Coastguard Worker    NEG             v16.4s, v6.4s
262*15dc779aSAndroid Build Coastguard Worker
263*15dc779aSAndroid Build Coastguard Worker    LD4             {v4.4h, v5.4h, v6.4h, v7.4h}, [x1], #32
264*15dc779aSAndroid Build Coastguard Worker
265*15dc779aSAndroid Build Coastguard Worker    swp             v24.D[0], v24.D[1]
266*15dc779aSAndroid Build Coastguard Worker    ADD             v16.4s, v22.4s , v16.4s
267*15dc779aSAndroid Build Coastguard Worker
268*15dc779aSAndroid Build Coastguard Worker
269*15dc779aSAndroid Build Coastguard Worker
270*15dc779aSAndroid Build Coastguard WorkerCORE_LOOP:
271*15dc779aSAndroid Build Coastguard Worker    uMULL           v30.4s, v2.4h, v13.4h
272*15dc779aSAndroid Build Coastguard Worker    MOV             v25.16B, v24.16B
273*15dc779aSAndroid Build Coastguard Worker    ST2             { v25.4s, v26.4s}, [x7], x8
274*15dc779aSAndroid Build Coastguard Worker    uMULL           v28.4s, v0.4h, v13.4h
275*15dc779aSAndroid Build Coastguard Worker
276*15dc779aSAndroid Build Coastguard Worker    uMULL           v26.4s, v2.4h, v12.4h
277*15dc779aSAndroid Build Coastguard Worker    MOV             v15.16B, v14.16B
278*15dc779aSAndroid Build Coastguard Worker    ST2             { v15.4s, v16.4s}, [x0], #32
279*15dc779aSAndroid Build Coastguard Worker    uMULL           v24.4s, v0.4h, v12.4h
280*15dc779aSAndroid Build Coastguard Worker
281*15dc779aSAndroid Build Coastguard Worker    ushR            v30.4s, v30.4s, #16
282*15dc779aSAndroid Build Coastguard Worker    ushR            v28.4s, v28.4s, #16
283*15dc779aSAndroid Build Coastguard Worker    ushR            v26.4s, v26.4s, #16
284*15dc779aSAndroid Build Coastguard Worker    ushR            v24.4s, v24.4s, #16
285*15dc779aSAndroid Build Coastguard Worker
286*15dc779aSAndroid Build Coastguard Worker    sMLAL           v30.4s, v3.4h, v13.4h
287*15dc779aSAndroid Build Coastguard Worker    sMLAL           v28.4s, v1.4h, v13.4h
288*15dc779aSAndroid Build Coastguard Worker    sMLAL           v26.4s, v3.4h, v12.4h
289*15dc779aSAndroid Build Coastguard Worker    sMLAL           v24.4s, v1.4h, v12.4h
290*15dc779aSAndroid Build Coastguard Worker
291*15dc779aSAndroid Build Coastguard Worker    uMULL           v22.4s, v6.4h, v9.4h
292*15dc779aSAndroid Build Coastguard Worker    uMULL           v20.4s, v4.4h, v9.4h
293*15dc779aSAndroid Build Coastguard Worker
294*15dc779aSAndroid Build Coastguard Worker
295*15dc779aSAndroid Build Coastguard Worker    ADD             v28.4s, v28.4s , v26.4s
296*15dc779aSAndroid Build Coastguard Worker    SUB             v30.4s, v30.4s , v24.4s
297*15dc779aSAndroid Build Coastguard Worker    NEG             v28.4s, v28.4s
298*15dc779aSAndroid Build Coastguard Worker
299*15dc779aSAndroid Build Coastguard Worker    uMULL           v18.4s, v6.4h, v8.4h
300*15dc779aSAndroid Build Coastguard Worker    uMULL           v16.4s, v4.4h, v8.4h
301*15dc779aSAndroid Build Coastguard Worker
302*15dc779aSAndroid Build Coastguard Worker
303*15dc779aSAndroid Build Coastguard Worker    mov             v26.8b, v30.8b
304*15dc779aSAndroid Build Coastguard Worker    mov             v27.D[0], v30.D[1]
305*15dc779aSAndroid Build Coastguard Worker    ushR            v22.4s, v22.4s, #16
306*15dc779aSAndroid Build Coastguard Worker
307*15dc779aSAndroid Build Coastguard Worker
308*15dc779aSAndroid Build Coastguard Worker    mov             v24.8b, v28.8b
309*15dc779aSAndroid Build Coastguard Worker    mov             v25.D[0], v28.D[1]
310*15dc779aSAndroid Build Coastguard Worker    ushR            v20.4s, v20.4s, #16
311*15dc779aSAndroid Build Coastguard Worker
312*15dc779aSAndroid Build Coastguard Worker
313*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8b, v26.8b
314*15dc779aSAndroid Build Coastguard Worker    UZP1            v26.4h, v31.4h, v27.4h
315*15dc779aSAndroid Build Coastguard Worker    UZP2            v27.4h, v31.4h, v27.4h
316*15dc779aSAndroid Build Coastguard Worker    ushR            v18.4s, v18.4s, #16
317*15dc779aSAndroid Build Coastguard Worker
318*15dc779aSAndroid Build Coastguard Worker
319*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8b, v24.8b
320*15dc779aSAndroid Build Coastguard Worker    UZP1            v24.4h, v31.4h, v25.4h
321*15dc779aSAndroid Build Coastguard Worker    UZP2            v25.4h, v31.4h, v25.4h
322*15dc779aSAndroid Build Coastguard Worker    ushR            v16.4s, v16.4s, #16
323*15dc779aSAndroid Build Coastguard Worker
324*15dc779aSAndroid Build Coastguard Worker
325*15dc779aSAndroid Build Coastguard Worker    sMLAL           v22.4s, v7.4h, v9.4h
326*15dc779aSAndroid Build Coastguard Worker    sMLAL           v20.4s, v5.4h, v9.4h
327*15dc779aSAndroid Build Coastguard Worker    sMLAL           v18.4s, v7.4h, v8.4h
328*15dc779aSAndroid Build Coastguard Worker    sMLAL           v16.4s, v5.4h, v8.4h
329*15dc779aSAndroid Build Coastguard Worker
330*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[0], [x2], x6
331*15dc779aSAndroid Build Coastguard Worker    uMULL           v0.4s, v26.4h, v10.4h
332*15dc779aSAndroid Build Coastguard Worker
333*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[1], [x2], x6
334*15dc779aSAndroid Build Coastguard Worker    uMULL           v2.4s, v24.4h, v10.4h
335*15dc779aSAndroid Build Coastguard Worker
336*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[2], [x2], x6
337*15dc779aSAndroid Build Coastguard Worker    ADD             v22.4s, v22.4s , v16.4s
338*15dc779aSAndroid Build Coastguard Worker
339*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[3], [x2], x6
340*15dc779aSAndroid Build Coastguard Worker    SUB             v20.4s, v18.4s , v20.4s
341*15dc779aSAndroid Build Coastguard Worker
342*15dc779aSAndroid Build Coastguard Worker    rev64           v12.4h, v8.4h
343*15dc779aSAndroid Build Coastguard Worker    rev64           v13.4h, v9.4h
344*15dc779aSAndroid Build Coastguard Worker    NEG             v22.4s, v22.4s
345*15dc779aSAndroid Build Coastguard Worker
346*15dc779aSAndroid Build Coastguard Worker    mov             v18.8b, v22.8b
347*15dc779aSAndroid Build Coastguard Worker    mov             v19.D[0], v22.D[1]
348*15dc779aSAndroid Build Coastguard Worker    ushR            v0.4s, v0.4s, #16
349*15dc779aSAndroid Build Coastguard Worker
350*15dc779aSAndroid Build Coastguard Worker    mov             v16.8b, v20.8b
351*15dc779aSAndroid Build Coastguard Worker    mov             v17.D[0], v20.D[1]
352*15dc779aSAndroid Build Coastguard Worker    ushR            v2.4s, v2.4s, #16
353*15dc779aSAndroid Build Coastguard Worker
354*15dc779aSAndroid Build Coastguard Worker
355*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8b, v18.8b
356*15dc779aSAndroid Build Coastguard Worker    UZP1            v18.4h, v31.4h, v19.4h
357*15dc779aSAndroid Build Coastguard Worker    UZP2            v19.4h, v31.4h, v19.4h
358*15dc779aSAndroid Build Coastguard Worker    sMLAL           v0.4s, v27.4h, v10.4h
359*15dc779aSAndroid Build Coastguard Worker
360*15dc779aSAndroid Build Coastguard Worker
361*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8b, v16.8b
362*15dc779aSAndroid Build Coastguard Worker    UZP1            v16.4h, v31.4h, v17.4h
363*15dc779aSAndroid Build Coastguard Worker    UZP2            v17.4h, v31.4h, v17.4h
364*15dc779aSAndroid Build Coastguard Worker    sMLAL           v2.4s, v25.4h, v10.4h
365*15dc779aSAndroid Build Coastguard Worker
366*15dc779aSAndroid Build Coastguard Worker    uMULL           v4.4s, v18.4h, v10.4h
367*15dc779aSAndroid Build Coastguard Worker    uMULL           v6.4s, v16.4h, v10.4h
368*15dc779aSAndroid Build Coastguard Worker
369*15dc779aSAndroid Build Coastguard Worker    NEG             v0.4s, v0.4s
370*15dc779aSAndroid Build Coastguard Worker    ADD             v14.4s, v30.4s , v2.4s
371*15dc779aSAndroid Build Coastguard Worker    ADD             v26.4s, v28.4s , v0.4s
372*15dc779aSAndroid Build Coastguard Worker
373*15dc779aSAndroid Build Coastguard Worker    rev64           v14.4s, v14.4s
374*15dc779aSAndroid Build Coastguard Worker    ushR            v4.4s, v4.4s, #16
375*15dc779aSAndroid Build Coastguard Worker
376*15dc779aSAndroid Build Coastguard Worker    swp             v14.D[0], v14.D[1]
377*15dc779aSAndroid Build Coastguard Worker    ushR            v6.4s, v6.4s, #16
378*15dc779aSAndroid Build Coastguard Worker
379*15dc779aSAndroid Build Coastguard Worker    sMLAL           v4.4s, v19.4h, v10.4h
380*15dc779aSAndroid Build Coastguard Worker    LD4             {v0.4h, v1.4h, v2.4h, v3.4h}, [x5], x8
381*15dc779aSAndroid Build Coastguard Worker    sMLAL           v6.4s, v17.4h, v10.4h
382*15dc779aSAndroid Build Coastguard Worker
383*15dc779aSAndroid Build Coastguard Worker
384*15dc779aSAndroid Build Coastguard Worker
385*15dc779aSAndroid Build Coastguard Worker
386*15dc779aSAndroid Build Coastguard Worker
387*15dc779aSAndroid Build Coastguard Worker    ADD             v24.4s, v20.4s , v4.4s
388*15dc779aSAndroid Build Coastguard Worker
389*15dc779aSAndroid Build Coastguard Worker    rev64           v24.4s, v24.4s
390*15dc779aSAndroid Build Coastguard Worker    NEG             v16.4s, v6.4s
391*15dc779aSAndroid Build Coastguard Worker
392*15dc779aSAndroid Build Coastguard Worker    LD4             {v4.4h, v5.4h, v6.4h, v7.4h}, [x1], #32
393*15dc779aSAndroid Build Coastguard Worker
394*15dc779aSAndroid Build Coastguard Worker    swp             v24.D[0], v24.D[1]
395*15dc779aSAndroid Build Coastguard Worker    ADD             v16.4s, v22.4s , v16.4s
396*15dc779aSAndroid Build Coastguard Worker
397*15dc779aSAndroid Build Coastguard Worker    SUBS            x3, x3, #1
398*15dc779aSAndroid Build Coastguard Worker
399*15dc779aSAndroid Build Coastguard Worker    BNE             CORE_LOOP
400*15dc779aSAndroid Build Coastguard Worker
401*15dc779aSAndroid Build Coastguard Worker
402*15dc779aSAndroid Build Coastguard Worker
403*15dc779aSAndroid Build Coastguard Worker
404*15dc779aSAndroid Build Coastguard WorkerNEON_EPILOGUE:
405*15dc779aSAndroid Build Coastguard Worker    uMULL           v30.4s, v2.4h, v13.4h
406*15dc779aSAndroid Build Coastguard Worker    MOV             v25.16B, v24.16B
407*15dc779aSAndroid Build Coastguard Worker    ST2             { v25.4s, v26.4s}, [x7], x8
408*15dc779aSAndroid Build Coastguard Worker    uMULL           v28.4s, v0.4h, v13.4h
409*15dc779aSAndroid Build Coastguard Worker
410*15dc779aSAndroid Build Coastguard Worker    uMULL           v26.4s, v2.4h, v12.4h
411*15dc779aSAndroid Build Coastguard Worker    MOV             v15.16B, v14.16B
412*15dc779aSAndroid Build Coastguard Worker    ST2             { v15.4s, v16.4s}, [x0], #32
413*15dc779aSAndroid Build Coastguard Worker    uMULL           v24.4s, v0.4h, v12.4h
414*15dc779aSAndroid Build Coastguard Worker
415*15dc779aSAndroid Build Coastguard Worker
416*15dc779aSAndroid Build Coastguard Worker
417*15dc779aSAndroid Build Coastguard Worker    ushR            v30.4s, v30.4s, #16
418*15dc779aSAndroid Build Coastguard Worker    ushR            v28.4s, v28.4s, #16
419*15dc779aSAndroid Build Coastguard Worker    ushR            v26.4s, v26.4s, #16
420*15dc779aSAndroid Build Coastguard Worker    ushR            v24.4s, v24.4s, #16
421*15dc779aSAndroid Build Coastguard Worker
422*15dc779aSAndroid Build Coastguard Worker    sMLAL           v30.4s, v3.4h, v13.4h
423*15dc779aSAndroid Build Coastguard Worker    sMLAL           v28.4s, v1.4h, v13.4h
424*15dc779aSAndroid Build Coastguard Worker    sMLAL           v26.4s, v3.4h, v12.4h
425*15dc779aSAndroid Build Coastguard Worker    sMLAL           v24.4s, v1.4h, v12.4h
426*15dc779aSAndroid Build Coastguard Worker
427*15dc779aSAndroid Build Coastguard Worker
428*15dc779aSAndroid Build Coastguard Worker    uMULL           v22.4s, v6.4h, v9.4h
429*15dc779aSAndroid Build Coastguard Worker    uMULL           v20.4s, v4.4h, v9.4h
430*15dc779aSAndroid Build Coastguard Worker
431*15dc779aSAndroid Build Coastguard Worker
432*15dc779aSAndroid Build Coastguard Worker    ADD             v28.4s, v28.4s , v26.4s
433*15dc779aSAndroid Build Coastguard Worker    SUB             v30.4s, v30.4s , v24.4s
434*15dc779aSAndroid Build Coastguard Worker    NEG             v28.4s, v28.4s
435*15dc779aSAndroid Build Coastguard Worker
436*15dc779aSAndroid Build Coastguard Worker    uMULL           v18.4s, v6.4h, v8.4h
437*15dc779aSAndroid Build Coastguard Worker    uMULL           v16.4s, v4.4h, v8.4h
438*15dc779aSAndroid Build Coastguard Worker
439*15dc779aSAndroid Build Coastguard Worker
440*15dc779aSAndroid Build Coastguard Worker    mov             v26.8b, v30.8b
441*15dc779aSAndroid Build Coastguard Worker    mov             v27.D[0], v30.D[1]
442*15dc779aSAndroid Build Coastguard Worker    ushR            v22.4s, v22.4s, #16
443*15dc779aSAndroid Build Coastguard Worker
444*15dc779aSAndroid Build Coastguard Worker    mov             v24.16b, v28.16b
445*15dc779aSAndroid Build Coastguard Worker    mov             v25.D[0], v28.D[1]
446*15dc779aSAndroid Build Coastguard Worker    ushR            v20.4s, v20.4s, #16
447*15dc779aSAndroid Build Coastguard Worker
448*15dc779aSAndroid Build Coastguard Worker
449*15dc779aSAndroid Build Coastguard Worker    mov             v31.8b, v26.8b
450*15dc779aSAndroid Build Coastguard Worker    UZP1            v26.4h, v31.4h, v27.4h
451*15dc779aSAndroid Build Coastguard Worker    UZP2            v27.4h, v31.4h, v27.4h
452*15dc779aSAndroid Build Coastguard Worker    ushR            v18.4s, v18.4s, #16
453*15dc779aSAndroid Build Coastguard Worker
454*15dc779aSAndroid Build Coastguard Worker
455*15dc779aSAndroid Build Coastguard Worker    mov             v31.8b, v24.8b
456*15dc779aSAndroid Build Coastguard Worker    UZP1            v24.4h, v31.4h, v25.4h
457*15dc779aSAndroid Build Coastguard Worker    UZP2            v25.4h, v31.4h, v25.4h
458*15dc779aSAndroid Build Coastguard Worker    ushR            v16.4s, v16.4s, #16
459*15dc779aSAndroid Build Coastguard Worker
460*15dc779aSAndroid Build Coastguard Worker
461*15dc779aSAndroid Build Coastguard Worker    sMLAL           v22.4s, v7.4h, v9.4h
462*15dc779aSAndroid Build Coastguard Worker    sMLAL           v20.4s, v5.4h, v9.4h
463*15dc779aSAndroid Build Coastguard Worker    sMLAL           v18.4s, v7.4h, v8.4h
464*15dc779aSAndroid Build Coastguard Worker    sMLAL           v16.4s, v5.4h, v8.4h
465*15dc779aSAndroid Build Coastguard Worker
466*15dc779aSAndroid Build Coastguard Worker
467*15dc779aSAndroid Build Coastguard Worker    uMULL           v0.4s, v26.4h, v10.4h
468*15dc779aSAndroid Build Coastguard Worker
469*15dc779aSAndroid Build Coastguard Worker
470*15dc779aSAndroid Build Coastguard Worker    uMULL           v2.4s, v24.4h, v10.4h
471*15dc779aSAndroid Build Coastguard Worker
472*15dc779aSAndroid Build Coastguard Worker
473*15dc779aSAndroid Build Coastguard Worker    ADD             v22.4s, v22.4s , v16.4s
474*15dc779aSAndroid Build Coastguard Worker
475*15dc779aSAndroid Build Coastguard Worker
476*15dc779aSAndroid Build Coastguard Worker    SUB             v20.4s, v18.4s , v20.4s
477*15dc779aSAndroid Build Coastguard Worker
478*15dc779aSAndroid Build Coastguard Worker
479*15dc779aSAndroid Build Coastguard Worker    NEG             v22.4s, v22.4s
480*15dc779aSAndroid Build Coastguard Worker
481*15dc779aSAndroid Build Coastguard Worker
482*15dc779aSAndroid Build Coastguard Worker    mov             v18.16b, v22.16b
483*15dc779aSAndroid Build Coastguard Worker    ushR            v0.4s, v0.4s, #16
484*15dc779aSAndroid Build Coastguard Worker
485*15dc779aSAndroid Build Coastguard Worker    mov             v16.16b, v20.16b
486*15dc779aSAndroid Build Coastguard Worker    ushR            v2.4s, v2.4s, #16
487*15dc779aSAndroid Build Coastguard Worker
488*15dc779aSAndroid Build Coastguard Worker
489*15dc779aSAndroid Build Coastguard Worker    mov             v31.16b, v18.16b
490*15dc779aSAndroid Build Coastguard Worker    mov             v19.d[0], v31.d[1]
491*15dc779aSAndroid Build Coastguard Worker    UZP1            v18.4h, v31.4h, v19.4h
492*15dc779aSAndroid Build Coastguard Worker    UZP2            v19.4h, v31.4h, v19.4h
493*15dc779aSAndroid Build Coastguard Worker    sMLAL           v0.4s, v27.4h, v10.4h
494*15dc779aSAndroid Build Coastguard Worker
495*15dc779aSAndroid Build Coastguard Worker
496*15dc779aSAndroid Build Coastguard Worker    mov             v31.16b, v16.16b
497*15dc779aSAndroid Build Coastguard Worker    mov             v17.d[0], v31.d[1]
498*15dc779aSAndroid Build Coastguard Worker    UZP1            v16.4h, v31.4h, v17.4h
499*15dc779aSAndroid Build Coastguard Worker    UZP2            v17.4h, v31.4h, v17.4h
500*15dc779aSAndroid Build Coastguard Worker    sMLAL           v2.4s, v25.4h, v10.4h
501*15dc779aSAndroid Build Coastguard Worker
502*15dc779aSAndroid Build Coastguard Worker    uMULL           v4.4s, v18.4h, v10.4h
503*15dc779aSAndroid Build Coastguard Worker    uMULL           v6.4s, v16.4h, v10.4h
504*15dc779aSAndroid Build Coastguard Worker
505*15dc779aSAndroid Build Coastguard Worker    NEG             v0.4s, v0.4s
506*15dc779aSAndroid Build Coastguard Worker    ADD             v14.4s, v30.4s , v2.4s
507*15dc779aSAndroid Build Coastguard Worker    ADD             v26.4s, v28.4s , v0.4s
508*15dc779aSAndroid Build Coastguard Worker
509*15dc779aSAndroid Build Coastguard Worker    rev64           v14.4s, v14.4s
510*15dc779aSAndroid Build Coastguard Worker    ushR            v4.4s, v4.4s, #16
511*15dc779aSAndroid Build Coastguard Worker
512*15dc779aSAndroid Build Coastguard Worker    swp             v14.D[0], v14.D[1]
513*15dc779aSAndroid Build Coastguard Worker    ushR            v6.4s, v6.4s, #16
514*15dc779aSAndroid Build Coastguard Worker
515*15dc779aSAndroid Build Coastguard Worker    sMLAL           v4.4s, v19.4h, v10.4h
516*15dc779aSAndroid Build Coastguard Worker
517*15dc779aSAndroid Build Coastguard Worker    sMLAL           v6.4s, v17.4h, v10.4h
518*15dc779aSAndroid Build Coastguard Worker
519*15dc779aSAndroid Build Coastguard Worker
520*15dc779aSAndroid Build Coastguard Worker
521*15dc779aSAndroid Build Coastguard Worker
522*15dc779aSAndroid Build Coastguard Worker    ADD             v24.4s, v20.4s , v4.4s
523*15dc779aSAndroid Build Coastguard Worker
524*15dc779aSAndroid Build Coastguard Worker    rev64           v24.4s, v24.4s
525*15dc779aSAndroid Build Coastguard Worker    NEG             v16.4s, v6.4s
526*15dc779aSAndroid Build Coastguard Worker
527*15dc779aSAndroid Build Coastguard Worker
528*15dc779aSAndroid Build Coastguard Worker
529*15dc779aSAndroid Build Coastguard Worker    swp             v24.D[0], v24.D[1]
530*15dc779aSAndroid Build Coastguard Worker    ADD             v16.4s, v22.4s , v16.4s
531*15dc779aSAndroid Build Coastguard Worker
532*15dc779aSAndroid Build Coastguard Worker    MOV             v25.16B, v24.16B
533*15dc779aSAndroid Build Coastguard Worker    MOV             v15.16B, v14.16B
534*15dc779aSAndroid Build Coastguard Worker    ST2             { v15.4s, v16.4s}, [x0], #32
535*15dc779aSAndroid Build Coastguard Worker    ST2             { v25.4s, v26.4s}, [x7], x8
536*15dc779aSAndroid Build Coastguard Worker
537*15dc779aSAndroid Build Coastguard Worker
538*15dc779aSAndroid Build Coastguard Worker
539*15dc779aSAndroid Build Coastguard Worker
540*15dc779aSAndroid Build Coastguard Worker    LD4             {v0.4h, v1.4h, v2.4h, v3.4h}, [x5], x8
541*15dc779aSAndroid Build Coastguard Worker
542*15dc779aSAndroid Build Coastguard Worker    movi            v6.2s, #0x00000000
543*15dc779aSAndroid Build Coastguard Worker    movi            v7.2s, #0x00000000
544*15dc779aSAndroid Build Coastguard Worker
545*15dc779aSAndroid Build Coastguard Worker    LD2             {v4.2s, v5.2s}, [x1], #16
546*15dc779aSAndroid Build Coastguard Worker    LD2             {v6.s, v7.s}[0], [x1]
547*15dc779aSAndroid Build Coastguard Worker
548*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[0], [x2], x6
549*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[1], [x2], x6
550*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[2], [x2], x6
551*15dc779aSAndroid Build Coastguard Worker    LD2             {v8.h, v9.h}[3], [x2], x6
552*15dc779aSAndroid Build Coastguard Worker
553*15dc779aSAndroid Build Coastguard Worker    rev64           v12.8h, v8.8h
554*15dc779aSAndroid Build Coastguard Worker    rev64           v13.8h, v9.8h
555*15dc779aSAndroid Build Coastguard Worker    swp             v5.D[0], v6.D[0]
556*15dc779aSAndroid Build Coastguard Worker
557*15dc779aSAndroid Build Coastguard Worker
558*15dc779aSAndroid Build Coastguard Worker    MOV             v30.8B, V4.8B
559*15dc779aSAndroid Build Coastguard Worker    UZP1            v4.4h, v30.4h, v5.4h
560*15dc779aSAndroid Build Coastguard Worker    UZP2            v5.4h, v30.4h, v5.4h
561*15dc779aSAndroid Build Coastguard Worker    MOV             v30.8B, V6.8B
562*15dc779aSAndroid Build Coastguard Worker    UZP1            v6.4h, v30.4h, v7.4h
563*15dc779aSAndroid Build Coastguard Worker    UZP2            v7.4h, v30.4h, v7.4h
564*15dc779aSAndroid Build Coastguard Worker    uMULL           v30.4s, v2.4h, v13.4h
565*15dc779aSAndroid Build Coastguard Worker    uMULL           v28.4s, v0.4h, v13.4h
566*15dc779aSAndroid Build Coastguard Worker
567*15dc779aSAndroid Build Coastguard Worker    uMULL           v26.4s, v2.4h, v12.4h
568*15dc779aSAndroid Build Coastguard Worker    uMULL           v24.4s, v0.4h, v12.4h
569*15dc779aSAndroid Build Coastguard Worker
570*15dc779aSAndroid Build Coastguard Worker    ushR            v30.4s, v30.4s, #16
571*15dc779aSAndroid Build Coastguard Worker    ushR            v28.4s, v28.4s, #16
572*15dc779aSAndroid Build Coastguard Worker    ushR            v26.4s, v26.4s, #16
573*15dc779aSAndroid Build Coastguard Worker    ushR            v24.4s, v24.4s, #16
574*15dc779aSAndroid Build Coastguard Worker
575*15dc779aSAndroid Build Coastguard Worker    sMLAL           v30.4s, v3.4h, v13.4h
576*15dc779aSAndroid Build Coastguard Worker    sMLAL           v28.4s, v1.4h, v13.4h
577*15dc779aSAndroid Build Coastguard Worker    sMLAL           v26.4s, v3.4h, v12.4h
578*15dc779aSAndroid Build Coastguard Worker    sMLAL           v24.4s, v1.4h, v12.4h
579*15dc779aSAndroid Build Coastguard Worker
580*15dc779aSAndroid Build Coastguard Worker    uMULL           v22.4s, v6.4h, v9.4h
581*15dc779aSAndroid Build Coastguard Worker    uMULL           v20.4s, v4.4h, v9.4h
582*15dc779aSAndroid Build Coastguard Worker
583*15dc779aSAndroid Build Coastguard Worker
584*15dc779aSAndroid Build Coastguard Worker    ADD             v28.4s, v28.4s , v26.4s
585*15dc779aSAndroid Build Coastguard Worker    SUB             v30.4s, v30.4s , v24.4s
586*15dc779aSAndroid Build Coastguard Worker    NEG             v28.4s, v28.4s
587*15dc779aSAndroid Build Coastguard Worker
588*15dc779aSAndroid Build Coastguard Worker    uMULL           v18.4s, v6.4h, v8.4h
589*15dc779aSAndroid Build Coastguard Worker    uMULL           v16.4s, v4.4h, v8.4h
590*15dc779aSAndroid Build Coastguard Worker
591*15dc779aSAndroid Build Coastguard Worker    mov             v26.8b, v30.8b
592*15dc779aSAndroid Build Coastguard Worker    mov             v27.D[0], v30.D[1]
593*15dc779aSAndroid Build Coastguard Worker    ushR            v22.4s, v22.4s, #16
594*15dc779aSAndroid Build Coastguard Worker
595*15dc779aSAndroid Build Coastguard Worker    mov             v24.16b, v28.16b
596*15dc779aSAndroid Build Coastguard Worker    mov             v25.D[0], v28.D[1]
597*15dc779aSAndroid Build Coastguard Worker    ushR            v20.4s, v20.4s, #16
598*15dc779aSAndroid Build Coastguard Worker
599*15dc779aSAndroid Build Coastguard Worker
600*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8B, V26.8B
601*15dc779aSAndroid Build Coastguard Worker    UZP1            v26.4h, v31.4h, v27.4h
602*15dc779aSAndroid Build Coastguard Worker    UZP2            v27.4h, v31.4h, v27.4h
603*15dc779aSAndroid Build Coastguard Worker    ushr            v18.4s, v18.4s, #16
604*15dc779aSAndroid Build Coastguard Worker
605*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8B, V24.8B
606*15dc779aSAndroid Build Coastguard Worker    UZP1            v24.4h, v31.4h, v25.4h
607*15dc779aSAndroid Build Coastguard Worker    UZP2            v25.4h, v31.4h, v25.4h
608*15dc779aSAndroid Build Coastguard Worker    ushR            v16.4s, v16.4s, #16
609*15dc779aSAndroid Build Coastguard Worker
610*15dc779aSAndroid Build Coastguard Worker    sMLAL           v22.4s, v7.4h, v9.4h
611*15dc779aSAndroid Build Coastguard Worker    sMLAL           v20.4s, v5.4h, v9.4h
612*15dc779aSAndroid Build Coastguard Worker    sMLAL           v18.4s, v7.4h, v8.4h
613*15dc779aSAndroid Build Coastguard Worker    sMLAL           v16.4s, v5.4h, v8.4h
614*15dc779aSAndroid Build Coastguard Worker
615*15dc779aSAndroid Build Coastguard Worker
616*15dc779aSAndroid Build Coastguard Worker    uMULL           v0.4s, v26.4h, v10.4h
617*15dc779aSAndroid Build Coastguard Worker
618*15dc779aSAndroid Build Coastguard Worker
619*15dc779aSAndroid Build Coastguard Worker    uMULL           v2.4s, v24.4h, v10.4h
620*15dc779aSAndroid Build Coastguard Worker
621*15dc779aSAndroid Build Coastguard Worker    ADD             v22.4s, v22.4s , v16.4s
622*15dc779aSAndroid Build Coastguard Worker
623*15dc779aSAndroid Build Coastguard Worker
624*15dc779aSAndroid Build Coastguard Worker    SUB             v20.4s, v18.4s , v20.4s
625*15dc779aSAndroid Build Coastguard Worker
626*15dc779aSAndroid Build Coastguard Worker
627*15dc779aSAndroid Build Coastguard Worker    NEG             v22.4s, v22.4s
628*15dc779aSAndroid Build Coastguard Worker
629*15dc779aSAndroid Build Coastguard Worker
630*15dc779aSAndroid Build Coastguard Worker    mov             v18.8B, v22.8B
631*15dc779aSAndroid Build Coastguard Worker    mov             v19.D[0], v22.D[1]
632*15dc779aSAndroid Build Coastguard Worker    ushR            v0.4s, v0.4s, #16
633*15dc779aSAndroid Build Coastguard Worker
634*15dc779aSAndroid Build Coastguard Worker    mov             v16.16b, v20.16b
635*15dc779aSAndroid Build Coastguard Worker    mov             v17.D[0], v20.D[1]
636*15dc779aSAndroid Build Coastguard Worker    ushR            v2.4s, v2.4s, #16
637*15dc779aSAndroid Build Coastguard Worker
638*15dc779aSAndroid Build Coastguard Worker
639*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8B, V18.8B
640*15dc779aSAndroid Build Coastguard Worker    UZP1            v18.4h, v31.4h, v19.4h
641*15dc779aSAndroid Build Coastguard Worker    UZP2            v19.4h, v31.4h, v19.4h
642*15dc779aSAndroid Build Coastguard Worker    sMLAL           v0.4s, v27.4h, v10.4h
643*15dc779aSAndroid Build Coastguard Worker
644*15dc779aSAndroid Build Coastguard Worker
645*15dc779aSAndroid Build Coastguard Worker    MOV             v31.8B, V16.8B
646*15dc779aSAndroid Build Coastguard Worker    UZP1            v16.4h, v31.4h, v17.4h
647*15dc779aSAndroid Build Coastguard Worker    UZP2            v17.4h, v31.4h, v17.4h
648*15dc779aSAndroid Build Coastguard Worker    sMLAL           v2.4s, v25.4h, v10.4h
649*15dc779aSAndroid Build Coastguard Worker
650*15dc779aSAndroid Build Coastguard Worker    uMULL           v4.4s, v18.4h, v10.4h
651*15dc779aSAndroid Build Coastguard Worker    uMULL           v6.4s, v16.4h, v10.4h
652*15dc779aSAndroid Build Coastguard Worker
653*15dc779aSAndroid Build Coastguard Worker    NEG             v0.4s, v0.4s
654*15dc779aSAndroid Build Coastguard Worker    ADD             v14.4s, v30.4s , v2.4s
655*15dc779aSAndroid Build Coastguard Worker    ADD             v26.4s, v28.4s , v0.4s
656*15dc779aSAndroid Build Coastguard Worker
657*15dc779aSAndroid Build Coastguard Worker    rev64           v14.4s, v14.4s
658*15dc779aSAndroid Build Coastguard Worker    ushR            v4.4s, v4.4s, #16
659*15dc779aSAndroid Build Coastguard Worker
660*15dc779aSAndroid Build Coastguard Worker    swp             v14.D[0], v14.D[1]
661*15dc779aSAndroid Build Coastguard Worker    ushR            v6.4s, v6.4s, #16
662*15dc779aSAndroid Build Coastguard Worker
663*15dc779aSAndroid Build Coastguard Worker    sMLAL           v4.4s, v19.4h, v10.4h
664*15dc779aSAndroid Build Coastguard Worker
665*15dc779aSAndroid Build Coastguard Worker    sMLAL           v6.4s, v17.4h, v10.4h
666*15dc779aSAndroid Build Coastguard Worker
667*15dc779aSAndroid Build Coastguard Worker
668*15dc779aSAndroid Build Coastguard Worker
669*15dc779aSAndroid Build Coastguard Worker
670*15dc779aSAndroid Build Coastguard Worker    ADD             v24.4s, v20.4s , v4.4s
671*15dc779aSAndroid Build Coastguard Worker
672*15dc779aSAndroid Build Coastguard Worker    rev64           v24.4s, v24.4s
673*15dc779aSAndroid Build Coastguard Worker    NEG             v16.4s, v6.4s
674*15dc779aSAndroid Build Coastguard Worker
675*15dc779aSAndroid Build Coastguard Worker    swp             v24.D[0], v24.D[1]
676*15dc779aSAndroid Build Coastguard Worker    ADD             v16.4s, v22.4s , v16.4s
677*15dc779aSAndroid Build Coastguard Worker
678*15dc779aSAndroid Build Coastguard Worker
679*15dc779aSAndroid Build Coastguard Worker    MOV             v15.16B, v14.16B
680*15dc779aSAndroid Build Coastguard Worker    ST2             {v15.2s, v16.2s}, [x0], #16
681*15dc779aSAndroid Build Coastguard Worker
682*15dc779aSAndroid Build Coastguard Worker    ST2             {v15.s, v16.s}[2], [x0], #8
683*15dc779aSAndroid Build Coastguard Worker
684*15dc779aSAndroid Build Coastguard Worker    ST1             {v15.s}[3], [x0]
685*15dc779aSAndroid Build Coastguard Worker
686*15dc779aSAndroid Build Coastguard Worker    ADD             x7, x7, #4
687*15dc779aSAndroid Build Coastguard Worker
688*15dc779aSAndroid Build Coastguard Worker    ST1             {v26.s}[0], [x7], #4
689*15dc779aSAndroid Build Coastguard Worker    MOV             v25.16B, v24.16B
690*15dc779aSAndroid Build Coastguard Worker    ST2             {v25.s, v26.s}[1], [x7], #8
691*15dc779aSAndroid Build Coastguard Worker    MOV             v27.D[0], V26.d[1]
692*15dc779aSAndroid Build Coastguard Worker    mov             v26.d[0], v25.d[1]
693*15dc779aSAndroid Build Coastguard Worker    ST2             {v26.2s, v27.2s}, [x7]
694*15dc779aSAndroid Build Coastguard Worker
695*15dc779aSAndroid Build Coastguard Worker
696*15dc779aSAndroid Build Coastguard Worker
697*15dc779aSAndroid Build Coastguard Worker
698*15dc779aSAndroid Build Coastguard Worker
699*15dc779aSAndroid Build Coastguard Worker
700*15dc779aSAndroid Build Coastguard Worker    pop_v_regs
701*15dc779aSAndroid Build Coastguard Worker    ret
702*15dc779aSAndroid Build Coastguard Worker
703*15dc779aSAndroid Build Coastguard Worker
704*15dc779aSAndroid Build Coastguard Worker
705*15dc779aSAndroid Build Coastguard Worker
706*15dc779aSAndroid Build Coastguard Worker
707*15dc779aSAndroid Build Coastguard Worker
708*15dc779aSAndroid Build Coastguard Worker
709*15dc779aSAndroid Build Coastguard Worker
710*15dc779aSAndroid Build Coastguard Worker
711*15dc779aSAndroid Build Coastguard Worker
712*15dc779aSAndroid Build Coastguard Worker
713*15dc779aSAndroid Build Coastguard Worker
714