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