xref: /freebsd/sys/crypto/openssl/aarch64/sha1-armv8.S (revision c0855eaa3ee9614804b6bd6a255aa9f71e095f43)
1/* Do not modify. This file is auto-generated from sha1-armv8.pl. */
2#ifndef	__KERNEL__
3# include "arm_arch.h"
4
5.hidden	OPENSSL_armcap_P
6#endif
7
8.text
9
10.globl	sha1_block_data_order
11.type	sha1_block_data_order,%function
12.align	6
13sha1_block_data_order:
14	adrp	x16,OPENSSL_armcap_P
15	ldr	w16,[x16,#:lo12:OPENSSL_armcap_P]
16	tst	w16,#ARMV8_SHA1
17	b.ne	.Lv8_entry
18
19	stp	x29,x30,[sp,#-96]!
20	add	x29,sp,#0
21	stp	x19,x20,[sp,#16]
22	stp	x21,x22,[sp,#32]
23	stp	x23,x24,[sp,#48]
24	stp	x25,x26,[sp,#64]
25	stp	x27,x28,[sp,#80]
26
27	ldp	w20,w21,[x0]
28	ldp	w22,w23,[x0,#8]
29	ldr	w24,[x0,#16]
30
31.Loop:
32	ldr	x3,[x1],#64
33	movz	w28,#0x7999
34	sub	x2,x2,#1
35	movk	w28,#0x5a82,lsl#16
36#ifdef	__AARCH64EB__
37	ror	x3,x3,#32
38#else
39	rev32	x3,x3
40#endif
41	add	w24,w24,w28		// warm it up
42	add	w24,w24,w3
43	lsr	x4,x3,#32
44	ldur	x5,[x1,#-56]
45	bic	w25,w23,w21
46	and	w26,w22,w21
47	ror	w27,w20,#27
48	add	w23,w23,w28		// future e+=K
49	orr	w25,w25,w26
50	add	w24,w24,w27		// e+=rot(a,5)
51	ror	w21,w21,#2
52	add	w23,w23,w4	// future e+=X[i]
53	add	w24,w24,w25		// e+=F(b,c,d)
54#ifdef	__AARCH64EB__
55	ror	x5,x5,#32
56#else
57	rev32	x5,x5
58#endif
59	bic	w25,w22,w20
60	and	w26,w21,w20
61	ror	w27,w24,#27
62	add	w22,w22,w28		// future e+=K
63	orr	w25,w25,w26
64	add	w23,w23,w27		// e+=rot(a,5)
65	ror	w20,w20,#2
66	add	w22,w22,w5	// future e+=X[i]
67	add	w23,w23,w25		// e+=F(b,c,d)
68	lsr	x6,x5,#32
69	ldur	x7,[x1,#-48]
70	bic	w25,w21,w24
71	and	w26,w20,w24
72	ror	w27,w23,#27
73	add	w21,w21,w28		// future e+=K
74	orr	w25,w25,w26
75	add	w22,w22,w27		// e+=rot(a,5)
76	ror	w24,w24,#2
77	add	w21,w21,w6	// future e+=X[i]
78	add	w22,w22,w25		// e+=F(b,c,d)
79#ifdef	__AARCH64EB__
80	ror	x7,x7,#32
81#else
82	rev32	x7,x7
83#endif
84	bic	w25,w20,w23
85	and	w26,w24,w23
86	ror	w27,w22,#27
87	add	w20,w20,w28		// future e+=K
88	orr	w25,w25,w26
89	add	w21,w21,w27		// e+=rot(a,5)
90	ror	w23,w23,#2
91	add	w20,w20,w7	// future e+=X[i]
92	add	w21,w21,w25		// e+=F(b,c,d)
93	lsr	x8,x7,#32
94	ldur	x9,[x1,#-40]
95	bic	w25,w24,w22
96	and	w26,w23,w22
97	ror	w27,w21,#27
98	add	w24,w24,w28		// future e+=K
99	orr	w25,w25,w26
100	add	w20,w20,w27		// e+=rot(a,5)
101	ror	w22,w22,#2
102	add	w24,w24,w8	// future e+=X[i]
103	add	w20,w20,w25		// e+=F(b,c,d)
104#ifdef	__AARCH64EB__
105	ror	x9,x9,#32
106#else
107	rev32	x9,x9
108#endif
109	bic	w25,w23,w21
110	and	w26,w22,w21
111	ror	w27,w20,#27
112	add	w23,w23,w28		// future e+=K
113	orr	w25,w25,w26
114	add	w24,w24,w27		// e+=rot(a,5)
115	ror	w21,w21,#2
116	add	w23,w23,w9	// future e+=X[i]
117	add	w24,w24,w25		// e+=F(b,c,d)
118	lsr	x10,x9,#32
119	ldur	x11,[x1,#-32]
120	bic	w25,w22,w20
121	and	w26,w21,w20
122	ror	w27,w24,#27
123	add	w22,w22,w28		// future e+=K
124	orr	w25,w25,w26
125	add	w23,w23,w27		// e+=rot(a,5)
126	ror	w20,w20,#2
127	add	w22,w22,w10	// future e+=X[i]
128	add	w23,w23,w25		// e+=F(b,c,d)
129#ifdef	__AARCH64EB__
130	ror	x11,x11,#32
131#else
132	rev32	x11,x11
133#endif
134	bic	w25,w21,w24
135	and	w26,w20,w24
136	ror	w27,w23,#27
137	add	w21,w21,w28		// future e+=K
138	orr	w25,w25,w26
139	add	w22,w22,w27		// e+=rot(a,5)
140	ror	w24,w24,#2
141	add	w21,w21,w11	// future e+=X[i]
142	add	w22,w22,w25		// e+=F(b,c,d)
143	lsr	x12,x11,#32
144	ldur	x13,[x1,#-24]
145	bic	w25,w20,w23
146	and	w26,w24,w23
147	ror	w27,w22,#27
148	add	w20,w20,w28		// future e+=K
149	orr	w25,w25,w26
150	add	w21,w21,w27		// e+=rot(a,5)
151	ror	w23,w23,#2
152	add	w20,w20,w12	// future e+=X[i]
153	add	w21,w21,w25		// e+=F(b,c,d)
154#ifdef	__AARCH64EB__
155	ror	x13,x13,#32
156#else
157	rev32	x13,x13
158#endif
159	bic	w25,w24,w22
160	and	w26,w23,w22
161	ror	w27,w21,#27
162	add	w24,w24,w28		// future e+=K
163	orr	w25,w25,w26
164	add	w20,w20,w27		// e+=rot(a,5)
165	ror	w22,w22,#2
166	add	w24,w24,w13	// future e+=X[i]
167	add	w20,w20,w25		// e+=F(b,c,d)
168	lsr	x14,x13,#32
169	ldur	x15,[x1,#-16]
170	bic	w25,w23,w21
171	and	w26,w22,w21
172	ror	w27,w20,#27
173	add	w23,w23,w28		// future e+=K
174	orr	w25,w25,w26
175	add	w24,w24,w27		// e+=rot(a,5)
176	ror	w21,w21,#2
177	add	w23,w23,w14	// future e+=X[i]
178	add	w24,w24,w25		// e+=F(b,c,d)
179#ifdef	__AARCH64EB__
180	ror	x15,x15,#32
181#else
182	rev32	x15,x15
183#endif
184	bic	w25,w22,w20
185	and	w26,w21,w20
186	ror	w27,w24,#27
187	add	w22,w22,w28		// future e+=K
188	orr	w25,w25,w26
189	add	w23,w23,w27		// e+=rot(a,5)
190	ror	w20,w20,#2
191	add	w22,w22,w15	// future e+=X[i]
192	add	w23,w23,w25		// e+=F(b,c,d)
193	lsr	x16,x15,#32
194	ldur	x17,[x1,#-8]
195	bic	w25,w21,w24
196	and	w26,w20,w24
197	ror	w27,w23,#27
198	add	w21,w21,w28		// future e+=K
199	orr	w25,w25,w26
200	add	w22,w22,w27		// e+=rot(a,5)
201	ror	w24,w24,#2
202	add	w21,w21,w16	// future e+=X[i]
203	add	w22,w22,w25		// e+=F(b,c,d)
204#ifdef	__AARCH64EB__
205	ror	x17,x17,#32
206#else
207	rev32	x17,x17
208#endif
209	bic	w25,w20,w23
210	and	w26,w24,w23
211	ror	w27,w22,#27
212	add	w20,w20,w28		// future e+=K
213	orr	w25,w25,w26
214	add	w21,w21,w27		// e+=rot(a,5)
215	ror	w23,w23,#2
216	add	w20,w20,w17	// future e+=X[i]
217	add	w21,w21,w25		// e+=F(b,c,d)
218	lsr	x19,x17,#32
219	eor	w3,w3,w5
220	bic	w25,w24,w22
221	and	w26,w23,w22
222	ror	w27,w21,#27
223	eor	w3,w3,w11
224	add	w24,w24,w28		// future e+=K
225	orr	w25,w25,w26
226	add	w20,w20,w27		// e+=rot(a,5)
227	eor	w3,w3,w16
228	ror	w22,w22,#2
229	add	w24,w24,w19	// future e+=X[i]
230	add	w20,w20,w25		// e+=F(b,c,d)
231	ror	w3,w3,#31
232	eor	w4,w4,w6
233	bic	w25,w23,w21
234	and	w26,w22,w21
235	ror	w27,w20,#27
236	eor	w4,w4,w12
237	add	w23,w23,w28		// future e+=K
238	orr	w25,w25,w26
239	add	w24,w24,w27		// e+=rot(a,5)
240	eor	w4,w4,w17
241	ror	w21,w21,#2
242	add	w23,w23,w3	// future e+=X[i]
243	add	w24,w24,w25		// e+=F(b,c,d)
244	ror	w4,w4,#31
245	eor	w5,w5,w7
246	bic	w25,w22,w20
247	and	w26,w21,w20
248	ror	w27,w24,#27
249	eor	w5,w5,w13
250	add	w22,w22,w28		// future e+=K
251	orr	w25,w25,w26
252	add	w23,w23,w27		// e+=rot(a,5)
253	eor	w5,w5,w19
254	ror	w20,w20,#2
255	add	w22,w22,w4	// future e+=X[i]
256	add	w23,w23,w25		// e+=F(b,c,d)
257	ror	w5,w5,#31
258	eor	w6,w6,w8
259	bic	w25,w21,w24
260	and	w26,w20,w24
261	ror	w27,w23,#27
262	eor	w6,w6,w14
263	add	w21,w21,w28		// future e+=K
264	orr	w25,w25,w26
265	add	w22,w22,w27		// e+=rot(a,5)
266	eor	w6,w6,w3
267	ror	w24,w24,#2
268	add	w21,w21,w5	// future e+=X[i]
269	add	w22,w22,w25		// e+=F(b,c,d)
270	ror	w6,w6,#31
271	eor	w7,w7,w9
272	bic	w25,w20,w23
273	and	w26,w24,w23
274	ror	w27,w22,#27
275	eor	w7,w7,w15
276	add	w20,w20,w28		// future e+=K
277	orr	w25,w25,w26
278	add	w21,w21,w27		// e+=rot(a,5)
279	eor	w7,w7,w4
280	ror	w23,w23,#2
281	add	w20,w20,w6	// future e+=X[i]
282	add	w21,w21,w25		// e+=F(b,c,d)
283	ror	w7,w7,#31
284	movz	w28,#0xeba1
285	movk	w28,#0x6ed9,lsl#16
286	eor	w8,w8,w10
287	bic	w25,w24,w22
288	and	w26,w23,w22
289	ror	w27,w21,#27
290	eor	w8,w8,w16
291	add	w24,w24,w28		// future e+=K
292	orr	w25,w25,w26
293	add	w20,w20,w27		// e+=rot(a,5)
294	eor	w8,w8,w5
295	ror	w22,w22,#2
296	add	w24,w24,w7	// future e+=X[i]
297	add	w20,w20,w25		// e+=F(b,c,d)
298	ror	w8,w8,#31
299	eor	w9,w9,w11
300	eor	w25,w23,w21
301	ror	w27,w20,#27
302	add	w23,w23,w28		// future e+=K
303	eor	w9,w9,w17
304	eor	w25,w25,w22
305	add	w24,w24,w27		// e+=rot(a,5)
306	ror	w21,w21,#2
307	eor	w9,w9,w6
308	add	w23,w23,w8	// future e+=X[i]
309	add	w24,w24,w25		// e+=F(b,c,d)
310	ror	w9,w9,#31
311	eor	w10,w10,w12
312	eor	w25,w22,w20
313	ror	w27,w24,#27
314	add	w22,w22,w28		// future e+=K
315	eor	w10,w10,w19
316	eor	w25,w25,w21
317	add	w23,w23,w27		// e+=rot(a,5)
318	ror	w20,w20,#2
319	eor	w10,w10,w7
320	add	w22,w22,w9	// future e+=X[i]
321	add	w23,w23,w25		// e+=F(b,c,d)
322	ror	w10,w10,#31
323	eor	w11,w11,w13
324	eor	w25,w21,w24
325	ror	w27,w23,#27
326	add	w21,w21,w28		// future e+=K
327	eor	w11,w11,w3
328	eor	w25,w25,w20
329	add	w22,w22,w27		// e+=rot(a,5)
330	ror	w24,w24,#2
331	eor	w11,w11,w8
332	add	w21,w21,w10	// future e+=X[i]
333	add	w22,w22,w25		// e+=F(b,c,d)
334	ror	w11,w11,#31
335	eor	w12,w12,w14
336	eor	w25,w20,w23
337	ror	w27,w22,#27
338	add	w20,w20,w28		// future e+=K
339	eor	w12,w12,w4
340	eor	w25,w25,w24
341	add	w21,w21,w27		// e+=rot(a,5)
342	ror	w23,w23,#2
343	eor	w12,w12,w9
344	add	w20,w20,w11	// future e+=X[i]
345	add	w21,w21,w25		// e+=F(b,c,d)
346	ror	w12,w12,#31
347	eor	w13,w13,w15
348	eor	w25,w24,w22
349	ror	w27,w21,#27
350	add	w24,w24,w28		// future e+=K
351	eor	w13,w13,w5
352	eor	w25,w25,w23
353	add	w20,w20,w27		// e+=rot(a,5)
354	ror	w22,w22,#2
355	eor	w13,w13,w10
356	add	w24,w24,w12	// future e+=X[i]
357	add	w20,w20,w25		// e+=F(b,c,d)
358	ror	w13,w13,#31
359	eor	w14,w14,w16
360	eor	w25,w23,w21
361	ror	w27,w20,#27
362	add	w23,w23,w28		// future e+=K
363	eor	w14,w14,w6
364	eor	w25,w25,w22
365	add	w24,w24,w27		// e+=rot(a,5)
366	ror	w21,w21,#2
367	eor	w14,w14,w11
368	add	w23,w23,w13	// future e+=X[i]
369	add	w24,w24,w25		// e+=F(b,c,d)
370	ror	w14,w14,#31
371	eor	w15,w15,w17
372	eor	w25,w22,w20
373	ror	w27,w24,#27
374	add	w22,w22,w28		// future e+=K
375	eor	w15,w15,w7
376	eor	w25,w25,w21
377	add	w23,w23,w27		// e+=rot(a,5)
378	ror	w20,w20,#2
379	eor	w15,w15,w12
380	add	w22,w22,w14	// future e+=X[i]
381	add	w23,w23,w25		// e+=F(b,c,d)
382	ror	w15,w15,#31
383	eor	w16,w16,w19
384	eor	w25,w21,w24
385	ror	w27,w23,#27
386	add	w21,w21,w28		// future e+=K
387	eor	w16,w16,w8
388	eor	w25,w25,w20
389	add	w22,w22,w27		// e+=rot(a,5)
390	ror	w24,w24,#2
391	eor	w16,w16,w13
392	add	w21,w21,w15	// future e+=X[i]
393	add	w22,w22,w25		// e+=F(b,c,d)
394	ror	w16,w16,#31
395	eor	w17,w17,w3
396	eor	w25,w20,w23
397	ror	w27,w22,#27
398	add	w20,w20,w28		// future e+=K
399	eor	w17,w17,w9
400	eor	w25,w25,w24
401	add	w21,w21,w27		// e+=rot(a,5)
402	ror	w23,w23,#2
403	eor	w17,w17,w14
404	add	w20,w20,w16	// future e+=X[i]
405	add	w21,w21,w25		// e+=F(b,c,d)
406	ror	w17,w17,#31
407	eor	w19,w19,w4
408	eor	w25,w24,w22
409	ror	w27,w21,#27
410	add	w24,w24,w28		// future e+=K
411	eor	w19,w19,w10
412	eor	w25,w25,w23
413	add	w20,w20,w27		// e+=rot(a,5)
414	ror	w22,w22,#2
415	eor	w19,w19,w15
416	add	w24,w24,w17	// future e+=X[i]
417	add	w20,w20,w25		// e+=F(b,c,d)
418	ror	w19,w19,#31
419	eor	w3,w3,w5
420	eor	w25,w23,w21
421	ror	w27,w20,#27
422	add	w23,w23,w28		// future e+=K
423	eor	w3,w3,w11
424	eor	w25,w25,w22
425	add	w24,w24,w27		// e+=rot(a,5)
426	ror	w21,w21,#2
427	eor	w3,w3,w16
428	add	w23,w23,w19	// future e+=X[i]
429	add	w24,w24,w25		// e+=F(b,c,d)
430	ror	w3,w3,#31
431	eor	w4,w4,w6
432	eor	w25,w22,w20
433	ror	w27,w24,#27
434	add	w22,w22,w28		// future e+=K
435	eor	w4,w4,w12
436	eor	w25,w25,w21
437	add	w23,w23,w27		// e+=rot(a,5)
438	ror	w20,w20,#2
439	eor	w4,w4,w17
440	add	w22,w22,w3	// future e+=X[i]
441	add	w23,w23,w25		// e+=F(b,c,d)
442	ror	w4,w4,#31
443	eor	w5,w5,w7
444	eor	w25,w21,w24
445	ror	w27,w23,#27
446	add	w21,w21,w28		// future e+=K
447	eor	w5,w5,w13
448	eor	w25,w25,w20
449	add	w22,w22,w27		// e+=rot(a,5)
450	ror	w24,w24,#2
451	eor	w5,w5,w19
452	add	w21,w21,w4	// future e+=X[i]
453	add	w22,w22,w25		// e+=F(b,c,d)
454	ror	w5,w5,#31
455	eor	w6,w6,w8
456	eor	w25,w20,w23
457	ror	w27,w22,#27
458	add	w20,w20,w28		// future e+=K
459	eor	w6,w6,w14
460	eor	w25,w25,w24
461	add	w21,w21,w27		// e+=rot(a,5)
462	ror	w23,w23,#2
463	eor	w6,w6,w3
464	add	w20,w20,w5	// future e+=X[i]
465	add	w21,w21,w25		// e+=F(b,c,d)
466	ror	w6,w6,#31
467	eor	w7,w7,w9
468	eor	w25,w24,w22
469	ror	w27,w21,#27
470	add	w24,w24,w28		// future e+=K
471	eor	w7,w7,w15
472	eor	w25,w25,w23
473	add	w20,w20,w27		// e+=rot(a,5)
474	ror	w22,w22,#2
475	eor	w7,w7,w4
476	add	w24,w24,w6	// future e+=X[i]
477	add	w20,w20,w25		// e+=F(b,c,d)
478	ror	w7,w7,#31
479	eor	w8,w8,w10
480	eor	w25,w23,w21
481	ror	w27,w20,#27
482	add	w23,w23,w28		// future e+=K
483	eor	w8,w8,w16
484	eor	w25,w25,w22
485	add	w24,w24,w27		// e+=rot(a,5)
486	ror	w21,w21,#2
487	eor	w8,w8,w5
488	add	w23,w23,w7	// future e+=X[i]
489	add	w24,w24,w25		// e+=F(b,c,d)
490	ror	w8,w8,#31
491	eor	w9,w9,w11
492	eor	w25,w22,w20
493	ror	w27,w24,#27
494	add	w22,w22,w28		// future e+=K
495	eor	w9,w9,w17
496	eor	w25,w25,w21
497	add	w23,w23,w27		// e+=rot(a,5)
498	ror	w20,w20,#2
499	eor	w9,w9,w6
500	add	w22,w22,w8	// future e+=X[i]
501	add	w23,w23,w25		// e+=F(b,c,d)
502	ror	w9,w9,#31
503	eor	w10,w10,w12
504	eor	w25,w21,w24
505	ror	w27,w23,#27
506	add	w21,w21,w28		// future e+=K
507	eor	w10,w10,w19
508	eor	w25,w25,w20
509	add	w22,w22,w27		// e+=rot(a,5)
510	ror	w24,w24,#2
511	eor	w10,w10,w7
512	add	w21,w21,w9	// future e+=X[i]
513	add	w22,w22,w25		// e+=F(b,c,d)
514	ror	w10,w10,#31
515	eor	w11,w11,w13
516	eor	w25,w20,w23
517	ror	w27,w22,#27
518	add	w20,w20,w28		// future e+=K
519	eor	w11,w11,w3
520	eor	w25,w25,w24
521	add	w21,w21,w27		// e+=rot(a,5)
522	ror	w23,w23,#2
523	eor	w11,w11,w8
524	add	w20,w20,w10	// future e+=X[i]
525	add	w21,w21,w25		// e+=F(b,c,d)
526	ror	w11,w11,#31
527	movz	w28,#0xbcdc
528	movk	w28,#0x8f1b,lsl#16
529	eor	w12,w12,w14
530	eor	w25,w24,w22
531	ror	w27,w21,#27
532	add	w24,w24,w28		// future e+=K
533	eor	w12,w12,w4
534	eor	w25,w25,w23
535	add	w20,w20,w27		// e+=rot(a,5)
536	ror	w22,w22,#2
537	eor	w12,w12,w9
538	add	w24,w24,w11	// future e+=X[i]
539	add	w20,w20,w25		// e+=F(b,c,d)
540	ror	w12,w12,#31
541	orr	w25,w21,w22
542	and	w26,w21,w22
543	eor	w13,w13,w15
544	ror	w27,w20,#27
545	and	w25,w25,w23
546	add	w23,w23,w28		// future e+=K
547	eor	w13,w13,w5
548	add	w24,w24,w27		// e+=rot(a,5)
549	orr	w25,w25,w26
550	ror	w21,w21,#2
551	eor	w13,w13,w10
552	add	w23,w23,w12	// future e+=X[i]
553	add	w24,w24,w25		// e+=F(b,c,d)
554	ror	w13,w13,#31
555	orr	w25,w20,w21
556	and	w26,w20,w21
557	eor	w14,w14,w16
558	ror	w27,w24,#27
559	and	w25,w25,w22
560	add	w22,w22,w28		// future e+=K
561	eor	w14,w14,w6
562	add	w23,w23,w27		// e+=rot(a,5)
563	orr	w25,w25,w26
564	ror	w20,w20,#2
565	eor	w14,w14,w11
566	add	w22,w22,w13	// future e+=X[i]
567	add	w23,w23,w25		// e+=F(b,c,d)
568	ror	w14,w14,#31
569	orr	w25,w24,w20
570	and	w26,w24,w20
571	eor	w15,w15,w17
572	ror	w27,w23,#27
573	and	w25,w25,w21
574	add	w21,w21,w28		// future e+=K
575	eor	w15,w15,w7
576	add	w22,w22,w27		// e+=rot(a,5)
577	orr	w25,w25,w26
578	ror	w24,w24,#2
579	eor	w15,w15,w12
580	add	w21,w21,w14	// future e+=X[i]
581	add	w22,w22,w25		// e+=F(b,c,d)
582	ror	w15,w15,#31
583	orr	w25,w23,w24
584	and	w26,w23,w24
585	eor	w16,w16,w19
586	ror	w27,w22,#27
587	and	w25,w25,w20
588	add	w20,w20,w28		// future e+=K
589	eor	w16,w16,w8
590	add	w21,w21,w27		// e+=rot(a,5)
591	orr	w25,w25,w26
592	ror	w23,w23,#2
593	eor	w16,w16,w13
594	add	w20,w20,w15	// future e+=X[i]
595	add	w21,w21,w25		// e+=F(b,c,d)
596	ror	w16,w16,#31
597	orr	w25,w22,w23
598	and	w26,w22,w23
599	eor	w17,w17,w3
600	ror	w27,w21,#27
601	and	w25,w25,w24
602	add	w24,w24,w28		// future e+=K
603	eor	w17,w17,w9
604	add	w20,w20,w27		// e+=rot(a,5)
605	orr	w25,w25,w26
606	ror	w22,w22,#2
607	eor	w17,w17,w14
608	add	w24,w24,w16	// future e+=X[i]
609	add	w20,w20,w25		// e+=F(b,c,d)
610	ror	w17,w17,#31
611	orr	w25,w21,w22
612	and	w26,w21,w22
613	eor	w19,w19,w4
614	ror	w27,w20,#27
615	and	w25,w25,w23
616	add	w23,w23,w28		// future e+=K
617	eor	w19,w19,w10
618	add	w24,w24,w27		// e+=rot(a,5)
619	orr	w25,w25,w26
620	ror	w21,w21,#2
621	eor	w19,w19,w15
622	add	w23,w23,w17	// future e+=X[i]
623	add	w24,w24,w25		// e+=F(b,c,d)
624	ror	w19,w19,#31
625	orr	w25,w20,w21
626	and	w26,w20,w21
627	eor	w3,w3,w5
628	ror	w27,w24,#27
629	and	w25,w25,w22
630	add	w22,w22,w28		// future e+=K
631	eor	w3,w3,w11
632	add	w23,w23,w27		// e+=rot(a,5)
633	orr	w25,w25,w26
634	ror	w20,w20,#2
635	eor	w3,w3,w16
636	add	w22,w22,w19	// future e+=X[i]
637	add	w23,w23,w25		// e+=F(b,c,d)
638	ror	w3,w3,#31
639	orr	w25,w24,w20
640	and	w26,w24,w20
641	eor	w4,w4,w6
642	ror	w27,w23,#27
643	and	w25,w25,w21
644	add	w21,w21,w28		// future e+=K
645	eor	w4,w4,w12
646	add	w22,w22,w27		// e+=rot(a,5)
647	orr	w25,w25,w26
648	ror	w24,w24,#2
649	eor	w4,w4,w17
650	add	w21,w21,w3	// future e+=X[i]
651	add	w22,w22,w25		// e+=F(b,c,d)
652	ror	w4,w4,#31
653	orr	w25,w23,w24
654	and	w26,w23,w24
655	eor	w5,w5,w7
656	ror	w27,w22,#27
657	and	w25,w25,w20
658	add	w20,w20,w28		// future e+=K
659	eor	w5,w5,w13
660	add	w21,w21,w27		// e+=rot(a,5)
661	orr	w25,w25,w26
662	ror	w23,w23,#2
663	eor	w5,w5,w19
664	add	w20,w20,w4	// future e+=X[i]
665	add	w21,w21,w25		// e+=F(b,c,d)
666	ror	w5,w5,#31
667	orr	w25,w22,w23
668	and	w26,w22,w23
669	eor	w6,w6,w8
670	ror	w27,w21,#27
671	and	w25,w25,w24
672	add	w24,w24,w28		// future e+=K
673	eor	w6,w6,w14
674	add	w20,w20,w27		// e+=rot(a,5)
675	orr	w25,w25,w26
676	ror	w22,w22,#2
677	eor	w6,w6,w3
678	add	w24,w24,w5	// future e+=X[i]
679	add	w20,w20,w25		// e+=F(b,c,d)
680	ror	w6,w6,#31
681	orr	w25,w21,w22
682	and	w26,w21,w22
683	eor	w7,w7,w9
684	ror	w27,w20,#27
685	and	w25,w25,w23
686	add	w23,w23,w28		// future e+=K
687	eor	w7,w7,w15
688	add	w24,w24,w27		// e+=rot(a,5)
689	orr	w25,w25,w26
690	ror	w21,w21,#2
691	eor	w7,w7,w4
692	add	w23,w23,w6	// future e+=X[i]
693	add	w24,w24,w25		// e+=F(b,c,d)
694	ror	w7,w7,#31
695	orr	w25,w20,w21
696	and	w26,w20,w21
697	eor	w8,w8,w10
698	ror	w27,w24,#27
699	and	w25,w25,w22
700	add	w22,w22,w28		// future e+=K
701	eor	w8,w8,w16
702	add	w23,w23,w27		// e+=rot(a,5)
703	orr	w25,w25,w26
704	ror	w20,w20,#2
705	eor	w8,w8,w5
706	add	w22,w22,w7	// future e+=X[i]
707	add	w23,w23,w25		// e+=F(b,c,d)
708	ror	w8,w8,#31
709	orr	w25,w24,w20
710	and	w26,w24,w20
711	eor	w9,w9,w11
712	ror	w27,w23,#27
713	and	w25,w25,w21
714	add	w21,w21,w28		// future e+=K
715	eor	w9,w9,w17
716	add	w22,w22,w27		// e+=rot(a,5)
717	orr	w25,w25,w26
718	ror	w24,w24,#2
719	eor	w9,w9,w6
720	add	w21,w21,w8	// future e+=X[i]
721	add	w22,w22,w25		// e+=F(b,c,d)
722	ror	w9,w9,#31
723	orr	w25,w23,w24
724	and	w26,w23,w24
725	eor	w10,w10,w12
726	ror	w27,w22,#27
727	and	w25,w25,w20
728	add	w20,w20,w28		// future e+=K
729	eor	w10,w10,w19
730	add	w21,w21,w27		// e+=rot(a,5)
731	orr	w25,w25,w26
732	ror	w23,w23,#2
733	eor	w10,w10,w7
734	add	w20,w20,w9	// future e+=X[i]
735	add	w21,w21,w25		// e+=F(b,c,d)
736	ror	w10,w10,#31
737	orr	w25,w22,w23
738	and	w26,w22,w23
739	eor	w11,w11,w13
740	ror	w27,w21,#27
741	and	w25,w25,w24
742	add	w24,w24,w28		// future e+=K
743	eor	w11,w11,w3
744	add	w20,w20,w27		// e+=rot(a,5)
745	orr	w25,w25,w26
746	ror	w22,w22,#2
747	eor	w11,w11,w8
748	add	w24,w24,w10	// future e+=X[i]
749	add	w20,w20,w25		// e+=F(b,c,d)
750	ror	w11,w11,#31
751	orr	w25,w21,w22
752	and	w26,w21,w22
753	eor	w12,w12,w14
754	ror	w27,w20,#27
755	and	w25,w25,w23
756	add	w23,w23,w28		// future e+=K
757	eor	w12,w12,w4
758	add	w24,w24,w27		// e+=rot(a,5)
759	orr	w25,w25,w26
760	ror	w21,w21,#2
761	eor	w12,w12,w9
762	add	w23,w23,w11	// future e+=X[i]
763	add	w24,w24,w25		// e+=F(b,c,d)
764	ror	w12,w12,#31
765	orr	w25,w20,w21
766	and	w26,w20,w21
767	eor	w13,w13,w15
768	ror	w27,w24,#27
769	and	w25,w25,w22
770	add	w22,w22,w28		// future e+=K
771	eor	w13,w13,w5
772	add	w23,w23,w27		// e+=rot(a,5)
773	orr	w25,w25,w26
774	ror	w20,w20,#2
775	eor	w13,w13,w10
776	add	w22,w22,w12	// future e+=X[i]
777	add	w23,w23,w25		// e+=F(b,c,d)
778	ror	w13,w13,#31
779	orr	w25,w24,w20
780	and	w26,w24,w20
781	eor	w14,w14,w16
782	ror	w27,w23,#27
783	and	w25,w25,w21
784	add	w21,w21,w28		// future e+=K
785	eor	w14,w14,w6
786	add	w22,w22,w27		// e+=rot(a,5)
787	orr	w25,w25,w26
788	ror	w24,w24,#2
789	eor	w14,w14,w11
790	add	w21,w21,w13	// future e+=X[i]
791	add	w22,w22,w25		// e+=F(b,c,d)
792	ror	w14,w14,#31
793	orr	w25,w23,w24
794	and	w26,w23,w24
795	eor	w15,w15,w17
796	ror	w27,w22,#27
797	and	w25,w25,w20
798	add	w20,w20,w28		// future e+=K
799	eor	w15,w15,w7
800	add	w21,w21,w27		// e+=rot(a,5)
801	orr	w25,w25,w26
802	ror	w23,w23,#2
803	eor	w15,w15,w12
804	add	w20,w20,w14	// future e+=X[i]
805	add	w21,w21,w25		// e+=F(b,c,d)
806	ror	w15,w15,#31
807	movz	w28,#0xc1d6
808	movk	w28,#0xca62,lsl#16
809	orr	w25,w22,w23
810	and	w26,w22,w23
811	eor	w16,w16,w19
812	ror	w27,w21,#27
813	and	w25,w25,w24
814	add	w24,w24,w28		// future e+=K
815	eor	w16,w16,w8
816	add	w20,w20,w27		// e+=rot(a,5)
817	orr	w25,w25,w26
818	ror	w22,w22,#2
819	eor	w16,w16,w13
820	add	w24,w24,w15	// future e+=X[i]
821	add	w20,w20,w25		// e+=F(b,c,d)
822	ror	w16,w16,#31
823	eor	w17,w17,w3
824	eor	w25,w23,w21
825	ror	w27,w20,#27
826	add	w23,w23,w28		// future e+=K
827	eor	w17,w17,w9
828	eor	w25,w25,w22
829	add	w24,w24,w27		// e+=rot(a,5)
830	ror	w21,w21,#2
831	eor	w17,w17,w14
832	add	w23,w23,w16	// future e+=X[i]
833	add	w24,w24,w25		// e+=F(b,c,d)
834	ror	w17,w17,#31
835	eor	w19,w19,w4
836	eor	w25,w22,w20
837	ror	w27,w24,#27
838	add	w22,w22,w28		// future e+=K
839	eor	w19,w19,w10
840	eor	w25,w25,w21
841	add	w23,w23,w27		// e+=rot(a,5)
842	ror	w20,w20,#2
843	eor	w19,w19,w15
844	add	w22,w22,w17	// future e+=X[i]
845	add	w23,w23,w25		// e+=F(b,c,d)
846	ror	w19,w19,#31
847	eor	w3,w3,w5
848	eor	w25,w21,w24
849	ror	w27,w23,#27
850	add	w21,w21,w28		// future e+=K
851	eor	w3,w3,w11
852	eor	w25,w25,w20
853	add	w22,w22,w27		// e+=rot(a,5)
854	ror	w24,w24,#2
855	eor	w3,w3,w16
856	add	w21,w21,w19	// future e+=X[i]
857	add	w22,w22,w25		// e+=F(b,c,d)
858	ror	w3,w3,#31
859	eor	w4,w4,w6
860	eor	w25,w20,w23
861	ror	w27,w22,#27
862	add	w20,w20,w28		// future e+=K
863	eor	w4,w4,w12
864	eor	w25,w25,w24
865	add	w21,w21,w27		// e+=rot(a,5)
866	ror	w23,w23,#2
867	eor	w4,w4,w17
868	add	w20,w20,w3	// future e+=X[i]
869	add	w21,w21,w25		// e+=F(b,c,d)
870	ror	w4,w4,#31
871	eor	w5,w5,w7
872	eor	w25,w24,w22
873	ror	w27,w21,#27
874	add	w24,w24,w28		// future e+=K
875	eor	w5,w5,w13
876	eor	w25,w25,w23
877	add	w20,w20,w27		// e+=rot(a,5)
878	ror	w22,w22,#2
879	eor	w5,w5,w19
880	add	w24,w24,w4	// future e+=X[i]
881	add	w20,w20,w25		// e+=F(b,c,d)
882	ror	w5,w5,#31
883	eor	w6,w6,w8
884	eor	w25,w23,w21
885	ror	w27,w20,#27
886	add	w23,w23,w28		// future e+=K
887	eor	w6,w6,w14
888	eor	w25,w25,w22
889	add	w24,w24,w27		// e+=rot(a,5)
890	ror	w21,w21,#2
891	eor	w6,w6,w3
892	add	w23,w23,w5	// future e+=X[i]
893	add	w24,w24,w25		// e+=F(b,c,d)
894	ror	w6,w6,#31
895	eor	w7,w7,w9
896	eor	w25,w22,w20
897	ror	w27,w24,#27
898	add	w22,w22,w28		// future e+=K
899	eor	w7,w7,w15
900	eor	w25,w25,w21
901	add	w23,w23,w27		// e+=rot(a,5)
902	ror	w20,w20,#2
903	eor	w7,w7,w4
904	add	w22,w22,w6	// future e+=X[i]
905	add	w23,w23,w25		// e+=F(b,c,d)
906	ror	w7,w7,#31
907	eor	w8,w8,w10
908	eor	w25,w21,w24
909	ror	w27,w23,#27
910	add	w21,w21,w28		// future e+=K
911	eor	w8,w8,w16
912	eor	w25,w25,w20
913	add	w22,w22,w27		// e+=rot(a,5)
914	ror	w24,w24,#2
915	eor	w8,w8,w5
916	add	w21,w21,w7	// future e+=X[i]
917	add	w22,w22,w25		// e+=F(b,c,d)
918	ror	w8,w8,#31
919	eor	w9,w9,w11
920	eor	w25,w20,w23
921	ror	w27,w22,#27
922	add	w20,w20,w28		// future e+=K
923	eor	w9,w9,w17
924	eor	w25,w25,w24
925	add	w21,w21,w27		// e+=rot(a,5)
926	ror	w23,w23,#2
927	eor	w9,w9,w6
928	add	w20,w20,w8	// future e+=X[i]
929	add	w21,w21,w25		// e+=F(b,c,d)
930	ror	w9,w9,#31
931	eor	w10,w10,w12
932	eor	w25,w24,w22
933	ror	w27,w21,#27
934	add	w24,w24,w28		// future e+=K
935	eor	w10,w10,w19
936	eor	w25,w25,w23
937	add	w20,w20,w27		// e+=rot(a,5)
938	ror	w22,w22,#2
939	eor	w10,w10,w7
940	add	w24,w24,w9	// future e+=X[i]
941	add	w20,w20,w25		// e+=F(b,c,d)
942	ror	w10,w10,#31
943	eor	w11,w11,w13
944	eor	w25,w23,w21
945	ror	w27,w20,#27
946	add	w23,w23,w28		// future e+=K
947	eor	w11,w11,w3
948	eor	w25,w25,w22
949	add	w24,w24,w27		// e+=rot(a,5)
950	ror	w21,w21,#2
951	eor	w11,w11,w8
952	add	w23,w23,w10	// future e+=X[i]
953	add	w24,w24,w25		// e+=F(b,c,d)
954	ror	w11,w11,#31
955	eor	w12,w12,w14
956	eor	w25,w22,w20
957	ror	w27,w24,#27
958	add	w22,w22,w28		// future e+=K
959	eor	w12,w12,w4
960	eor	w25,w25,w21
961	add	w23,w23,w27		// e+=rot(a,5)
962	ror	w20,w20,#2
963	eor	w12,w12,w9
964	add	w22,w22,w11	// future e+=X[i]
965	add	w23,w23,w25		// e+=F(b,c,d)
966	ror	w12,w12,#31
967	eor	w13,w13,w15
968	eor	w25,w21,w24
969	ror	w27,w23,#27
970	add	w21,w21,w28		// future e+=K
971	eor	w13,w13,w5
972	eor	w25,w25,w20
973	add	w22,w22,w27		// e+=rot(a,5)
974	ror	w24,w24,#2
975	eor	w13,w13,w10
976	add	w21,w21,w12	// future e+=X[i]
977	add	w22,w22,w25		// e+=F(b,c,d)
978	ror	w13,w13,#31
979	eor	w14,w14,w16
980	eor	w25,w20,w23
981	ror	w27,w22,#27
982	add	w20,w20,w28		// future e+=K
983	eor	w14,w14,w6
984	eor	w25,w25,w24
985	add	w21,w21,w27		// e+=rot(a,5)
986	ror	w23,w23,#2
987	eor	w14,w14,w11
988	add	w20,w20,w13	// future e+=X[i]
989	add	w21,w21,w25		// e+=F(b,c,d)
990	ror	w14,w14,#31
991	eor	w15,w15,w17
992	eor	w25,w24,w22
993	ror	w27,w21,#27
994	add	w24,w24,w28		// future e+=K
995	eor	w15,w15,w7
996	eor	w25,w25,w23
997	add	w20,w20,w27		// e+=rot(a,5)
998	ror	w22,w22,#2
999	eor	w15,w15,w12
1000	add	w24,w24,w14	// future e+=X[i]
1001	add	w20,w20,w25		// e+=F(b,c,d)
1002	ror	w15,w15,#31
1003	eor	w16,w16,w19
1004	eor	w25,w23,w21
1005	ror	w27,w20,#27
1006	add	w23,w23,w28		// future e+=K
1007	eor	w16,w16,w8
1008	eor	w25,w25,w22
1009	add	w24,w24,w27		// e+=rot(a,5)
1010	ror	w21,w21,#2
1011	eor	w16,w16,w13
1012	add	w23,w23,w15	// future e+=X[i]
1013	add	w24,w24,w25		// e+=F(b,c,d)
1014	ror	w16,w16,#31
1015	eor	w17,w17,w3
1016	eor	w25,w22,w20
1017	ror	w27,w24,#27
1018	add	w22,w22,w28		// future e+=K
1019	eor	w17,w17,w9
1020	eor	w25,w25,w21
1021	add	w23,w23,w27		// e+=rot(a,5)
1022	ror	w20,w20,#2
1023	eor	w17,w17,w14
1024	add	w22,w22,w16	// future e+=X[i]
1025	add	w23,w23,w25		// e+=F(b,c,d)
1026	ror	w17,w17,#31
1027	eor	w19,w19,w4
1028	eor	w25,w21,w24
1029	ror	w27,w23,#27
1030	add	w21,w21,w28		// future e+=K
1031	eor	w19,w19,w10
1032	eor	w25,w25,w20
1033	add	w22,w22,w27		// e+=rot(a,5)
1034	ror	w24,w24,#2
1035	eor	w19,w19,w15
1036	add	w21,w21,w17	// future e+=X[i]
1037	add	w22,w22,w25		// e+=F(b,c,d)
1038	ror	w19,w19,#31
1039	ldp	w4,w5,[x0]
1040	eor	w25,w20,w23
1041	ror	w27,w22,#27
1042	add	w20,w20,w28		// future e+=K
1043	eor	w25,w25,w24
1044	add	w21,w21,w27		// e+=rot(a,5)
1045	ror	w23,w23,#2
1046	add	w20,w20,w19	// future e+=X[i]
1047	add	w21,w21,w25		// e+=F(b,c,d)
1048	ldp	w6,w7,[x0,#8]
1049	eor	w25,w24,w22
1050	ror	w27,w21,#27
1051	eor	w25,w25,w23
1052	add	w20,w20,w27		// e+=rot(a,5)
1053	ror	w22,w22,#2
1054	ldr	w8,[x0,#16]
1055	add	w20,w20,w25		// e+=F(b,c,d)
1056	add	w21,w21,w5
1057	add	w22,w22,w6
1058	add	w20,w20,w4
1059	add	w23,w23,w7
1060	add	w24,w24,w8
1061	stp	w20,w21,[x0]
1062	stp	w22,w23,[x0,#8]
1063	str	w24,[x0,#16]
1064	cbnz	x2,.Loop
1065
1066	ldp	x19,x20,[sp,#16]
1067	ldp	x21,x22,[sp,#32]
1068	ldp	x23,x24,[sp,#48]
1069	ldp	x25,x26,[sp,#64]
1070	ldp	x27,x28,[sp,#80]
1071	ldr	x29,[sp],#96
1072	ret
1073.size	sha1_block_data_order,.-sha1_block_data_order
1074.type	sha1_block_armv8,%function
1075.align	6
1076sha1_block_armv8:
1077.Lv8_entry:
1078	stp	x29,x30,[sp,#-16]!
1079	add	x29,sp,#0
1080
1081	adr	x4,.Lconst
1082	eor	v1.16b,v1.16b,v1.16b
1083	ld1	{v0.4s},[x0],#16
1084	ld1	{v1.s}[0],[x0]
1085	sub	x0,x0,#16
1086	ld1	{v16.4s,v17.4s,v18.4s,v19.4s},[x4]
1087
1088.Loop_hw:
1089	ld1	{v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64
1090	sub	x2,x2,#1
1091	rev32	v4.16b,v4.16b
1092	rev32	v5.16b,v5.16b
1093
1094	add	v20.4s,v16.4s,v4.4s
1095	rev32	v6.16b,v6.16b
1096	orr	v22.16b,v0.16b,v0.16b	// offload
1097
1098	add	v21.4s,v16.4s,v5.4s
1099	rev32	v7.16b,v7.16b
1100.inst	0x5e280803	//sha1h v3.16b,v0.16b
1101.inst	0x5e140020	//sha1c v0.16b,v1.16b,v20.4s		// 0
1102	add	v20.4s,v16.4s,v6.4s
1103.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1104.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 1
1105.inst	0x5e150060	//sha1c v0.16b,v3.16b,v21.4s
1106	add	v21.4s,v16.4s,v7.4s
1107.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1108.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1109.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 2
1110.inst	0x5e140040	//sha1c v0.16b,v2.16b,v20.4s
1111	add	v20.4s,v16.4s,v4.4s
1112.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1113.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1114.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 3
1115.inst	0x5e150060	//sha1c v0.16b,v3.16b,v21.4s
1116	add	v21.4s,v17.4s,v5.4s
1117.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1118.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1119.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 4
1120.inst	0x5e140040	//sha1c v0.16b,v2.16b,v20.4s
1121	add	v20.4s,v17.4s,v6.4s
1122.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1123.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1124.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 5
1125.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1126	add	v21.4s,v17.4s,v7.4s
1127.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1128.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1129.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 6
1130.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1131	add	v20.4s,v17.4s,v4.4s
1132.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1133.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1134.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 7
1135.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1136	add	v21.4s,v17.4s,v5.4s
1137.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1138.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1139.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 8
1140.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1141	add	v20.4s,v18.4s,v6.4s
1142.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1143.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1144.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 9
1145.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1146	add	v21.4s,v18.4s,v7.4s
1147.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1148.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1149.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 10
1150.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
1151	add	v20.4s,v18.4s,v4.4s
1152.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1153.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1154.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 11
1155.inst	0x5e152060	//sha1m v0.16b,v3.16b,v21.4s
1156	add	v21.4s,v18.4s,v5.4s
1157.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1158.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1159.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 12
1160.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
1161	add	v20.4s,v18.4s,v6.4s
1162.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1163.inst	0x5e0630a4	//sha1su0 v4.16b,v5.16b,v6.16b
1164.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 13
1165.inst	0x5e152060	//sha1m v0.16b,v3.16b,v21.4s
1166	add	v21.4s,v19.4s,v7.4s
1167.inst	0x5e2818e4	//sha1su1 v4.16b,v7.16b
1168.inst	0x5e0730c5	//sha1su0 v5.16b,v6.16b,v7.16b
1169.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 14
1170.inst	0x5e142040	//sha1m v0.16b,v2.16b,v20.4s
1171	add	v20.4s,v19.4s,v4.4s
1172.inst	0x5e281885	//sha1su1 v5.16b,v4.16b
1173.inst	0x5e0430e6	//sha1su0 v6.16b,v7.16b,v4.16b
1174.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 15
1175.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1176	add	v21.4s,v19.4s,v5.4s
1177.inst	0x5e2818a6	//sha1su1 v6.16b,v5.16b
1178.inst	0x5e053087	//sha1su0 v7.16b,v4.16b,v5.16b
1179.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 16
1180.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1181	add	v20.4s,v19.4s,v6.4s
1182.inst	0x5e2818c7	//sha1su1 v7.16b,v6.16b
1183.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 17
1184.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1185	add	v21.4s,v19.4s,v7.4s
1186
1187.inst	0x5e280803	//sha1h v3.16b,v0.16b		// 18
1188.inst	0x5e141040	//sha1p v0.16b,v2.16b,v20.4s
1189
1190.inst	0x5e280802	//sha1h v2.16b,v0.16b		// 19
1191.inst	0x5e151060	//sha1p v0.16b,v3.16b,v21.4s
1192
1193	add	v1.4s,v1.4s,v2.4s
1194	add	v0.4s,v0.4s,v22.4s
1195
1196	cbnz	x2,.Loop_hw
1197
1198	st1	{v0.4s},[x0],#16
1199	st1	{v1.s}[0],[x0]
1200
1201	ldr	x29,[sp],#16
1202	ret
1203.size	sha1_block_armv8,.-sha1_block_armv8
1204.align	6
1205.Lconst:
1206.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999	//K_00_19
1207.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1	//K_20_39
1208.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc	//K_40_59
1209.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6	//K_60_79
1210.byte	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,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
1211.align	2
1212.align	2
1213