xref: /aosp_15_r20/external/boringssl/src/gen/crypto/chacha-armv8-win.S (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1*8fb009dcSAndroid Build Coastguard Worker// This file is generated from a similarly-named Perl script in the BoringSSL
2*8fb009dcSAndroid Build Coastguard Worker// source tree. Do not edit by hand.
3*8fb009dcSAndroid Build Coastguard Worker
4*8fb009dcSAndroid Build Coastguard Worker#include <openssl/asm_base.h>
5*8fb009dcSAndroid Build Coastguard Worker
6*8fb009dcSAndroid Build Coastguard Worker#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) && defined(_WIN32)
7*8fb009dcSAndroid Build Coastguard Worker#include <openssl/arm_arch.h>
8*8fb009dcSAndroid Build Coastguard Worker
9*8fb009dcSAndroid Build Coastguard Worker.section	.rodata
10*8fb009dcSAndroid Build Coastguard Worker
11*8fb009dcSAndroid Build Coastguard Worker.align	5
12*8fb009dcSAndroid Build Coastguard WorkerLsigma:
13*8fb009dcSAndroid Build Coastguard Worker.quad	0x3320646e61707865,0x6b20657479622d32		// endian-neutral
14*8fb009dcSAndroid Build Coastguard WorkerLone:
15*8fb009dcSAndroid Build Coastguard Worker.long	1,0,0,0
16*8fb009dcSAndroid Build Coastguard Worker.byte	67,104,97,67,104,97,50,48,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
17*8fb009dcSAndroid Build Coastguard Worker.align	2
18*8fb009dcSAndroid Build Coastguard Worker
19*8fb009dcSAndroid Build Coastguard Worker.text
20*8fb009dcSAndroid Build Coastguard Worker
21*8fb009dcSAndroid Build Coastguard Worker.globl	ChaCha20_ctr32_nohw
22*8fb009dcSAndroid Build Coastguard Worker
23*8fb009dcSAndroid Build Coastguard Worker.def ChaCha20_ctr32_nohw
24*8fb009dcSAndroid Build Coastguard Worker   .type 32
25*8fb009dcSAndroid Build Coastguard Worker.endef
26*8fb009dcSAndroid Build Coastguard Worker.align	5
27*8fb009dcSAndroid Build Coastguard WorkerChaCha20_ctr32_nohw:
28*8fb009dcSAndroid Build Coastguard Worker	AARCH64_SIGN_LINK_REGISTER
29*8fb009dcSAndroid Build Coastguard Worker	stp	x29,x30,[sp,#-96]!
30*8fb009dcSAndroid Build Coastguard Worker	add	x29,sp,#0
31*8fb009dcSAndroid Build Coastguard Worker
32*8fb009dcSAndroid Build Coastguard Worker	adrp	x5,Lsigma
33*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,:lo12:Lsigma
34*8fb009dcSAndroid Build Coastguard Worker	stp	x19,x20,[sp,#16]
35*8fb009dcSAndroid Build Coastguard Worker	stp	x21,x22,[sp,#32]
36*8fb009dcSAndroid Build Coastguard Worker	stp	x23,x24,[sp,#48]
37*8fb009dcSAndroid Build Coastguard Worker	stp	x25,x26,[sp,#64]
38*8fb009dcSAndroid Build Coastguard Worker	stp	x27,x28,[sp,#80]
39*8fb009dcSAndroid Build Coastguard Worker	sub	sp,sp,#64
40*8fb009dcSAndroid Build Coastguard Worker
41*8fb009dcSAndroid Build Coastguard Worker	ldp	x22,x23,[x5]		// load sigma
42*8fb009dcSAndroid Build Coastguard Worker	ldp	x24,x25,[x3]		// load key
43*8fb009dcSAndroid Build Coastguard Worker	ldp	x26,x27,[x3,#16]
44*8fb009dcSAndroid Build Coastguard Worker	ldp	x28,x30,[x4]		// load counter
45*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
46*8fb009dcSAndroid Build Coastguard Worker	ror	x24,x24,#32
47*8fb009dcSAndroid Build Coastguard Worker	ror	x25,x25,#32
48*8fb009dcSAndroid Build Coastguard Worker	ror	x26,x26,#32
49*8fb009dcSAndroid Build Coastguard Worker	ror	x27,x27,#32
50*8fb009dcSAndroid Build Coastguard Worker	ror	x28,x28,#32
51*8fb009dcSAndroid Build Coastguard Worker	ror	x30,x30,#32
52*8fb009dcSAndroid Build Coastguard Worker#endif
53*8fb009dcSAndroid Build Coastguard Worker
54*8fb009dcSAndroid Build Coastguard WorkerLoop_outer:
55*8fb009dcSAndroid Build Coastguard Worker	mov	w5,w22			// unpack key block
56*8fb009dcSAndroid Build Coastguard Worker	lsr	x6,x22,#32
57*8fb009dcSAndroid Build Coastguard Worker	mov	w7,w23
58*8fb009dcSAndroid Build Coastguard Worker	lsr	x8,x23,#32
59*8fb009dcSAndroid Build Coastguard Worker	mov	w9,w24
60*8fb009dcSAndroid Build Coastguard Worker	lsr	x10,x24,#32
61*8fb009dcSAndroid Build Coastguard Worker	mov	w11,w25
62*8fb009dcSAndroid Build Coastguard Worker	lsr	x12,x25,#32
63*8fb009dcSAndroid Build Coastguard Worker	mov	w13,w26
64*8fb009dcSAndroid Build Coastguard Worker	lsr	x14,x26,#32
65*8fb009dcSAndroid Build Coastguard Worker	mov	w15,w27
66*8fb009dcSAndroid Build Coastguard Worker	lsr	x16,x27,#32
67*8fb009dcSAndroid Build Coastguard Worker	mov	w17,w28
68*8fb009dcSAndroid Build Coastguard Worker	lsr	x19,x28,#32
69*8fb009dcSAndroid Build Coastguard Worker	mov	w20,w30
70*8fb009dcSAndroid Build Coastguard Worker	lsr	x21,x30,#32
71*8fb009dcSAndroid Build Coastguard Worker
72*8fb009dcSAndroid Build Coastguard Worker	mov	x4,#10
73*8fb009dcSAndroid Build Coastguard Worker	subs	x2,x2,#64
74*8fb009dcSAndroid Build Coastguard WorkerLoop:
75*8fb009dcSAndroid Build Coastguard Worker	sub	x4,x4,#1
76*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
77*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
78*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
79*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
80*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
81*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
82*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
83*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
84*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
85*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
86*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
87*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
88*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
89*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
90*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
91*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
92*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
93*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
94*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
95*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
96*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
97*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
98*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
99*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
100*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
101*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
102*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
103*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
104*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
105*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
106*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
107*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
108*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
109*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
110*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
111*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
112*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
113*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
114*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
115*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
116*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
117*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
118*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
119*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
120*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
121*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
122*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
123*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
124*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
125*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
126*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
127*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
128*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
129*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
130*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
131*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
132*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
133*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
134*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
135*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
136*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
137*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
138*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
139*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
140*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
141*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
142*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
143*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
144*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
145*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
146*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
147*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
148*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
149*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
150*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
151*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
152*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
153*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
154*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
155*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
156*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
157*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
158*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
159*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
160*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
161*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
162*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
163*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
164*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
165*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
166*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
167*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
168*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
169*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
170*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
171*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
172*8fb009dcSAndroid Build Coastguard Worker	cbnz	x4,Loop
173*8fb009dcSAndroid Build Coastguard Worker
174*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w22		// accumulate key block
175*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x22,lsr#32
176*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w23
177*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x23,lsr#32
178*8fb009dcSAndroid Build Coastguard Worker	add	w9,w9,w24
179*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x24,lsr#32
180*8fb009dcSAndroid Build Coastguard Worker	add	w11,w11,w25
181*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x25,lsr#32
182*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w26
183*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x26,lsr#32
184*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w27
185*8fb009dcSAndroid Build Coastguard Worker	add	x16,x16,x27,lsr#32
186*8fb009dcSAndroid Build Coastguard Worker	add	w17,w17,w28
187*8fb009dcSAndroid Build Coastguard Worker	add	x19,x19,x28,lsr#32
188*8fb009dcSAndroid Build Coastguard Worker	add	w20,w20,w30
189*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x30,lsr#32
190*8fb009dcSAndroid Build Coastguard Worker
191*8fb009dcSAndroid Build Coastguard Worker	b.lo	Ltail
192*8fb009dcSAndroid Build Coastguard Worker
193*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x6,lsl#32	// pack
194*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x8,lsl#32
195*8fb009dcSAndroid Build Coastguard Worker	ldp	x6,x8,[x1,#0]		// load input
196*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x10,lsl#32
197*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x12,lsl#32
198*8fb009dcSAndroid Build Coastguard Worker	ldp	x10,x12,[x1,#16]
199*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x14,lsl#32
200*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x16,lsl#32
201*8fb009dcSAndroid Build Coastguard Worker	ldp	x14,x16,[x1,#32]
202*8fb009dcSAndroid Build Coastguard Worker	add	x17,x17,x19,lsl#32
203*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x21,lsl#32
204*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x21,[x1,#48]
205*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,#64
206*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
207*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5
208*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7
209*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9
210*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11
211*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13
212*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15
213*8fb009dcSAndroid Build Coastguard Worker	rev	x17,x17
214*8fb009dcSAndroid Build Coastguard Worker	rev	x20,x20
215*8fb009dcSAndroid Build Coastguard Worker#endif
216*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x6
217*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x8
218*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x10
219*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x12
220*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x14
221*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x16
222*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x17,x19
223*8fb009dcSAndroid Build Coastguard Worker	eor	x20,x20,x21
224*8fb009dcSAndroid Build Coastguard Worker
225*8fb009dcSAndroid Build Coastguard Worker	stp	x5,x7,[x0,#0]		// store output
226*8fb009dcSAndroid Build Coastguard Worker	add	x28,x28,#1			// increment counter
227*8fb009dcSAndroid Build Coastguard Worker	stp	x9,x11,[x0,#16]
228*8fb009dcSAndroid Build Coastguard Worker	stp	x13,x15,[x0,#32]
229*8fb009dcSAndroid Build Coastguard Worker	stp	x17,x20,[x0,#48]
230*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,#64
231*8fb009dcSAndroid Build Coastguard Worker
232*8fb009dcSAndroid Build Coastguard Worker	b.hi	Loop_outer
233*8fb009dcSAndroid Build Coastguard Worker
234*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x20,[x29,#16]
235*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#64
236*8fb009dcSAndroid Build Coastguard Worker	ldp	x21,x22,[x29,#32]
237*8fb009dcSAndroid Build Coastguard Worker	ldp	x23,x24,[x29,#48]
238*8fb009dcSAndroid Build Coastguard Worker	ldp	x25,x26,[x29,#64]
239*8fb009dcSAndroid Build Coastguard Worker	ldp	x27,x28,[x29,#80]
240*8fb009dcSAndroid Build Coastguard Worker	ldp	x29,x30,[sp],#96
241*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALIDATE_LINK_REGISTER
242*8fb009dcSAndroid Build Coastguard Worker	ret
243*8fb009dcSAndroid Build Coastguard Worker
244*8fb009dcSAndroid Build Coastguard Worker.align	4
245*8fb009dcSAndroid Build Coastguard WorkerLtail:
246*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,#64
247*8fb009dcSAndroid Build Coastguard WorkerLess_than_64:
248*8fb009dcSAndroid Build Coastguard Worker	sub	x0,x0,#1
249*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,x2
250*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,x2
251*8fb009dcSAndroid Build Coastguard Worker	add	x4,sp,x2
252*8fb009dcSAndroid Build Coastguard Worker	neg	x2,x2
253*8fb009dcSAndroid Build Coastguard Worker
254*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x6,lsl#32	// pack
255*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x8,lsl#32
256*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x10,lsl#32
257*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x12,lsl#32
258*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x14,lsl#32
259*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x16,lsl#32
260*8fb009dcSAndroid Build Coastguard Worker	add	x17,x17,x19,lsl#32
261*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x21,lsl#32
262*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
263*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5
264*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7
265*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9
266*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11
267*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13
268*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15
269*8fb009dcSAndroid Build Coastguard Worker	rev	x17,x17
270*8fb009dcSAndroid Build Coastguard Worker	rev	x20,x20
271*8fb009dcSAndroid Build Coastguard Worker#endif
272*8fb009dcSAndroid Build Coastguard Worker	stp	x5,x7,[sp,#0]
273*8fb009dcSAndroid Build Coastguard Worker	stp	x9,x11,[sp,#16]
274*8fb009dcSAndroid Build Coastguard Worker	stp	x13,x15,[sp,#32]
275*8fb009dcSAndroid Build Coastguard Worker	stp	x17,x20,[sp,#48]
276*8fb009dcSAndroid Build Coastguard Worker
277*8fb009dcSAndroid Build Coastguard WorkerLoop_tail:
278*8fb009dcSAndroid Build Coastguard Worker	ldrb	w10,[x1,x2]
279*8fb009dcSAndroid Build Coastguard Worker	ldrb	w11,[x4,x2]
280*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,#1
281*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w11
282*8fb009dcSAndroid Build Coastguard Worker	strb	w10,[x0,x2]
283*8fb009dcSAndroid Build Coastguard Worker	cbnz	x2,Loop_tail
284*8fb009dcSAndroid Build Coastguard Worker
285*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#0]
286*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#16]
287*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#32]
288*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#48]
289*8fb009dcSAndroid Build Coastguard Worker
290*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x20,[x29,#16]
291*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#64
292*8fb009dcSAndroid Build Coastguard Worker	ldp	x21,x22,[x29,#32]
293*8fb009dcSAndroid Build Coastguard Worker	ldp	x23,x24,[x29,#48]
294*8fb009dcSAndroid Build Coastguard Worker	ldp	x25,x26,[x29,#64]
295*8fb009dcSAndroid Build Coastguard Worker	ldp	x27,x28,[x29,#80]
296*8fb009dcSAndroid Build Coastguard Worker	ldp	x29,x30,[sp],#96
297*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALIDATE_LINK_REGISTER
298*8fb009dcSAndroid Build Coastguard Worker	ret
299*8fb009dcSAndroid Build Coastguard Worker
300*8fb009dcSAndroid Build Coastguard Worker
301*8fb009dcSAndroid Build Coastguard Worker.globl	ChaCha20_ctr32_neon
302*8fb009dcSAndroid Build Coastguard Worker
303*8fb009dcSAndroid Build Coastguard Worker.def ChaCha20_ctr32_neon
304*8fb009dcSAndroid Build Coastguard Worker   .type 32
305*8fb009dcSAndroid Build Coastguard Worker.endef
306*8fb009dcSAndroid Build Coastguard Worker.align	5
307*8fb009dcSAndroid Build Coastguard WorkerChaCha20_ctr32_neon:
308*8fb009dcSAndroid Build Coastguard Worker	AARCH64_SIGN_LINK_REGISTER
309*8fb009dcSAndroid Build Coastguard Worker	stp	x29,x30,[sp,#-96]!
310*8fb009dcSAndroid Build Coastguard Worker	add	x29,sp,#0
311*8fb009dcSAndroid Build Coastguard Worker
312*8fb009dcSAndroid Build Coastguard Worker	adrp	x5,Lsigma
313*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,:lo12:Lsigma
314*8fb009dcSAndroid Build Coastguard Worker	stp	x19,x20,[sp,#16]
315*8fb009dcSAndroid Build Coastguard Worker	stp	x21,x22,[sp,#32]
316*8fb009dcSAndroid Build Coastguard Worker	stp	x23,x24,[sp,#48]
317*8fb009dcSAndroid Build Coastguard Worker	stp	x25,x26,[sp,#64]
318*8fb009dcSAndroid Build Coastguard Worker	stp	x27,x28,[sp,#80]
319*8fb009dcSAndroid Build Coastguard Worker	cmp	x2,#512
320*8fb009dcSAndroid Build Coastguard Worker	b.hs	L512_or_more_neon
321*8fb009dcSAndroid Build Coastguard Worker
322*8fb009dcSAndroid Build Coastguard Worker	sub	sp,sp,#64
323*8fb009dcSAndroid Build Coastguard Worker
324*8fb009dcSAndroid Build Coastguard Worker	ldp	x22,x23,[x5]		// load sigma
325*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.4s},[x5],#16
326*8fb009dcSAndroid Build Coastguard Worker	ldp	x24,x25,[x3]		// load key
327*8fb009dcSAndroid Build Coastguard Worker	ldp	x26,x27,[x3,#16]
328*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.4s,v26.4s},[x3]
329*8fb009dcSAndroid Build Coastguard Worker	ldp	x28,x30,[x4]		// load counter
330*8fb009dcSAndroid Build Coastguard Worker	ld1	{v27.4s},[x4]
331*8fb009dcSAndroid Build Coastguard Worker	ld1	{v31.4s},[x5]
332*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
333*8fb009dcSAndroid Build Coastguard Worker	rev64	v24.4s,v24.4s
334*8fb009dcSAndroid Build Coastguard Worker	ror	x24,x24,#32
335*8fb009dcSAndroid Build Coastguard Worker	ror	x25,x25,#32
336*8fb009dcSAndroid Build Coastguard Worker	ror	x26,x26,#32
337*8fb009dcSAndroid Build Coastguard Worker	ror	x27,x27,#32
338*8fb009dcSAndroid Build Coastguard Worker	ror	x28,x28,#32
339*8fb009dcSAndroid Build Coastguard Worker	ror	x30,x30,#32
340*8fb009dcSAndroid Build Coastguard Worker#endif
341*8fb009dcSAndroid Build Coastguard Worker	add	v27.4s,v27.4s,v31.4s		// += 1
342*8fb009dcSAndroid Build Coastguard Worker	add	v28.4s,v27.4s,v31.4s
343*8fb009dcSAndroid Build Coastguard Worker	add	v29.4s,v28.4s,v31.4s
344*8fb009dcSAndroid Build Coastguard Worker	shl	v31.4s,v31.4s,#2			// 1 -> 4
345*8fb009dcSAndroid Build Coastguard Worker
346*8fb009dcSAndroid Build Coastguard WorkerLoop_outer_neon:
347*8fb009dcSAndroid Build Coastguard Worker	mov	w5,w22			// unpack key block
348*8fb009dcSAndroid Build Coastguard Worker	lsr	x6,x22,#32
349*8fb009dcSAndroid Build Coastguard Worker	mov	v0.16b,v24.16b
350*8fb009dcSAndroid Build Coastguard Worker	mov	w7,w23
351*8fb009dcSAndroid Build Coastguard Worker	lsr	x8,x23,#32
352*8fb009dcSAndroid Build Coastguard Worker	mov	v4.16b,v24.16b
353*8fb009dcSAndroid Build Coastguard Worker	mov	w9,w24
354*8fb009dcSAndroid Build Coastguard Worker	lsr	x10,x24,#32
355*8fb009dcSAndroid Build Coastguard Worker	mov	v16.16b,v24.16b
356*8fb009dcSAndroid Build Coastguard Worker	mov	w11,w25
357*8fb009dcSAndroid Build Coastguard Worker	mov	v1.16b,v25.16b
358*8fb009dcSAndroid Build Coastguard Worker	lsr	x12,x25,#32
359*8fb009dcSAndroid Build Coastguard Worker	mov	v5.16b,v25.16b
360*8fb009dcSAndroid Build Coastguard Worker	mov	w13,w26
361*8fb009dcSAndroid Build Coastguard Worker	mov	v17.16b,v25.16b
362*8fb009dcSAndroid Build Coastguard Worker	lsr	x14,x26,#32
363*8fb009dcSAndroid Build Coastguard Worker	mov	v3.16b,v27.16b
364*8fb009dcSAndroid Build Coastguard Worker	mov	w15,w27
365*8fb009dcSAndroid Build Coastguard Worker	mov	v7.16b,v28.16b
366*8fb009dcSAndroid Build Coastguard Worker	lsr	x16,x27,#32
367*8fb009dcSAndroid Build Coastguard Worker	mov	v19.16b,v29.16b
368*8fb009dcSAndroid Build Coastguard Worker	mov	w17,w28
369*8fb009dcSAndroid Build Coastguard Worker	mov	v2.16b,v26.16b
370*8fb009dcSAndroid Build Coastguard Worker	lsr	x19,x28,#32
371*8fb009dcSAndroid Build Coastguard Worker	mov	v6.16b,v26.16b
372*8fb009dcSAndroid Build Coastguard Worker	mov	w20,w30
373*8fb009dcSAndroid Build Coastguard Worker	mov	v18.16b,v26.16b
374*8fb009dcSAndroid Build Coastguard Worker	lsr	x21,x30,#32
375*8fb009dcSAndroid Build Coastguard Worker
376*8fb009dcSAndroid Build Coastguard Worker	mov	x4,#10
377*8fb009dcSAndroid Build Coastguard Worker	subs	x2,x2,#256
378*8fb009dcSAndroid Build Coastguard WorkerLoop_neon:
379*8fb009dcSAndroid Build Coastguard Worker	sub	x4,x4,#1
380*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
381*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
382*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
383*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
384*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
385*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
386*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v0.16b
387*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
388*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v4.16b
389*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
390*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v16.16b
391*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
392*8fb009dcSAndroid Build Coastguard Worker	rev32	v3.8h,v3.8h
393*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
394*8fb009dcSAndroid Build Coastguard Worker	rev32	v7.8h,v7.8h
395*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
396*8fb009dcSAndroid Build Coastguard Worker	rev32	v19.8h,v19.8h
397*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
398*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
399*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
400*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
401*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
402*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
403*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
404*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v1.16b,v2.16b
405*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
406*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v5.16b,v6.16b
407*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
408*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v17.16b,v18.16b
409*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
410*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v20.4s,#20
411*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
412*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v21.4s,#20
413*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
414*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v22.4s,#20
415*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
416*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v20.4s,#12
417*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
418*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v21.4s,#12
419*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
420*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v22.4s,#12
421*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
422*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
423*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
424*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
425*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
426*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
427*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
428*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v3.16b,v0.16b
429*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
430*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v7.16b,v4.16b
431*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
432*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v19.16b,v16.16b
433*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
434*8fb009dcSAndroid Build Coastguard Worker	ushr	v3.4s,v20.4s,#24
435*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
436*8fb009dcSAndroid Build Coastguard Worker	ushr	v7.4s,v21.4s,#24
437*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
438*8fb009dcSAndroid Build Coastguard Worker	ushr	v19.4s,v22.4s,#24
439*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
440*8fb009dcSAndroid Build Coastguard Worker	sli	v3.4s,v20.4s,#8
441*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
442*8fb009dcSAndroid Build Coastguard Worker	sli	v7.4s,v21.4s,#8
443*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
444*8fb009dcSAndroid Build Coastguard Worker	sli	v19.4s,v22.4s,#8
445*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
446*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
447*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
448*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
449*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
450*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
451*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
452*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v1.16b,v2.16b
453*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
454*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v5.16b,v6.16b
455*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
456*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v17.16b,v18.16b
457*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
458*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v20.4s,#25
459*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
460*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v21.4s,#25
461*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
462*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v22.4s,#25
463*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
464*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v20.4s,#7
465*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
466*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v21.4s,#7
467*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
468*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v22.4s,#7
469*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
470*8fb009dcSAndroid Build Coastguard Worker	ext	v2.16b,v2.16b,v2.16b,#8
471*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
472*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v6.16b,v6.16b,#8
473*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
474*8fb009dcSAndroid Build Coastguard Worker	ext	v18.16b,v18.16b,v18.16b,#8
475*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
476*8fb009dcSAndroid Build Coastguard Worker	ext	v3.16b,v3.16b,v3.16b,#12
477*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v7.16b,v7.16b,#12
478*8fb009dcSAndroid Build Coastguard Worker	ext	v19.16b,v19.16b,v19.16b,#12
479*8fb009dcSAndroid Build Coastguard Worker	ext	v1.16b,v1.16b,v1.16b,#4
480*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v5.16b,v5.16b,#4
481*8fb009dcSAndroid Build Coastguard Worker	ext	v17.16b,v17.16b,v17.16b,#4
482*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
483*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
484*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
485*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
486*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
487*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
488*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v0.16b
489*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
490*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v4.16b
491*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
492*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v16.16b
493*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
494*8fb009dcSAndroid Build Coastguard Worker	rev32	v3.8h,v3.8h
495*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
496*8fb009dcSAndroid Build Coastguard Worker	rev32	v7.8h,v7.8h
497*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
498*8fb009dcSAndroid Build Coastguard Worker	rev32	v19.8h,v19.8h
499*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
500*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
501*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
502*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
503*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
504*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
505*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
506*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v1.16b,v2.16b
507*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
508*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v5.16b,v6.16b
509*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
510*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v17.16b,v18.16b
511*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
512*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v20.4s,#20
513*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
514*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v21.4s,#20
515*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
516*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v22.4s,#20
517*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
518*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v20.4s,#12
519*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
520*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v21.4s,#12
521*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
522*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v22.4s,#12
523*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
524*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
525*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
526*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
527*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
528*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
529*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
530*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v3.16b,v0.16b
531*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
532*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v7.16b,v4.16b
533*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
534*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v19.16b,v16.16b
535*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
536*8fb009dcSAndroid Build Coastguard Worker	ushr	v3.4s,v20.4s,#24
537*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
538*8fb009dcSAndroid Build Coastguard Worker	ushr	v7.4s,v21.4s,#24
539*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
540*8fb009dcSAndroid Build Coastguard Worker	ushr	v19.4s,v22.4s,#24
541*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
542*8fb009dcSAndroid Build Coastguard Worker	sli	v3.4s,v20.4s,#8
543*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
544*8fb009dcSAndroid Build Coastguard Worker	sli	v7.4s,v21.4s,#8
545*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
546*8fb009dcSAndroid Build Coastguard Worker	sli	v19.4s,v22.4s,#8
547*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
548*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
549*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
550*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
551*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
552*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
553*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
554*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v1.16b,v2.16b
555*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
556*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v5.16b,v6.16b
557*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
558*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v17.16b,v18.16b
559*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
560*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v20.4s,#25
561*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
562*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v21.4s,#25
563*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
564*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v22.4s,#25
565*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
566*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v20.4s,#7
567*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
568*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v21.4s,#7
569*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
570*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v22.4s,#7
571*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
572*8fb009dcSAndroid Build Coastguard Worker	ext	v2.16b,v2.16b,v2.16b,#8
573*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
574*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v6.16b,v6.16b,#8
575*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
576*8fb009dcSAndroid Build Coastguard Worker	ext	v18.16b,v18.16b,v18.16b,#8
577*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
578*8fb009dcSAndroid Build Coastguard Worker	ext	v3.16b,v3.16b,v3.16b,#4
579*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v7.16b,v7.16b,#4
580*8fb009dcSAndroid Build Coastguard Worker	ext	v19.16b,v19.16b,v19.16b,#4
581*8fb009dcSAndroid Build Coastguard Worker	ext	v1.16b,v1.16b,v1.16b,#12
582*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v5.16b,v5.16b,#12
583*8fb009dcSAndroid Build Coastguard Worker	ext	v17.16b,v17.16b,v17.16b,#12
584*8fb009dcSAndroid Build Coastguard Worker	cbnz	x4,Loop_neon
585*8fb009dcSAndroid Build Coastguard Worker
586*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w22		// accumulate key block
587*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v24.4s
588*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x22,lsr#32
589*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v24.4s
590*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w23
591*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v24.4s
592*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x23,lsr#32
593*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v26.4s
594*8fb009dcSAndroid Build Coastguard Worker	add	w9,w9,w24
595*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v26.4s
596*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x24,lsr#32
597*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v26.4s
598*8fb009dcSAndroid Build Coastguard Worker	add	w11,w11,w25
599*8fb009dcSAndroid Build Coastguard Worker	add	v3.4s,v3.4s,v27.4s
600*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x25,lsr#32
601*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w26
602*8fb009dcSAndroid Build Coastguard Worker	add	v7.4s,v7.4s,v28.4s
603*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x26,lsr#32
604*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w27
605*8fb009dcSAndroid Build Coastguard Worker	add	v19.4s,v19.4s,v29.4s
606*8fb009dcSAndroid Build Coastguard Worker	add	x16,x16,x27,lsr#32
607*8fb009dcSAndroid Build Coastguard Worker	add	w17,w17,w28
608*8fb009dcSAndroid Build Coastguard Worker	add	v1.4s,v1.4s,v25.4s
609*8fb009dcSAndroid Build Coastguard Worker	add	x19,x19,x28,lsr#32
610*8fb009dcSAndroid Build Coastguard Worker	add	w20,w20,w30
611*8fb009dcSAndroid Build Coastguard Worker	add	v5.4s,v5.4s,v25.4s
612*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x30,lsr#32
613*8fb009dcSAndroid Build Coastguard Worker	add	v17.4s,v17.4s,v25.4s
614*8fb009dcSAndroid Build Coastguard Worker
615*8fb009dcSAndroid Build Coastguard Worker	b.lo	Ltail_neon
616*8fb009dcSAndroid Build Coastguard Worker
617*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x6,lsl#32	// pack
618*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x8,lsl#32
619*8fb009dcSAndroid Build Coastguard Worker	ldp	x6,x8,[x1,#0]		// load input
620*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x10,lsl#32
621*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x12,lsl#32
622*8fb009dcSAndroid Build Coastguard Worker	ldp	x10,x12,[x1,#16]
623*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x14,lsl#32
624*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x16,lsl#32
625*8fb009dcSAndroid Build Coastguard Worker	ldp	x14,x16,[x1,#32]
626*8fb009dcSAndroid Build Coastguard Worker	add	x17,x17,x19,lsl#32
627*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x21,lsl#32
628*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x21,[x1,#48]
629*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,#64
630*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
631*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5
632*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7
633*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9
634*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11
635*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13
636*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15
637*8fb009dcSAndroid Build Coastguard Worker	rev	x17,x17
638*8fb009dcSAndroid Build Coastguard Worker	rev	x20,x20
639*8fb009dcSAndroid Build Coastguard Worker#endif
640*8fb009dcSAndroid Build Coastguard Worker	ld1	{v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64
641*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x6
642*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x8
643*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x10
644*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x12
645*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x14
646*8fb009dcSAndroid Build Coastguard Worker	eor	v0.16b,v0.16b,v20.16b
647*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x16
648*8fb009dcSAndroid Build Coastguard Worker	eor	v1.16b,v1.16b,v21.16b
649*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x17,x19
650*8fb009dcSAndroid Build Coastguard Worker	eor	v2.16b,v2.16b,v22.16b
651*8fb009dcSAndroid Build Coastguard Worker	eor	x20,x20,x21
652*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v23.16b
653*8fb009dcSAndroid Build Coastguard Worker	ld1	{v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64
654*8fb009dcSAndroid Build Coastguard Worker
655*8fb009dcSAndroid Build Coastguard Worker	stp	x5,x7,[x0,#0]		// store output
656*8fb009dcSAndroid Build Coastguard Worker	add	x28,x28,#4			// increment counter
657*8fb009dcSAndroid Build Coastguard Worker	stp	x9,x11,[x0,#16]
658*8fb009dcSAndroid Build Coastguard Worker	add	v27.4s,v27.4s,v31.4s		// += 4
659*8fb009dcSAndroid Build Coastguard Worker	stp	x13,x15,[x0,#32]
660*8fb009dcSAndroid Build Coastguard Worker	add	v28.4s,v28.4s,v31.4s
661*8fb009dcSAndroid Build Coastguard Worker	stp	x17,x20,[x0,#48]
662*8fb009dcSAndroid Build Coastguard Worker	add	v29.4s,v29.4s,v31.4s
663*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,#64
664*8fb009dcSAndroid Build Coastguard Worker
665*8fb009dcSAndroid Build Coastguard Worker	st1	{v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64
666*8fb009dcSAndroid Build Coastguard Worker	ld1	{v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64
667*8fb009dcSAndroid Build Coastguard Worker
668*8fb009dcSAndroid Build Coastguard Worker	eor	v4.16b,v4.16b,v20.16b
669*8fb009dcSAndroid Build Coastguard Worker	eor	v5.16b,v5.16b,v21.16b
670*8fb009dcSAndroid Build Coastguard Worker	eor	v6.16b,v6.16b,v22.16b
671*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v23.16b
672*8fb009dcSAndroid Build Coastguard Worker	st1	{v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64
673*8fb009dcSAndroid Build Coastguard Worker
674*8fb009dcSAndroid Build Coastguard Worker	eor	v16.16b,v16.16b,v0.16b
675*8fb009dcSAndroid Build Coastguard Worker	eor	v17.16b,v17.16b,v1.16b
676*8fb009dcSAndroid Build Coastguard Worker	eor	v18.16b,v18.16b,v2.16b
677*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v3.16b
678*8fb009dcSAndroid Build Coastguard Worker	st1	{v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64
679*8fb009dcSAndroid Build Coastguard Worker
680*8fb009dcSAndroid Build Coastguard Worker	b.hi	Loop_outer_neon
681*8fb009dcSAndroid Build Coastguard Worker
682*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x20,[x29,#16]
683*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#64
684*8fb009dcSAndroid Build Coastguard Worker	ldp	x21,x22,[x29,#32]
685*8fb009dcSAndroid Build Coastguard Worker	ldp	x23,x24,[x29,#48]
686*8fb009dcSAndroid Build Coastguard Worker	ldp	x25,x26,[x29,#64]
687*8fb009dcSAndroid Build Coastguard Worker	ldp	x27,x28,[x29,#80]
688*8fb009dcSAndroid Build Coastguard Worker	ldp	x29,x30,[sp],#96
689*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALIDATE_LINK_REGISTER
690*8fb009dcSAndroid Build Coastguard Worker	ret
691*8fb009dcSAndroid Build Coastguard Worker
692*8fb009dcSAndroid Build Coastguard WorkerLtail_neon:
693*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,#256
694*8fb009dcSAndroid Build Coastguard Worker	cmp	x2,#64
695*8fb009dcSAndroid Build Coastguard Worker	b.lo	Less_than_64
696*8fb009dcSAndroid Build Coastguard Worker
697*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x6,lsl#32	// pack
698*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x8,lsl#32
699*8fb009dcSAndroid Build Coastguard Worker	ldp	x6,x8,[x1,#0]		// load input
700*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x10,lsl#32
701*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x12,lsl#32
702*8fb009dcSAndroid Build Coastguard Worker	ldp	x10,x12,[x1,#16]
703*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x14,lsl#32
704*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x16,lsl#32
705*8fb009dcSAndroid Build Coastguard Worker	ldp	x14,x16,[x1,#32]
706*8fb009dcSAndroid Build Coastguard Worker	add	x17,x17,x19,lsl#32
707*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x21,lsl#32
708*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x21,[x1,#48]
709*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,#64
710*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
711*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5
712*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7
713*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9
714*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11
715*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13
716*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15
717*8fb009dcSAndroid Build Coastguard Worker	rev	x17,x17
718*8fb009dcSAndroid Build Coastguard Worker	rev	x20,x20
719*8fb009dcSAndroid Build Coastguard Worker#endif
720*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x6
721*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x8
722*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x10
723*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x12
724*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x14
725*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x16
726*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x17,x19
727*8fb009dcSAndroid Build Coastguard Worker	eor	x20,x20,x21
728*8fb009dcSAndroid Build Coastguard Worker
729*8fb009dcSAndroid Build Coastguard Worker	stp	x5,x7,[x0,#0]		// store output
730*8fb009dcSAndroid Build Coastguard Worker	add	x28,x28,#4			// increment counter
731*8fb009dcSAndroid Build Coastguard Worker	stp	x9,x11,[x0,#16]
732*8fb009dcSAndroid Build Coastguard Worker	stp	x13,x15,[x0,#32]
733*8fb009dcSAndroid Build Coastguard Worker	stp	x17,x20,[x0,#48]
734*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,#64
735*8fb009dcSAndroid Build Coastguard Worker	b.eq	Ldone_neon
736*8fb009dcSAndroid Build Coastguard Worker	sub	x2,x2,#64
737*8fb009dcSAndroid Build Coastguard Worker	cmp	x2,#64
738*8fb009dcSAndroid Build Coastguard Worker	b.lo	Less_than_128
739*8fb009dcSAndroid Build Coastguard Worker
740*8fb009dcSAndroid Build Coastguard Worker	ld1	{v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64
741*8fb009dcSAndroid Build Coastguard Worker	eor	v0.16b,v0.16b,v20.16b
742*8fb009dcSAndroid Build Coastguard Worker	eor	v1.16b,v1.16b,v21.16b
743*8fb009dcSAndroid Build Coastguard Worker	eor	v2.16b,v2.16b,v22.16b
744*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v23.16b
745*8fb009dcSAndroid Build Coastguard Worker	st1	{v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64
746*8fb009dcSAndroid Build Coastguard Worker	b.eq	Ldone_neon
747*8fb009dcSAndroid Build Coastguard Worker	sub	x2,x2,#64
748*8fb009dcSAndroid Build Coastguard Worker	cmp	x2,#64
749*8fb009dcSAndroid Build Coastguard Worker	b.lo	Less_than_192
750*8fb009dcSAndroid Build Coastguard Worker
751*8fb009dcSAndroid Build Coastguard Worker	ld1	{v20.16b,v21.16b,v22.16b,v23.16b},[x1],#64
752*8fb009dcSAndroid Build Coastguard Worker	eor	v4.16b,v4.16b,v20.16b
753*8fb009dcSAndroid Build Coastguard Worker	eor	v5.16b,v5.16b,v21.16b
754*8fb009dcSAndroid Build Coastguard Worker	eor	v6.16b,v6.16b,v22.16b
755*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v23.16b
756*8fb009dcSAndroid Build Coastguard Worker	st1	{v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64
757*8fb009dcSAndroid Build Coastguard Worker	b.eq	Ldone_neon
758*8fb009dcSAndroid Build Coastguard Worker	sub	x2,x2,#64
759*8fb009dcSAndroid Build Coastguard Worker
760*8fb009dcSAndroid Build Coastguard Worker	st1	{v16.16b,v17.16b,v18.16b,v19.16b},[sp]
761*8fb009dcSAndroid Build Coastguard Worker	b	Last_neon
762*8fb009dcSAndroid Build Coastguard Worker
763*8fb009dcSAndroid Build Coastguard WorkerLess_than_128:
764*8fb009dcSAndroid Build Coastguard Worker	st1	{v0.16b,v1.16b,v2.16b,v3.16b},[sp]
765*8fb009dcSAndroid Build Coastguard Worker	b	Last_neon
766*8fb009dcSAndroid Build Coastguard WorkerLess_than_192:
767*8fb009dcSAndroid Build Coastguard Worker	st1	{v4.16b,v5.16b,v6.16b,v7.16b},[sp]
768*8fb009dcSAndroid Build Coastguard Worker	b	Last_neon
769*8fb009dcSAndroid Build Coastguard Worker
770*8fb009dcSAndroid Build Coastguard Worker.align	4
771*8fb009dcSAndroid Build Coastguard WorkerLast_neon:
772*8fb009dcSAndroid Build Coastguard Worker	sub	x0,x0,#1
773*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,x2
774*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,x2
775*8fb009dcSAndroid Build Coastguard Worker	add	x4,sp,x2
776*8fb009dcSAndroid Build Coastguard Worker	neg	x2,x2
777*8fb009dcSAndroid Build Coastguard Worker
778*8fb009dcSAndroid Build Coastguard WorkerLoop_tail_neon:
779*8fb009dcSAndroid Build Coastguard Worker	ldrb	w10,[x1,x2]
780*8fb009dcSAndroid Build Coastguard Worker	ldrb	w11,[x4,x2]
781*8fb009dcSAndroid Build Coastguard Worker	add	x2,x2,#1
782*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w11
783*8fb009dcSAndroid Build Coastguard Worker	strb	w10,[x0,x2]
784*8fb009dcSAndroid Build Coastguard Worker	cbnz	x2,Loop_tail_neon
785*8fb009dcSAndroid Build Coastguard Worker
786*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#0]
787*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#16]
788*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#32]
789*8fb009dcSAndroid Build Coastguard Worker	stp	xzr,xzr,[sp,#48]
790*8fb009dcSAndroid Build Coastguard Worker
791*8fb009dcSAndroid Build Coastguard WorkerLdone_neon:
792*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x20,[x29,#16]
793*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#64
794*8fb009dcSAndroid Build Coastguard Worker	ldp	x21,x22,[x29,#32]
795*8fb009dcSAndroid Build Coastguard Worker	ldp	x23,x24,[x29,#48]
796*8fb009dcSAndroid Build Coastguard Worker	ldp	x25,x26,[x29,#64]
797*8fb009dcSAndroid Build Coastguard Worker	ldp	x27,x28,[x29,#80]
798*8fb009dcSAndroid Build Coastguard Worker	ldp	x29,x30,[sp],#96
799*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALIDATE_LINK_REGISTER
800*8fb009dcSAndroid Build Coastguard Worker	ret
801*8fb009dcSAndroid Build Coastguard Worker
802*8fb009dcSAndroid Build Coastguard Worker.def ChaCha20_512_neon
803*8fb009dcSAndroid Build Coastguard Worker   .type 32
804*8fb009dcSAndroid Build Coastguard Worker.endef
805*8fb009dcSAndroid Build Coastguard Worker.align	5
806*8fb009dcSAndroid Build Coastguard WorkerChaCha20_512_neon:
807*8fb009dcSAndroid Build Coastguard Worker	AARCH64_SIGN_LINK_REGISTER
808*8fb009dcSAndroid Build Coastguard Worker	stp	x29,x30,[sp,#-96]!
809*8fb009dcSAndroid Build Coastguard Worker	add	x29,sp,#0
810*8fb009dcSAndroid Build Coastguard Worker
811*8fb009dcSAndroid Build Coastguard Worker	adrp	x5,Lsigma
812*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,:lo12:Lsigma
813*8fb009dcSAndroid Build Coastguard Worker	stp	x19,x20,[sp,#16]
814*8fb009dcSAndroid Build Coastguard Worker	stp	x21,x22,[sp,#32]
815*8fb009dcSAndroid Build Coastguard Worker	stp	x23,x24,[sp,#48]
816*8fb009dcSAndroid Build Coastguard Worker	stp	x25,x26,[sp,#64]
817*8fb009dcSAndroid Build Coastguard Worker	stp	x27,x28,[sp,#80]
818*8fb009dcSAndroid Build Coastguard Worker
819*8fb009dcSAndroid Build Coastguard WorkerL512_or_more_neon:
820*8fb009dcSAndroid Build Coastguard Worker	sub	sp,sp,#128+64
821*8fb009dcSAndroid Build Coastguard Worker
822*8fb009dcSAndroid Build Coastguard Worker	ldp	x22,x23,[x5]		// load sigma
823*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.4s},[x5],#16
824*8fb009dcSAndroid Build Coastguard Worker	ldp	x24,x25,[x3]		// load key
825*8fb009dcSAndroid Build Coastguard Worker	ldp	x26,x27,[x3,#16]
826*8fb009dcSAndroid Build Coastguard Worker	ld1	{v25.4s,v26.4s},[x3]
827*8fb009dcSAndroid Build Coastguard Worker	ldp	x28,x30,[x4]		// load counter
828*8fb009dcSAndroid Build Coastguard Worker	ld1	{v27.4s},[x4]
829*8fb009dcSAndroid Build Coastguard Worker	ld1	{v31.4s},[x5]
830*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
831*8fb009dcSAndroid Build Coastguard Worker	rev64	v24.4s,v24.4s
832*8fb009dcSAndroid Build Coastguard Worker	ror	x24,x24,#32
833*8fb009dcSAndroid Build Coastguard Worker	ror	x25,x25,#32
834*8fb009dcSAndroid Build Coastguard Worker	ror	x26,x26,#32
835*8fb009dcSAndroid Build Coastguard Worker	ror	x27,x27,#32
836*8fb009dcSAndroid Build Coastguard Worker	ror	x28,x28,#32
837*8fb009dcSAndroid Build Coastguard Worker	ror	x30,x30,#32
838*8fb009dcSAndroid Build Coastguard Worker#endif
839*8fb009dcSAndroid Build Coastguard Worker	add	v27.4s,v27.4s,v31.4s		// += 1
840*8fb009dcSAndroid Build Coastguard Worker	stp	q24,q25,[sp,#0]		// off-load key block, invariant part
841*8fb009dcSAndroid Build Coastguard Worker	add	v27.4s,v27.4s,v31.4s		// not typo
842*8fb009dcSAndroid Build Coastguard Worker	str	q26,[sp,#32]
843*8fb009dcSAndroid Build Coastguard Worker	add	v28.4s,v27.4s,v31.4s
844*8fb009dcSAndroid Build Coastguard Worker	add	v29.4s,v28.4s,v31.4s
845*8fb009dcSAndroid Build Coastguard Worker	add	v30.4s,v29.4s,v31.4s
846*8fb009dcSAndroid Build Coastguard Worker	shl	v31.4s,v31.4s,#2			// 1 -> 4
847*8fb009dcSAndroid Build Coastguard Worker
848*8fb009dcSAndroid Build Coastguard Worker	stp	d8,d9,[sp,#128+0]		// meet ABI requirements
849*8fb009dcSAndroid Build Coastguard Worker	stp	d10,d11,[sp,#128+16]
850*8fb009dcSAndroid Build Coastguard Worker	stp	d12,d13,[sp,#128+32]
851*8fb009dcSAndroid Build Coastguard Worker	stp	d14,d15,[sp,#128+48]
852*8fb009dcSAndroid Build Coastguard Worker
853*8fb009dcSAndroid Build Coastguard Worker	sub	x2,x2,#512			// not typo
854*8fb009dcSAndroid Build Coastguard Worker
855*8fb009dcSAndroid Build Coastguard WorkerLoop_outer_512_neon:
856*8fb009dcSAndroid Build Coastguard Worker	mov	v0.16b,v24.16b
857*8fb009dcSAndroid Build Coastguard Worker	mov	v4.16b,v24.16b
858*8fb009dcSAndroid Build Coastguard Worker	mov	v8.16b,v24.16b
859*8fb009dcSAndroid Build Coastguard Worker	mov	v12.16b,v24.16b
860*8fb009dcSAndroid Build Coastguard Worker	mov	v16.16b,v24.16b
861*8fb009dcSAndroid Build Coastguard Worker	mov	v20.16b,v24.16b
862*8fb009dcSAndroid Build Coastguard Worker	mov	v1.16b,v25.16b
863*8fb009dcSAndroid Build Coastguard Worker	mov	w5,w22			// unpack key block
864*8fb009dcSAndroid Build Coastguard Worker	mov	v5.16b,v25.16b
865*8fb009dcSAndroid Build Coastguard Worker	lsr	x6,x22,#32
866*8fb009dcSAndroid Build Coastguard Worker	mov	v9.16b,v25.16b
867*8fb009dcSAndroid Build Coastguard Worker	mov	w7,w23
868*8fb009dcSAndroid Build Coastguard Worker	mov	v13.16b,v25.16b
869*8fb009dcSAndroid Build Coastguard Worker	lsr	x8,x23,#32
870*8fb009dcSAndroid Build Coastguard Worker	mov	v17.16b,v25.16b
871*8fb009dcSAndroid Build Coastguard Worker	mov	w9,w24
872*8fb009dcSAndroid Build Coastguard Worker	mov	v21.16b,v25.16b
873*8fb009dcSAndroid Build Coastguard Worker	lsr	x10,x24,#32
874*8fb009dcSAndroid Build Coastguard Worker	mov	v3.16b,v27.16b
875*8fb009dcSAndroid Build Coastguard Worker	mov	w11,w25
876*8fb009dcSAndroid Build Coastguard Worker	mov	v7.16b,v28.16b
877*8fb009dcSAndroid Build Coastguard Worker	lsr	x12,x25,#32
878*8fb009dcSAndroid Build Coastguard Worker	mov	v11.16b,v29.16b
879*8fb009dcSAndroid Build Coastguard Worker	mov	w13,w26
880*8fb009dcSAndroid Build Coastguard Worker	mov	v15.16b,v30.16b
881*8fb009dcSAndroid Build Coastguard Worker	lsr	x14,x26,#32
882*8fb009dcSAndroid Build Coastguard Worker	mov	v2.16b,v26.16b
883*8fb009dcSAndroid Build Coastguard Worker	mov	w15,w27
884*8fb009dcSAndroid Build Coastguard Worker	mov	v6.16b,v26.16b
885*8fb009dcSAndroid Build Coastguard Worker	lsr	x16,x27,#32
886*8fb009dcSAndroid Build Coastguard Worker	add	v19.4s,v3.4s,v31.4s			// +4
887*8fb009dcSAndroid Build Coastguard Worker	mov	w17,w28
888*8fb009dcSAndroid Build Coastguard Worker	add	v23.4s,v7.4s,v31.4s			// +4
889*8fb009dcSAndroid Build Coastguard Worker	lsr	x19,x28,#32
890*8fb009dcSAndroid Build Coastguard Worker	mov	v10.16b,v26.16b
891*8fb009dcSAndroid Build Coastguard Worker	mov	w20,w30
892*8fb009dcSAndroid Build Coastguard Worker	mov	v14.16b,v26.16b
893*8fb009dcSAndroid Build Coastguard Worker	lsr	x21,x30,#32
894*8fb009dcSAndroid Build Coastguard Worker	mov	v18.16b,v26.16b
895*8fb009dcSAndroid Build Coastguard Worker	stp	q27,q28,[sp,#48]		// off-load key block, variable part
896*8fb009dcSAndroid Build Coastguard Worker	mov	v22.16b,v26.16b
897*8fb009dcSAndroid Build Coastguard Worker	str	q29,[sp,#80]
898*8fb009dcSAndroid Build Coastguard Worker
899*8fb009dcSAndroid Build Coastguard Worker	mov	x4,#5
900*8fb009dcSAndroid Build Coastguard Worker	subs	x2,x2,#512
901*8fb009dcSAndroid Build Coastguard WorkerLoop_upper_neon:
902*8fb009dcSAndroid Build Coastguard Worker	sub	x4,x4,#1
903*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
904*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
905*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
906*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
907*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
908*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
909*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
910*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
911*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
912*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
913*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
914*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
915*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v0.16b
916*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
917*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v4.16b
918*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
919*8fb009dcSAndroid Build Coastguard Worker	eor	v11.16b,v11.16b,v8.16b
920*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
921*8fb009dcSAndroid Build Coastguard Worker	eor	v15.16b,v15.16b,v12.16b
922*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
923*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v16.16b
924*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
925*8fb009dcSAndroid Build Coastguard Worker	eor	v23.16b,v23.16b,v20.16b
926*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
927*8fb009dcSAndroid Build Coastguard Worker	rev32	v3.8h,v3.8h
928*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
929*8fb009dcSAndroid Build Coastguard Worker	rev32	v7.8h,v7.8h
930*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
931*8fb009dcSAndroid Build Coastguard Worker	rev32	v11.8h,v11.8h
932*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
933*8fb009dcSAndroid Build Coastguard Worker	rev32	v15.8h,v15.8h
934*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
935*8fb009dcSAndroid Build Coastguard Worker	rev32	v19.8h,v19.8h
936*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
937*8fb009dcSAndroid Build Coastguard Worker	rev32	v23.8h,v23.8h
938*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
939*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
940*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
941*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
942*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
943*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
944*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
945*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
946*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
947*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
948*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
949*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
950*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
951*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
952*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
953*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
954*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
955*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
956*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
957*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
958*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
959*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
960*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
961*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
962*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
963*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#20
964*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
965*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#20
966*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
967*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#20
968*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
969*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#20
970*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
971*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#20
972*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
973*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#20
974*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
975*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#12
976*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
977*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#12
978*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
979*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#12
980*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
981*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#12
982*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
983*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#12
984*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
985*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#12
986*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
987*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
988*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
989*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
990*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
991*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
992*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
993*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
994*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
995*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
996*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
997*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
998*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
999*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v3.16b,v0.16b
1000*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1001*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v7.16b,v4.16b
1002*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1003*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v11.16b,v8.16b
1004*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1005*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v15.16b,v12.16b
1006*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1007*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v19.16b,v16.16b
1008*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1009*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v23.16b,v20.16b
1010*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1011*8fb009dcSAndroid Build Coastguard Worker	ushr	v3.4s,v24.4s,#24
1012*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1013*8fb009dcSAndroid Build Coastguard Worker	ushr	v7.4s,v25.4s,#24
1014*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1015*8fb009dcSAndroid Build Coastguard Worker	ushr	v11.4s,v26.4s,#24
1016*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1017*8fb009dcSAndroid Build Coastguard Worker	ushr	v15.4s,v27.4s,#24
1018*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1019*8fb009dcSAndroid Build Coastguard Worker	ushr	v19.4s,v28.4s,#24
1020*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1021*8fb009dcSAndroid Build Coastguard Worker	ushr	v23.4s,v29.4s,#24
1022*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1023*8fb009dcSAndroid Build Coastguard Worker	sli	v3.4s,v24.4s,#8
1024*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1025*8fb009dcSAndroid Build Coastguard Worker	sli	v7.4s,v25.4s,#8
1026*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1027*8fb009dcSAndroid Build Coastguard Worker	sli	v11.4s,v26.4s,#8
1028*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1029*8fb009dcSAndroid Build Coastguard Worker	sli	v15.4s,v27.4s,#8
1030*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1031*8fb009dcSAndroid Build Coastguard Worker	sli	v19.4s,v28.4s,#8
1032*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1033*8fb009dcSAndroid Build Coastguard Worker	sli	v23.4s,v29.4s,#8
1034*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1035*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1036*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1037*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1038*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1039*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1040*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1041*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1042*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1043*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1044*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1045*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1046*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1047*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1048*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1049*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1050*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1051*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1052*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1053*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1054*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1055*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1056*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1057*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1058*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1059*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#25
1060*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1061*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#25
1062*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1063*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#25
1064*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1065*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#25
1066*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1067*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#25
1068*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1069*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#25
1070*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1071*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#7
1072*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1073*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#7
1074*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1075*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#7
1076*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1077*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#7
1078*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1079*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#7
1080*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1081*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#7
1082*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1083*8fb009dcSAndroid Build Coastguard Worker	ext	v2.16b,v2.16b,v2.16b,#8
1084*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1085*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v6.16b,v6.16b,#8
1086*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1087*8fb009dcSAndroid Build Coastguard Worker	ext	v10.16b,v10.16b,v10.16b,#8
1088*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1089*8fb009dcSAndroid Build Coastguard Worker	ext	v14.16b,v14.16b,v14.16b,#8
1090*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1091*8fb009dcSAndroid Build Coastguard Worker	ext	v18.16b,v18.16b,v18.16b,#8
1092*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1093*8fb009dcSAndroid Build Coastguard Worker	ext	v22.16b,v22.16b,v22.16b,#8
1094*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1095*8fb009dcSAndroid Build Coastguard Worker	ext	v3.16b,v3.16b,v3.16b,#12
1096*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v7.16b,v7.16b,#12
1097*8fb009dcSAndroid Build Coastguard Worker	ext	v11.16b,v11.16b,v11.16b,#12
1098*8fb009dcSAndroid Build Coastguard Worker	ext	v15.16b,v15.16b,v15.16b,#12
1099*8fb009dcSAndroid Build Coastguard Worker	ext	v19.16b,v19.16b,v19.16b,#12
1100*8fb009dcSAndroid Build Coastguard Worker	ext	v23.16b,v23.16b,v23.16b,#12
1101*8fb009dcSAndroid Build Coastguard Worker	ext	v1.16b,v1.16b,v1.16b,#4
1102*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v5.16b,v5.16b,#4
1103*8fb009dcSAndroid Build Coastguard Worker	ext	v9.16b,v9.16b,v9.16b,#4
1104*8fb009dcSAndroid Build Coastguard Worker	ext	v13.16b,v13.16b,v13.16b,#4
1105*8fb009dcSAndroid Build Coastguard Worker	ext	v17.16b,v17.16b,v17.16b,#4
1106*8fb009dcSAndroid Build Coastguard Worker	ext	v21.16b,v21.16b,v21.16b,#4
1107*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
1108*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
1109*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
1110*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
1111*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
1112*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
1113*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
1114*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
1115*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
1116*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
1117*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
1118*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
1119*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v0.16b
1120*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
1121*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v4.16b
1122*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
1123*8fb009dcSAndroid Build Coastguard Worker	eor	v11.16b,v11.16b,v8.16b
1124*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1125*8fb009dcSAndroid Build Coastguard Worker	eor	v15.16b,v15.16b,v12.16b
1126*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1127*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v16.16b
1128*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1129*8fb009dcSAndroid Build Coastguard Worker	eor	v23.16b,v23.16b,v20.16b
1130*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1131*8fb009dcSAndroid Build Coastguard Worker	rev32	v3.8h,v3.8h
1132*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
1133*8fb009dcSAndroid Build Coastguard Worker	rev32	v7.8h,v7.8h
1134*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
1135*8fb009dcSAndroid Build Coastguard Worker	rev32	v11.8h,v11.8h
1136*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
1137*8fb009dcSAndroid Build Coastguard Worker	rev32	v15.8h,v15.8h
1138*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
1139*8fb009dcSAndroid Build Coastguard Worker	rev32	v19.8h,v19.8h
1140*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
1141*8fb009dcSAndroid Build Coastguard Worker	rev32	v23.8h,v23.8h
1142*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
1143*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1144*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
1145*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1146*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
1147*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1148*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1149*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1150*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1151*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1152*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1153*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1154*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1155*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1156*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
1157*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1158*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
1159*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1160*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
1161*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1162*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
1163*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1164*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
1165*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1166*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
1167*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#20
1168*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
1169*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#20
1170*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
1171*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#20
1172*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1173*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#20
1174*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1175*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#20
1176*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1177*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#20
1178*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1179*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#12
1180*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
1181*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#12
1182*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
1183*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#12
1184*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
1185*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#12
1186*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
1187*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#12
1188*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
1189*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#12
1190*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
1191*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
1192*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
1193*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
1194*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
1195*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
1196*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1197*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
1198*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1199*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
1200*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1201*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
1202*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1203*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v3.16b,v0.16b
1204*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1205*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v7.16b,v4.16b
1206*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1207*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v11.16b,v8.16b
1208*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1209*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v15.16b,v12.16b
1210*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1211*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v19.16b,v16.16b
1212*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1213*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v23.16b,v20.16b
1214*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1215*8fb009dcSAndroid Build Coastguard Worker	ushr	v3.4s,v24.4s,#24
1216*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1217*8fb009dcSAndroid Build Coastguard Worker	ushr	v7.4s,v25.4s,#24
1218*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1219*8fb009dcSAndroid Build Coastguard Worker	ushr	v11.4s,v26.4s,#24
1220*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1221*8fb009dcSAndroid Build Coastguard Worker	ushr	v15.4s,v27.4s,#24
1222*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1223*8fb009dcSAndroid Build Coastguard Worker	ushr	v19.4s,v28.4s,#24
1224*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1225*8fb009dcSAndroid Build Coastguard Worker	ushr	v23.4s,v29.4s,#24
1226*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1227*8fb009dcSAndroid Build Coastguard Worker	sli	v3.4s,v24.4s,#8
1228*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1229*8fb009dcSAndroid Build Coastguard Worker	sli	v7.4s,v25.4s,#8
1230*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1231*8fb009dcSAndroid Build Coastguard Worker	sli	v11.4s,v26.4s,#8
1232*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1233*8fb009dcSAndroid Build Coastguard Worker	sli	v15.4s,v27.4s,#8
1234*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1235*8fb009dcSAndroid Build Coastguard Worker	sli	v19.4s,v28.4s,#8
1236*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1237*8fb009dcSAndroid Build Coastguard Worker	sli	v23.4s,v29.4s,#8
1238*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1239*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1240*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1241*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1242*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1243*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1244*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1245*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1246*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1247*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1248*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1249*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1250*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1251*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1252*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1253*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1254*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1255*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1256*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1257*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1258*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1259*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1260*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1261*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1262*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1263*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#25
1264*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1265*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#25
1266*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1267*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#25
1268*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1269*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#25
1270*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1271*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#25
1272*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1273*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#25
1274*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1275*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#7
1276*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1277*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#7
1278*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1279*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#7
1280*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1281*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#7
1282*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1283*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#7
1284*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1285*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#7
1286*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1287*8fb009dcSAndroid Build Coastguard Worker	ext	v2.16b,v2.16b,v2.16b,#8
1288*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1289*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v6.16b,v6.16b,#8
1290*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1291*8fb009dcSAndroid Build Coastguard Worker	ext	v10.16b,v10.16b,v10.16b,#8
1292*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1293*8fb009dcSAndroid Build Coastguard Worker	ext	v14.16b,v14.16b,v14.16b,#8
1294*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1295*8fb009dcSAndroid Build Coastguard Worker	ext	v18.16b,v18.16b,v18.16b,#8
1296*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1297*8fb009dcSAndroid Build Coastguard Worker	ext	v22.16b,v22.16b,v22.16b,#8
1298*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1299*8fb009dcSAndroid Build Coastguard Worker	ext	v3.16b,v3.16b,v3.16b,#4
1300*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v7.16b,v7.16b,#4
1301*8fb009dcSAndroid Build Coastguard Worker	ext	v11.16b,v11.16b,v11.16b,#4
1302*8fb009dcSAndroid Build Coastguard Worker	ext	v15.16b,v15.16b,v15.16b,#4
1303*8fb009dcSAndroid Build Coastguard Worker	ext	v19.16b,v19.16b,v19.16b,#4
1304*8fb009dcSAndroid Build Coastguard Worker	ext	v23.16b,v23.16b,v23.16b,#4
1305*8fb009dcSAndroid Build Coastguard Worker	ext	v1.16b,v1.16b,v1.16b,#12
1306*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v5.16b,v5.16b,#12
1307*8fb009dcSAndroid Build Coastguard Worker	ext	v9.16b,v9.16b,v9.16b,#12
1308*8fb009dcSAndroid Build Coastguard Worker	ext	v13.16b,v13.16b,v13.16b,#12
1309*8fb009dcSAndroid Build Coastguard Worker	ext	v17.16b,v17.16b,v17.16b,#12
1310*8fb009dcSAndroid Build Coastguard Worker	ext	v21.16b,v21.16b,v21.16b,#12
1311*8fb009dcSAndroid Build Coastguard Worker	cbnz	x4,Loop_upper_neon
1312*8fb009dcSAndroid Build Coastguard Worker
1313*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w22		// accumulate key block
1314*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x22,lsr#32
1315*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w23
1316*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x23,lsr#32
1317*8fb009dcSAndroid Build Coastguard Worker	add	w9,w9,w24
1318*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x24,lsr#32
1319*8fb009dcSAndroid Build Coastguard Worker	add	w11,w11,w25
1320*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x25,lsr#32
1321*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w26
1322*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x26,lsr#32
1323*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w27
1324*8fb009dcSAndroid Build Coastguard Worker	add	x16,x16,x27,lsr#32
1325*8fb009dcSAndroid Build Coastguard Worker	add	w17,w17,w28
1326*8fb009dcSAndroid Build Coastguard Worker	add	x19,x19,x28,lsr#32
1327*8fb009dcSAndroid Build Coastguard Worker	add	w20,w20,w30
1328*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x30,lsr#32
1329*8fb009dcSAndroid Build Coastguard Worker
1330*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x6,lsl#32	// pack
1331*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x8,lsl#32
1332*8fb009dcSAndroid Build Coastguard Worker	ldp	x6,x8,[x1,#0]		// load input
1333*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x10,lsl#32
1334*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x12,lsl#32
1335*8fb009dcSAndroid Build Coastguard Worker	ldp	x10,x12,[x1,#16]
1336*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x14,lsl#32
1337*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x16,lsl#32
1338*8fb009dcSAndroid Build Coastguard Worker	ldp	x14,x16,[x1,#32]
1339*8fb009dcSAndroid Build Coastguard Worker	add	x17,x17,x19,lsl#32
1340*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x21,lsl#32
1341*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x21,[x1,#48]
1342*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,#64
1343*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
1344*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5
1345*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7
1346*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9
1347*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11
1348*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13
1349*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15
1350*8fb009dcSAndroid Build Coastguard Worker	rev	x17,x17
1351*8fb009dcSAndroid Build Coastguard Worker	rev	x20,x20
1352*8fb009dcSAndroid Build Coastguard Worker#endif
1353*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x6
1354*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x8
1355*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x10
1356*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x12
1357*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x14
1358*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x16
1359*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x17,x19
1360*8fb009dcSAndroid Build Coastguard Worker	eor	x20,x20,x21
1361*8fb009dcSAndroid Build Coastguard Worker
1362*8fb009dcSAndroid Build Coastguard Worker	stp	x5,x7,[x0,#0]		// store output
1363*8fb009dcSAndroid Build Coastguard Worker	add	x28,x28,#1			// increment counter
1364*8fb009dcSAndroid Build Coastguard Worker	mov	w5,w22			// unpack key block
1365*8fb009dcSAndroid Build Coastguard Worker	lsr	x6,x22,#32
1366*8fb009dcSAndroid Build Coastguard Worker	stp	x9,x11,[x0,#16]
1367*8fb009dcSAndroid Build Coastguard Worker	mov	w7,w23
1368*8fb009dcSAndroid Build Coastguard Worker	lsr	x8,x23,#32
1369*8fb009dcSAndroid Build Coastguard Worker	stp	x13,x15,[x0,#32]
1370*8fb009dcSAndroid Build Coastguard Worker	mov	w9,w24
1371*8fb009dcSAndroid Build Coastguard Worker	lsr	x10,x24,#32
1372*8fb009dcSAndroid Build Coastguard Worker	stp	x17,x20,[x0,#48]
1373*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,#64
1374*8fb009dcSAndroid Build Coastguard Worker	mov	w11,w25
1375*8fb009dcSAndroid Build Coastguard Worker	lsr	x12,x25,#32
1376*8fb009dcSAndroid Build Coastguard Worker	mov	w13,w26
1377*8fb009dcSAndroid Build Coastguard Worker	lsr	x14,x26,#32
1378*8fb009dcSAndroid Build Coastguard Worker	mov	w15,w27
1379*8fb009dcSAndroid Build Coastguard Worker	lsr	x16,x27,#32
1380*8fb009dcSAndroid Build Coastguard Worker	mov	w17,w28
1381*8fb009dcSAndroid Build Coastguard Worker	lsr	x19,x28,#32
1382*8fb009dcSAndroid Build Coastguard Worker	mov	w20,w30
1383*8fb009dcSAndroid Build Coastguard Worker	lsr	x21,x30,#32
1384*8fb009dcSAndroid Build Coastguard Worker
1385*8fb009dcSAndroid Build Coastguard Worker	mov	x4,#5
1386*8fb009dcSAndroid Build Coastguard WorkerLoop_lower_neon:
1387*8fb009dcSAndroid Build Coastguard Worker	sub	x4,x4,#1
1388*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
1389*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
1390*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
1391*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
1392*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
1393*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
1394*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
1395*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
1396*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
1397*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
1398*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
1399*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
1400*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v0.16b
1401*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
1402*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v4.16b
1403*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
1404*8fb009dcSAndroid Build Coastguard Worker	eor	v11.16b,v11.16b,v8.16b
1405*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1406*8fb009dcSAndroid Build Coastguard Worker	eor	v15.16b,v15.16b,v12.16b
1407*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1408*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v16.16b
1409*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1410*8fb009dcSAndroid Build Coastguard Worker	eor	v23.16b,v23.16b,v20.16b
1411*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1412*8fb009dcSAndroid Build Coastguard Worker	rev32	v3.8h,v3.8h
1413*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
1414*8fb009dcSAndroid Build Coastguard Worker	rev32	v7.8h,v7.8h
1415*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
1416*8fb009dcSAndroid Build Coastguard Worker	rev32	v11.8h,v11.8h
1417*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
1418*8fb009dcSAndroid Build Coastguard Worker	rev32	v15.8h,v15.8h
1419*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
1420*8fb009dcSAndroid Build Coastguard Worker	rev32	v19.8h,v19.8h
1421*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
1422*8fb009dcSAndroid Build Coastguard Worker	rev32	v23.8h,v23.8h
1423*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
1424*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1425*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
1426*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1427*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
1428*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1429*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1430*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1431*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1432*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1433*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1434*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1435*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1436*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1437*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
1438*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1439*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
1440*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1441*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
1442*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1443*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
1444*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1445*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
1446*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1447*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
1448*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#20
1449*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
1450*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#20
1451*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
1452*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#20
1453*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1454*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#20
1455*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1456*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#20
1457*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1458*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#20
1459*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1460*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#12
1461*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
1462*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#12
1463*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
1464*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#12
1465*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
1466*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#12
1467*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
1468*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#12
1469*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
1470*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#12
1471*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
1472*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
1473*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
1474*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
1475*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
1476*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
1477*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1478*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
1479*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1480*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
1481*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1482*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
1483*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1484*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v3.16b,v0.16b
1485*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1486*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v7.16b,v4.16b
1487*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1488*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v11.16b,v8.16b
1489*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1490*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v15.16b,v12.16b
1491*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1492*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v19.16b,v16.16b
1493*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1494*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v23.16b,v20.16b
1495*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1496*8fb009dcSAndroid Build Coastguard Worker	ushr	v3.4s,v24.4s,#24
1497*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1498*8fb009dcSAndroid Build Coastguard Worker	ushr	v7.4s,v25.4s,#24
1499*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1500*8fb009dcSAndroid Build Coastguard Worker	ushr	v11.4s,v26.4s,#24
1501*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1502*8fb009dcSAndroid Build Coastguard Worker	ushr	v15.4s,v27.4s,#24
1503*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1504*8fb009dcSAndroid Build Coastguard Worker	ushr	v19.4s,v28.4s,#24
1505*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1506*8fb009dcSAndroid Build Coastguard Worker	ushr	v23.4s,v29.4s,#24
1507*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1508*8fb009dcSAndroid Build Coastguard Worker	sli	v3.4s,v24.4s,#8
1509*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1510*8fb009dcSAndroid Build Coastguard Worker	sli	v7.4s,v25.4s,#8
1511*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1512*8fb009dcSAndroid Build Coastguard Worker	sli	v11.4s,v26.4s,#8
1513*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1514*8fb009dcSAndroid Build Coastguard Worker	sli	v15.4s,v27.4s,#8
1515*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1516*8fb009dcSAndroid Build Coastguard Worker	sli	v19.4s,v28.4s,#8
1517*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1518*8fb009dcSAndroid Build Coastguard Worker	sli	v23.4s,v29.4s,#8
1519*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1520*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1521*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1522*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1523*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1524*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1525*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1526*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1527*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1528*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1529*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1530*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1531*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1532*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1533*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1534*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1535*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1536*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1537*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1538*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1539*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1540*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1541*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1542*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1543*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1544*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#25
1545*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1546*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#25
1547*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1548*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#25
1549*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1550*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#25
1551*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1552*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#25
1553*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1554*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#25
1555*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1556*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#7
1557*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1558*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#7
1559*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1560*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#7
1561*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1562*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#7
1563*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1564*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#7
1565*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1566*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#7
1567*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1568*8fb009dcSAndroid Build Coastguard Worker	ext	v2.16b,v2.16b,v2.16b,#8
1569*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1570*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v6.16b,v6.16b,#8
1571*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1572*8fb009dcSAndroid Build Coastguard Worker	ext	v10.16b,v10.16b,v10.16b,#8
1573*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1574*8fb009dcSAndroid Build Coastguard Worker	ext	v14.16b,v14.16b,v14.16b,#8
1575*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1576*8fb009dcSAndroid Build Coastguard Worker	ext	v18.16b,v18.16b,v18.16b,#8
1577*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1578*8fb009dcSAndroid Build Coastguard Worker	ext	v22.16b,v22.16b,v22.16b,#8
1579*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1580*8fb009dcSAndroid Build Coastguard Worker	ext	v3.16b,v3.16b,v3.16b,#12
1581*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v7.16b,v7.16b,#12
1582*8fb009dcSAndroid Build Coastguard Worker	ext	v11.16b,v11.16b,v11.16b,#12
1583*8fb009dcSAndroid Build Coastguard Worker	ext	v15.16b,v15.16b,v15.16b,#12
1584*8fb009dcSAndroid Build Coastguard Worker	ext	v19.16b,v19.16b,v19.16b,#12
1585*8fb009dcSAndroid Build Coastguard Worker	ext	v23.16b,v23.16b,v23.16b,#12
1586*8fb009dcSAndroid Build Coastguard Worker	ext	v1.16b,v1.16b,v1.16b,#4
1587*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v5.16b,v5.16b,#4
1588*8fb009dcSAndroid Build Coastguard Worker	ext	v9.16b,v9.16b,v9.16b,#4
1589*8fb009dcSAndroid Build Coastguard Worker	ext	v13.16b,v13.16b,v13.16b,#4
1590*8fb009dcSAndroid Build Coastguard Worker	ext	v17.16b,v17.16b,v17.16b,#4
1591*8fb009dcSAndroid Build Coastguard Worker	ext	v21.16b,v21.16b,v21.16b,#4
1592*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
1593*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
1594*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
1595*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
1596*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
1597*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
1598*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
1599*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
1600*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
1601*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
1602*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
1603*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
1604*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v0.16b
1605*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
1606*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v4.16b
1607*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
1608*8fb009dcSAndroid Build Coastguard Worker	eor	v11.16b,v11.16b,v8.16b
1609*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1610*8fb009dcSAndroid Build Coastguard Worker	eor	v15.16b,v15.16b,v12.16b
1611*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1612*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v16.16b
1613*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1614*8fb009dcSAndroid Build Coastguard Worker	eor	v23.16b,v23.16b,v20.16b
1615*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1616*8fb009dcSAndroid Build Coastguard Worker	rev32	v3.8h,v3.8h
1617*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
1618*8fb009dcSAndroid Build Coastguard Worker	rev32	v7.8h,v7.8h
1619*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
1620*8fb009dcSAndroid Build Coastguard Worker	rev32	v11.8h,v11.8h
1621*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
1622*8fb009dcSAndroid Build Coastguard Worker	rev32	v15.8h,v15.8h
1623*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
1624*8fb009dcSAndroid Build Coastguard Worker	rev32	v19.8h,v19.8h
1625*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
1626*8fb009dcSAndroid Build Coastguard Worker	rev32	v23.8h,v23.8h
1627*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
1628*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1629*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
1630*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1631*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
1632*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1633*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1634*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1635*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1636*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1637*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1638*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1639*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1640*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1641*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w9
1642*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1643*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w10
1644*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1645*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w11
1646*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1647*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w12
1648*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1649*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w5
1650*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1651*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w6
1652*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#20
1653*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w7
1654*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#20
1655*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w8
1656*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#20
1657*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1658*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#20
1659*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1660*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#20
1661*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1662*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#20
1663*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1664*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#12
1665*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w17
1666*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#12
1667*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w19
1668*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#12
1669*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w20
1670*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#12
1671*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w21
1672*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#12
1673*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w13
1674*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#12
1675*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w14
1676*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v1.4s
1677*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w15
1678*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v5.4s
1679*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w16
1680*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v9.4s
1681*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1682*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v13.4s
1683*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1684*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v17.4s
1685*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1686*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v21.4s
1687*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1688*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v3.16b,v0.16b
1689*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1690*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v7.16b,v4.16b
1691*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1692*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v11.16b,v8.16b
1693*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1694*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v15.16b,v12.16b
1695*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1696*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v19.16b,v16.16b
1697*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1698*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v23.16b,v20.16b
1699*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1700*8fb009dcSAndroid Build Coastguard Worker	ushr	v3.4s,v24.4s,#24
1701*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1702*8fb009dcSAndroid Build Coastguard Worker	ushr	v7.4s,v25.4s,#24
1703*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1704*8fb009dcSAndroid Build Coastguard Worker	ushr	v11.4s,v26.4s,#24
1705*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#16
1706*8fb009dcSAndroid Build Coastguard Worker	ushr	v15.4s,v27.4s,#24
1707*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#16
1708*8fb009dcSAndroid Build Coastguard Worker	ushr	v19.4s,v28.4s,#24
1709*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#16
1710*8fb009dcSAndroid Build Coastguard Worker	ushr	v23.4s,v29.4s,#24
1711*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#16
1712*8fb009dcSAndroid Build Coastguard Worker	sli	v3.4s,v24.4s,#8
1713*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1714*8fb009dcSAndroid Build Coastguard Worker	sli	v7.4s,v25.4s,#8
1715*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1716*8fb009dcSAndroid Build Coastguard Worker	sli	v11.4s,v26.4s,#8
1717*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1718*8fb009dcSAndroid Build Coastguard Worker	sli	v15.4s,v27.4s,#8
1719*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1720*8fb009dcSAndroid Build Coastguard Worker	sli	v19.4s,v28.4s,#8
1721*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1722*8fb009dcSAndroid Build Coastguard Worker	sli	v23.4s,v29.4s,#8
1723*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1724*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v3.4s
1725*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1726*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v7.4s
1727*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1728*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v11.4s
1729*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#20
1730*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v15.4s
1731*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#20
1732*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v19.4s
1733*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#20
1734*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v23.4s
1735*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#20
1736*8fb009dcSAndroid Build Coastguard Worker	eor	v24.16b,v1.16b,v2.16b
1737*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w10
1738*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v5.16b,v6.16b
1739*8fb009dcSAndroid Build Coastguard Worker	add	w6,w6,w11
1740*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v9.16b,v10.16b
1741*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w12
1742*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v13.16b,v14.16b
1743*8fb009dcSAndroid Build Coastguard Worker	add	w8,w8,w9
1744*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v17.16b,v18.16b
1745*8fb009dcSAndroid Build Coastguard Worker	eor	w21,w21,w5
1746*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v21.16b,v22.16b
1747*8fb009dcSAndroid Build Coastguard Worker	eor	w17,w17,w6
1748*8fb009dcSAndroid Build Coastguard Worker	ushr	v1.4s,v24.4s,#25
1749*8fb009dcSAndroid Build Coastguard Worker	eor	w19,w19,w7
1750*8fb009dcSAndroid Build Coastguard Worker	ushr	v5.4s,v25.4s,#25
1751*8fb009dcSAndroid Build Coastguard Worker	eor	w20,w20,w8
1752*8fb009dcSAndroid Build Coastguard Worker	ushr	v9.4s,v26.4s,#25
1753*8fb009dcSAndroid Build Coastguard Worker	ror	w21,w21,#24
1754*8fb009dcSAndroid Build Coastguard Worker	ushr	v13.4s,v27.4s,#25
1755*8fb009dcSAndroid Build Coastguard Worker	ror	w17,w17,#24
1756*8fb009dcSAndroid Build Coastguard Worker	ushr	v17.4s,v28.4s,#25
1757*8fb009dcSAndroid Build Coastguard Worker	ror	w19,w19,#24
1758*8fb009dcSAndroid Build Coastguard Worker	ushr	v21.4s,v29.4s,#25
1759*8fb009dcSAndroid Build Coastguard Worker	ror	w20,w20,#24
1760*8fb009dcSAndroid Build Coastguard Worker	sli	v1.4s,v24.4s,#7
1761*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w21
1762*8fb009dcSAndroid Build Coastguard Worker	sli	v5.4s,v25.4s,#7
1763*8fb009dcSAndroid Build Coastguard Worker	add	w16,w16,w17
1764*8fb009dcSAndroid Build Coastguard Worker	sli	v9.4s,v26.4s,#7
1765*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w19
1766*8fb009dcSAndroid Build Coastguard Worker	sli	v13.4s,v27.4s,#7
1767*8fb009dcSAndroid Build Coastguard Worker	add	w14,w14,w20
1768*8fb009dcSAndroid Build Coastguard Worker	sli	v17.4s,v28.4s,#7
1769*8fb009dcSAndroid Build Coastguard Worker	eor	w10,w10,w15
1770*8fb009dcSAndroid Build Coastguard Worker	sli	v21.4s,v29.4s,#7
1771*8fb009dcSAndroid Build Coastguard Worker	eor	w11,w11,w16
1772*8fb009dcSAndroid Build Coastguard Worker	ext	v2.16b,v2.16b,v2.16b,#8
1773*8fb009dcSAndroid Build Coastguard Worker	eor	w12,w12,w13
1774*8fb009dcSAndroid Build Coastguard Worker	ext	v6.16b,v6.16b,v6.16b,#8
1775*8fb009dcSAndroid Build Coastguard Worker	eor	w9,w9,w14
1776*8fb009dcSAndroid Build Coastguard Worker	ext	v10.16b,v10.16b,v10.16b,#8
1777*8fb009dcSAndroid Build Coastguard Worker	ror	w10,w10,#25
1778*8fb009dcSAndroid Build Coastguard Worker	ext	v14.16b,v14.16b,v14.16b,#8
1779*8fb009dcSAndroid Build Coastguard Worker	ror	w11,w11,#25
1780*8fb009dcSAndroid Build Coastguard Worker	ext	v18.16b,v18.16b,v18.16b,#8
1781*8fb009dcSAndroid Build Coastguard Worker	ror	w12,w12,#25
1782*8fb009dcSAndroid Build Coastguard Worker	ext	v22.16b,v22.16b,v22.16b,#8
1783*8fb009dcSAndroid Build Coastguard Worker	ror	w9,w9,#25
1784*8fb009dcSAndroid Build Coastguard Worker	ext	v3.16b,v3.16b,v3.16b,#4
1785*8fb009dcSAndroid Build Coastguard Worker	ext	v7.16b,v7.16b,v7.16b,#4
1786*8fb009dcSAndroid Build Coastguard Worker	ext	v11.16b,v11.16b,v11.16b,#4
1787*8fb009dcSAndroid Build Coastguard Worker	ext	v15.16b,v15.16b,v15.16b,#4
1788*8fb009dcSAndroid Build Coastguard Worker	ext	v19.16b,v19.16b,v19.16b,#4
1789*8fb009dcSAndroid Build Coastguard Worker	ext	v23.16b,v23.16b,v23.16b,#4
1790*8fb009dcSAndroid Build Coastguard Worker	ext	v1.16b,v1.16b,v1.16b,#12
1791*8fb009dcSAndroid Build Coastguard Worker	ext	v5.16b,v5.16b,v5.16b,#12
1792*8fb009dcSAndroid Build Coastguard Worker	ext	v9.16b,v9.16b,v9.16b,#12
1793*8fb009dcSAndroid Build Coastguard Worker	ext	v13.16b,v13.16b,v13.16b,#12
1794*8fb009dcSAndroid Build Coastguard Worker	ext	v17.16b,v17.16b,v17.16b,#12
1795*8fb009dcSAndroid Build Coastguard Worker	ext	v21.16b,v21.16b,v21.16b,#12
1796*8fb009dcSAndroid Build Coastguard Worker	cbnz	x4,Loop_lower_neon
1797*8fb009dcSAndroid Build Coastguard Worker
1798*8fb009dcSAndroid Build Coastguard Worker	add	w5,w5,w22		// accumulate key block
1799*8fb009dcSAndroid Build Coastguard Worker	ldp	q24,q25,[sp,#0]
1800*8fb009dcSAndroid Build Coastguard Worker	add	x6,x6,x22,lsr#32
1801*8fb009dcSAndroid Build Coastguard Worker	ldp	q26,q27,[sp,#32]
1802*8fb009dcSAndroid Build Coastguard Worker	add	w7,w7,w23
1803*8fb009dcSAndroid Build Coastguard Worker	ldp	q28,q29,[sp,#64]
1804*8fb009dcSAndroid Build Coastguard Worker	add	x8,x8,x23,lsr#32
1805*8fb009dcSAndroid Build Coastguard Worker	add	v0.4s,v0.4s,v24.4s
1806*8fb009dcSAndroid Build Coastguard Worker	add	w9,w9,w24
1807*8fb009dcSAndroid Build Coastguard Worker	add	v4.4s,v4.4s,v24.4s
1808*8fb009dcSAndroid Build Coastguard Worker	add	x10,x10,x24,lsr#32
1809*8fb009dcSAndroid Build Coastguard Worker	add	v8.4s,v8.4s,v24.4s
1810*8fb009dcSAndroid Build Coastguard Worker	add	w11,w11,w25
1811*8fb009dcSAndroid Build Coastguard Worker	add	v12.4s,v12.4s,v24.4s
1812*8fb009dcSAndroid Build Coastguard Worker	add	x12,x12,x25,lsr#32
1813*8fb009dcSAndroid Build Coastguard Worker	add	v16.4s,v16.4s,v24.4s
1814*8fb009dcSAndroid Build Coastguard Worker	add	w13,w13,w26
1815*8fb009dcSAndroid Build Coastguard Worker	add	v20.4s,v20.4s,v24.4s
1816*8fb009dcSAndroid Build Coastguard Worker	add	x14,x14,x26,lsr#32
1817*8fb009dcSAndroid Build Coastguard Worker	add	v2.4s,v2.4s,v26.4s
1818*8fb009dcSAndroid Build Coastguard Worker	add	w15,w15,w27
1819*8fb009dcSAndroid Build Coastguard Worker	add	v6.4s,v6.4s,v26.4s
1820*8fb009dcSAndroid Build Coastguard Worker	add	x16,x16,x27,lsr#32
1821*8fb009dcSAndroid Build Coastguard Worker	add	v10.4s,v10.4s,v26.4s
1822*8fb009dcSAndroid Build Coastguard Worker	add	w17,w17,w28
1823*8fb009dcSAndroid Build Coastguard Worker	add	v14.4s,v14.4s,v26.4s
1824*8fb009dcSAndroid Build Coastguard Worker	add	x19,x19,x28,lsr#32
1825*8fb009dcSAndroid Build Coastguard Worker	add	v18.4s,v18.4s,v26.4s
1826*8fb009dcSAndroid Build Coastguard Worker	add	w20,w20,w30
1827*8fb009dcSAndroid Build Coastguard Worker	add	v22.4s,v22.4s,v26.4s
1828*8fb009dcSAndroid Build Coastguard Worker	add	x21,x21,x30,lsr#32
1829*8fb009dcSAndroid Build Coastguard Worker	add	v19.4s,v19.4s,v31.4s			// +4
1830*8fb009dcSAndroid Build Coastguard Worker	add	x5,x5,x6,lsl#32	// pack
1831*8fb009dcSAndroid Build Coastguard Worker	add	v23.4s,v23.4s,v31.4s			// +4
1832*8fb009dcSAndroid Build Coastguard Worker	add	x7,x7,x8,lsl#32
1833*8fb009dcSAndroid Build Coastguard Worker	add	v3.4s,v3.4s,v27.4s
1834*8fb009dcSAndroid Build Coastguard Worker	ldp	x6,x8,[x1,#0]		// load input
1835*8fb009dcSAndroid Build Coastguard Worker	add	v7.4s,v7.4s,v28.4s
1836*8fb009dcSAndroid Build Coastguard Worker	add	x9,x9,x10,lsl#32
1837*8fb009dcSAndroid Build Coastguard Worker	add	v11.4s,v11.4s,v29.4s
1838*8fb009dcSAndroid Build Coastguard Worker	add	x11,x11,x12,lsl#32
1839*8fb009dcSAndroid Build Coastguard Worker	add	v15.4s,v15.4s,v30.4s
1840*8fb009dcSAndroid Build Coastguard Worker	ldp	x10,x12,[x1,#16]
1841*8fb009dcSAndroid Build Coastguard Worker	add	v19.4s,v19.4s,v27.4s
1842*8fb009dcSAndroid Build Coastguard Worker	add	x13,x13,x14,lsl#32
1843*8fb009dcSAndroid Build Coastguard Worker	add	v23.4s,v23.4s,v28.4s
1844*8fb009dcSAndroid Build Coastguard Worker	add	x15,x15,x16,lsl#32
1845*8fb009dcSAndroid Build Coastguard Worker	add	v1.4s,v1.4s,v25.4s
1846*8fb009dcSAndroid Build Coastguard Worker	ldp	x14,x16,[x1,#32]
1847*8fb009dcSAndroid Build Coastguard Worker	add	v5.4s,v5.4s,v25.4s
1848*8fb009dcSAndroid Build Coastguard Worker	add	x17,x17,x19,lsl#32
1849*8fb009dcSAndroid Build Coastguard Worker	add	v9.4s,v9.4s,v25.4s
1850*8fb009dcSAndroid Build Coastguard Worker	add	x20,x20,x21,lsl#32
1851*8fb009dcSAndroid Build Coastguard Worker	add	v13.4s,v13.4s,v25.4s
1852*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x21,[x1,#48]
1853*8fb009dcSAndroid Build Coastguard Worker	add	v17.4s,v17.4s,v25.4s
1854*8fb009dcSAndroid Build Coastguard Worker	add	x1,x1,#64
1855*8fb009dcSAndroid Build Coastguard Worker	add	v21.4s,v21.4s,v25.4s
1856*8fb009dcSAndroid Build Coastguard Worker
1857*8fb009dcSAndroid Build Coastguard Worker#ifdef	__AARCH64EB__
1858*8fb009dcSAndroid Build Coastguard Worker	rev	x5,x5
1859*8fb009dcSAndroid Build Coastguard Worker	rev	x7,x7
1860*8fb009dcSAndroid Build Coastguard Worker	rev	x9,x9
1861*8fb009dcSAndroid Build Coastguard Worker	rev	x11,x11
1862*8fb009dcSAndroid Build Coastguard Worker	rev	x13,x13
1863*8fb009dcSAndroid Build Coastguard Worker	rev	x15,x15
1864*8fb009dcSAndroid Build Coastguard Worker	rev	x17,x17
1865*8fb009dcSAndroid Build Coastguard Worker	rev	x20,x20
1866*8fb009dcSAndroid Build Coastguard Worker#endif
1867*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64
1868*8fb009dcSAndroid Build Coastguard Worker	eor	x5,x5,x6
1869*8fb009dcSAndroid Build Coastguard Worker	eor	x7,x7,x8
1870*8fb009dcSAndroid Build Coastguard Worker	eor	x9,x9,x10
1871*8fb009dcSAndroid Build Coastguard Worker	eor	x11,x11,x12
1872*8fb009dcSAndroid Build Coastguard Worker	eor	x13,x13,x14
1873*8fb009dcSAndroid Build Coastguard Worker	eor	v0.16b,v0.16b,v24.16b
1874*8fb009dcSAndroid Build Coastguard Worker	eor	x15,x15,x16
1875*8fb009dcSAndroid Build Coastguard Worker	eor	v1.16b,v1.16b,v25.16b
1876*8fb009dcSAndroid Build Coastguard Worker	eor	x17,x17,x19
1877*8fb009dcSAndroid Build Coastguard Worker	eor	v2.16b,v2.16b,v26.16b
1878*8fb009dcSAndroid Build Coastguard Worker	eor	x20,x20,x21
1879*8fb009dcSAndroid Build Coastguard Worker	eor	v3.16b,v3.16b,v27.16b
1880*8fb009dcSAndroid Build Coastguard Worker	ld1	{v24.16b,v25.16b,v26.16b,v27.16b},[x1],#64
1881*8fb009dcSAndroid Build Coastguard Worker
1882*8fb009dcSAndroid Build Coastguard Worker	stp	x5,x7,[x0,#0]		// store output
1883*8fb009dcSAndroid Build Coastguard Worker	add	x28,x28,#7			// increment counter
1884*8fb009dcSAndroid Build Coastguard Worker	stp	x9,x11,[x0,#16]
1885*8fb009dcSAndroid Build Coastguard Worker	stp	x13,x15,[x0,#32]
1886*8fb009dcSAndroid Build Coastguard Worker	stp	x17,x20,[x0,#48]
1887*8fb009dcSAndroid Build Coastguard Worker	add	x0,x0,#64
1888*8fb009dcSAndroid Build Coastguard Worker	st1	{v0.16b,v1.16b,v2.16b,v3.16b},[x0],#64
1889*8fb009dcSAndroid Build Coastguard Worker
1890*8fb009dcSAndroid Build Coastguard Worker	ld1	{v0.16b,v1.16b,v2.16b,v3.16b},[x1],#64
1891*8fb009dcSAndroid Build Coastguard Worker	eor	v4.16b,v4.16b,v24.16b
1892*8fb009dcSAndroid Build Coastguard Worker	eor	v5.16b,v5.16b,v25.16b
1893*8fb009dcSAndroid Build Coastguard Worker	eor	v6.16b,v6.16b,v26.16b
1894*8fb009dcSAndroid Build Coastguard Worker	eor	v7.16b,v7.16b,v27.16b
1895*8fb009dcSAndroid Build Coastguard Worker	st1	{v4.16b,v5.16b,v6.16b,v7.16b},[x0],#64
1896*8fb009dcSAndroid Build Coastguard Worker
1897*8fb009dcSAndroid Build Coastguard Worker	ld1	{v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64
1898*8fb009dcSAndroid Build Coastguard Worker	eor	v8.16b,v8.16b,v0.16b
1899*8fb009dcSAndroid Build Coastguard Worker	ldp	q24,q25,[sp,#0]
1900*8fb009dcSAndroid Build Coastguard Worker	eor	v9.16b,v9.16b,v1.16b
1901*8fb009dcSAndroid Build Coastguard Worker	ldp	q26,q27,[sp,#32]
1902*8fb009dcSAndroid Build Coastguard Worker	eor	v10.16b,v10.16b,v2.16b
1903*8fb009dcSAndroid Build Coastguard Worker	eor	v11.16b,v11.16b,v3.16b
1904*8fb009dcSAndroid Build Coastguard Worker	st1	{v8.16b,v9.16b,v10.16b,v11.16b},[x0],#64
1905*8fb009dcSAndroid Build Coastguard Worker
1906*8fb009dcSAndroid Build Coastguard Worker	ld1	{v8.16b,v9.16b,v10.16b,v11.16b},[x1],#64
1907*8fb009dcSAndroid Build Coastguard Worker	eor	v12.16b,v12.16b,v4.16b
1908*8fb009dcSAndroid Build Coastguard Worker	eor	v13.16b,v13.16b,v5.16b
1909*8fb009dcSAndroid Build Coastguard Worker	eor	v14.16b,v14.16b,v6.16b
1910*8fb009dcSAndroid Build Coastguard Worker	eor	v15.16b,v15.16b,v7.16b
1911*8fb009dcSAndroid Build Coastguard Worker	st1	{v12.16b,v13.16b,v14.16b,v15.16b},[x0],#64
1912*8fb009dcSAndroid Build Coastguard Worker
1913*8fb009dcSAndroid Build Coastguard Worker	ld1	{v12.16b,v13.16b,v14.16b,v15.16b},[x1],#64
1914*8fb009dcSAndroid Build Coastguard Worker	eor	v16.16b,v16.16b,v8.16b
1915*8fb009dcSAndroid Build Coastguard Worker	eor	v17.16b,v17.16b,v9.16b
1916*8fb009dcSAndroid Build Coastguard Worker	eor	v18.16b,v18.16b,v10.16b
1917*8fb009dcSAndroid Build Coastguard Worker	eor	v19.16b,v19.16b,v11.16b
1918*8fb009dcSAndroid Build Coastguard Worker	st1	{v16.16b,v17.16b,v18.16b,v19.16b},[x0],#64
1919*8fb009dcSAndroid Build Coastguard Worker
1920*8fb009dcSAndroid Build Coastguard Worker	shl	v0.4s,v31.4s,#1			// 4 -> 8
1921*8fb009dcSAndroid Build Coastguard Worker	eor	v20.16b,v20.16b,v12.16b
1922*8fb009dcSAndroid Build Coastguard Worker	eor	v21.16b,v21.16b,v13.16b
1923*8fb009dcSAndroid Build Coastguard Worker	eor	v22.16b,v22.16b,v14.16b
1924*8fb009dcSAndroid Build Coastguard Worker	eor	v23.16b,v23.16b,v15.16b
1925*8fb009dcSAndroid Build Coastguard Worker	st1	{v20.16b,v21.16b,v22.16b,v23.16b},[x0],#64
1926*8fb009dcSAndroid Build Coastguard Worker
1927*8fb009dcSAndroid Build Coastguard Worker	add	v27.4s,v27.4s,v0.4s			// += 8
1928*8fb009dcSAndroid Build Coastguard Worker	add	v28.4s,v28.4s,v0.4s
1929*8fb009dcSAndroid Build Coastguard Worker	add	v29.4s,v29.4s,v0.4s
1930*8fb009dcSAndroid Build Coastguard Worker	add	v30.4s,v30.4s,v0.4s
1931*8fb009dcSAndroid Build Coastguard Worker
1932*8fb009dcSAndroid Build Coastguard Worker	b.hs	Loop_outer_512_neon
1933*8fb009dcSAndroid Build Coastguard Worker
1934*8fb009dcSAndroid Build Coastguard Worker	adds	x2,x2,#512
1935*8fb009dcSAndroid Build Coastguard Worker	ushr	v0.4s,v31.4s,#2			// 4 -> 1
1936*8fb009dcSAndroid Build Coastguard Worker
1937*8fb009dcSAndroid Build Coastguard Worker	ldp	d8,d9,[sp,#128+0]		// meet ABI requirements
1938*8fb009dcSAndroid Build Coastguard Worker	ldp	d10,d11,[sp,#128+16]
1939*8fb009dcSAndroid Build Coastguard Worker	ldp	d12,d13,[sp,#128+32]
1940*8fb009dcSAndroid Build Coastguard Worker	ldp	d14,d15,[sp,#128+48]
1941*8fb009dcSAndroid Build Coastguard Worker
1942*8fb009dcSAndroid Build Coastguard Worker	stp	q24,q31,[sp,#0]		// wipe off-load area
1943*8fb009dcSAndroid Build Coastguard Worker	stp	q24,q31,[sp,#32]
1944*8fb009dcSAndroid Build Coastguard Worker	stp	q24,q31,[sp,#64]
1945*8fb009dcSAndroid Build Coastguard Worker
1946*8fb009dcSAndroid Build Coastguard Worker	b.eq	Ldone_512_neon
1947*8fb009dcSAndroid Build Coastguard Worker
1948*8fb009dcSAndroid Build Coastguard Worker	cmp	x2,#192
1949*8fb009dcSAndroid Build Coastguard Worker	sub	v27.4s,v27.4s,v0.4s			// -= 1
1950*8fb009dcSAndroid Build Coastguard Worker	sub	v28.4s,v28.4s,v0.4s
1951*8fb009dcSAndroid Build Coastguard Worker	sub	v29.4s,v29.4s,v0.4s
1952*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#128
1953*8fb009dcSAndroid Build Coastguard Worker	b.hs	Loop_outer_neon
1954*8fb009dcSAndroid Build Coastguard Worker
1955*8fb009dcSAndroid Build Coastguard Worker	eor	v25.16b,v25.16b,v25.16b
1956*8fb009dcSAndroid Build Coastguard Worker	eor	v26.16b,v26.16b,v26.16b
1957*8fb009dcSAndroid Build Coastguard Worker	eor	v27.16b,v27.16b,v27.16b
1958*8fb009dcSAndroid Build Coastguard Worker	eor	v28.16b,v28.16b,v28.16b
1959*8fb009dcSAndroid Build Coastguard Worker	eor	v29.16b,v29.16b,v29.16b
1960*8fb009dcSAndroid Build Coastguard Worker	eor	v30.16b,v30.16b,v30.16b
1961*8fb009dcSAndroid Build Coastguard Worker	b	Loop_outer
1962*8fb009dcSAndroid Build Coastguard Worker
1963*8fb009dcSAndroid Build Coastguard WorkerLdone_512_neon:
1964*8fb009dcSAndroid Build Coastguard Worker	ldp	x19,x20,[x29,#16]
1965*8fb009dcSAndroid Build Coastguard Worker	add	sp,sp,#128+64
1966*8fb009dcSAndroid Build Coastguard Worker	ldp	x21,x22,[x29,#32]
1967*8fb009dcSAndroid Build Coastguard Worker	ldp	x23,x24,[x29,#48]
1968*8fb009dcSAndroid Build Coastguard Worker	ldp	x25,x26,[x29,#64]
1969*8fb009dcSAndroid Build Coastguard Worker	ldp	x27,x28,[x29,#80]
1970*8fb009dcSAndroid Build Coastguard Worker	ldp	x29,x30,[sp],#96
1971*8fb009dcSAndroid Build Coastguard Worker	AARCH64_VALIDATE_LINK_REGISTER
1972*8fb009dcSAndroid Build Coastguard Worker	ret
1973*8fb009dcSAndroid Build Coastguard Worker
1974*8fb009dcSAndroid Build Coastguard Worker#endif  // !OPENSSL_NO_ASM && defined(OPENSSL_AARCH64) && defined(_WIN32)
1975