xref: /freebsd/sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S (revision 61145dc2b94f12f6a47344fb9aac702321880e43)
1// SPDX-License-Identifier: CDDL-1.0
2/*
3 * CDDL HEADER START
4 *
5 * The contents of this file are subject to the terms of the
6 * Common Development and Distribution License (the "License").
7 * You may not use this file except in compliance with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or https://opensource.org/licenses/CDDL-1.0.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22
23/*
24 * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
25 * Copyright (c) 2019-2022 Samuel Neves
26 * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
27 *
28 * This is converted assembly: SSE4.1 -> POWER8 PPC64 Little Endian
29 * Used tools: SIMDe https://github.com/simd-everywhere/simde
30 */
31
32#if (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
33	.text
34	.abiversion 2
35	.section	.rodata.cst16,"aM",@progbits,16
36	.p2align	4
37.LCPI0_0:
38	.byte	31
39	.byte	14
40	.byte	13
41	.byte	12
42	.byte	30
43	.byte	10
44	.byte	9
45	.byte	8
46	.byte	29
47	.byte	6
48	.byte	5
49	.byte	4
50	.byte	28
51	.byte	2
52	.byte	1
53	.byte	0
54.LCPI0_1:
55	.byte	2
56	.byte	3
57	.byte	0
58	.byte	1
59	.byte	6
60	.byte	7
61	.byte	4
62	.byte	5
63	.byte	10
64	.byte	11
65	.byte	8
66	.byte	9
67	.byte	14
68	.byte	15
69	.byte	12
70	.byte	13
71.LCPI0_2:
72	.byte	29
73	.byte	28
74	.byte	31
75	.byte	30
76	.byte	25
77	.byte	24
78	.byte	27
79	.byte	26
80	.byte	21
81	.byte	20
82	.byte	23
83	.byte	22
84	.byte	17
85	.byte	16
86	.byte	19
87	.byte	18
88.LCPI0_3:
89	.long	1779033703
90	.long	3144134277
91	.long	1013904242
92	.long	2773480762
93.LCPI0_4:
94	.byte	27
95	.byte	26
96	.byte	25
97	.byte	24
98	.byte	19
99	.byte	18
100	.byte	17
101	.byte	16
102	.byte	11
103	.byte	10
104	.byte	9
105	.byte	8
106	.byte	3
107	.byte	2
108	.byte	1
109	.byte	0
110.LCPI0_5:
111	.byte	1
112	.byte	2
113	.byte	3
114	.byte	0
115	.byte	5
116	.byte	6
117	.byte	7
118	.byte	4
119	.byte	9
120	.byte	10
121	.byte	11
122	.byte	8
123	.byte	13
124	.byte	14
125	.byte	15
126	.byte	12
127.LCPI0_6:
128	.byte	30
129	.byte	29
130	.byte	28
131	.byte	31
132	.byte	26
133	.byte	25
134	.byte	24
135	.byte	27
136	.byte	22
137	.byte	21
138	.byte	20
139	.byte	23
140	.byte	18
141	.byte	17
142	.byte	16
143	.byte	19
144.LCPI0_7:
145	.byte	19
146	.byte	18
147	.byte	17
148	.byte	16
149	.byte	11
150	.byte	10
151	.byte	9
152	.byte	8
153	.byte	3
154	.byte	2
155	.byte	1
156	.byte	0
157	.byte	27
158	.byte	26
159	.byte	25
160	.byte	24
161.LCPI0_8:
162	.byte	23
163	.byte	22
164	.byte	21
165	.byte	20
166	.byte	27
167	.byte	26
168	.byte	25
169	.byte	24
170	.byte	11
171	.byte	10
172	.byte	9
173	.byte	8
174	.byte	3
175	.byte	2
176	.byte	1
177	.byte	0
178.LCPI0_9:
179	.byte	31
180	.byte	31
181	.byte	31
182	.byte	31
183	.byte	23
184	.byte	22
185	.byte	21
186	.byte	20
187	.byte	31
188	.byte	31
189	.byte	31
190	.byte	31
191	.byte	3
192	.byte	2
193	.byte	1
194	.byte	0
195.LCPI0_10:
196	.byte	19
197	.byte	18
198	.byte	17
199	.byte	16
200	.byte	31
201	.byte	31
202	.byte	31
203	.byte	31
204	.byte	31
205	.byte	30
206	.byte	29
207	.byte	28
208	.byte	31
209	.byte	31
210	.byte	31
211	.byte	31
212.LCPI0_11:
213	.byte	31
214	.byte	30
215	.byte	29
216	.byte	28
217	.byte	11
218	.byte	10
219	.byte	9
220	.byte	8
221	.byte	23
222	.byte	22
223	.byte	21
224	.byte	20
225	.byte	3
226	.byte	2
227	.byte	1
228	.byte	0
229.LCPI0_12:
230	.byte	31
231	.byte	30
232	.byte	29
233	.byte	28
234	.byte	23
235	.byte	22
236	.byte	21
237	.byte	20
238	.byte	3
239	.byte	2
240	.byte	1
241	.byte	0
242	.byte	27
243	.byte	26
244	.byte	25
245	.byte	24
246.LCPI0_13:
247	.byte	27
248	.byte	26
249	.byte	25
250	.byte	24
251	.byte	11
252	.byte	10
253	.byte	9
254	.byte	8
255	.byte	15
256	.byte	14
257	.byte	13
258	.byte	12
259	.byte	31
260	.byte	30
261	.byte	29
262	.byte	28
263.LCPI0_14:
264	.byte	23
265	.byte	22
266	.byte	21
267	.byte	20
268	.byte	23
269	.byte	22
270	.byte	21
271	.byte	20
272	.byte	3
273	.byte	2
274	.byte	1
275	.byte	0
276	.byte	3
277	.byte	2
278	.byte	1
279	.byte	0
280	.text
281	.globl	zfs_blake3_compress_in_place_sse41
282	.p2align	2
283	.type	zfs_blake3_compress_in_place_sse41,@function
284zfs_blake3_compress_in_place_sse41:
285.Lfunc_begin0:
286	.cfi_startproc
287.Lfunc_gep0:
288	addis 2, 12, .TOC.-.Lfunc_gep0@ha
289	addi 2, 2, .TOC.-.Lfunc_gep0@l
290.Lfunc_lep0:
291	.localentry	zfs_blake3_compress_in_place_sse41, .Lfunc_lep0-.Lfunc_gep0
292	li 8, -64
293	mtvsrd 34, 5
294	li 5, 16
295	lfdx 0, 0, 4
296	vspltisw 13, -16
297	stxvd2x 60, 1, 8
298	li 8, -48
299	mtvsrd 35, 7
300	lfd 2, 16(4)
301	lfd 3, 24(4)
302	addis 7, 2, .LCPI0_0@toc@ha
303	stxvd2x 61, 1, 8
304	li 8, -32
305	mtvsrwz 36, 6
306	rldicl 6, 6, 32, 32
307	stxvd2x 62, 1, 8
308	li 8, -16
309	vmrghb 2, 3, 2
310	stxvd2x 63, 1, 8
311	mtvsrwz 35, 6
312	addi 6, 7, .LCPI0_0@toc@l
313	addis 7, 2, .LCPI0_2@toc@ha
314	lfd 1, 8(4)
315	xxmrghd	32, 3, 2
316	lvx 6, 0, 6
317	xxlxor 33, 33, 33
318	addis 6, 2, .LCPI0_1@toc@ha
319	addi 7, 7, .LCPI0_2@toc@l
320	vmrghw 3, 3, 4
321	addi 6, 6, .LCPI0_1@toc@l
322	vspltisw 14, 9
323	xxmrghd	37, 1, 0
324	lxvd2x 0, 0, 3
325	lxvd2x 1, 3, 5
326	vperm 2, 1, 2, 6
327	vpkudum 9, 0, 5
328	xxswapd	36, 0
329	xxswapd	38, 1
330	xxmrgld	34, 34, 35
331	lvx 3, 0, 7
332	addis 7, 2, .LCPI0_4@toc@ha
333	addi 7, 7, .LCPI0_4@toc@l
334	vadduwm 4, 9, 4
335	lvx 11, 0, 7
336	addis 7, 2, .LCPI0_6@toc@ha
337	addi 7, 7, .LCPI0_6@toc@l
338	vadduwm 7, 4, 6
339	lvx 4, 0, 6
340	addis 6, 2, .LCPI0_3@toc@ha
341	addi 6, 6, .LCPI0_3@toc@l
342	vperm 11, 0, 5, 11
343	lvx 0, 0, 7
344	li 7, 48
345	xxlxor 40, 39, 34
346	lvx 10, 0, 6
347	addis 6, 2, .LCPI0_5@toc@ha
348	lxvd2x 1, 4, 7
349	vcmpgtsb 2, 1, 4
350	addi 6, 6, .LCPI0_5@toc@l
351	vperm 4, 8, 8, 3
352	vspltisw 8, 10
353	xxlandc 44, 36, 34
354	vadduwm 4, 8, 8
355	vadduwm 8, 12, 10
356	xxlxor 37, 40, 38
357	vrlw 6, 5, 4
358	vadduwm 5, 7, 11
359	vadduwm 7, 6, 5
360	lvx 5, 0, 6
361	li 6, 32
362	lxvd2x 0, 4, 6
363	addis 4, 2, .LCPI0_7@toc@ha
364	addis 6, 2, .LCPI0_9@toc@ha
365	xxlxor 42, 39, 44
366	xxswapd	44, 1
367	addi 4, 4, .LCPI0_7@toc@l
368	addi 6, 6, .LCPI0_9@toc@l
369	vcmpgtsb 5, 1, 5
370	vperm 1, 10, 10, 0
371	xxswapd	42, 0
372	vpkudum 16, 12, 10
373	xxlandc 47, 33, 37
374	vsubuwm 1, 14, 13
375	lvx 14, 0, 4
376	addis 4, 2, .LCPI0_8@toc@ha
377	vadduwm 8, 15, 8
378	xxswapd	45, 47
379	addi 4, 4, .LCPI0_8@toc@l
380	vadduwm 7, 7, 16
381	xxsldwi 48, 48, 48, 1
382	xxlxor 38, 40, 38
383	xxsldwi 40, 40, 40, 3
384	xxsldwi 39, 39, 39, 1
385	vperm 14, 10, 12, 14
386	vrlw 6, 6, 1
387	vadduwm 7, 6, 7
388	xxlxor 45, 39, 45
389	vperm 13, 13, 13, 3
390	xxlandc 45, 45, 34
391	vadduwm 8, 13, 8
392	xxlxor 38, 40, 38
393	vrlw 10, 6, 4
394	vadduwm 6, 7, 14
395	vadduwm 7, 10, 6
396	xxlxor 38, 39, 45
397	vperm 12, 6, 6, 0
398	lvx 6, 0, 4
399	addis 4, 2, .LCPI0_10@toc@ha
400	addi 4, 4, .LCPI0_10@toc@l
401	vperm 13, 11, 9, 6
402	xxlandc 44, 44, 37
403	vadduwm 15, 12, 8
404	vadduwm 7, 7, 13
405	xxsldwi 45, 45, 45, 3
406	xxlxor 40, 47, 42
407	xxsldwi 47, 47, 47, 1
408	xxsldwi 39, 39, 39, 3
409	vrlw 10, 8, 1
410	xxswapd	40, 44
411	vadduwm 17, 10, 7
412	lvx 7, 0, 4
413	addis 4, 2, .LCPI0_11@toc@ha
414	addi 4, 4, .LCPI0_11@toc@l
415	xxlxor 44, 49, 40
416	lvx 8, 0, 6
417	vperm 18, 9, 9, 7
418	lvx 9, 0, 4
419	addis 4, 2, .LCPI0_12@toc@ha
420	vperm 12, 12, 12, 3
421	addi 4, 4, .LCPI0_12@toc@l
422	vperm 19, 14, 16, 8
423	xxlandc 63, 44, 34
424	vperm 12, 19, 18, 9
425	vadduwm 15, 31, 15
426	xxlxor 42, 47, 42
427	vrlw 18, 10, 4
428	vadduwm 10, 17, 12
429	vadduwm 17, 18, 10
430	xxlxor 42, 49, 63
431	xxmrgld	63, 43, 46
432	xxsldwi 49, 49, 49, 1
433	vmrghw 14, 14, 11
434	vperm 19, 10, 10, 0
435	lvx 10, 0, 4
436	addis 4, 2, .LCPI0_13@toc@ha
437	addi 4, 4, .LCPI0_13@toc@l
438	lvx 11, 0, 4
439	addis 4, 2, .LCPI0_14@toc@ha
440	vperm 31, 16, 31, 10
441	addi 4, 4, .LCPI0_14@toc@l
442	vperm 14, 14, 16, 11
443	xxlandc 51, 51, 37
444	vadduwm 15, 19, 15
445	xxswapd	51, 51
446	vadduwm 17, 17, 31
447	xxlxor 50, 47, 50
448	xxsldwi 47, 47, 47, 3
449	vperm 30, 14, 31, 8
450	vrlw 18, 18, 1
451	vadduwm 17, 18, 17
452	xxlxor 51, 49, 51
453	vadduwm 17, 17, 14
454	vperm 19, 19, 19, 3
455	xxlandc 51, 51, 34
456	vadduwm 15, 19, 15
457	xxlxor 48, 47, 50
458	vrlw 16, 16, 4
459	vadduwm 17, 16, 17
460	xxlxor 50, 49, 51
461	vperm 19, 12, 13, 6
462	vperm 18, 18, 18, 0
463	vperm 13, 13, 13, 7
464	vadduwm 17, 17, 19
465	xxlandc 50, 50, 37
466	xxsldwi 49, 49, 49, 3
467	vperm 13, 30, 13, 9
468	vadduwm 15, 18, 15
469	xxswapd	50, 50
470	xxmrgld	62, 44, 46
471	vmrghw 12, 14, 12
472	xxlxor 48, 47, 48
473	xxsldwi 47, 47, 47, 1
474	vrlw 16, 16, 1
475	vperm 30, 31, 30, 10
476	vperm 12, 12, 31, 11
477	vadduwm 17, 16, 17
478	xxlxor 50, 49, 50
479	vadduwm 17, 17, 13
480	vperm 18, 18, 18, 3
481	vperm 31, 12, 30, 8
482	xxlandc 50, 50, 34
483	vadduwm 15, 18, 15
484	xxlxor 48, 47, 48
485	vrlw 16, 16, 4
486	vadduwm 17, 16, 17
487	xxlxor 50, 49, 50
488	xxsldwi 49, 49, 49, 1
489	vperm 18, 18, 18, 0
490	vadduwm 17, 17, 30
491	xxlandc 50, 50, 37
492	vadduwm 15, 18, 15
493	xxswapd	50, 50
494	xxlxor 48, 47, 48
495	xxsldwi 46, 47, 47, 3
496	vrlw 16, 16, 1
497	vadduwm 17, 16, 17
498	xxlxor 50, 49, 50
499	vadduwm 17, 17, 12
500	vperm 18, 18, 18, 3
501	xxlandc 47, 50, 34
502	xxsldwi 50, 51, 51, 3
503	vadduwm 14, 15, 14
504	vperm 19, 13, 18, 6
505	xxlxor 48, 46, 48
506	vperm 18, 18, 18, 7
507	vrlw 16, 16, 4
508	vadduwm 17, 16, 17
509	xxlxor 47, 49, 47
510	vadduwm 17, 17, 19
511	vperm 15, 15, 15, 0
512	xxsldwi 49, 49, 49, 3
513	xxlandc 47, 47, 37
514	vadduwm 14, 15, 14
515	xxswapd	47, 47
516	xxlxor 48, 46, 48
517	xxsldwi 46, 46, 46, 1
518	vrlw 16, 16, 1
519	vadduwm 17, 16, 17
520	xxlxor 47, 49, 47
521	vperm 15, 15, 15, 3
522	xxlandc 47, 47, 34
523	vadduwm 29, 15, 14
524	vperm 14, 31, 18, 9
525	xxmrgld	50, 45, 44
526	xxlxor 48, 61, 48
527	vmrghw 12, 12, 13
528	vrlw 16, 16, 4
529	vperm 18, 30, 18, 10
530	vadduwm 17, 17, 14
531	vadduwm 17, 16, 17
532	xxlxor 47, 49, 47
533	xxsldwi 49, 49, 49, 1
534	vperm 15, 15, 15, 0
535	vadduwm 17, 17, 18
536	xxlandc 47, 47, 37
537	vadduwm 31, 15, 29
538	xxswapd	47, 47
539	xxlxor 48, 63, 48
540	xxsldwi 45, 63, 63, 3
541	vperm 31, 12, 30, 11
542	vrlw 16, 16, 1
543	vadduwm 17, 16, 17
544	xxlxor 47, 49, 47
545	vperm 15, 15, 15, 3
546	xxlandc 47, 47, 34
547	vadduwm 13, 15, 13
548	xxlxor 44, 45, 48
549	vadduwm 16, 17, 31
550	xxsldwi 49, 51, 51, 3
551	vrlw 12, 12, 4
552	vperm 19, 14, 17, 6
553	vadduwm 16, 12, 16
554	xxlxor 47, 48, 47
555	vperm 15, 15, 15, 0
556	xxlandc 47, 47, 37
557	vadduwm 13, 15, 13
558	xxswapd	47, 47
559	xxlxor 44, 45, 44
560	xxsldwi 45, 45, 45, 1
561	vrlw 30, 12, 1
562	vadduwm 12, 16, 19
563	xxsldwi 44, 44, 44, 3
564	vadduwm 16, 30, 12
565	xxlxor 44, 48, 47
566	vperm 15, 17, 17, 7
567	vperm 12, 12, 12, 3
568	vperm 17, 31, 18, 8
569	xxlandc 61, 44, 34
570	vperm 12, 17, 15, 9
571	vadduwm 13, 29, 13
572	xxlxor 47, 45, 62
573	xxmrgld	62, 46, 63
574	vmrghw 14, 31, 14
575	vrlw 15, 15, 4
576	vadduwm 16, 16, 12
577	vperm 30, 18, 30, 10
578	vperm 14, 14, 18, 11
579	xxsldwi 50, 51, 51, 3
580	vadduwm 16, 15, 16
581	xxlxor 49, 48, 61
582	xxsldwi 48, 48, 48, 1
583	vperm 19, 12, 18, 6
584	vperm 17, 17, 17, 0
585	vadduwm 16, 16, 30
586	xxmrgld	60, 44, 46
587	vmrghw 12, 14, 12
588	vperm 28, 30, 28, 10
589	xxlandc 49, 49, 37
590	vadduwm 13, 17, 13
591	xxswapd	49, 49
592	vperm 12, 12, 30, 11
593	xxlxor 47, 45, 47
594	xxsldwi 45, 45, 45, 3
595	vrlw 15, 15, 1
596	vperm 8, 12, 28, 8
597	vadduwm 16, 15, 16
598	xxlxor 49, 48, 49
599	vadduwm 16, 16, 14
600	vperm 17, 17, 17, 3
601	xxlandc 49, 49, 34
602	vadduwm 13, 17, 13
603	xxlxor 47, 45, 47
604	vrlw 15, 15, 4
605	vadduwm 16, 15, 16
606	xxlxor 49, 48, 49
607	vperm 17, 17, 17, 0
608	xxlandc 49, 49, 37
609	vadduwm 31, 17, 13
610	xxlxor 45, 63, 47
611	vrlw 15, 13, 1
612	vadduwm 13, 16, 19
613	xxswapd	48, 49
614	xxsldwi 51, 51, 51, 3
615	xxsldwi 45, 45, 45, 3
616	vadduwm 17, 15, 13
617	xxlxor 45, 49, 48
618	lvx 16, 0, 4
619	vperm 29, 13, 13, 3
620	vperm 13, 18, 18, 7
621	xxsldwi 50, 63, 63, 1
622	vperm 16, 14, 30, 16
623	vperm 7, 19, 19, 7
624	xxlandc 63, 61, 34
625	vadduwm 18, 31, 18
626	vperm 29, 16, 13, 9
627	xxlxor 47, 50, 47
628	vperm 6, 16, 19, 6
629	vrlw 15, 15, 4
630	vperm 7, 8, 7, 9
631	vadduwm 17, 17, 29
632	xxmrgld	41, 61, 44
633	vadduwm 17, 15, 17
634	vperm 9, 28, 9, 10
635	xxlxor 63, 49, 63
636	xxsldwi 49, 49, 49, 1
637	vperm 31, 31, 31, 0
638	vadduwm 17, 17, 28
639	xxlandc 63, 63, 37
640	vadduwm 18, 31, 18
641	xxswapd	63, 63
642	xxlxor 47, 50, 47
643	xxsldwi 46, 50, 50, 3
644	vrlw 15, 15, 1
645	vadduwm 17, 15, 17
646	xxlxor 63, 49, 63
647	vadduwm 17, 17, 12
648	vperm 31, 31, 31, 3
649	xxlandc 50, 63, 34
650	vadduwm 14, 18, 14
651	xxlxor 47, 46, 47
652	vrlw 15, 15, 4
653	vadduwm 17, 15, 17
654	xxlxor 50, 49, 50
655	vadduwm 6, 17, 6
656	vperm 18, 18, 18, 0
657	xxsldwi 38, 38, 38, 3
658	xxlandc 50, 50, 37
659	vadduwm 14, 18, 14
660	xxswapd	48, 50
661	xxlxor 47, 46, 47
662	xxsldwi 46, 46, 46, 1
663	vrlw 15, 15, 1
664	vadduwm 6, 15, 6
665	xxlxor 48, 38, 48
666	vadduwm 6, 6, 7
667	vperm 16, 16, 16, 3
668	xxlandc 48, 48, 34
669	vadduwm 14, 16, 14
670	xxlxor 40, 46, 47
671	vrlw 8, 8, 4
672	vadduwm 6, 8, 6
673	xxlxor 39, 38, 48
674	xxsldwi 38, 38, 38, 1
675	vperm 7, 7, 7, 0
676	vadduwm 6, 6, 9
677	xxlandc 39, 39, 37
678	vadduwm 14, 7, 14
679	xxswapd	39, 39
680	xxlxor 40, 46, 40
681	xxsldwi 41, 46, 46, 3
682	vrlw 8, 8, 1
683	vadduwm 6, 8, 6
684	xxlxor 39, 38, 39
685	vperm 3, 7, 7, 3
686	vmrghw 7, 12, 13
687	xxlandc 34, 35, 34
688	vperm 7, 7, 28, 11
689	vadduwm 3, 2, 9
690	xxlxor 40, 35, 40
691	vrlw 4, 8, 4
692	vadduwm 6, 6, 7
693	vadduwm 6, 4, 6
694	xxlxor 34, 38, 34
695	xxsldwi 0, 38, 38, 3
696	vperm 2, 2, 2, 0
697	xxlandc 34, 34, 37
698	vadduwm 3, 2, 3
699	xxswapd	34, 34
700	xxlxor 36, 35, 36
701	xxsldwi 1, 35, 35, 1
702	vrlw 4, 4, 1
703	xxlxor 0, 1, 0
704	xxswapd	0, 0
705	xxlxor 1, 36, 34
706	stxvd2x 0, 0, 3
707	xxswapd	1, 1
708	stxvd2x 1, 3, 5
709	li 3, -16
710	lxvd2x 63, 1, 3
711	li 3, -32
712	lxvd2x 62, 1, 3
713	li 3, -48
714	lxvd2x 61, 1, 3
715	li 3, -64
716	lxvd2x 60, 1, 3
717	blr
718	.long	0
719	.quad	0
720.Lfunc_end0:
721	.size	zfs_blake3_compress_in_place_sse41, .Lfunc_end0-.Lfunc_begin0
722	.cfi_endproc
723
724	.section	.rodata.cst16,"aM",@progbits,16
725	.p2align	4
726.LCPI1_0:
727	.byte	31
728	.byte	14
729	.byte	13
730	.byte	12
731	.byte	30
732	.byte	10
733	.byte	9
734	.byte	8
735	.byte	29
736	.byte	6
737	.byte	5
738	.byte	4
739	.byte	28
740	.byte	2
741	.byte	1
742	.byte	0
743.LCPI1_1:
744	.byte	2
745	.byte	3
746	.byte	0
747	.byte	1
748	.byte	6
749	.byte	7
750	.byte	4
751	.byte	5
752	.byte	10
753	.byte	11
754	.byte	8
755	.byte	9
756	.byte	14
757	.byte	15
758	.byte	12
759	.byte	13
760.LCPI1_2:
761	.byte	29
762	.byte	28
763	.byte	31
764	.byte	30
765	.byte	25
766	.byte	24
767	.byte	27
768	.byte	26
769	.byte	21
770	.byte	20
771	.byte	23
772	.byte	22
773	.byte	17
774	.byte	16
775	.byte	19
776	.byte	18
777.LCPI1_3:
778	.long	1779033703
779	.long	3144134277
780	.long	1013904242
781	.long	2773480762
782.LCPI1_4:
783	.byte	27
784	.byte	26
785	.byte	25
786	.byte	24
787	.byte	19
788	.byte	18
789	.byte	17
790	.byte	16
791	.byte	11
792	.byte	10
793	.byte	9
794	.byte	8
795	.byte	3
796	.byte	2
797	.byte	1
798	.byte	0
799.LCPI1_5:
800	.byte	1
801	.byte	2
802	.byte	3
803	.byte	0
804	.byte	5
805	.byte	6
806	.byte	7
807	.byte	4
808	.byte	9
809	.byte	10
810	.byte	11
811	.byte	8
812	.byte	13
813	.byte	14
814	.byte	15
815	.byte	12
816.LCPI1_6:
817	.byte	30
818	.byte	29
819	.byte	28
820	.byte	31
821	.byte	26
822	.byte	25
823	.byte	24
824	.byte	27
825	.byte	22
826	.byte	21
827	.byte	20
828	.byte	23
829	.byte	18
830	.byte	17
831	.byte	16
832	.byte	19
833.LCPI1_7:
834	.byte	19
835	.byte	18
836	.byte	17
837	.byte	16
838	.byte	11
839	.byte	10
840	.byte	9
841	.byte	8
842	.byte	3
843	.byte	2
844	.byte	1
845	.byte	0
846	.byte	27
847	.byte	26
848	.byte	25
849	.byte	24
850.LCPI1_8:
851	.byte	23
852	.byte	22
853	.byte	21
854	.byte	20
855	.byte	27
856	.byte	26
857	.byte	25
858	.byte	24
859	.byte	11
860	.byte	10
861	.byte	9
862	.byte	8
863	.byte	3
864	.byte	2
865	.byte	1
866	.byte	0
867.LCPI1_9:
868	.byte	31
869	.byte	31
870	.byte	31
871	.byte	31
872	.byte	23
873	.byte	22
874	.byte	21
875	.byte	20
876	.byte	31
877	.byte	31
878	.byte	31
879	.byte	31
880	.byte	3
881	.byte	2
882	.byte	1
883	.byte	0
884.LCPI1_10:
885	.byte	19
886	.byte	18
887	.byte	17
888	.byte	16
889	.byte	31
890	.byte	31
891	.byte	31
892	.byte	31
893	.byte	31
894	.byte	30
895	.byte	29
896	.byte	28
897	.byte	31
898	.byte	31
899	.byte	31
900	.byte	31
901.LCPI1_11:
902	.byte	31
903	.byte	30
904	.byte	29
905	.byte	28
906	.byte	11
907	.byte	10
908	.byte	9
909	.byte	8
910	.byte	23
911	.byte	22
912	.byte	21
913	.byte	20
914	.byte	3
915	.byte	2
916	.byte	1
917	.byte	0
918.LCPI1_12:
919	.byte	31
920	.byte	30
921	.byte	29
922	.byte	28
923	.byte	23
924	.byte	22
925	.byte	21
926	.byte	20
927	.byte	3
928	.byte	2
929	.byte	1
930	.byte	0
931	.byte	27
932	.byte	26
933	.byte	25
934	.byte	24
935.LCPI1_13:
936	.byte	27
937	.byte	26
938	.byte	25
939	.byte	24
940	.byte	11
941	.byte	10
942	.byte	9
943	.byte	8
944	.byte	15
945	.byte	14
946	.byte	13
947	.byte	12
948	.byte	31
949	.byte	30
950	.byte	29
951	.byte	28
952.LCPI1_14:
953	.byte	23
954	.byte	22
955	.byte	21
956	.byte	20
957	.byte	23
958	.byte	22
959	.byte	21
960	.byte	20
961	.byte	3
962	.byte	2
963	.byte	1
964	.byte	0
965	.byte	3
966	.byte	2
967	.byte	1
968	.byte	0
969	.text
970	.globl	zfs_blake3_compress_xof_sse41
971	.p2align	2
972	.type	zfs_blake3_compress_xof_sse41,@function
973zfs_blake3_compress_xof_sse41:
974.Lfunc_begin1:
975	.cfi_startproc
976.Lfunc_gep1:
977	addis 2, 12, .TOC.-.Lfunc_gep1@ha
978	addi 2, 2, .TOC.-.Lfunc_gep1@l
979.Lfunc_lep1:
980	.localentry	zfs_blake3_compress_xof_sse41, .Lfunc_lep1-.Lfunc_gep1
981	li 9, -64
982	mtvsrd 34, 5
983	li 5, 16
984	lfdx 0, 0, 4
985	vspltisw 13, -16
986	addis 11, 2, .LCPI1_9@toc@ha
987	stxvd2x 60, 1, 9
988	li 9, -48
989	mtvsrd 35, 7
990	lfd 1, 8(4)
991	lfd 2, 16(4)
992	addis 7, 2, .LCPI1_0@toc@ha
993	stxvd2x 61, 1, 9
994	li 9, -32
995	mtvsrwz 36, 6
996	rldicl 6, 6, 32, 32
997	stxvd2x 62, 1, 9
998	li 9, -16
999	vmrghb 2, 3, 2
1000	stxvd2x 63, 1, 9
1001	mtvsrwz 35, 6
1002	addi 6, 7, .LCPI1_0@toc@l
1003	addis 7, 2, .LCPI1_2@toc@ha
1004	lfd 3, 24(4)
1005	xxmrghd	37, 1, 0
1006	lvx 6, 0, 6
1007	xxlxor 33, 33, 33
1008	lxvd2x 0, 0, 3
1009	addis 6, 2, .LCPI1_1@toc@ha
1010	addi 7, 7, .LCPI1_2@toc@l
1011	vmrghw 3, 3, 4
1012	lxvd2x 1, 3, 5
1013	addi 6, 6, .LCPI1_1@toc@l
1014	vspltisw 14, 9
1015	xxmrghd	32, 3, 2
1016	xxswapd	36, 0
1017	vperm 2, 1, 2, 6
1018	xxswapd	38, 1
1019	vpkudum 9, 0, 5
1020	xxmrgld	34, 34, 35
1021	lvx 3, 0, 7
1022	addis 7, 2, .LCPI1_4@toc@ha
1023	addi 7, 7, .LCPI1_4@toc@l
1024	vadduwm 4, 9, 4
1025	lvx 11, 0, 7
1026	addis 7, 2, .LCPI1_6@toc@ha
1027	addi 7, 7, .LCPI1_6@toc@l
1028	vadduwm 7, 4, 6
1029	lvx 4, 0, 6
1030	addis 6, 2, .LCPI1_3@toc@ha
1031	addi 6, 6, .LCPI1_3@toc@l
1032	vperm 11, 0, 5, 11
1033	lvx 0, 0, 7
1034	li 7, 32
1035	xxlxor 40, 39, 34
1036	lvx 10, 0, 6
1037	addis 6, 2, .LCPI1_5@toc@ha
1038	lxvd2x 0, 4, 7
1039	vcmpgtsb 2, 1, 4
1040	addi 6, 6, .LCPI1_5@toc@l
1041	vperm 4, 8, 8, 3
1042	vspltisw 8, 10
1043	xxlandc 44, 36, 34
1044	vadduwm 4, 8, 8
1045	vadduwm 8, 12, 10
1046	xxlxor 37, 40, 38
1047	vrlw 6, 5, 4
1048	vadduwm 5, 7, 11
1049	vadduwm 7, 6, 5
1050	lvx 5, 0, 6
1051	li 6, 48
1052	lxvd2x 1, 4, 6
1053	addis 4, 2, .LCPI1_7@toc@ha
1054	xxlxor 42, 39, 44
1055	addi 4, 4, .LCPI1_7@toc@l
1056	vcmpgtsb 5, 1, 5
1057	vperm 1, 10, 10, 0
1058	xxswapd	42, 0
1059	xxswapd	44, 1
1060	vpkudum 16, 12, 10
1061	xxlandc 47, 33, 37
1062	vsubuwm 1, 14, 13
1063	lvx 14, 0, 4
1064	addis 4, 2, .LCPI1_8@toc@ha
1065	vadduwm 8, 15, 8
1066	xxswapd	45, 47
1067	addi 4, 4, .LCPI1_8@toc@l
1068	xxlxor 38, 40, 38
1069	xxsldwi 40, 40, 40, 3
1070	vadduwm 7, 7, 16
1071	xxsldwi 48, 48, 48, 1
1072	vrlw 6, 6, 1
1073	xxsldwi 39, 39, 39, 1
1074	vperm 14, 10, 12, 14
1075	vadduwm 7, 6, 7
1076	xxlxor 45, 39, 45
1077	vperm 13, 13, 13, 3
1078	xxlandc 45, 45, 34
1079	vadduwm 8, 13, 8
1080	xxlxor 38, 40, 38
1081	vrlw 10, 6, 4
1082	vadduwm 6, 7, 14
1083	vadduwm 7, 10, 6
1084	xxlxor 38, 39, 45
1085	vperm 12, 6, 6, 0
1086	lvx 6, 0, 4
1087	addis 4, 2, .LCPI1_10@toc@ha
1088	addi 4, 4, .LCPI1_10@toc@l
1089	vperm 13, 11, 9, 6
1090	xxlandc 44, 44, 37
1091	vadduwm 15, 12, 8
1092	vadduwm 7, 7, 13
1093	xxsldwi 45, 45, 45, 3
1094	xxlxor 40, 47, 42
1095	xxsldwi 47, 47, 47, 1
1096	xxsldwi 39, 39, 39, 3
1097	vrlw 10, 8, 1
1098	xxswapd	40, 44
1099	vadduwm 17, 10, 7
1100	lvx 7, 0, 4
1101	addi 4, 11, .LCPI1_9@toc@l
1102	xxlxor 44, 49, 40
1103	lvx 8, 0, 4
1104	addis 4, 2, .LCPI1_11@toc@ha
1105	vperm 18, 9, 9, 7
1106	addi 4, 4, .LCPI1_11@toc@l
1107	vperm 12, 12, 12, 3
1108	lvx 9, 0, 4
1109	addis 4, 2, .LCPI1_12@toc@ha
1110	vperm 19, 14, 16, 8
1111	addi 4, 4, .LCPI1_12@toc@l
1112	xxlandc 63, 44, 34
1113	vperm 12, 19, 18, 9
1114	vadduwm 15, 31, 15
1115	xxlxor 42, 47, 42
1116	vrlw 18, 10, 4
1117	vadduwm 10, 17, 12
1118	vadduwm 17, 18, 10
1119	xxlxor 42, 49, 63
1120	xxmrgld	63, 43, 46
1121	xxsldwi 49, 49, 49, 1
1122	vmrghw 14, 14, 11
1123	vperm 19, 10, 10, 0
1124	lvx 10, 0, 4
1125	addis 4, 2, .LCPI1_13@toc@ha
1126	addi 4, 4, .LCPI1_13@toc@l
1127	lvx 11, 0, 4
1128	addis 4, 2, .LCPI1_14@toc@ha
1129	vperm 31, 16, 31, 10
1130	addi 4, 4, .LCPI1_14@toc@l
1131	vperm 14, 14, 16, 11
1132	xxlandc 51, 51, 37
1133	vadduwm 15, 19, 15
1134	xxswapd	51, 51
1135	vadduwm 17, 17, 31
1136	xxlxor 50, 47, 50
1137	xxsldwi 47, 47, 47, 3
1138	vperm 30, 14, 31, 8
1139	vrlw 18, 18, 1
1140	vadduwm 17, 18, 17
1141	xxlxor 51, 49, 51
1142	vadduwm 17, 17, 14
1143	vperm 19, 19, 19, 3
1144	xxlandc 51, 51, 34
1145	vadduwm 15, 19, 15
1146	xxlxor 48, 47, 50
1147	vrlw 16, 16, 4
1148	vadduwm 17, 16, 17
1149	xxlxor 50, 49, 51
1150	vperm 19, 12, 13, 6
1151	vperm 18, 18, 18, 0
1152	vperm 13, 13, 13, 7
1153	vadduwm 17, 17, 19
1154	xxlandc 50, 50, 37
1155	xxsldwi 49, 49, 49, 3
1156	vperm 13, 30, 13, 9
1157	vadduwm 15, 18, 15
1158	xxswapd	50, 50
1159	xxmrgld	62, 44, 46
1160	vmrghw 12, 14, 12
1161	xxlxor 48, 47, 48
1162	xxsldwi 47, 47, 47, 1
1163	vrlw 16, 16, 1
1164	vperm 30, 31, 30, 10
1165	vperm 12, 12, 31, 11
1166	vadduwm 17, 16, 17
1167	xxlxor 50, 49, 50
1168	vadduwm 17, 17, 13
1169	vperm 18, 18, 18, 3
1170	vperm 31, 12, 30, 8
1171	xxlandc 50, 50, 34
1172	vadduwm 15, 18, 15
1173	xxlxor 48, 47, 48
1174	vrlw 16, 16, 4
1175	vadduwm 17, 16, 17
1176	xxlxor 50, 49, 50
1177	xxsldwi 49, 49, 49, 1
1178	vperm 18, 18, 18, 0
1179	vadduwm 17, 17, 30
1180	xxlandc 50, 50, 37
1181	vadduwm 15, 18, 15
1182	xxswapd	50, 50
1183	xxlxor 48, 47, 48
1184	xxsldwi 46, 47, 47, 3
1185	vrlw 16, 16, 1
1186	vadduwm 17, 16, 17
1187	xxlxor 50, 49, 50
1188	vadduwm 17, 17, 12
1189	vperm 18, 18, 18, 3
1190	xxlandc 47, 50, 34
1191	xxsldwi 50, 51, 51, 3
1192	vadduwm 14, 15, 14
1193	vperm 19, 13, 18, 6
1194	xxlxor 48, 46, 48
1195	vperm 18, 18, 18, 7
1196	vrlw 16, 16, 4
1197	vadduwm 17, 16, 17
1198	xxlxor 47, 49, 47
1199	vadduwm 17, 17, 19
1200	vperm 15, 15, 15, 0
1201	xxsldwi 49, 49, 49, 3
1202	xxlandc 47, 47, 37
1203	vadduwm 14, 15, 14
1204	xxswapd	47, 47
1205	xxlxor 48, 46, 48
1206	xxsldwi 46, 46, 46, 1
1207	vrlw 16, 16, 1
1208	vadduwm 17, 16, 17
1209	xxlxor 47, 49, 47
1210	vperm 15, 15, 15, 3
1211	xxlandc 47, 47, 34
1212	vadduwm 29, 15, 14
1213	vperm 14, 31, 18, 9
1214	xxmrgld	50, 45, 44
1215	xxlxor 48, 61, 48
1216	vmrghw 12, 12, 13
1217	vrlw 16, 16, 4
1218	vperm 18, 30, 18, 10
1219	vadduwm 17, 17, 14
1220	vadduwm 17, 16, 17
1221	xxlxor 47, 49, 47
1222	xxsldwi 49, 49, 49, 1
1223	vperm 15, 15, 15, 0
1224	vadduwm 17, 17, 18
1225	xxlandc 47, 47, 37
1226	vadduwm 31, 15, 29
1227	xxswapd	47, 47
1228	xxlxor 48, 63, 48
1229	xxsldwi 45, 63, 63, 3
1230	vperm 31, 12, 30, 11
1231	vrlw 16, 16, 1
1232	vadduwm 17, 16, 17
1233	xxlxor 47, 49, 47
1234	vperm 15, 15, 15, 3
1235	xxlandc 47, 47, 34
1236	vadduwm 13, 15, 13
1237	xxlxor 44, 45, 48
1238	vadduwm 16, 17, 31
1239	xxsldwi 49, 51, 51, 3
1240	vrlw 12, 12, 4
1241	vperm 19, 14, 17, 6
1242	vadduwm 16, 12, 16
1243	xxlxor 47, 48, 47
1244	vperm 15, 15, 15, 0
1245	xxlandc 47, 47, 37
1246	vadduwm 13, 15, 13
1247	xxswapd	47, 47
1248	xxlxor 44, 45, 44
1249	xxsldwi 45, 45, 45, 1
1250	vrlw 30, 12, 1
1251	vadduwm 12, 16, 19
1252	xxsldwi 44, 44, 44, 3
1253	vadduwm 16, 30, 12
1254	xxlxor 44, 48, 47
1255	vperm 15, 17, 17, 7
1256	vperm 12, 12, 12, 3
1257	vperm 17, 31, 18, 8
1258	xxlandc 61, 44, 34
1259	vperm 12, 17, 15, 9
1260	vadduwm 13, 29, 13
1261	xxlxor 47, 45, 62
1262	xxmrgld	62, 46, 63
1263	vmrghw 14, 31, 14
1264	vrlw 15, 15, 4
1265	vadduwm 16, 16, 12
1266	vperm 30, 18, 30, 10
1267	vperm 14, 14, 18, 11
1268	xxsldwi 50, 51, 51, 3
1269	vadduwm 16, 15, 16
1270	xxlxor 49, 48, 61
1271	xxsldwi 48, 48, 48, 1
1272	vperm 19, 12, 18, 6
1273	vperm 17, 17, 17, 0
1274	vadduwm 16, 16, 30
1275	xxmrgld	60, 44, 46
1276	vmrghw 12, 14, 12
1277	vperm 28, 30, 28, 10
1278	xxlandc 49, 49, 37
1279	vadduwm 13, 17, 13
1280	xxswapd	49, 49
1281	vperm 12, 12, 30, 11
1282	xxlxor 47, 45, 47
1283	xxsldwi 45, 45, 45, 3
1284	vrlw 15, 15, 1
1285	vperm 8, 12, 28, 8
1286	vadduwm 16, 15, 16
1287	xxlxor 49, 48, 49
1288	vadduwm 16, 16, 14
1289	vperm 17, 17, 17, 3
1290	xxlandc 49, 49, 34
1291	vadduwm 13, 17, 13
1292	xxlxor 47, 45, 47
1293	vrlw 15, 15, 4
1294	vadduwm 16, 15, 16
1295	xxlxor 49, 48, 49
1296	vperm 17, 17, 17, 0
1297	xxlandc 49, 49, 37
1298	vadduwm 31, 17, 13
1299	xxlxor 45, 63, 47
1300	vrlw 15, 13, 1
1301	vadduwm 13, 16, 19
1302	xxswapd	48, 49
1303	xxsldwi 51, 51, 51, 3
1304	xxsldwi 45, 45, 45, 3
1305	vadduwm 17, 15, 13
1306	xxlxor 45, 49, 48
1307	lvx 16, 0, 4
1308	vperm 29, 13, 13, 3
1309	vperm 13, 18, 18, 7
1310	xxsldwi 50, 63, 63, 1
1311	vperm 16, 14, 30, 16
1312	vperm 7, 19, 19, 7
1313	xxlandc 63, 61, 34
1314	vadduwm 18, 31, 18
1315	vperm 29, 16, 13, 9
1316	xxlxor 47, 50, 47
1317	vperm 6, 16, 19, 6
1318	vrlw 15, 15, 4
1319	vperm 7, 8, 7, 9
1320	vadduwm 17, 17, 29
1321	xxmrgld	41, 61, 44
1322	vadduwm 17, 15, 17
1323	vperm 9, 28, 9, 10
1324	xxlxor 63, 49, 63
1325	xxsldwi 49, 49, 49, 1
1326	vperm 31, 31, 31, 0
1327	vadduwm 17, 17, 28
1328	xxlandc 63, 63, 37
1329	vadduwm 18, 31, 18
1330	xxswapd	63, 63
1331	xxlxor 47, 50, 47
1332	xxsldwi 46, 50, 50, 3
1333	vrlw 15, 15, 1
1334	vadduwm 17, 15, 17
1335	xxlxor 63, 49, 63
1336	vadduwm 17, 17, 12
1337	vperm 31, 31, 31, 3
1338	xxlandc 50, 63, 34
1339	vadduwm 14, 18, 14
1340	xxlxor 47, 46, 47
1341	vrlw 15, 15, 4
1342	vadduwm 17, 15, 17
1343	xxlxor 50, 49, 50
1344	vadduwm 6, 17, 6
1345	vperm 18, 18, 18, 0
1346	xxsldwi 38, 38, 38, 3
1347	xxlandc 50, 50, 37
1348	vadduwm 14, 18, 14
1349	xxswapd	48, 50
1350	xxlxor 47, 46, 47
1351	xxsldwi 46, 46, 46, 1
1352	vrlw 15, 15, 1
1353	vadduwm 6, 15, 6
1354	xxlxor 48, 38, 48
1355	vadduwm 6, 6, 7
1356	vperm 16, 16, 16, 3
1357	xxlandc 48, 48, 34
1358	vadduwm 14, 16, 14
1359	xxlxor 40, 46, 47
1360	vrlw 8, 8, 4
1361	vadduwm 6, 8, 6
1362	xxlxor 39, 38, 48
1363	xxsldwi 38, 38, 38, 1
1364	vperm 7, 7, 7, 0
1365	vadduwm 6, 6, 9
1366	xxlandc 39, 39, 37
1367	vadduwm 14, 7, 14
1368	xxswapd	39, 39
1369	xxlxor 40, 46, 40
1370	xxsldwi 41, 46, 46, 3
1371	vrlw 8, 8, 1
1372	vadduwm 6, 8, 6
1373	xxlxor 39, 38, 39
1374	vperm 3, 7, 7, 3
1375	vmrghw 7, 12, 13
1376	xxlandc 34, 35, 34
1377	vperm 7, 7, 28, 11
1378	vadduwm 3, 2, 9
1379	xxlxor 40, 35, 40
1380	vrlw 4, 8, 4
1381	vadduwm 6, 6, 7
1382	vadduwm 6, 4, 6
1383	xxlxor 34, 38, 34
1384	xxsldwi 0, 38, 38, 3
1385	vperm 2, 2, 2, 0
1386	xxlandc 34, 34, 37
1387	vadduwm 3, 2, 3
1388	xxswapd	34, 34
1389	xxlxor 36, 35, 36
1390	xxsldwi 1, 35, 35, 1
1391	vrlw 4, 4, 1
1392	xxlxor 0, 1, 0
1393	xxswapd	0, 0
1394	xxlxor 2, 36, 34
1395	stxvd2x 0, 0, 8
1396	xxswapd	2, 2
1397	stxvd2x 2, 8, 5
1398	lfdx 0, 0, 3
1399	lfd 2, 8(3)
1400	xxmrghd	35, 2, 0
1401	xxlxor 0, 1, 35
1402	xxswapd	0, 0
1403	stxvd2x 0, 8, 7
1404	lfd 0, 16(3)
1405	lfd 1, 24(3)
1406	li 3, -16
1407	xxmrghd	35, 1, 0
1408	xxlxor 0, 34, 35
1409	xxswapd	0, 0
1410	stxvd2x 0, 8, 6
1411	lxvd2x 63, 1, 3
1412	li 3, -32
1413	lxvd2x 62, 1, 3
1414	li 3, -48
1415	lxvd2x 61, 1, 3
1416	li 3, -64
1417	lxvd2x 60, 1, 3
1418	blr
1419	.long	0
1420	.quad	0
1421.Lfunc_end1:
1422	.size	zfs_blake3_compress_xof_sse41, .Lfunc_end1-.Lfunc_begin1
1423	.cfi_endproc
1424
1425	.globl	zfs_blake3_hash_many_sse41
1426	.p2align	2
1427	.type	zfs_blake3_hash_many_sse41,@function
1428zfs_blake3_hash_many_sse41:
1429.Lfunc_begin2:
1430	.cfi_startproc
1431.Lfunc_gep2:
1432	addis 2, 12, .TOC.-.Lfunc_gep2@ha
1433	addi 2, 2, .TOC.-.Lfunc_gep2@l
1434.Lfunc_lep2:
1435	.localentry	zfs_blake3_hash_many_sse41, .Lfunc_lep2-.Lfunc_gep2
1436	mfocrf 12, 32
1437	mflr 0
1438	std 0, 16(1)
1439	stw 12, 8(1)
1440	stdu 1, -256(1)
1441	.cfi_def_cfa_offset 256
1442	.cfi_offset lr, 16
1443	.cfi_offset r17, -120
1444	.cfi_offset r18, -112
1445	.cfi_offset r19, -104
1446	.cfi_offset r20, -96
1447	.cfi_offset r21, -88
1448	.cfi_offset r22, -80
1449	.cfi_offset r23, -72
1450	.cfi_offset r24, -64
1451	.cfi_offset r25, -56
1452	.cfi_offset r26, -48
1453	.cfi_offset r27, -40
1454	.cfi_offset r28, -32
1455	.cfi_offset r29, -24
1456	.cfi_offset r30, -16
1457	.cfi_offset cr2, 8
1458	std 26, 208(1)
1459	mr	26, 4
1460	cmpldi 1, 4, 4
1461	andi. 4, 8, 1
1462	std 18, 144(1)
1463	std 19, 152(1)
1464	crmove	8, 1
1465	ld 19, 360(1)
1466	lwz 18, 352(1)
1467	std 24, 192(1)
1468	std 25, 200(1)
1469	std 27, 216(1)
1470	std 28, 224(1)
1471	mr	24, 10
1472	mr	28, 6
1473	mr	27, 5
1474	mr	25, 3
1475	std 29, 232(1)
1476	std 30, 240(1)
1477	mr	30, 9
1478	mr	29, 7
1479	std 17, 136(1)
1480	std 20, 160(1)
1481	std 21, 168(1)
1482	std 22, 176(1)
1483	std 23, 184(1)
1484	blt	1, .LBB2_3
1485	li 3, 0
1486	li 4, 1
1487	clrldi	23, 30, 32
1488	isel 22, 4, 3, 8
1489	clrldi	21, 24, 32
1490	clrldi	20, 18, 32
1491.LBB2_2:
1492	mr	3, 25
1493	mr	4, 27
1494	mr	5, 28
1495	mr	6, 29
1496	mr	7, 22
1497	mr	8, 23
1498	mr	9, 21
1499	mr	10, 20
1500	std 19, 32(1)
1501	bl blake3_hash4_sse41
1502	addi 26, 26, -4
1503	addi 3, 29, 4
1504	addi 25, 25, 32
1505	addi 19, 19, 128
1506	cmpldi	26, 3
1507	isel 29, 3, 29, 8
1508	bgt	0, .LBB2_2
1509.LBB2_3:
1510	cmpldi	26, 0
1511	beq	0, .LBB2_11
1512	li 3, 0
1513	li 4, 1
1514	or 21, 24, 30
1515	li 20, 16
1516	addi 24, 1, 96
1517	isel 22, 4, 3, 8
1518.LBB2_5:
1519	lxvd2x 0, 28, 20
1520	ld 23, 0(25)
1521	mr	17, 27
1522	mr	3, 21
1523	stxvd2x 0, 24, 20
1524	lxvd2x 0, 0, 28
1525	stxvd2x 0, 0, 24
1526.LBB2_6:
1527	cmpldi	17, 1
1528	beq	0, .LBB2_8
1529	cmpldi	17, 0
1530	bne	0, .LBB2_9
1531	b .LBB2_10
1532.LBB2_8:
1533	or 3, 3, 18
1534.LBB2_9:
1535	clrldi	7, 3, 56
1536	mr	3, 24
1537	mr	4, 23
1538	li 5, 64
1539	mr	6, 29
1540	bl zfs_blake3_compress_in_place_sse41
1541	addi 23, 23, 64
1542	addi 17, 17, -1
1543	mr	3, 30
1544	b .LBB2_6
1545.LBB2_10:
1546	lxvd2x 0, 24, 20
1547	addi 26, 26, -1
1548	add 29, 29, 22
1549	addi 25, 25, 8
1550	cmpldi	26, 0
1551	stxvd2x 0, 19, 20
1552	lxvd2x 0, 0, 24
1553	stxvd2x 0, 0, 19
1554	addi 19, 19, 32
1555	bne	0, .LBB2_5
1556.LBB2_11:
1557	ld 30, 240(1)
1558	ld 29, 232(1)
1559	ld 28, 224(1)
1560	ld 27, 216(1)
1561	ld 26, 208(1)
1562	ld 25, 200(1)
1563	ld 24, 192(1)
1564	ld 23, 184(1)
1565	ld 22, 176(1)
1566	ld 21, 168(1)
1567	ld 20, 160(1)
1568	ld 19, 152(1)
1569	ld 18, 144(1)
1570	ld 17, 136(1)
1571	addi 1, 1, 256
1572	ld 0, 16(1)
1573	lwz 12, 8(1)
1574	mtocrf 32, 12
1575	mtlr 0
1576	blr
1577	.long	0
1578	.quad	0
1579.Lfunc_end2:
1580	.size	zfs_blake3_hash_many_sse41, .Lfunc_end2-.Lfunc_begin2
1581	.cfi_endproc
1582
1583	.section	.rodata.cst16,"aM",@progbits,16
1584	.p2align	4
1585.LCPI3_0:
1586	.quad	4294967296
1587	.quad	12884901890
1588.LCPI3_1:
1589	.byte	2
1590	.byte	3
1591	.byte	0
1592	.byte	1
1593	.byte	6
1594	.byte	7
1595	.byte	4
1596	.byte	5
1597	.byte	10
1598	.byte	11
1599	.byte	8
1600	.byte	9
1601	.byte	14
1602	.byte	15
1603	.byte	12
1604	.byte	13
1605.LCPI3_2:
1606	.byte	1
1607	.byte	2
1608	.byte	3
1609	.byte	0
1610	.byte	5
1611	.byte	6
1612	.byte	7
1613	.byte	4
1614	.byte	9
1615	.byte	10
1616	.byte	11
1617	.byte	8
1618	.byte	13
1619	.byte	14
1620	.byte	15
1621	.byte	12
1622.LCPI3_3:
1623	.byte	29
1624	.byte	28
1625	.byte	31
1626	.byte	30
1627	.byte	25
1628	.byte	24
1629	.byte	27
1630	.byte	26
1631	.byte	21
1632	.byte	20
1633	.byte	23
1634	.byte	22
1635	.byte	17
1636	.byte	16
1637	.byte	19
1638	.byte	18
1639.LCPI3_4:
1640	.long	1779033703
1641	.long	1779033703
1642	.long	1779033703
1643	.long	1779033703
1644.LCPI3_5:
1645	.long	3144134277
1646	.long	3144134277
1647	.long	3144134277
1648	.long	3144134277
1649.LCPI3_6:
1650	.long	1013904242
1651	.long	1013904242
1652	.long	1013904242
1653	.long	1013904242
1654.LCPI3_7:
1655	.long	2773480762
1656	.long	2773480762
1657	.long	2773480762
1658	.long	2773480762
1659.LCPI3_8:
1660	.byte	30
1661	.byte	29
1662	.byte	28
1663	.byte	31
1664	.byte	26
1665	.byte	25
1666	.byte	24
1667	.byte	27
1668	.byte	22
1669	.byte	21
1670	.byte	20
1671	.byte	23
1672	.byte	18
1673	.byte	17
1674	.byte	16
1675	.byte	19
1676	.text
1677	.p2align	2
1678	.type	blake3_hash4_sse41,@function
1679blake3_hash4_sse41:
1680.Lfunc_begin3:
1681	.cfi_startproc
1682.Lfunc_gep3:
1683	addis 2, 12, .TOC.-.Lfunc_gep3@ha
1684	addi 2, 2, .TOC.-.Lfunc_gep3@l
1685.Lfunc_lep3:
1686	.localentry	blake3_hash4_sse41, .Lfunc_lep3-.Lfunc_gep3
1687	stdu 1, -416(1)
1688	.cfi_def_cfa_offset 416
1689	.cfi_offset r22, -176
1690	.cfi_offset r23, -168
1691	.cfi_offset r24, -160
1692	.cfi_offset r25, -152
1693	.cfi_offset r26, -144
1694	.cfi_offset r27, -136
1695	.cfi_offset r28, -128
1696	.cfi_offset r29, -120
1697	.cfi_offset r30, -112
1698	.cfi_offset f20, -96
1699	.cfi_offset f21, -88
1700	.cfi_offset f22, -80
1701	.cfi_offset f23, -72
1702	.cfi_offset f24, -64
1703	.cfi_offset f25, -56
1704	.cfi_offset f26, -48
1705	.cfi_offset f27, -40
1706	.cfi_offset f28, -32
1707	.cfi_offset f29, -24
1708	.cfi_offset f30, -16
1709	.cfi_offset f31, -8
1710	.cfi_offset v20, -368
1711	.cfi_offset v21, -352
1712	.cfi_offset v22, -336
1713	.cfi_offset v23, -320
1714	.cfi_offset v24, -304
1715	.cfi_offset v25, -288
1716	.cfi_offset v26, -272
1717	.cfi_offset v27, -256
1718	.cfi_offset v28, -240
1719	.cfi_offset v29, -224
1720	.cfi_offset v30, -208
1721	.cfi_offset v31, -192
1722	li 11, 48
1723	li 0, 8
1724	std 30, 304(1)
1725	li 30, 12
1726	li 12, 4
1727	lfiwzx 0, 0, 5
1728	stxvd2x 52, 1, 11
1729	li 11, 64
1730	lfiwzx 2, 5, 0
1731	li 0, 20
1732	lfiwzx 3, 5, 30
1733	stxvd2x 53, 1, 11
1734	li 11, 80
1735	li 30, 24
1736	lfiwzx 4, 5, 0
1737	li 0, 28
1738	stxvd2x 54, 1, 11
1739	li 11, 96
1740	lfiwzx 1, 5, 12
1741	lfiwzx 6, 5, 30
1742	xxspltw 47, 0, 1
1743	cmpldi	4, 0
1744	std 22, 240(1)
1745	stxvd2x 55, 1, 11
1746	li 11, 112
1747	lfiwzx 7, 5, 0
1748	xxspltw 40, 2, 1
1749	std 23, 248(1)
1750	xxspltw 39, 3, 1
1751	std 24, 256(1)
1752	std 25, 264(1)
1753	xxspltw 51, 1, 1
1754	xxspltw 43, 6, 1
1755	std 26, 272(1)
1756	xxspltw 41, 7, 1
1757	std 27, 280(1)
1758	std 28, 288(1)
1759	std 29, 296(1)
1760	stxvd2x 56, 1, 11
1761	li 11, 128
1762	stfd 20, 320(1)
1763	stxvd2x 57, 1, 11
1764	li 11, 144
1765	stfd 21, 328(1)
1766	stxvd2x 58, 1, 11
1767	li 11, 160
1768	stfd 22, 336(1)
1769	stxvd2x 59, 1, 11
1770	li 11, 176
1771	stfd 23, 344(1)
1772	stxvd2x 60, 1, 11
1773	li 11, 192
1774	stfd 24, 352(1)
1775	stxvd2x 61, 1, 11
1776	li 11, 208
1777	stfd 25, 360(1)
1778	stxvd2x 62, 1, 11
1779	li 11, 224
1780	stfd 26, 368(1)
1781	stxvd2x 63, 1, 11
1782	li 11, 16
1783	xxspltw 63, 4, 1
1784	lfiwzx 5, 5, 11
1785	ld 5, 448(1)
1786	stfd 27, 376(1)
1787	stfd 28, 384(1)
1788	stfd 29, 392(1)
1789	stfd 30, 400(1)
1790	stfd 31, 408(1)
1791	xxspltw 50, 5, 1
1792	beq	0, .LBB3_5
1793	addis 30, 2, .LCPI3_0@toc@ha
1794	neg 7, 7
1795	xxleqv 34, 34, 34
1796	addis 28, 2, .LCPI3_5@toc@ha
1797	addis 27, 2, .LCPI3_6@toc@ha
1798	addis 26, 2, .LCPI3_7@toc@ha
1799	addis 29, 2, .LCPI3_4@toc@ha
1800	addis 25, 2, .LCPI3_8@toc@ha
1801	addi 0, 30, .LCPI3_0@toc@l
1802	mtfprwz	2, 7
1803	addis 7, 2, .LCPI3_1@toc@ha
1804	addis 30, 2, .LCPI3_3@toc@ha
1805	addi 24, 29, .LCPI3_4@toc@l
1806	ld 29, 24(3)
1807	lxvd2x 1, 0, 0
1808	mtfprwz	0, 6
1809	rldicl 6, 6, 32, 32
1810	addi 0, 30, .LCPI3_3@toc@l
1811	ld 30, 16(3)
1812	xxspltw 2, 2, 1
1813	vslw 2, 2, 2
1814	xxspltw 37, 0, 1
1815	mtfprwz	0, 6
1816	addi 6, 7, .LCPI3_1@toc@l
1817	addis 7, 2, .LCPI3_2@toc@ha
1818	xxswapd	35, 1
1819	xxlxor 36, 36, 36
1820	xxspltw 33, 0, 1
1821	xxland 35, 2, 35
1822	vadduwm 0, 3, 5
1823	lvx 5, 0, 6
1824	addi 6, 7, .LCPI3_2@toc@l
1825	ld 7, 8(3)
1826	xxlor 35, 35, 34
1827	xxlxor 34, 32, 34
1828	xxlor 9, 32, 32
1829	lvx 0, 0, 6
1830	ld 6, 0(3)
1831	addi 3, 3, -8
1832	vcmpgtsw 2, 3, 2
1833	lvx 3, 0, 0
1834	addi 0, 28, .LCPI3_5@toc@l
1835	addi 28, 27, .LCPI3_6@toc@l
1836	addi 27, 26, .LCPI3_7@toc@l
1837	addi 26, 25, .LCPI3_8@toc@l
1838	or 25, 9, 8
1839	li 9, 0
1840	vcmpgtsb 5, 4, 5
1841	vcmpgtsb 0, 4, 0
1842	xxlor 11, 35, 35
1843	lvx 3, 0, 24
1844	xxlor 12, 35, 35
1845	vsubuwm 2, 1, 2
1846	xxlnor 10, 37, 37
1847	xxlor 13, 34, 34
1848	lvx 2, 0, 0
1849	li 0, 32
1850	xxlnor 31, 32, 32
1851	xxlor 30, 34, 34
1852	lvx 2, 0, 28
1853	li 28, 48
1854	xxlor 29, 34, 34
1855	lvx 2, 0, 27
1856	li 27, 0
1857	xxlor 28, 34, 34
1858	lvx 2, 0, 26
1859	xxlor 27, 34, 34
1860.LBB3_2:
1861	mr	26, 27
1862	addi 27, 27, 1
1863	xxlor 23, 39, 39
1864	cmpld	27, 4
1865	sldi 26, 26, 6
1866	xxlor 24, 40, 40
1867	iseleq	24, 10, 9
1868	add 23, 6, 26
1869	add 22, 30, 26
1870	lxvd2x 0, 6, 26
1871	lxvd2x 1, 7, 26
1872	or 25, 24, 25
1873	add 24, 7, 26
1874	lxvd2x 2, 30, 26
1875	lxvd2x 3, 29, 26
1876	xxlor 26, 47, 47
1877	lxvd2x 4, 23, 11
1878	lxvd2x 6, 24, 11
1879	clrlwi	25, 25, 24
1880	xxlor 25, 51, 51
1881	lxvd2x 7, 22, 11
1882	lxvd2x 8, 23, 0
1883	mtfprd	5, 25
1884	add 25, 29, 26
1885	xxswapd	34, 0
1886	lxvd2x 0, 25, 11
1887	xxswapd	38, 1
1888	xxswapd	32, 2
1889	lxvd2x 1, 24, 0
1890	lxvd2x 2, 22, 0
1891	xxswapd	40, 3
1892	xxswapd	39, 4
1893	lxvd2x 3, 25, 0
1894	lxvd2x 4, 23, 28
1895	xxswapd	60, 6
1896	xxswapd	47, 7
1897	lxvd2x 6, 24, 28
1898	xxswapd	57, 8
1899	lxvd2x 7, 22, 28
1900	lxvd2x 8, 25, 28
1901	xxswapd	58, 0
1902	mr	25, 3
1903	xxswapd	53, 1
1904	xxswapd	56, 2
1905	xxswapd	52, 3
1906	xxswapd	55, 4
1907	xxswapd	54, 6
1908	xxswapd	0, 5
1909	xxswapd	42, 7
1910	xxswapd	48, 8
1911	mtctr 12
1912.LBB3_3:
1913	ldu 24, 8(25)
1914	add 24, 24, 26
1915	addi 24, 24, 256
1916	dcbt 0, 24
1917	bdnz .LBB3_3
1918	vmrgew 4, 28, 7
1919	vspltisw 14, 9
1920	mr	25, 8
1921	vmrgew 27, 6, 2
1922	vspltisw 17, 4
1923	vmrglw 12, 6, 2
1924	vspltisw 19, 10
1925	vmrghw 30, 6, 2
1926	xxspltw 0, 0, 3
1927	vmrglw 2, 8, 0
1928	vmrghw 13, 8, 0
1929	xxlor 7, 36, 36
1930	vmrgew 4, 21, 25
1931	vmrglw 29, 28, 7
1932	vmrghw 1, 28, 7
1933	vmrglw 28, 26, 15
1934	xxmrgld	37, 34, 44
1935	vmrgew 7, 26, 15
1936	vmrghw 15, 26, 15
1937	xxlor 21, 36, 36
1938	vmrglw 4, 21, 25
1939	vmrghw 21, 21, 25
1940	vmrglw 25, 20, 24
1941	xxmrgld	34, 60, 61
1942	vmrghw 26, 20, 24
1943	xxlor 38, 26, 26
1944	vmrgew 3, 8, 0
1945	xxlor 5, 36, 36
1946	vmrgew 4, 20, 24
1947	vspltisw 24, -16
1948	vmrglw 20, 22, 23
1949	xxmrgld	57, 57, 5
1950	vmrglw 8, 16, 10
1951	vmrghw 0, 16, 10
1952	vadduwm 12, 19, 19
1953	xxlor 8, 37, 37
1954	xxlor 20, 36, 36
1955	vmrgew 4, 22, 23
1956	vmrghw 23, 22, 23
1957	xxmrgld	40, 40, 52
1958	vmrgew 22, 16, 10
1959	vsubuwm 10, 14, 24
1960	vslw 14, 17, 17
1961	vadduwm 17, 5, 6
1962	xxmrgld	37, 47, 33
1963	xxlor 22, 36, 36
1964	xxmrgld	36, 45, 62
1965	xxlor 38, 25, 25
1966	xxlor 2, 34, 34
1967	vadduwm 19, 4, 6
1968	xxmrgld	38, 39, 7
1969	xxlor 3, 36, 36
1970	xxmrghd	39, 47, 33
1971	xxlor 36, 24, 24
1972	xxmrgld	33, 58, 53
1973	vadduwm 17, 17, 18
1974	vadduwm 29, 2, 4
1975	xxmrgld	36, 35, 59
1976	xxlor 34, 23, 23
1977	xxmrghd	35, 45, 62
1978	xxlor 1, 9, 9
1979	vadduwm 28, 5, 2
1980	xxlor 1, 13, 13
1981	vadduwm 19, 19, 31
1982	vadduwm 24, 29, 11
1983	vadduwm 28, 28, 9
1984	xxlxor 61, 49, 9
1985	xxlor 1, 41, 41
1986	xxlor 41, 11, 11
1987	xxlxor 34, 51, 13
1988	vperm 29, 29, 29, 9
1989	xxlxor 46, 56, 46
1990	vperm 2, 2, 2, 9
1991	xxlxor 59, 60, 0
1992	vperm 14, 14, 14, 9
1993	vperm 30, 27, 27, 9
1994	vadduwm 19, 19, 3
1995	xxlor 4, 35, 35
1996	xxland 61, 61, 10
1997	xxlor 35, 12, 12
1998	xxland 34, 34, 10
1999	vadduwm 27, 29, 3
2000	xxlor 35, 30, 30
2001	vadduwm 17, 17, 4
2002	xxlor 26, 36, 36
2003	xxland 46, 46, 10
2004	vadduwm 3, 2, 3
2005	xxlor 36, 29, 29
2006	xxland 62, 62, 10
2007	xxlxor 45, 59, 50
2008	xxlxor 50, 35, 63
2009	vadduwm 31, 14, 4
2010	xxlor 36, 28, 28
2011	xxlor 6, 37, 37
2012	vadduwm 16, 30, 4
2013	xxlxor 43, 63, 43
2014	xxlxor 37, 48, 1
2015	vrlw 4, 13, 12
2016	vrlw 18, 18, 12
2017	vrlw 11, 11, 12
2018	vrlw 5, 5, 12
2019	vadduwm 15, 24, 6
2020	vadduwm 28, 28, 7
2021	vadduwm 17, 4, 17
2022	vadduwm 19, 18, 19
2023	vadduwm 15, 11, 15
2024	vadduwm 28, 5, 28
2025	xxlor 25, 38, 38
2026	xxlxor 61, 49, 61
2027	xxlxor 34, 51, 34
2028	xxlxor 46, 47, 46
2029	xxlxor 62, 60, 62
2030	xxlor 38, 27, 27
2031	vadduwm 19, 19, 1
2032	vperm 29, 29, 29, 6
2033	vperm 2, 2, 2, 6
2034	vperm 24, 14, 14, 6
2035	vperm 30, 30, 30, 6
2036	xxlor 5, 33, 33
2037	vadduwm 17, 17, 25
2038	xxland 61, 61, 31
2039	xxland 34, 34, 31
2040	xxland 56, 56, 31
2041	xxland 62, 62, 31
2042	vadduwm 27, 29, 27
2043	vadduwm 3, 2, 3
2044	vadduwm 31, 24, 31
2045	vadduwm 16, 30, 16
2046	xxlxor 36, 59, 36
2047	xxlxor 50, 35, 50
2048	xxlxor 43, 63, 43
2049	xxlxor 37, 48, 37
2050	vrlw 1, 18, 10
2051	xxmrgld	50, 32, 55
2052	vrlw 11, 11, 10
2053	xxmrghd	55, 32, 55
2054	vrlw 5, 5, 10
2055	vrlw 4, 4, 10
2056	vadduwm 15, 15, 8
2057	vadduwm 28, 28, 18
2058	vadduwm 17, 1, 17
2059	vadduwm 19, 11, 19
2060	vadduwm 15, 5, 15
2061	vadduwm 28, 4, 28
2062	xxlor 7, 57, 57
2063	xxlxor 62, 49, 62
2064	xxlxor 61, 51, 61
2065	xxlxor 57, 47, 34
2066	xxlxor 34, 60, 56
2067	vperm 24, 30, 30, 9
2068	xxmrgld	62, 20, 21
2069	vperm 29, 29, 29, 9
2070	vperm 25, 25, 25, 9
2071	vperm 2, 2, 2, 9
2072	vmr	14, 8
2073	xxmrghd	40, 58, 53
2074	xxmrgld	58, 54, 22
2075	vadduwm 17, 17, 30
2076	xxland 56, 56, 10
2077	vadduwm 21, 19, 8
2078	xxland 61, 61, 10
2079	xxland 51, 57, 10
2080	xxland 34, 34, 10
2081	vadduwm 31, 24, 31
2082	vadduwm 16, 29, 16
2083	vadduwm 27, 19, 27
2084	vadduwm 3, 2, 3
2085	xxlxor 33, 63, 33
2086	xxlxor 43, 48, 43
2087	xxlxor 37, 59, 37
2088	xxlxor 36, 35, 36
2089	vrlw 1, 1, 12
2090	vrlw 11, 11, 12
2091	vrlw 5, 5, 12
2092	vrlw 4, 4, 12
2093	vadduwm 0, 15, 26
2094	vadduwm 15, 28, 23
2095	vadduwm 17, 1, 17
2096	vadduwm 28, 11, 21
2097	vadduwm 0, 5, 0
2098	vadduwm 15, 4, 15
2099	xxlxor 56, 49, 56
2100	xxlxor 61, 60, 61
2101	xxlxor 51, 32, 51
2102	xxlxor 34, 47, 34
2103	vperm 24, 24, 24, 6
2104	vperm 29, 29, 29, 6
2105	vperm 19, 19, 19, 6
2106	vperm 2, 2, 2, 6
2107	vmr	13, 8
2108	xxlor 53, 3, 3
2109	xxland 56, 56, 31
2110	xxland 61, 61, 31
2111	xxland 51, 51, 31
2112	xxland 34, 34, 31
2113	vadduwm 31, 24, 31
2114	vadduwm 16, 29, 16
2115	vadduwm 27, 19, 27
2116	vadduwm 3, 2, 3
2117	xxlxor 33, 63, 33
2118	xxlxor 43, 48, 43
2119	xxlxor 36, 35, 36
2120	xxlxor 37, 59, 37
2121	vrlw 4, 4, 10
2122	vrlw 1, 1, 10
2123	vrlw 11, 11, 10
2124	vrlw 5, 5, 10
2125	xxlor 52, 4, 4
2126	xxlor 40, 2, 2
2127	vadduwm 17, 17, 21
2128	vadduwm 28, 28, 20
2129	vadduwm 0, 0, 7
2130	vadduwm 15, 15, 8
2131	vadduwm 17, 4, 17
2132	vadduwm 28, 1, 28
2133	vadduwm 0, 11, 0
2134	vadduwm 15, 5, 15
2135	xxlxor 61, 49, 61
2136	xxlxor 51, 60, 51
2137	xxlxor 34, 32, 34
2138	xxlxor 56, 47, 56
2139	vperm 29, 29, 29, 9
2140	vperm 19, 19, 19, 9
2141	vperm 2, 2, 2, 9
2142	vperm 24, 24, 24, 9
2143	vmr	25, 26
2144	xxlor 3, 39, 39
2145	xxland 61, 61, 10
2146	xxland 51, 51, 10
2147	xxland 34, 34, 10
2148	xxland 56, 56, 10
2149	vadduwm 27, 29, 27
2150	vadduwm 3, 19, 3
2151	vadduwm 31, 2, 31
2152	vadduwm 16, 24, 16
2153	xxlxor 36, 59, 36
2154	xxlxor 33, 35, 33
2155	xxlxor 43, 63, 43
2156	xxlxor 37, 48, 37
2157	vrlw 4, 4, 12
2158	vrlw 1, 1, 12
2159	vrlw 11, 11, 12
2160	vrlw 5, 5, 12
2161	xxlor 54, 6, 6
2162	xxlor 58, 5, 5
2163	xxlor 39, 8, 8
2164	vadduwm 17, 17, 22
2165	vadduwm 28, 28, 26
2166	vadduwm 0, 0, 7
2167	vadduwm 15, 15, 25
2168	vadduwm 17, 4, 17
2169	vadduwm 28, 1, 28
2170	vadduwm 0, 11, 0
2171	vadduwm 15, 5, 15
2172	xxlxor 61, 49, 61
2173	xxlxor 51, 60, 51
2174	xxlxor 34, 32, 34
2175	xxlxor 56, 47, 56
2176	vperm 29, 29, 29, 6
2177	vperm 19, 19, 19, 6
2178	vperm 2, 2, 2, 6
2179	vperm 24, 24, 24, 6
2180	xxlor 39, 26, 26
2181	vadduwm 28, 28, 14
2182	xxland 61, 61, 31
2183	xxland 51, 51, 31
2184	xxland 34, 34, 31
2185	xxland 56, 56, 31
2186	vadduwm 27, 29, 27
2187	vadduwm 3, 19, 3
2188	vadduwm 31, 2, 31
2189	vadduwm 16, 24, 16
2190	xxlxor 36, 59, 36
2191	xxlxor 33, 35, 33
2192	xxlxor 43, 63, 43
2193	xxlxor 37, 48, 37
2194	vrlw 1, 1, 10
2195	vrlw 11, 11, 10
2196	vrlw 5, 5, 10
2197	vrlw 4, 4, 10
2198	vadduwm 17, 17, 7
2199	vadduwm 0, 0, 30
2200	vadduwm 15, 15, 23
2201	vadduwm 17, 1, 17
2202	vadduwm 28, 11, 28
2203	vadduwm 0, 5, 0
2204	vadduwm 15, 4, 15
2205	xxlxor 56, 49, 56
2206	xxlxor 61, 60, 61
2207	xxlxor 51, 32, 51
2208	xxlxor 34, 47, 34
2209	vperm 24, 24, 24, 9
2210	vperm 29, 29, 29, 9
2211	vperm 19, 19, 19, 9
2212	vperm 2, 2, 2, 9
2213	xxlor 24, 55, 55
2214	vadduwm 17, 17, 13
2215	xxland 56, 56, 10
2216	xxland 61, 61, 10
2217	xxland 51, 51, 10
2218	xxland 34, 34, 10
2219	vadduwm 31, 24, 31
2220	vadduwm 16, 29, 16
2221	vadduwm 27, 19, 27
2222	vadduwm 3, 2, 3
2223	xxlxor 33, 63, 33
2224	xxlxor 43, 48, 43
2225	xxlxor 37, 59, 37
2226	xxlxor 36, 35, 36
2227	vrlw 1, 1, 12
2228	vrlw 11, 11, 12
2229	vrlw 5, 5, 12
2230	vrlw 4, 4, 12
2231	vmr	23, 13
2232	xxlor 45, 25, 25
2233	xxlor 39, 7, 7
2234	vadduwm 28, 28, 13
2235	vadduwm 0, 0, 18
2236	vadduwm 15, 15, 7
2237	vadduwm 17, 1, 17
2238	vadduwm 28, 11, 28
2239	vadduwm 0, 5, 0
2240	vadduwm 15, 4, 15
2241	xxlxor 56, 49, 56
2242	xxlxor 61, 60, 61
2243	xxlxor 51, 32, 51
2244	xxlxor 34, 47, 34
2245	vperm 24, 24, 24, 6
2246	vperm 29, 29, 29, 6
2247	vperm 19, 19, 19, 6
2248	vperm 2, 2, 2, 6
2249	xxlor 2, 46, 46
2250	xxlor 46, 3, 3
2251	xxland 56, 56, 31
2252	xxland 61, 61, 31
2253	xxland 51, 51, 31
2254	xxland 34, 34, 31
2255	vadduwm 31, 24, 31
2256	vadduwm 16, 29, 16
2257	vadduwm 27, 19, 27
2258	vadduwm 3, 2, 3
2259	xxlxor 33, 63, 33
2260	xxlxor 43, 48, 43
2261	xxlxor 36, 35, 36
2262	xxlxor 37, 59, 37
2263	vrlw 4, 4, 10
2264	vrlw 1, 1, 10
2265	vrlw 11, 11, 10
2266	vrlw 5, 5, 10
2267	vadduwm 17, 17, 20
2268	vadduwm 28, 28, 26
2269	vadduwm 0, 0, 25
2270	vadduwm 15, 15, 14
2271	vadduwm 17, 4, 17
2272	vadduwm 28, 1, 28
2273	vadduwm 0, 11, 0
2274	vadduwm 15, 5, 15
2275	xxlxor 61, 49, 61
2276	xxlxor 51, 60, 51
2277	xxlxor 34, 32, 34
2278	xxlxor 56, 47, 56
2279	vperm 29, 29, 29, 9
2280	vperm 19, 19, 19, 9
2281	vperm 2, 2, 2, 9
2282	vperm 24, 24, 24, 9
2283	xxlor 52, 2, 2
2284	vadduwm 17, 17, 8
2285	xxland 61, 61, 10
2286	xxland 51, 51, 10
2287	xxland 34, 34, 10
2288	xxland 56, 56, 10
2289	vadduwm 27, 29, 27
2290	vadduwm 3, 19, 3
2291	vadduwm 31, 2, 31
2292	vadduwm 16, 24, 16
2293	xxlxor 36, 59, 36
2294	xxlxor 33, 35, 33
2295	xxlxor 43, 63, 43
2296	xxlxor 37, 48, 37
2297	vrlw 4, 4, 12
2298	vrlw 1, 1, 12
2299	vrlw 11, 11, 12
2300	vrlw 5, 5, 12
2301	vadduwm 28, 28, 20
2302	vadduwm 0, 0, 21
2303	vadduwm 15, 15, 18
2304	vadduwm 17, 4, 17
2305	vadduwm 28, 1, 28
2306	vadduwm 0, 11, 0
2307	vadduwm 15, 5, 15
2308	xxlxor 61, 49, 61
2309	xxlxor 51, 60, 51
2310	xxlxor 34, 32, 34
2311	xxlxor 56, 47, 56
2312	vperm 29, 29, 29, 6
2313	vperm 19, 19, 19, 6
2314	vperm 2, 2, 2, 6
2315	vperm 24, 24, 24, 6
2316	vadduwm 17, 17, 22
2317	vadduwm 28, 28, 30
2318	xxland 61, 61, 31
2319	xxland 51, 51, 31
2320	xxland 34, 34, 31
2321	xxland 56, 56, 31
2322	vadduwm 27, 29, 27
2323	vadduwm 3, 19, 3
2324	vadduwm 31, 2, 31
2325	vadduwm 16, 24, 16
2326	xxlxor 36, 59, 36
2327	xxlxor 33, 35, 33
2328	xxlxor 43, 63, 43
2329	xxlxor 37, 48, 37
2330	vrlw 1, 1, 10
2331	vrlw 11, 11, 10
2332	vrlw 5, 5, 10
2333	vrlw 4, 4, 10
2334	vadduwm 0, 0, 23
2335	vadduwm 15, 15, 7
2336	vadduwm 17, 1, 17
2337	vadduwm 28, 11, 28
2338	vadduwm 0, 5, 0
2339	vadduwm 15, 4, 15
2340	xxlxor 56, 49, 56
2341	xxlxor 61, 60, 61
2342	xxlxor 51, 32, 51
2343	xxlxor 34, 47, 34
2344	vperm 24, 24, 24, 9
2345	vperm 29, 29, 29, 9
2346	vperm 19, 19, 19, 9
2347	vperm 2, 2, 2, 9
2348	xxlor 5, 4, 4
2349	xxlor 4, 58, 58
2350	xxland 56, 56, 10
2351	xxland 61, 61, 10
2352	xxland 51, 51, 10
2353	xxland 34, 34, 10
2354	vadduwm 31, 24, 31
2355	vadduwm 16, 29, 16
2356	vadduwm 27, 19, 27
2357	vadduwm 3, 2, 3
2358	xxlxor 33, 63, 33
2359	xxlxor 43, 48, 43
2360	xxlxor 37, 59, 37
2361	xxlxor 36, 35, 36
2362	vrlw 1, 1, 12
2363	vrlw 11, 11, 12
2364	vrlw 5, 5, 12
2365	vrlw 4, 4, 12
2366	xxlor 39, 8, 8
2367	xxlor 54, 24, 24
2368	xxlor 58, 26, 26
2369	vadduwm 17, 17, 13
2370	vadduwm 28, 28, 7
2371	vadduwm 0, 0, 22
2372	vadduwm 15, 15, 26
2373	vadduwm 17, 1, 17
2374	vadduwm 28, 11, 28
2375	vadduwm 0, 5, 0
2376	vadduwm 15, 4, 15
2377	xxlxor 56, 49, 56
2378	xxlxor 61, 60, 61
2379	xxlxor 51, 32, 51
2380	xxlxor 34, 47, 34
2381	vperm 24, 24, 24, 6
2382	vperm 29, 29, 29, 6
2383	vperm 19, 19, 19, 6
2384	vperm 2, 2, 2, 6
2385	xxlor 3, 53, 53
2386	xxlor 53, 4, 4
2387	xxland 56, 56, 31
2388	xxland 61, 61, 31
2389	xxland 51, 51, 31
2390	xxland 34, 34, 31
2391	vadduwm 31, 24, 31
2392	vadduwm 16, 29, 16
2393	vadduwm 27, 19, 27
2394	vadduwm 3, 2, 3
2395	xxlxor 33, 63, 33
2396	xxlxor 43, 48, 43
2397	xxlxor 36, 35, 36
2398	xxlxor 37, 59, 37
2399	vrlw 4, 4, 10
2400	vrlw 1, 1, 10
2401	vrlw 11, 11, 10
2402	vrlw 5, 5, 10
2403	vadduwm 17, 17, 21
2404	vadduwm 28, 28, 20
2405	vadduwm 0, 0, 18
2406	vadduwm 15, 15, 25
2407	vadduwm 17, 4, 17
2408	vadduwm 28, 1, 28
2409	vadduwm 0, 11, 0
2410	vadduwm 15, 5, 15
2411	xxlxor 61, 49, 61
2412	xxlxor 51, 60, 51
2413	xxlxor 34, 32, 34
2414	xxlxor 56, 47, 56
2415	vperm 29, 29, 29, 9
2416	vperm 19, 19, 19, 9
2417	vperm 2, 2, 2, 9
2418	vperm 24, 24, 24, 9
2419	xxlor 2, 55, 55
2420	vmr	23, 18
2421	xxland 61, 61, 10
2422	xxland 51, 51, 10
2423	xxland 34, 34, 10
2424	xxland 56, 56, 10
2425	vadduwm 27, 29, 27
2426	vadduwm 3, 19, 3
2427	vadduwm 31, 2, 31
2428	vadduwm 16, 24, 16
2429	xxlxor 36, 59, 36
2430	xxlxor 33, 35, 33
2431	xxlxor 43, 63, 43
2432	xxlxor 37, 48, 37
2433	vrlw 4, 4, 12
2434	vrlw 1, 1, 12
2435	vrlw 11, 11, 12
2436	vrlw 5, 5, 12
2437	xxlor 50, 5, 5
2438	vadduwm 17, 17, 14
2439	vadduwm 28, 28, 30
2440	vadduwm 0, 0, 18
2441	vadduwm 15, 15, 22
2442	vadduwm 17, 4, 17
2443	vadduwm 28, 1, 28
2444	vadduwm 0, 11, 0
2445	vadduwm 15, 5, 15
2446	xxlxor 61, 49, 61
2447	xxlxor 51, 60, 51
2448	xxlxor 34, 32, 34
2449	xxlxor 56, 47, 56
2450	vperm 29, 29, 29, 6
2451	vperm 19, 19, 19, 6
2452	vperm 2, 2, 2, 6
2453	vperm 24, 24, 24, 6
2454	xxlor 25, 40, 40
2455	vmr	8, 13
2456	xxland 61, 61, 31
2457	xxland 51, 51, 31
2458	xxland 34, 34, 31
2459	xxland 56, 56, 31
2460	vadduwm 27, 29, 27
2461	vadduwm 3, 19, 3
2462	vadduwm 31, 2, 31
2463	vadduwm 16, 24, 16
2464	xxlxor 36, 59, 36
2465	xxlxor 33, 35, 33
2466	xxlxor 43, 63, 43
2467	xxlxor 37, 48, 37
2468	xxlor 45, 25, 25
2469	vrlw 1, 1, 10
2470	vrlw 11, 11, 10
2471	vrlw 5, 5, 10
2472	vrlw 4, 4, 10
2473	vadduwm 17, 17, 13
2474	xxlor 45, 2, 2
2475	vadduwm 0, 0, 8
2476	vadduwm 28, 28, 13
2477	vadduwm 15, 15, 26
2478	vadduwm 17, 1, 17
2479	vadduwm 28, 11, 28
2480	vadduwm 0, 5, 0
2481	vadduwm 15, 4, 15
2482	xxlxor 56, 49, 56
2483	xxlxor 61, 60, 61
2484	xxlxor 51, 32, 51
2485	xxlxor 34, 47, 34
2486	vperm 24, 24, 24, 9
2487	vperm 29, 29, 29, 9
2488	vperm 19, 19, 19, 9
2489	vperm 2, 2, 2, 9
2490	xxlor 4, 57, 57
2491	xxlor 26, 46, 46
2492	xxland 56, 56, 10
2493	xxland 61, 61, 10
2494	xxland 51, 51, 10
2495	xxland 34, 34, 10
2496	vadduwm 31, 24, 31
2497	vadduwm 16, 29, 16
2498	vadduwm 27, 19, 27
2499	vadduwm 3, 2, 3
2500	xxlxor 33, 63, 33
2501	xxlxor 43, 48, 43
2502	xxlxor 37, 59, 37
2503	xxlxor 36, 35, 36
2504	vrlw 1, 1, 12
2505	vrlw 11, 11, 12
2506	vrlw 5, 5, 12
2507	vrlw 4, 4, 12
2508	xxlor 8, 62, 62
2509	xxlor 57, 3, 3
2510	xxlor 46, 7, 7
2511	xxlor 62, 6, 6
2512	vadduwm 17, 17, 7
2513	vadduwm 28, 28, 25
2514	vadduwm 0, 0, 14
2515	vadduwm 15, 15, 30
2516	vadduwm 17, 1, 17
2517	vadduwm 28, 11, 28
2518	vadduwm 0, 5, 0
2519	vadduwm 15, 4, 15
2520	xxlxor 56, 49, 56
2521	xxlxor 61, 60, 61
2522	xxlxor 51, 32, 51
2523	xxlxor 34, 47, 34
2524	vperm 24, 24, 24, 6
2525	vperm 29, 29, 29, 6
2526	vperm 19, 19, 19, 6
2527	vperm 2, 2, 2, 6
2528	vadduwm 17, 17, 20
2529	xxlor 3, 52, 52
2530	xxland 56, 56, 31
2531	xxland 61, 61, 31
2532	xxland 51, 51, 31
2533	xxland 34, 34, 31
2534	vadduwm 31, 24, 31
2535	vadduwm 16, 29, 16
2536	vadduwm 27, 19, 27
2537	vadduwm 3, 2, 3
2538	xxlxor 33, 63, 33
2539	xxlxor 43, 48, 43
2540	xxlxor 36, 35, 36
2541	xxlxor 37, 59, 37
2542	vrlw 4, 4, 10
2543	vrlw 1, 1, 10
2544	vrlw 11, 11, 10
2545	vrlw 5, 5, 10
2546	xxlor 52, 8, 8
2547	vadduwm 0, 0, 22
2548	vadduwm 28, 28, 20
2549	vadduwm 15, 15, 23
2550	vadduwm 17, 4, 17
2551	vadduwm 28, 1, 28
2552	vadduwm 0, 11, 0
2553	vadduwm 15, 5, 15
2554	xxlxor 61, 49, 61
2555	xxlxor 51, 60, 51
2556	xxlxor 34, 32, 34
2557	xxlxor 56, 47, 56
2558	vperm 29, 29, 29, 9
2559	vperm 19, 19, 19, 9
2560	vperm 2, 2, 2, 9
2561	vperm 24, 24, 24, 9
2562	xxlor 6, 55, 55
2563	xxlor 55, 4, 4
2564	xxland 61, 61, 10
2565	xxland 51, 51, 10
2566	xxland 34, 34, 10
2567	xxland 56, 56, 10
2568	vadduwm 27, 29, 27
2569	vadduwm 3, 19, 3
2570	vadduwm 31, 2, 31
2571	vadduwm 16, 24, 16
2572	xxlxor 36, 59, 36
2573	xxlxor 33, 35, 33
2574	xxlxor 43, 63, 43
2575	xxlxor 37, 48, 37
2576	vrlw 4, 4, 12
2577	vrlw 1, 1, 12
2578	vrlw 11, 11, 12
2579	vrlw 5, 5, 12
2580	vadduwm 17, 17, 23
2581	vadduwm 28, 28, 13
2582	vadduwm 0, 0, 21
2583	vadduwm 15, 15, 14
2584	vadduwm 17, 4, 17
2585	vadduwm 28, 1, 28
2586	vadduwm 0, 11, 0
2587	vadduwm 15, 5, 15
2588	xxlxor 61, 49, 61
2589	xxlxor 51, 60, 51
2590	xxlxor 34, 32, 34
2591	xxlxor 56, 47, 56
2592	vperm 29, 29, 29, 6
2593	vperm 19, 19, 19, 6
2594	vperm 2, 2, 2, 6
2595	vperm 24, 24, 24, 6
2596	xxlor 4, 53, 53
2597	xxlor 53, 26, 26
2598	xxland 61, 61, 31
2599	xxland 51, 51, 31
2600	xxland 34, 34, 31
2601	xxland 56, 56, 31
2602	vadduwm 27, 29, 27
2603	vadduwm 3, 19, 3
2604	vadduwm 31, 2, 31
2605	vadduwm 16, 24, 16
2606	xxlxor 36, 59, 36
2607	xxlxor 33, 35, 33
2608	xxlxor 43, 63, 43
2609	xxlxor 37, 48, 37
2610	vrlw 1, 1, 10
2611	vrlw 11, 11, 10
2612	vrlw 5, 5, 10
2613	vrlw 4, 4, 10
2614	vadduwm 17, 17, 21
2615	vadduwm 28, 28, 8
2616	vadduwm 0, 0, 7
2617	vadduwm 15, 15, 30
2618	vadduwm 17, 1, 17
2619	vadduwm 28, 11, 28
2620	vadduwm 0, 5, 0
2621	vadduwm 15, 4, 15
2622	xxlxor 56, 49, 56
2623	xxlxor 61, 60, 61
2624	xxlxor 51, 32, 51
2625	xxlxor 34, 47, 34
2626	vperm 24, 24, 24, 9
2627	vperm 29, 29, 29, 9
2628	vperm 19, 19, 19, 9
2629	vperm 2, 2, 2, 9
2630	xxlor 5, 25, 25
2631	xxlor 2, 58, 58
2632	xxland 56, 56, 10
2633	xxland 61, 61, 10
2634	xxland 51, 51, 10
2635	xxland 34, 34, 10
2636	vadduwm 31, 24, 31
2637	vadduwm 16, 29, 16
2638	vadduwm 27, 19, 27
2639	vadduwm 3, 2, 3
2640	xxlxor 33, 63, 33
2641	xxlxor 43, 48, 43
2642	xxlxor 37, 59, 37
2643	xxlxor 36, 35, 36
2644	vrlw 1, 1, 12
2645	vrlw 11, 11, 12
2646	vrlw 5, 5, 12
2647	vrlw 4, 4, 12
2648	vmr	22, 26
2649	vadduwm 0, 0, 26
2650	xxlor 58, 5, 5
2651	vadduwm 17, 17, 25
2652	vadduwm 28, 28, 18
2653	vadduwm 15, 15, 26
2654	vadduwm 17, 1, 17
2655	vadduwm 28, 11, 28
2656	vadduwm 0, 5, 0
2657	vadduwm 15, 4, 15
2658	xxlxor 56, 49, 56
2659	xxlxor 61, 60, 61
2660	xxlxor 51, 32, 51
2661	xxlxor 34, 47, 34
2662	vperm 24, 24, 24, 6
2663	vperm 29, 29, 29, 6
2664	vperm 19, 19, 19, 6
2665	vperm 2, 2, 2, 6
2666	xxlor 7, 24, 24
2667	xxlor 8, 57, 57
2668	xxland 56, 56, 31
2669	xxland 61, 61, 31
2670	xxland 51, 51, 31
2671	xxland 34, 34, 31
2672	vadduwm 31, 24, 31
2673	vadduwm 16, 29, 16
2674	vadduwm 27, 19, 27
2675	vadduwm 3, 2, 3
2676	xxlxor 33, 63, 33
2677	xxlxor 43, 48, 43
2678	xxlxor 36, 35, 36
2679	xxlxor 37, 59, 37
2680	vrlw 4, 4, 10
2681	vrlw 1, 1, 10
2682	vrlw 11, 11, 10
2683	vrlw 5, 5, 10
2684	xxlor 57, 7, 7
2685	vadduwm 17, 17, 20
2686	vadduwm 28, 28, 13
2687	vadduwm 0, 0, 14
2688	vadduwm 15, 15, 25
2689	vadduwm 17, 4, 17
2690	vadduwm 28, 1, 28
2691	vadduwm 0, 11, 0
2692	vadduwm 15, 5, 15
2693	xxlxor 61, 49, 61
2694	xxlxor 51, 60, 51
2695	xxlxor 34, 32, 34
2696	xxlxor 56, 47, 56
2697	vperm 29, 29, 29, 9
2698	vperm 19, 19, 19, 9
2699	vperm 2, 2, 2, 9
2700	vperm 24, 24, 24, 9
2701	xxlor 5, 52, 52
2702	xxlor 23, 45, 45
2703	xxland 61, 61, 10
2704	xxland 51, 51, 10
2705	xxland 34, 34, 10
2706	xxland 56, 56, 10
2707	vadduwm 27, 29, 27
2708	vadduwm 3, 19, 3
2709	vadduwm 31, 2, 31
2710	vadduwm 16, 24, 16
2711	xxlxor 36, 59, 36
2712	xxlxor 33, 35, 33
2713	xxlxor 43, 63, 43
2714	xxlxor 37, 48, 37
2715	vrlw 4, 4, 12
2716	vrlw 1, 1, 12
2717	vrlw 11, 11, 12
2718	vrlw 5, 5, 12
2719	xxlor 52, 6, 6
2720	vadduwm 28, 28, 8
2721	vmr	13, 8
2722	xxlor 40, 3, 3
2723	vadduwm 17, 17, 20
2724	vadduwm 0, 0, 8
2725	vadduwm 15, 15, 22
2726	vadduwm 17, 4, 17
2727	vadduwm 28, 1, 28
2728	vadduwm 0, 11, 0
2729	vadduwm 15, 5, 15
2730	xxlxor 61, 49, 61
2731	xxlxor 51, 60, 51
2732	xxlxor 34, 32, 34
2733	xxlxor 56, 47, 56
2734	vperm 29, 29, 29, 6
2735	vperm 19, 19, 19, 6
2736	vperm 2, 2, 2, 6
2737	vperm 24, 24, 24, 6
2738	xxlor 25, 39, 39
2739	vmr	7, 30
2740	xxland 61, 61, 31
2741	xxland 51, 51, 31
2742	xxland 34, 34, 31
2743	xxland 56, 56, 31
2744	vadduwm 27, 29, 27
2745	vadduwm 3, 19, 3
2746	vadduwm 31, 2, 31
2747	vadduwm 16, 24, 16
2748	xxlxor 36, 59, 36
2749	xxlxor 33, 35, 33
2750	xxlxor 43, 63, 43
2751	xxlxor 37, 48, 37
2752	vrlw 1, 1, 10
2753	vrlw 11, 11, 10
2754	vrlw 5, 5, 10
2755	vrlw 4, 4, 10
2756	vmr	30, 18
2757	xxlor 24, 46, 46
2758	xxlor 46, 25, 25
2759	xxlor 50, 8, 8
2760	vadduwm 17, 17, 23
2761	vadduwm 28, 28, 14
2762	vadduwm 0, 0, 18
2763	vadduwm 15, 15, 26
2764	vadduwm 17, 1, 17
2765	vadduwm 28, 11, 28
2766	vadduwm 0, 5, 0
2767	vadduwm 15, 4, 15
2768	xxlxor 56, 49, 56
2769	xxlxor 61, 60, 61
2770	xxlxor 51, 32, 51
2771	xxlxor 34, 47, 34
2772	vperm 24, 24, 24, 9
2773	vperm 29, 29, 29, 9
2774	vperm 19, 19, 19, 9
2775	vperm 2, 2, 2, 9
2776	xxlor 6, 58, 58
2777	xxlor 58, 4, 4
2778	xxland 56, 56, 10
2779	xxland 61, 61, 10
2780	xxland 51, 51, 10
2781	xxland 34, 34, 10
2782	vadduwm 31, 24, 31
2783	vadduwm 16, 29, 16
2784	vadduwm 27, 19, 27
2785	vadduwm 3, 2, 3
2786	xxlxor 33, 63, 33
2787	xxlxor 43, 48, 43
2788	xxlxor 37, 59, 37
2789	xxlxor 36, 35, 36
2790	vrlw 1, 1, 12
2791	vrlw 11, 11, 12
2792	vrlw 5, 5, 12
2793	vrlw 4, 4, 12
2794	vadduwm 17, 17, 30
2795	vadduwm 28, 28, 26
2796	vadduwm 0, 0, 7
2797	vadduwm 15, 15, 21
2798	vadduwm 17, 1, 17
2799	vadduwm 28, 11, 28
2800	vadduwm 0, 5, 0
2801	vadduwm 15, 4, 15
2802	xxlxor 56, 49, 56
2803	xxlxor 61, 60, 61
2804	xxlxor 51, 32, 51
2805	xxlxor 34, 47, 34
2806	vperm 24, 24, 24, 6
2807	vperm 29, 29, 29, 6
2808	vperm 19, 19, 19, 6
2809	vperm 2, 2, 2, 6
2810	xxlor 40, 23, 23
2811	vadduwm 13, 28, 13
2812	vadduwm 8, 17, 8
2813	xxland 49, 56, 31
2814	xxland 61, 61, 31
2815	xxland 51, 51, 31
2816	xxland 34, 34, 31
2817	vadduwm 31, 17, 31
2818	vadduwm 16, 29, 16
2819	vadduwm 28, 19, 27
2820	vadduwm 3, 2, 3
2821	xxlxor 33, 63, 33
2822	xxlxor 43, 48, 43
2823	xxlxor 36, 35, 36
2824	xxlxor 37, 60, 37
2825	vrlw 4, 4, 10
2826	vrlw 1, 1, 10
2827	vrlw 11, 11, 10
2828	vrlw 5, 5, 10
2829	xxlor 2, 55, 55
2830	vmr	23, 30
2831	xxlor 62, 24, 24
2832	vadduwm 0, 0, 22
2833	vadduwm 15, 15, 30
2834	vadduwm 8, 4, 8
2835	vadduwm 13, 1, 13
2836	vadduwm 0, 11, 0
2837	vadduwm 15, 5, 15
2838	xxlxor 61, 40, 61
2839	xxlxor 51, 45, 51
2840	xxlxor 34, 32, 34
2841	xxlxor 49, 47, 49
2842	vperm 29, 29, 29, 9
2843	vperm 19, 19, 19, 9
2844	vperm 2, 2, 2, 9
2845	vperm 17, 17, 17, 9
2846	vadduwm 13, 13, 14
2847	xxlor 46, 5, 5
2848	xxland 61, 61, 10
2849	xxland 51, 51, 10
2850	xxland 34, 34, 10
2851	xxland 49, 49, 10
2852	vadduwm 28, 29, 28
2853	vadduwm 3, 19, 3
2854	vadduwm 31, 2, 31
2855	vadduwm 16, 17, 16
2856	xxlxor 36, 60, 36
2857	xxlxor 33, 35, 33
2858	xxlxor 43, 63, 43
2859	xxlxor 37, 48, 37
2860	vrlw 4, 4, 12
2861	vrlw 1, 1, 12
2862	vrlw 11, 11, 12
2863	vrlw 5, 5, 12
2864	vadduwm 8, 8, 25
2865	vadduwm 0, 0, 14
2866	vadduwm 15, 15, 7
2867	vadduwm 8, 4, 8
2868	vadduwm 13, 1, 13
2869	vadduwm 0, 11, 0
2870	vadduwm 15, 5, 15
2871	xxlxor 62, 40, 61
2872	xxlxor 51, 45, 51
2873	xxlxor 34, 32, 34
2874	xxlxor 49, 47, 49
2875	vperm 30, 30, 30, 6
2876	vperm 19, 19, 19, 6
2877	vperm 2, 2, 2, 6
2878	vperm 17, 17, 17, 6
2879	vadduwm 29, 8, 20
2880	vadduwm 8, 13, 18
2881	xxland 45, 62, 31
2882	xxland 51, 51, 31
2883	xxland 34, 34, 31
2884	xxland 49, 49, 31
2885	vadduwm 30, 13, 28
2886	vadduwm 3, 19, 3
2887	vadduwm 31, 2, 31
2888	vadduwm 16, 17, 16
2889	xxlxor 36, 62, 36
2890	xxlxor 33, 35, 33
2891	xxlxor 43, 63, 43
2892	xxlxor 37, 48, 37
2893	vrlw 1, 1, 10
2894	vrlw 11, 11, 10
2895	vrlw 5, 5, 10
2896	vrlw 4, 4, 10
2897	vadduwm 0, 0, 23
2898	vadduwm 7, 15, 21
2899	vadduwm 29, 1, 29
2900	vadduwm 8, 11, 8
2901	vadduwm 0, 5, 0
2902	vadduwm 7, 4, 7
2903	xxlxor 47, 61, 49
2904	xxlxor 45, 40, 45
2905	xxlxor 49, 32, 51
2906	xxlxor 34, 39, 34
2907	vperm 15, 15, 15, 9
2908	vperm 13, 13, 13, 9
2909	vperm 17, 17, 17, 9
2910	vperm 2, 2, 2, 9
2911	xxlor 46, 3, 3
2912	vadduwm 9, 29, 26
2913	vadduwm 8, 8, 14
2914	xxland 46, 47, 10
2915	xxland 45, 45, 10
2916	xxland 47, 49, 10
2917	xxland 34, 34, 10
2918	vadduwm 17, 14, 31
2919	vadduwm 16, 13, 16
2920	vadduwm 18, 15, 30
2921	vadduwm 3, 2, 3
2922	xxlxor 33, 49, 33
2923	xxlxor 43, 48, 43
2924	xxlxor 37, 50, 37
2925	xxlxor 36, 35, 36
2926	vrlw 1, 1, 12
2927	vrlw 11, 11, 12
2928	vrlw 5, 5, 12
2929	vrlw 4, 4, 12
2930	xxlor 44, 6, 6
2931	xxlor 0, 10, 10
2932	vadduwm 0, 0, 12
2933	xxlor 44, 2, 2
2934	vadduwm 9, 1, 9
2935	vadduwm 7, 7, 12
2936	vadduwm 8, 11, 8
2937	vadduwm 7, 4, 7
2938	vadduwm 0, 5, 0
2939	xxlxor 34, 39, 34
2940	xxlxor 44, 32, 47
2941	vperm 2, 2, 2, 6
2942	xxlxor 46, 41, 46
2943	xxlxor 45, 40, 45
2944	vperm 12, 12, 12, 6
2945	vperm 14, 14, 14, 6
2946	vperm 13, 13, 13, 6
2947	xxland 34, 34, 31
2948	xxlor 1, 31, 31
2949	vadduwm 3, 2, 3
2950	xxland 44, 44, 31
2951	xxlxor 36, 35, 36
2952	xxlxor 51, 35, 40
2953	xxland 35, 46, 31
2954	xxland 38, 45, 31
2955	vadduwm 15, 12, 18
2956	vadduwm 8, 3, 17
2957	vadduwm 13, 6, 16
2958	xxlxor 37, 47, 37
2959	xxlxor 33, 40, 33
2960	xxlxor 43, 45, 43
2961	vrlw 4, 4, 10
2962	vrlw 1, 1, 10
2963	vrlw 11, 11, 10
2964	vrlw 5, 5, 10
2965	xxlxor 47, 47, 41
2966	xxlxor 40, 40, 32
2967	xxlxor 39, 45, 39
2968	xxlxor 50, 36, 38
2969	xxlxor 63, 33, 44
2970	xxlxor 43, 43, 34
2971	xxlxor 41, 37, 35
2972	bne	0, .LBB3_2
2973.LBB3_5:
2974	vmrglw 2, 19, 15
2975	li 3, 32
2976	li 4, 48
2977	vmrglw 4, 7, 8
2978	vmrglw 0, 31, 18
2979	vmrglw 1, 9, 11
2980	vmrghw 3, 19, 15
2981	vmrghw 5, 7, 8
2982	vmrghw 6, 31, 18
2983	vmrghw 7, 9, 11
2984	xxmrgld	40, 36, 34
2985	xxmrghd	34, 36, 34
2986	xxmrgld	41, 33, 32
2987	xxswapd	0, 40
2988	xxmrgld	36, 37, 35
2989	xxmrghd	35, 37, 35
2990	xxmrghd	37, 33, 32
2991	xxswapd	1, 41
2992	xxmrgld	32, 39, 38
2993	xxmrghd	33, 39, 38
2994	xxswapd	2, 34
2995	xxswapd	4, 36
2996	xxswapd	3, 37
2997	stxvd2x 0, 0, 5
2998	xxswapd	5, 32
2999	stxvd2x 1, 5, 11
3000	xxswapd	0, 35
3001	xxswapd	1, 33
3002	stxvd2x 2, 5, 3
3003	li 3, 64
3004	stxvd2x 3, 5, 4
3005	li 4, 80
3006	stxvd2x 4, 5, 3
3007	li 3, 96
3008	stxvd2x 5, 5, 4
3009	li 4, 112
3010	stxvd2x 0, 5, 3
3011	stxvd2x 1, 5, 4
3012	li 3, 224
3013	lxvd2x 63, 1, 3
3014	li 3, 208
3015	lfd 31, 408(1)
3016	ld 30, 304(1)
3017	ld 29, 296(1)
3018	lxvd2x 62, 1, 3
3019	li 3, 192
3020	lfd 30, 400(1)
3021	ld 28, 288(1)
3022	ld 27, 280(1)
3023	lxvd2x 61, 1, 3
3024	li 3, 176
3025	lfd 29, 392(1)
3026	ld 26, 272(1)
3027	ld 25, 264(1)
3028	lxvd2x 60, 1, 3
3029	li 3, 160
3030	lfd 28, 384(1)
3031	ld 24, 256(1)
3032	ld 23, 248(1)
3033	lxvd2x 59, 1, 3
3034	li 3, 144
3035	lfd 27, 376(1)
3036	ld 22, 240(1)
3037	lxvd2x 58, 1, 3
3038	li 3, 128
3039	lfd 26, 368(1)
3040	lxvd2x 57, 1, 3
3041	li 3, 112
3042	lfd 25, 360(1)
3043	lxvd2x 56, 1, 3
3044	li 3, 96
3045	lfd 24, 352(1)
3046	lxvd2x 55, 1, 3
3047	li 3, 80
3048	lfd 23, 344(1)
3049	lxvd2x 54, 1, 3
3050	li 3, 64
3051	lfd 22, 336(1)
3052	lxvd2x 53, 1, 3
3053	li 3, 48
3054	lfd 21, 328(1)
3055	lxvd2x 52, 1, 3
3056	lfd 20, 320(1)
3057	addi 1, 1, 416
3058	blr
3059	.long	0
3060	.quad	0
3061.Lfunc_end3:
3062	.size	blake3_hash4_sse41, .Lfunc_end3-.Lfunc_begin3
3063	.cfi_endproc
3064	.section	".note.GNU-stack","",@progbits
3065#endif
3066