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