1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from aesp8-ppc.pl. */
3 .machine "any"
4
5 .abiversion 2
6 .text
7
8 .align 7
9 rcon:
10 .byte 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01
11 .byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b
12 .byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d
13 .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
14 .Lconsts:
15 mflr 0
16 bcl 20,31,$+4
17 mflr 6
18 addi 6,6,-0x48
19 mtlr 0
20 blr
21 .long 0
22 .byte 0,12,0x14,0,0,0,0,0
23 .byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
24 .align 2
25
26 .globl aes_p8_set_encrypt_key
27 .type aes_p8_set_encrypt_key,@function
28 .align 5
29 aes_p8_set_encrypt_key:
30 .localentry aes_p8_set_encrypt_key,0
31
32 .Lset_encrypt_key:
33 mflr 11
34 std 11,16(1)
35
36 li 6,-1
37 cmpldi 3,0
38 beq- .Lenc_key_abort
39 cmpldi 5,0
40 beq- .Lenc_key_abort
41 li 6,-2
42 cmpwi 4,128
43 blt- .Lenc_key_abort
44 cmpwi 4,256
45 bgt- .Lenc_key_abort
46 andi. 0,4,0x3f
47 bne- .Lenc_key_abort
48
49 lis 0,0xfff0
50 li 12,-1
51 or 0,0,0
52
53 bl .Lconsts
54 mtlr 11
55
56 neg 9,3
57 lvx 1,0,3
58 addi 3,3,15
59 lvsr 3,0,9
60 li 8,0x20
61 cmpwi 4,192
62 lvx 2,0,3
63 vspltisb 5,0x0f
64 lvx 4,0,6
65 vxor 3,3,5
66 lvx 5,8,6
67 addi 6,6,0x10
68 vperm 1,1,2,3
69 li 7,8
70 vxor 0,0,0
71 mtctr 7
72
73 lvsl 8,0,5
74 vspltisb 9,-1
75 lvx 10,0,5
76 vperm 9,9,0,8
77
78 blt .Loop128
79 addi 3,3,8
80 beq .L192
81 addi 3,3,8
82 b .L256
83
84 .align 4
85 .Loop128:
86 vperm 3,1,1,5
87 vsldoi 6,0,1,12
88 vperm 11,1,1,8
89 vsel 7,10,11,9
90 vor 10,11,11
91 .long 0x10632509
92 stvx 7,0,5
93 addi 5,5,16
94
95 vxor 1,1,6
96 vsldoi 6,0,6,12
97 vxor 1,1,6
98 vsldoi 6,0,6,12
99 vxor 1,1,6
100 vadduwm 4,4,4
101 vxor 1,1,3
102 bdnz .Loop128
103
104 lvx 4,0,6
105
106 vperm 3,1,1,5
107 vsldoi 6,0,1,12
108 vperm 11,1,1,8
109 vsel 7,10,11,9
110 vor 10,11,11
111 .long 0x10632509
112 stvx 7,0,5
113 addi 5,5,16
114
115 vxor 1,1,6
116 vsldoi 6,0,6,12
117 vxor 1,1,6
118 vsldoi 6,0,6,12
119 vxor 1,1,6
120 vadduwm 4,4,4
121 vxor 1,1,3
122
123 vperm 3,1,1,5
124 vsldoi 6,0,1,12
125 vperm 11,1,1,8
126 vsel 7,10,11,9
127 vor 10,11,11
128 .long 0x10632509
129 stvx 7,0,5
130 addi 5,5,16
131
132 vxor 1,1,6
133 vsldoi 6,0,6,12
134 vxor 1,1,6
135 vsldoi 6,0,6,12
136 vxor 1,1,6
137 vxor 1,1,3
138 vperm 11,1,1,8
139 vsel 7,10,11,9
140 vor 10,11,11
141 stvx 7,0,5
142
143 addi 3,5,15
144 addi 5,5,0x50
145
146 li 8,10
147 b .Ldone
148
149 .align 4
150 .L192:
151 lvx 6,0,3
152 li 7,4
153 vperm 11,1,1,8
154 vsel 7,10,11,9
155 vor 10,11,11
156 stvx 7,0,5
157 addi 5,5,16
158 vperm 2,2,6,3
159 vspltisb 3,8
160 mtctr 7
161 vsububm 5,5,3
162
163 .Loop192:
164 vperm 3,2,2,5
165 vsldoi 6,0,1,12
166 .long 0x10632509
167
168 vxor 1,1,6
169 vsldoi 6,0,6,12
170 vxor 1,1,6
171 vsldoi 6,0,6,12
172 vxor 1,1,6
173
174 vsldoi 7,0,2,8
175 vspltw 6,1,3
176 vxor 6,6,2
177 vsldoi 2,0,2,12
178 vadduwm 4,4,4
179 vxor 2,2,6
180 vxor 1,1,3
181 vxor 2,2,3
182 vsldoi 7,7,1,8
183
184 vperm 3,2,2,5
185 vsldoi 6,0,1,12
186 vperm 11,7,7,8
187 vsel 7,10,11,9
188 vor 10,11,11
189 .long 0x10632509
190 stvx 7,0,5
191 addi 5,5,16
192
193 vsldoi 7,1,2,8
194 vxor 1,1,6
195 vsldoi 6,0,6,12
196 vperm 11,7,7,8
197 vsel 7,10,11,9
198 vor 10,11,11
199 vxor 1,1,6
200 vsldoi 6,0,6,12
201 vxor 1,1,6
202 stvx 7,0,5
203 addi 5,5,16
204
205 vspltw 6,1,3
206 vxor 6,6,2
207 vsldoi 2,0,2,12
208 vadduwm 4,4,4
209 vxor 2,2,6
210 vxor 1,1,3
211 vxor 2,2,3
212 vperm 11,1,1,8
213 vsel 7,10,11,9
214 vor 10,11,11
215 stvx 7,0,5
216 addi 3,5,15
217 addi 5,5,16
218 bdnz .Loop192
219
220 li 8,12
221 addi 5,5,0x20
222 b .Ldone
223
224 .align 4
225 .L256:
226 lvx 6,0,3
227 li 7,7
228 li 8,14
229 vperm 11,1,1,8
230 vsel 7,10,11,9
231 vor 10,11,11
232 stvx 7,0,5
233 addi 5,5,16
234 vperm 2,2,6,3
235 mtctr 7
236
237 .Loop256:
238 vperm 3,2,2,5
239 vsldoi 6,0,1,12
240 vperm 11,2,2,8
241 vsel 7,10,11,9
242 vor 10,11,11
243 .long 0x10632509
244 stvx 7,0,5
245 addi 5,5,16
246
247 vxor 1,1,6
248 vsldoi 6,0,6,12
249 vxor 1,1,6
250 vsldoi 6,0,6,12
251 vxor 1,1,6
252 vadduwm 4,4,4
253 vxor 1,1,3
254 vperm 11,1,1,8
255 vsel 7,10,11,9
256 vor 10,11,11
257 stvx 7,0,5
258 addi 3,5,15
259 addi 5,5,16
260 bdz .Ldone
261
262 vspltw 3,1,3
263 vsldoi 6,0,2,12
264 .long 0x106305C8
265
266 vxor 2,2,6
267 vsldoi 6,0,6,12
268 vxor 2,2,6
269 vsldoi 6,0,6,12
270 vxor 2,2,6
271
272 vxor 2,2,3
273 b .Loop256
274
275 .align 4
276 .Ldone:
277 lvx 2,0,3
278 vsel 2,10,2,9
279 stvx 2,0,3
280 li 6,0
281 or 12,12,12
282 stw 8,0(5)
283
284 .Lenc_key_abort:
285 mr 3,6
286 blr
287 .long 0
288 .byte 0,12,0x14,1,0,0,3,0
289 .long 0
290 .size aes_p8_set_encrypt_key,.-aes_p8_set_encrypt_key
291
292 .globl aes_p8_set_decrypt_key
293 .type aes_p8_set_decrypt_key,@function
294 .align 5
295 aes_p8_set_decrypt_key:
296 .localentry aes_p8_set_decrypt_key,0
297
298 stdu 1,-64(1)
299 mflr 10
300 std 10,64+16(1)
301 bl .Lset_encrypt_key
302 mtlr 10
303
304 cmpwi 3,0
305 bne- .Ldec_key_abort
306
307 slwi 7,8,4
308 subi 3,5,240
309 srwi 8,8,1
310 add 5,3,7
311 mtctr 8
312
313 .Ldeckey:
314 lwz 0, 0(3)
315 lwz 6, 4(3)
316 lwz 7, 8(3)
317 lwz 8, 12(3)
318 addi 3,3,16
319 lwz 9, 0(5)
320 lwz 10,4(5)
321 lwz 11,8(5)
322 lwz 12,12(5)
323 stw 0, 0(5)
324 stw 6, 4(5)
325 stw 7, 8(5)
326 stw 8, 12(5)
327 subi 5,5,16
328 stw 9, -16(3)
329 stw 10,-12(3)
330 stw 11,-8(3)
331 stw 12,-4(3)
332 bdnz .Ldeckey
333
334 xor 3,3,3
335 .Ldec_key_abort:
336 addi 1,1,64
337 blr
338 .long 0
339 .byte 0,12,4,1,0x80,0,3,0
340 .long 0
341 .size aes_p8_set_decrypt_key,.-aes_p8_set_decrypt_key
342 .globl aes_p8_encrypt
343 .type aes_p8_encrypt,@function
344 .align 5
345 aes_p8_encrypt:
346 .localentry aes_p8_encrypt,0
347
348 lwz 6,240(5)
349 lis 0,0xfc00
350 li 12,-1
351 li 7,15
352 or 0,0,0
353
354 lvx 0,0,3
355 neg 11,4
356 lvx 1,7,3
357 lvsl 2,0,3
358 vspltisb 4,0x0f
359 lvsr 3,0,11
360 vxor 2,2,4
361 li 7,16
362 vperm 0,0,1,2
363 lvx 1,0,5
364 lvsr 5,0,5
365 srwi 6,6,1
366 lvx 2,7,5
367 addi 7,7,16
368 subi 6,6,1
369 vperm 1,2,1,5
370
371 vxor 0,0,1
372 lvx 1,7,5
373 addi 7,7,16
374 mtctr 6
375
376 .Loop_enc:
377 vperm 2,1,2,5
378 .long 0x10001508
379 lvx 2,7,5
380 addi 7,7,16
381 vperm 1,2,1,5
382 .long 0x10000D08
383 lvx 1,7,5
384 addi 7,7,16
385 bdnz .Loop_enc
386
387 vperm 2,1,2,5
388 .long 0x10001508
389 lvx 2,7,5
390 vperm 1,2,1,5
391 .long 0x10000D09
392
393 vspltisb 2,-1
394 vxor 1,1,1
395 li 7,15
396 vperm 2,2,1,3
397 vxor 3,3,4
398 lvx 1,0,4
399 vperm 0,0,0,3
400 vsel 1,1,0,2
401 lvx 4,7,4
402 stvx 1,0,4
403 vsel 0,0,4,2
404 stvx 0,7,4
405
406 or 12,12,12
407 blr
408 .long 0
409 .byte 0,12,0x14,0,0,0,3,0
410 .long 0
411 .size aes_p8_encrypt,.-aes_p8_encrypt
412 .globl aes_p8_decrypt
413 .type aes_p8_decrypt,@function
414 .align 5
415 aes_p8_decrypt:
416 .localentry aes_p8_decrypt,0
417
418 lwz 6,240(5)
419 lis 0,0xfc00
420 li 12,-1
421 li 7,15
422 or 0,0,0
423
424 lvx 0,0,3
425 neg 11,4
426 lvx 1,7,3
427 lvsl 2,0,3
428 vspltisb 4,0x0f
429 lvsr 3,0,11
430 vxor 2,2,4
431 li 7,16
432 vperm 0,0,1,2
433 lvx 1,0,5
434 lvsr 5,0,5
435 srwi 6,6,1
436 lvx 2,7,5
437 addi 7,7,16
438 subi 6,6,1
439 vperm 1,2,1,5
440
441 vxor 0,0,1
442 lvx 1,7,5
443 addi 7,7,16
444 mtctr 6
445
446 .Loop_dec:
447 vperm 2,1,2,5
448 .long 0x10001548
449 lvx 2,7,5
450 addi 7,7,16
451 vperm 1,2,1,5
452 .long 0x10000D48
453 lvx 1,7,5
454 addi 7,7,16
455 bdnz .Loop_dec
456
457 vperm 2,1,2,5
458 .long 0x10001548
459 lvx 2,7,5
460 vperm 1,2,1,5
461 .long 0x10000D49
462
463 vspltisb 2,-1
464 vxor 1,1,1
465 li 7,15
466 vperm 2,2,1,3
467 vxor 3,3,4
468 lvx 1,0,4
469 vperm 0,0,0,3
470 vsel 1,1,0,2
471 lvx 4,7,4
472 stvx 1,0,4
473 vsel 0,0,4,2
474 stvx 0,7,4
475
476 or 12,12,12
477 blr
478 .long 0
479 .byte 0,12,0x14,0,0,0,3,0
480 .long 0
481 .size aes_p8_decrypt,.-aes_p8_decrypt
482 .globl aes_p8_cbc_encrypt
483 .type aes_p8_cbc_encrypt,@function
484 .align 5
485 aes_p8_cbc_encrypt:
486 .localentry aes_p8_cbc_encrypt,0
487
488 cmpldi 5,16
489 .long 0x4dc00020
490
491 cmpwi 8,0
492 lis 0,0xffe0
493 li 12,-1
494 or 0,0,0
495
496 li 10,15
497 vxor 0,0,0
498 vspltisb 3,0x0f
499
500 lvx 4,0,7
501 lvsl 6,0,7
502 lvx 5,10,7
503 vxor 6,6,3
504 vperm 4,4,5,6
505
506 neg 11,3
507 lvsr 10,0,6
508 lwz 9,240(6)
509
510 lvsr 6,0,11
511 lvx 5,0,3
512 addi 3,3,15
513 vxor 6,6,3
514
515 lvsl 8,0,4
516 vspltisb 9,-1
517 lvx 7,0,4
518 vperm 9,9,0,8
519 vxor 8,8,3
520
521 srwi 9,9,1
522 li 10,16
523 subi 9,9,1
524 beq .Lcbc_dec
525
526 .Lcbc_enc:
527 vor 2,5,5
528 lvx 5,0,3
529 addi 3,3,16
530 mtctr 9
531 subi 5,5,16
532
533 lvx 0,0,6
534 vperm 2,2,5,6
535 lvx 1,10,6
536 addi 10,10,16
537 vperm 0,1,0,10
538 vxor 2,2,0
539 lvx 0,10,6
540 addi 10,10,16
541 vxor 2,2,4
542
543 .Loop_cbc_enc:
544 vperm 1,0,1,10
545 .long 0x10420D08
546 lvx 1,10,6
547 addi 10,10,16
548 vperm 0,1,0,10
549 .long 0x10420508
550 lvx 0,10,6
551 addi 10,10,16
552 bdnz .Loop_cbc_enc
553
554 vperm 1,0,1,10
555 .long 0x10420D08
556 lvx 1,10,6
557 li 10,16
558 vperm 0,1,0,10
559 .long 0x10820509
560 cmpldi 5,16
561
562 vperm 3,4,4,8
563 vsel 2,7,3,9
564 vor 7,3,3
565 stvx 2,0,4
566 addi 4,4,16
567 bge .Lcbc_enc
568
569 b .Lcbc_done
570
571 .align 4
572 .Lcbc_dec:
573 cmpldi 5,128
574 bge _aesp8_cbc_decrypt8x
575 vor 3,5,5
576 lvx 5,0,3
577 addi 3,3,16
578 mtctr 9
579 subi 5,5,16
580
581 lvx 0,0,6
582 vperm 3,3,5,6
583 lvx 1,10,6
584 addi 10,10,16
585 vperm 0,1,0,10
586 vxor 2,3,0
587 lvx 0,10,6
588 addi 10,10,16
589
590 .Loop_cbc_dec:
591 vperm 1,0,1,10
592 .long 0x10420D48
593 lvx 1,10,6
594 addi 10,10,16
595 vperm 0,1,0,10
596 .long 0x10420548
597 lvx 0,10,6
598 addi 10,10,16
599 bdnz .Loop_cbc_dec
600
601 vperm 1,0,1,10
602 .long 0x10420D48
603 lvx 1,10,6
604 li 10,16
605 vperm 0,1,0,10
606 .long 0x10420549
607 cmpldi 5,16
608
609 vxor 2,2,4
610 vor 4,3,3
611 vperm 3,2,2,8
612 vsel 2,7,3,9
613 vor 7,3,3
614 stvx 2,0,4
615 addi 4,4,16
616 bge .Lcbc_dec
617
618 .Lcbc_done:
619 addi 4,4,-1
620 lvx 2,0,4
621 vsel 2,7,2,9
622 stvx 2,0,4
623
624 neg 8,7
625 li 10,15
626 vxor 0,0,0
627 vspltisb 9,-1
628 vspltisb 3,0x0f
629 lvsr 8,0,8
630 vperm 9,9,0,8
631 vxor 8,8,3
632 lvx 7,0,7
633 vperm 4,4,4,8
634 vsel 2,7,4,9
635 lvx 5,10,7
636 stvx 2,0,7
637 vsel 2,4,5,9
638 stvx 2,10,7
639
640 or 12,12,12
641 blr
642 .long 0
643 .byte 0,12,0x14,0,0,0,6,0
644 .long 0
645 .align 5
646 _aesp8_cbc_decrypt8x:
647 stdu 1,-448(1)
648 li 10,207
649 li 11,223
650 stvx 20,10,1
651 addi 10,10,32
652 stvx 21,11,1
653 addi 11,11,32
654 stvx 22,10,1
655 addi 10,10,32
656 stvx 23,11,1
657 addi 11,11,32
658 stvx 24,10,1
659 addi 10,10,32
660 stvx 25,11,1
661 addi 11,11,32
662 stvx 26,10,1
663 addi 10,10,32
664 stvx 27,11,1
665 addi 11,11,32
666 stvx 28,10,1
667 addi 10,10,32
668 stvx 29,11,1
669 addi 11,11,32
670 stvx 30,10,1
671 stvx 31,11,1
672 li 0,-1
673 stw 12,396(1)
674 li 8,0x10
675 std 26,400(1)
676 li 26,0x20
677 std 27,408(1)
678 li 27,0x30
679 std 28,416(1)
680 li 28,0x40
681 std 29,424(1)
682 li 29,0x50
683 std 30,432(1)
684 li 30,0x60
685 std 31,440(1)
686 li 31,0x70
687 or 0,0,0
688
689 subi 9,9,3
690 subi 5,5,128
691
692 lvx 23,0,6
693 lvx 30,8,6
694 addi 6,6,0x20
695 lvx 31,0,6
696 vperm 23,30,23,10
697 addi 11,1,64+15
698 mtctr 9
699
700 .Load_cbc_dec_key:
701 vperm 24,31,30,10
702 lvx 30,8,6
703 addi 6,6,0x20
704 stvx 24,0,11
705 vperm 25,30,31,10
706 lvx 31,0,6
707 stvx 25,8,11
708 addi 11,11,0x20
709 bdnz .Load_cbc_dec_key
710
711 lvx 26,8,6
712 vperm 24,31,30,10
713 lvx 27,26,6
714 stvx 24,0,11
715 vperm 25,26,31,10
716 lvx 28,27,6
717 stvx 25,8,11
718 addi 11,1,64+15
719 vperm 26,27,26,10
720 lvx 29,28,6
721 vperm 27,28,27,10
722 lvx 30,29,6
723 vperm 28,29,28,10
724 lvx 31,30,6
725 vperm 29,30,29,10
726 lvx 14,31,6
727 vperm 30,31,30,10
728 lvx 24,0,11
729 vperm 31,14,31,10
730 lvx 25,8,11
731
732
733
734 subi 3,3,15
735
736 li 10,8
737 .long 0x7C001E99
738 lvsl 6,0,10
739 vspltisb 3,0x0f
740 .long 0x7C281E99
741 vxor 6,6,3
742 .long 0x7C5A1E99
743 vperm 0,0,0,6
744 .long 0x7C7B1E99
745 vperm 1,1,1,6
746 .long 0x7D5C1E99
747 vperm 2,2,2,6
748 vxor 14,0,23
749 .long 0x7D7D1E99
750 vperm 3,3,3,6
751 vxor 15,1,23
752 .long 0x7D9E1E99
753 vperm 10,10,10,6
754 vxor 16,2,23
755 .long 0x7DBF1E99
756 addi 3,3,0x80
757 vperm 11,11,11,6
758 vxor 17,3,23
759 vperm 12,12,12,6
760 vxor 18,10,23
761 vperm 13,13,13,6
762 vxor 19,11,23
763 vxor 20,12,23
764 vxor 21,13,23
765
766 mtctr 9
767 b .Loop_cbc_dec8x
768 .align 5
769 .Loop_cbc_dec8x:
770 .long 0x11CEC548
771 .long 0x11EFC548
772 .long 0x1210C548
773 .long 0x1231C548
774 .long 0x1252C548
775 .long 0x1273C548
776 .long 0x1294C548
777 .long 0x12B5C548
778 lvx 24,26,11
779 addi 11,11,0x20
780
781 .long 0x11CECD48
782 .long 0x11EFCD48
783 .long 0x1210CD48
784 .long 0x1231CD48
785 .long 0x1252CD48
786 .long 0x1273CD48
787 .long 0x1294CD48
788 .long 0x12B5CD48
789 lvx 25,8,11
790 bdnz .Loop_cbc_dec8x
791
792 subic 5,5,128
793 .long 0x11CEC548
794 .long 0x11EFC548
795 .long 0x1210C548
796 .long 0x1231C548
797 .long 0x1252C548
798 .long 0x1273C548
799 .long 0x1294C548
800 .long 0x12B5C548
801
802 subfe. 0,0,0
803 .long 0x11CECD48
804 .long 0x11EFCD48
805 .long 0x1210CD48
806 .long 0x1231CD48
807 .long 0x1252CD48
808 .long 0x1273CD48
809 .long 0x1294CD48
810 .long 0x12B5CD48
811
812 and 0,0,5
813 .long 0x11CED548
814 .long 0x11EFD548
815 .long 0x1210D548
816 .long 0x1231D548
817 .long 0x1252D548
818 .long 0x1273D548
819 .long 0x1294D548
820 .long 0x12B5D548
821
822 add 3,3,0
823
824
825
826 .long 0x11CEDD48
827 .long 0x11EFDD48
828 .long 0x1210DD48
829 .long 0x1231DD48
830 .long 0x1252DD48
831 .long 0x1273DD48
832 .long 0x1294DD48
833 .long 0x12B5DD48
834
835 addi 11,1,64+15
836 .long 0x11CEE548
837 .long 0x11EFE548
838 .long 0x1210E548
839 .long 0x1231E548
840 .long 0x1252E548
841 .long 0x1273E548
842 .long 0x1294E548
843 .long 0x12B5E548
844 lvx 24,0,11
845
846 .long 0x11CEED48
847 .long 0x11EFED48
848 .long 0x1210ED48
849 .long 0x1231ED48
850 .long 0x1252ED48
851 .long 0x1273ED48
852 .long 0x1294ED48
853 .long 0x12B5ED48
854 lvx 25,8,11
855
856 .long 0x11CEF548
857 vxor 4,4,31
858 .long 0x11EFF548
859 vxor 0,0,31
860 .long 0x1210F548
861 vxor 1,1,31
862 .long 0x1231F548
863 vxor 2,2,31
864 .long 0x1252F548
865 vxor 3,3,31
866 .long 0x1273F548
867 vxor 10,10,31
868 .long 0x1294F548
869 vxor 11,11,31
870 .long 0x12B5F548
871 vxor 12,12,31
872
873 .long 0x11CE2549
874 .long 0x11EF0549
875 .long 0x7C001E99
876 .long 0x12100D49
877 .long 0x7C281E99
878 .long 0x12311549
879 vperm 0,0,0,6
880 .long 0x7C5A1E99
881 .long 0x12521D49
882 vperm 1,1,1,6
883 .long 0x7C7B1E99
884 .long 0x12735549
885 vperm 2,2,2,6
886 .long 0x7D5C1E99
887 .long 0x12945D49
888 vperm 3,3,3,6
889 .long 0x7D7D1E99
890 .long 0x12B56549
891 vperm 10,10,10,6
892 .long 0x7D9E1E99
893 vor 4,13,13
894 vperm 11,11,11,6
895 .long 0x7DBF1E99
896 addi 3,3,0x80
897
898 vperm 14,14,14,6
899 vperm 15,15,15,6
900 .long 0x7DC02799
901 vperm 12,12,12,6
902 vxor 14,0,23
903 vperm 16,16,16,6
904 .long 0x7DE82799
905 vperm 13,13,13,6
906 vxor 15,1,23
907 vperm 17,17,17,6
908 .long 0x7E1A2799
909 vxor 16,2,23
910 vperm 18,18,18,6
911 .long 0x7E3B2799
912 vxor 17,3,23
913 vperm 19,19,19,6
914 .long 0x7E5C2799
915 vxor 18,10,23
916 vperm 20,20,20,6
917 .long 0x7E7D2799
918 vxor 19,11,23
919 vperm 21,21,21,6
920 .long 0x7E9E2799
921 vxor 20,12,23
922 .long 0x7EBF2799
923 addi 4,4,0x80
924 vxor 21,13,23
925
926 mtctr 9
927 beq .Loop_cbc_dec8x
928
929 addic. 5,5,128
930 beq .Lcbc_dec8x_done
931 nop
932 nop
933
934 .Loop_cbc_dec8x_tail:
935 .long 0x11EFC548
936 .long 0x1210C548
937 .long 0x1231C548
938 .long 0x1252C548
939 .long 0x1273C548
940 .long 0x1294C548
941 .long 0x12B5C548
942 lvx 24,26,11
943 addi 11,11,0x20
944
945 .long 0x11EFCD48
946 .long 0x1210CD48
947 .long 0x1231CD48
948 .long 0x1252CD48
949 .long 0x1273CD48
950 .long 0x1294CD48
951 .long 0x12B5CD48
952 lvx 25,8,11
953 bdnz .Loop_cbc_dec8x_tail
954
955 .long 0x11EFC548
956 .long 0x1210C548
957 .long 0x1231C548
958 .long 0x1252C548
959 .long 0x1273C548
960 .long 0x1294C548
961 .long 0x12B5C548
962
963 .long 0x11EFCD48
964 .long 0x1210CD48
965 .long 0x1231CD48
966 .long 0x1252CD48
967 .long 0x1273CD48
968 .long 0x1294CD48
969 .long 0x12B5CD48
970
971 .long 0x11EFD548
972 .long 0x1210D548
973 .long 0x1231D548
974 .long 0x1252D548
975 .long 0x1273D548
976 .long 0x1294D548
977 .long 0x12B5D548
978
979 .long 0x11EFDD48
980 .long 0x1210DD48
981 .long 0x1231DD48
982 .long 0x1252DD48
983 .long 0x1273DD48
984 .long 0x1294DD48
985 .long 0x12B5DD48
986
987 .long 0x11EFE548
988 .long 0x1210E548
989 .long 0x1231E548
990 .long 0x1252E548
991 .long 0x1273E548
992 .long 0x1294E548
993 .long 0x12B5E548
994
995 .long 0x11EFED48
996 .long 0x1210ED48
997 .long 0x1231ED48
998 .long 0x1252ED48
999 .long 0x1273ED48
1000 .long 0x1294ED48
1001 .long 0x12B5ED48
1002
1003 .long 0x11EFF548
1004 vxor 4,4,31
1005 .long 0x1210F548
1006 vxor 1,1,31
1007 .long 0x1231F548
1008 vxor 2,2,31
1009 .long 0x1252F548
1010 vxor 3,3,31
1011 .long 0x1273F548
1012 vxor 10,10,31
1013 .long 0x1294F548
1014 vxor 11,11,31
1015 .long 0x12B5F548
1016 vxor 12,12,31
1017
1018 cmplwi 5,32
1019 blt .Lcbc_dec8x_one
1020 nop
1021 beq .Lcbc_dec8x_two
1022 cmplwi 5,64
1023 blt .Lcbc_dec8x_three
1024 nop
1025 beq .Lcbc_dec8x_four
1026 cmplwi 5,96
1027 blt .Lcbc_dec8x_five
1028 nop
1029 beq .Lcbc_dec8x_six
1030
1031 .Lcbc_dec8x_seven:
1032 .long 0x11EF2549
1033 .long 0x12100D49
1034 .long 0x12311549
1035 .long 0x12521D49
1036 .long 0x12735549
1037 .long 0x12945D49
1038 .long 0x12B56549
1039 vor 4,13,13
1040
1041 vperm 15,15,15,6
1042 vperm 16,16,16,6
1043 .long 0x7DE02799
1044 vperm 17,17,17,6
1045 .long 0x7E082799
1046 vperm 18,18,18,6
1047 .long 0x7E3A2799
1048 vperm 19,19,19,6
1049 .long 0x7E5B2799
1050 vperm 20,20,20,6
1051 .long 0x7E7C2799
1052 vperm 21,21,21,6
1053 .long 0x7E9D2799
1054 .long 0x7EBE2799
1055 addi 4,4,0x70
1056 b .Lcbc_dec8x_done
1057
1058 .align 5
1059 .Lcbc_dec8x_six:
1060 .long 0x12102549
1061 .long 0x12311549
1062 .long 0x12521D49
1063 .long 0x12735549
1064 .long 0x12945D49
1065 .long 0x12B56549
1066 vor 4,13,13
1067
1068 vperm 16,16,16,6
1069 vperm 17,17,17,6
1070 .long 0x7E002799
1071 vperm 18,18,18,6
1072 .long 0x7E282799
1073 vperm 19,19,19,6
1074 .long 0x7E5A2799
1075 vperm 20,20,20,6
1076 .long 0x7E7B2799
1077 vperm 21,21,21,6
1078 .long 0x7E9C2799
1079 .long 0x7EBD2799
1080 addi 4,4,0x60
1081 b .Lcbc_dec8x_done
1082
1083 .align 5
1084 .Lcbc_dec8x_five:
1085 .long 0x12312549
1086 .long 0x12521D49
1087 .long 0x12735549
1088 .long 0x12945D49
1089 .long 0x12B56549
1090 vor 4,13,13
1091
1092 vperm 17,17,17,6
1093 vperm 18,18,18,6
1094 .long 0x7E202799
1095 vperm 19,19,19,6
1096 .long 0x7E482799
1097 vperm 20,20,20,6
1098 .long 0x7E7A2799
1099 vperm 21,21,21,6
1100 .long 0x7E9B2799
1101 .long 0x7EBC2799
1102 addi 4,4,0x50
1103 b .Lcbc_dec8x_done
1104
1105 .align 5
1106 .Lcbc_dec8x_four:
1107 .long 0x12522549
1108 .long 0x12735549
1109 .long 0x12945D49
1110 .long 0x12B56549
1111 vor 4,13,13
1112
1113 vperm 18,18,18,6
1114 vperm 19,19,19,6
1115 .long 0x7E402799
1116 vperm 20,20,20,6
1117 .long 0x7E682799
1118 vperm 21,21,21,6
1119 .long 0x7E9A2799
1120 .long 0x7EBB2799
1121 addi 4,4,0x40
1122 b .Lcbc_dec8x_done
1123
1124 .align 5
1125 .Lcbc_dec8x_three:
1126 .long 0x12732549
1127 .long 0x12945D49
1128 .long 0x12B56549
1129 vor 4,13,13
1130
1131 vperm 19,19,19,6
1132 vperm 20,20,20,6
1133 .long 0x7E602799
1134 vperm 21,21,21,6
1135 .long 0x7E882799
1136 .long 0x7EBA2799
1137 addi 4,4,0x30
1138 b .Lcbc_dec8x_done
1139
1140 .align 5
1141 .Lcbc_dec8x_two:
1142 .long 0x12942549
1143 .long 0x12B56549
1144 vor 4,13,13
1145
1146 vperm 20,20,20,6
1147 vperm 21,21,21,6
1148 .long 0x7E802799
1149 .long 0x7EA82799
1150 addi 4,4,0x20
1151 b .Lcbc_dec8x_done
1152
1153 .align 5
1154 .Lcbc_dec8x_one:
1155 .long 0x12B52549
1156 vor 4,13,13
1157
1158 vperm 21,21,21,6
1159 .long 0x7EA02799
1160 addi 4,4,0x10
1161
1162 .Lcbc_dec8x_done:
1163 vperm 4,4,4,6
1164 .long 0x7C803F99
1165
1166 li 10,79
1167 li 11,95
1168 stvx 6,10,1
1169 addi 10,10,32
1170 stvx 6,11,1
1171 addi 11,11,32
1172 stvx 6,10,1
1173 addi 10,10,32
1174 stvx 6,11,1
1175 addi 11,11,32
1176 stvx 6,10,1
1177 addi 10,10,32
1178 stvx 6,11,1
1179 addi 11,11,32
1180 stvx 6,10,1
1181 addi 10,10,32
1182 stvx 6,11,1
1183 addi 11,11,32
1184
1185 or 12,12,12
1186 lvx 20,10,1
1187 addi 10,10,32
1188 lvx 21,11,1
1189 addi 11,11,32
1190 lvx 22,10,1
1191 addi 10,10,32
1192 lvx 23,11,1
1193 addi 11,11,32
1194 lvx 24,10,1
1195 addi 10,10,32
1196 lvx 25,11,1
1197 addi 11,11,32
1198 lvx 26,10,1
1199 addi 10,10,32
1200 lvx 27,11,1
1201 addi 11,11,32
1202 lvx 28,10,1
1203 addi 10,10,32
1204 lvx 29,11,1
1205 addi 11,11,32
1206 lvx 30,10,1
1207 lvx 31,11,1
1208 ld 26,400(1)
1209 ld 27,408(1)
1210 ld 28,416(1)
1211 ld 29,424(1)
1212 ld 30,432(1)
1213 ld 31,440(1)
1214 addi 1,1,448
1215 blr
1216 .long 0
1217 .byte 0,12,0x04,0,0x80,6,6,0
1218 .long 0
1219 .size aes_p8_cbc_encrypt,.-aes_p8_cbc_encrypt
1220 .globl aes_p8_ctr32_encrypt_blocks
1221 .type aes_p8_ctr32_encrypt_blocks,@function
1222 .align 5
1223 aes_p8_ctr32_encrypt_blocks:
1224 .localentry aes_p8_ctr32_encrypt_blocks,0
1225
1226 cmpldi 5,1
1227 .long 0x4dc00020
1228
1229 lis 0,0xfff0
1230 li 12,-1
1231 or 0,0,0
1232
1233 li 10,15
1234 vxor 0,0,0
1235 vspltisb 3,0x0f
1236
1237 lvx 4,0,7
1238 lvsl 6,0,7
1239 lvx 5,10,7
1240 vspltisb 11,1
1241 vxor 6,6,3
1242 vperm 4,4,5,6
1243 vsldoi 11,0,11,1
1244
1245 neg 11,3
1246 lvsr 10,0,6
1247 lwz 9,240(6)
1248
1249 lvsr 6,0,11
1250 lvx 5,0,3
1251 addi 3,3,15
1252 vxor 6,6,3
1253
1254 srwi 9,9,1
1255 li 10,16
1256 subi 9,9,1
1257
1258 cmpldi 5,8
1259 bge _aesp8_ctr32_encrypt8x
1260
1261 lvsl 8,0,4
1262 vspltisb 9,-1
1263 lvx 7,0,4
1264 vperm 9,9,0,8
1265 vxor 8,8,3
1266
1267 lvx 0,0,6
1268 mtctr 9
1269 lvx 1,10,6
1270 addi 10,10,16
1271 vperm 0,1,0,10
1272 vxor 2,4,0
1273 lvx 0,10,6
1274 addi 10,10,16
1275 b .Loop_ctr32_enc
1276
1277 .align 5
1278 .Loop_ctr32_enc:
1279 vperm 1,0,1,10
1280 .long 0x10420D08
1281 lvx 1,10,6
1282 addi 10,10,16
1283 vperm 0,1,0,10
1284 .long 0x10420508
1285 lvx 0,10,6
1286 addi 10,10,16
1287 bdnz .Loop_ctr32_enc
1288
1289 vadduwm 4,4,11
1290 vor 3,5,5
1291 lvx 5,0,3
1292 addi 3,3,16
1293 subic. 5,5,1
1294
1295 vperm 1,0,1,10
1296 .long 0x10420D08
1297 lvx 1,10,6
1298 vperm 3,3,5,6
1299 li 10,16
1300 vperm 1,1,0,10
1301 lvx 0,0,6
1302 vxor 3,3,1
1303 .long 0x10421D09
1304
1305 lvx 1,10,6
1306 addi 10,10,16
1307 vperm 2,2,2,8
1308 vsel 3,7,2,9
1309 mtctr 9
1310 vperm 0,1,0,10
1311 vor 7,2,2
1312 vxor 2,4,0
1313 lvx 0,10,6
1314 addi 10,10,16
1315 stvx 3,0,4
1316 addi 4,4,16
1317 bne .Loop_ctr32_enc
1318
1319 addi 4,4,-1
1320 lvx 2,0,4
1321 vsel 2,7,2,9
1322 stvx 2,0,4
1323
1324 or 12,12,12
1325 blr
1326 .long 0
1327 .byte 0,12,0x14,0,0,0,6,0
1328 .long 0
1329 .align 5
1330 _aesp8_ctr32_encrypt8x:
1331 stdu 1,-448(1)
1332 li 10,207
1333 li 11,223
1334 stvx 20,10,1
1335 addi 10,10,32
1336 stvx 21,11,1
1337 addi 11,11,32
1338 stvx 22,10,1
1339 addi 10,10,32
1340 stvx 23,11,1
1341 addi 11,11,32
1342 stvx 24,10,1
1343 addi 10,10,32
1344 stvx 25,11,1
1345 addi 11,11,32
1346 stvx 26,10,1
1347 addi 10,10,32
1348 stvx 27,11,1
1349 addi 11,11,32
1350 stvx 28,10,1
1351 addi 10,10,32
1352 stvx 29,11,1
1353 addi 11,11,32
1354 stvx 30,10,1
1355 stvx 31,11,1
1356 li 0,-1
1357 stw 12,396(1)
1358 li 8,0x10
1359 std 26,400(1)
1360 li 26,0x20
1361 std 27,408(1)
1362 li 27,0x30
1363 std 28,416(1)
1364 li 28,0x40
1365 std 29,424(1)
1366 li 29,0x50
1367 std 30,432(1)
1368 li 30,0x60
1369 std 31,440(1)
1370 li 31,0x70
1371 or 0,0,0
1372
1373 subi 9,9,3
1374
1375 lvx 23,0,6
1376 lvx 30,8,6
1377 addi 6,6,0x20
1378 lvx 31,0,6
1379 vperm 23,30,23,10
1380 addi 11,1,64+15
1381 mtctr 9
1382
1383 .Load_ctr32_enc_key:
1384 vperm 24,31,30,10
1385 lvx 30,8,6
1386 addi 6,6,0x20
1387 stvx 24,0,11
1388 vperm 25,30,31,10
1389 lvx 31,0,6
1390 stvx 25,8,11
1391 addi 11,11,0x20
1392 bdnz .Load_ctr32_enc_key
1393
1394 lvx 26,8,6
1395 vperm 24,31,30,10
1396 lvx 27,26,6
1397 stvx 24,0,11
1398 vperm 25,26,31,10
1399 lvx 28,27,6
1400 stvx 25,8,11
1401 addi 11,1,64+15
1402 vperm 26,27,26,10
1403 lvx 29,28,6
1404 vperm 27,28,27,10
1405 lvx 30,29,6
1406 vperm 28,29,28,10
1407 lvx 31,30,6
1408 vperm 29,30,29,10
1409 lvx 15,31,6
1410 vperm 30,31,30,10
1411 lvx 24,0,11
1412 vperm 31,15,31,10
1413 lvx 25,8,11
1414
1415 vadduwm 7,11,11
1416 subi 3,3,15
1417 sldi 5,5,4
1418
1419 vadduwm 16,4,11
1420 vadduwm 17,4,7
1421 vxor 15,4,23
1422 li 10,8
1423 vadduwm 18,16,7
1424 vxor 16,16,23
1425 lvsl 6,0,10
1426 vadduwm 19,17,7
1427 vxor 17,17,23
1428 vspltisb 3,0x0f
1429 vadduwm 20,18,7
1430 vxor 18,18,23
1431 vxor 6,6,3
1432 vadduwm 21,19,7
1433 vxor 19,19,23
1434 vadduwm 22,20,7
1435 vxor 20,20,23
1436 vadduwm 4,21,7
1437 vxor 21,21,23
1438 vxor 22,22,23
1439
1440 mtctr 9
1441 b .Loop_ctr32_enc8x
1442 .align 5
1443 .Loop_ctr32_enc8x:
1444 .long 0x11EFC508
1445 .long 0x1210C508
1446 .long 0x1231C508
1447 .long 0x1252C508
1448 .long 0x1273C508
1449 .long 0x1294C508
1450 .long 0x12B5C508
1451 .long 0x12D6C508
1452 .Loop_ctr32_enc8x_middle:
1453 lvx 24,26,11
1454 addi 11,11,0x20
1455
1456 .long 0x11EFCD08
1457 .long 0x1210CD08
1458 .long 0x1231CD08
1459 .long 0x1252CD08
1460 .long 0x1273CD08
1461 .long 0x1294CD08
1462 .long 0x12B5CD08
1463 .long 0x12D6CD08
1464 lvx 25,8,11
1465 bdnz .Loop_ctr32_enc8x
1466
1467 subic 11,5,256
1468 .long 0x11EFC508
1469 .long 0x1210C508
1470 .long 0x1231C508
1471 .long 0x1252C508
1472 .long 0x1273C508
1473 .long 0x1294C508
1474 .long 0x12B5C508
1475 .long 0x12D6C508
1476
1477 subfe 0,0,0
1478 .long 0x11EFCD08
1479 .long 0x1210CD08
1480 .long 0x1231CD08
1481 .long 0x1252CD08
1482 .long 0x1273CD08
1483 .long 0x1294CD08
1484 .long 0x12B5CD08
1485 .long 0x12D6CD08
1486
1487 and 0,0,11
1488 addi 11,1,64+15
1489 .long 0x11EFD508
1490 .long 0x1210D508
1491 .long 0x1231D508
1492 .long 0x1252D508
1493 .long 0x1273D508
1494 .long 0x1294D508
1495 .long 0x12B5D508
1496 .long 0x12D6D508
1497 lvx 24,0,11
1498
1499 subic 5,5,129
1500 .long 0x11EFDD08
1501 addi 5,5,1
1502 .long 0x1210DD08
1503 .long 0x1231DD08
1504 .long 0x1252DD08
1505 .long 0x1273DD08
1506 .long 0x1294DD08
1507 .long 0x12B5DD08
1508 .long 0x12D6DD08
1509 lvx 25,8,11
1510
1511 .long 0x11EFE508
1512 .long 0x7C001E99
1513 .long 0x1210E508
1514 .long 0x7C281E99
1515 .long 0x1231E508
1516 .long 0x7C5A1E99
1517 .long 0x1252E508
1518 .long 0x7C7B1E99
1519 .long 0x1273E508
1520 .long 0x7D5C1E99
1521 .long 0x1294E508
1522 .long 0x7D9D1E99
1523 .long 0x12B5E508
1524 .long 0x7DBE1E99
1525 .long 0x12D6E508
1526 .long 0x7DDF1E99
1527 addi 3,3,0x80
1528
1529 .long 0x11EFED08
1530 vperm 0,0,0,6
1531 .long 0x1210ED08
1532 vperm 1,1,1,6
1533 .long 0x1231ED08
1534 vperm 2,2,2,6
1535 .long 0x1252ED08
1536 vperm 3,3,3,6
1537 .long 0x1273ED08
1538 vperm 10,10,10,6
1539 .long 0x1294ED08
1540 vperm 12,12,12,6
1541 .long 0x12B5ED08
1542 vperm 13,13,13,6
1543 .long 0x12D6ED08
1544 vperm 14,14,14,6
1545
1546 add 3,3,0
1547
1548
1549
1550 subfe. 0,0,0
1551 .long 0x11EFF508
1552 vxor 0,0,31
1553 .long 0x1210F508
1554 vxor 1,1,31
1555 .long 0x1231F508
1556 vxor 2,2,31
1557 .long 0x1252F508
1558 vxor 3,3,31
1559 .long 0x1273F508
1560 vxor 10,10,31
1561 .long 0x1294F508
1562 vxor 12,12,31
1563 .long 0x12B5F508
1564 vxor 13,13,31
1565 .long 0x12D6F508
1566 vxor 14,14,31
1567
1568 bne .Lctr32_enc8x_break
1569
1570 .long 0x100F0509
1571 .long 0x10300D09
1572 vadduwm 16,4,11
1573 .long 0x10511509
1574 vadduwm 17,4,7
1575 vxor 15,4,23
1576 .long 0x10721D09
1577 vadduwm 18,16,7
1578 vxor 16,16,23
1579 .long 0x11535509
1580 vadduwm 19,17,7
1581 vxor 17,17,23
1582 .long 0x11946509
1583 vadduwm 20,18,7
1584 vxor 18,18,23
1585 .long 0x11B56D09
1586 vadduwm 21,19,7
1587 vxor 19,19,23
1588 .long 0x11D67509
1589 vadduwm 22,20,7
1590 vxor 20,20,23
1591 vperm 0,0,0,6
1592 vadduwm 4,21,7
1593 vxor 21,21,23
1594 vperm 1,1,1,6
1595 vxor 22,22,23
1596 mtctr 9
1597
1598 .long 0x11EFC508
1599 .long 0x7C002799
1600 vperm 2,2,2,6
1601 .long 0x1210C508
1602 .long 0x7C282799
1603 vperm 3,3,3,6
1604 .long 0x1231C508
1605 .long 0x7C5A2799
1606 vperm 10,10,10,6
1607 .long 0x1252C508
1608 .long 0x7C7B2799
1609 vperm 12,12,12,6
1610 .long 0x1273C508
1611 .long 0x7D5C2799
1612 vperm 13,13,13,6
1613 .long 0x1294C508
1614 .long 0x7D9D2799
1615 vperm 14,14,14,6
1616 .long 0x12B5C508
1617 .long 0x7DBE2799
1618 .long 0x12D6C508
1619 .long 0x7DDF2799
1620 addi 4,4,0x80
1621
1622 b .Loop_ctr32_enc8x_middle
1623
1624 .align 5
1625 .Lctr32_enc8x_break:
1626 cmpwi 5,-0x60
1627 blt .Lctr32_enc8x_one
1628 nop
1629 beq .Lctr32_enc8x_two
1630 cmpwi 5,-0x40
1631 blt .Lctr32_enc8x_three
1632 nop
1633 beq .Lctr32_enc8x_four
1634 cmpwi 5,-0x20
1635 blt .Lctr32_enc8x_five
1636 nop
1637 beq .Lctr32_enc8x_six
1638 cmpwi 5,0x00
1639 blt .Lctr32_enc8x_seven
1640
1641 .Lctr32_enc8x_eight:
1642 .long 0x11EF0509
1643 .long 0x12100D09
1644 .long 0x12311509
1645 .long 0x12521D09
1646 .long 0x12735509
1647 .long 0x12946509
1648 .long 0x12B56D09
1649 .long 0x12D67509
1650
1651 vperm 15,15,15,6
1652 vperm 16,16,16,6
1653 .long 0x7DE02799
1654 vperm 17,17,17,6
1655 .long 0x7E082799
1656 vperm 18,18,18,6
1657 .long 0x7E3A2799
1658 vperm 19,19,19,6
1659 .long 0x7E5B2799
1660 vperm 20,20,20,6
1661 .long 0x7E7C2799
1662 vperm 21,21,21,6
1663 .long 0x7E9D2799
1664 vperm 22,22,22,6
1665 .long 0x7EBE2799
1666 .long 0x7EDF2799
1667 addi 4,4,0x80
1668 b .Lctr32_enc8x_done
1669
1670 .align 5
1671 .Lctr32_enc8x_seven:
1672 .long 0x11EF0D09
1673 .long 0x12101509
1674 .long 0x12311D09
1675 .long 0x12525509
1676 .long 0x12736509
1677 .long 0x12946D09
1678 .long 0x12B57509
1679
1680 vperm 15,15,15,6
1681 vperm 16,16,16,6
1682 .long 0x7DE02799
1683 vperm 17,17,17,6
1684 .long 0x7E082799
1685 vperm 18,18,18,6
1686 .long 0x7E3A2799
1687 vperm 19,19,19,6
1688 .long 0x7E5B2799
1689 vperm 20,20,20,6
1690 .long 0x7E7C2799
1691 vperm 21,21,21,6
1692 .long 0x7E9D2799
1693 .long 0x7EBE2799
1694 addi 4,4,0x70
1695 b .Lctr32_enc8x_done
1696
1697 .align 5
1698 .Lctr32_enc8x_six:
1699 .long 0x11EF1509
1700 .long 0x12101D09
1701 .long 0x12315509
1702 .long 0x12526509
1703 .long 0x12736D09
1704 .long 0x12947509
1705
1706 vperm 15,15,15,6
1707 vperm 16,16,16,6
1708 .long 0x7DE02799
1709 vperm 17,17,17,6
1710 .long 0x7E082799
1711 vperm 18,18,18,6
1712 .long 0x7E3A2799
1713 vperm 19,19,19,6
1714 .long 0x7E5B2799
1715 vperm 20,20,20,6
1716 .long 0x7E7C2799
1717 .long 0x7E9D2799
1718 addi 4,4,0x60
1719 b .Lctr32_enc8x_done
1720
1721 .align 5
1722 .Lctr32_enc8x_five:
1723 .long 0x11EF1D09
1724 .long 0x12105509
1725 .long 0x12316509
1726 .long 0x12526D09
1727 .long 0x12737509
1728
1729 vperm 15,15,15,6
1730 vperm 16,16,16,6
1731 .long 0x7DE02799
1732 vperm 17,17,17,6
1733 .long 0x7E082799
1734 vperm 18,18,18,6
1735 .long 0x7E3A2799
1736 vperm 19,19,19,6
1737 .long 0x7E5B2799
1738 .long 0x7E7C2799
1739 addi 4,4,0x50
1740 b .Lctr32_enc8x_done
1741
1742 .align 5
1743 .Lctr32_enc8x_four:
1744 .long 0x11EF5509
1745 .long 0x12106509
1746 .long 0x12316D09
1747 .long 0x12527509
1748
1749 vperm 15,15,15,6
1750 vperm 16,16,16,6
1751 .long 0x7DE02799
1752 vperm 17,17,17,6
1753 .long 0x7E082799
1754 vperm 18,18,18,6
1755 .long 0x7E3A2799
1756 .long 0x7E5B2799
1757 addi 4,4,0x40
1758 b .Lctr32_enc8x_done
1759
1760 .align 5
1761 .Lctr32_enc8x_three:
1762 .long 0x11EF6509
1763 .long 0x12106D09
1764 .long 0x12317509
1765
1766 vperm 15,15,15,6
1767 vperm 16,16,16,6
1768 .long 0x7DE02799
1769 vperm 17,17,17,6
1770 .long 0x7E082799
1771 .long 0x7E3A2799
1772 addi 4,4,0x30
1773 b .Lctr32_enc8x_done
1774
1775 .align 5
1776 .Lctr32_enc8x_two:
1777 .long 0x11EF6D09
1778 .long 0x12107509
1779
1780 vperm 15,15,15,6
1781 vperm 16,16,16,6
1782 .long 0x7DE02799
1783 .long 0x7E082799
1784 addi 4,4,0x20
1785 b .Lctr32_enc8x_done
1786
1787 .align 5
1788 .Lctr32_enc8x_one:
1789 .long 0x11EF7509
1790
1791 vperm 15,15,15,6
1792 .long 0x7DE02799
1793 addi 4,4,0x10
1794
1795 .Lctr32_enc8x_done:
1796 li 10,79
1797 li 11,95
1798 stvx 6,10,1
1799 addi 10,10,32
1800 stvx 6,11,1
1801 addi 11,11,32
1802 stvx 6,10,1
1803 addi 10,10,32
1804 stvx 6,11,1
1805 addi 11,11,32
1806 stvx 6,10,1
1807 addi 10,10,32
1808 stvx 6,11,1
1809 addi 11,11,32
1810 stvx 6,10,1
1811 addi 10,10,32
1812 stvx 6,11,1
1813 addi 11,11,32
1814
1815 or 12,12,12
1816 lvx 20,10,1
1817 addi 10,10,32
1818 lvx 21,11,1
1819 addi 11,11,32
1820 lvx 22,10,1
1821 addi 10,10,32
1822 lvx 23,11,1
1823 addi 11,11,32
1824 lvx 24,10,1
1825 addi 10,10,32
1826 lvx 25,11,1
1827 addi 11,11,32
1828 lvx 26,10,1
1829 addi 10,10,32
1830 lvx 27,11,1
1831 addi 11,11,32
1832 lvx 28,10,1
1833 addi 10,10,32
1834 lvx 29,11,1
1835 addi 11,11,32
1836 lvx 30,10,1
1837 lvx 31,11,1
1838 ld 26,400(1)
1839 ld 27,408(1)
1840 ld 28,416(1)
1841 ld 29,424(1)
1842 ld 30,432(1)
1843 ld 31,440(1)
1844 addi 1,1,448
1845 blr
1846 .long 0
1847 .byte 0,12,0x04,0,0x80,6,6,0
1848 .long 0
1849 .size aes_p8_ctr32_encrypt_blocks,.-aes_p8_ctr32_encrypt_blocks
1850 .globl aes_p8_xts_encrypt
1851 .type aes_p8_xts_encrypt,@function
1852 .align 5
1853 aes_p8_xts_encrypt:
1854 .localentry aes_p8_xts_encrypt,0
1855
1856 mr 10,3
1857 li 3,-1
1858 cmpldi 5,16
1859 .long 0x4dc00020
1860
1861 lis 0,0xfff0
1862 li 12,-1
1863 li 11,0
1864 or 0,0,0
1865
1866 vspltisb 9,0x07
1867 lvsl 6,11,11
1868 vspltisb 11,0x0f
1869 vxor 6,6,9
1870
1871 li 3,15
1872 lvx 8,0,8
1873 lvsl 5,0,8
1874 lvx 4,3,8
1875 vxor 5,5,11
1876 vperm 8,8,4,5
1877
1878 neg 11,10
1879 lvsr 5,0,11
1880 lvx 2,0,10
1881 addi 10,10,15
1882 vxor 5,5,11
1883
1884 cmpldi 7,0
1885 beq .Lxts_enc_no_key2
1886
1887 lvsr 7,0,7
1888 lwz 9,240(7)
1889 srwi 9,9,1
1890 subi 9,9,1
1891 li 3,16
1892
1893 lvx 0,0,7
1894 lvx 1,3,7
1895 addi 3,3,16
1896 vperm 0,1,0,7
1897 vxor 8,8,0
1898 lvx 0,3,7
1899 addi 3,3,16
1900 mtctr 9
1901
1902 .Ltweak_xts_enc:
1903 vperm 1,0,1,7
1904 .long 0x11080D08
1905 lvx 1,3,7
1906 addi 3,3,16
1907 vperm 0,1,0,7
1908 .long 0x11080508
1909 lvx 0,3,7
1910 addi 3,3,16
1911 bdnz .Ltweak_xts_enc
1912
1913 vperm 1,0,1,7
1914 .long 0x11080D08
1915 lvx 1,3,7
1916 vperm 0,1,0,7
1917 .long 0x11080509
1918
1919 li 8,0
1920 b .Lxts_enc
1921
1922 .Lxts_enc_no_key2:
1923 li 3,-16
1924 and 5,5,3
1925
1926
1927 .Lxts_enc:
1928 lvx 4,0,10
1929 addi 10,10,16
1930
1931 lvsr 7,0,6
1932 lwz 9,240(6)
1933 srwi 9,9,1
1934 subi 9,9,1
1935 li 3,16
1936
1937 vslb 10,9,9
1938 vor 10,10,9
1939 vspltisb 11,1
1940 vsldoi 10,10,11,15
1941
1942 cmpldi 5,96
1943 bge _aesp8_xts_encrypt6x
1944
1945 andi. 7,5,15
1946 subic 0,5,32
1947 subi 7,7,16
1948 subfe 0,0,0
1949 and 0,0,7
1950 add 10,10,0
1951
1952 lvx 0,0,6
1953 lvx 1,3,6
1954 addi 3,3,16
1955 vperm 2,2,4,5
1956 vperm 0,1,0,7
1957 vxor 2,2,8
1958 vxor 2,2,0
1959 lvx 0,3,6
1960 addi 3,3,16
1961 mtctr 9
1962 b .Loop_xts_enc
1963
1964 .align 5
1965 .Loop_xts_enc:
1966 vperm 1,0,1,7
1967 .long 0x10420D08
1968 lvx 1,3,6
1969 addi 3,3,16
1970 vperm 0,1,0,7
1971 .long 0x10420508
1972 lvx 0,3,6
1973 addi 3,3,16
1974 bdnz .Loop_xts_enc
1975
1976 vperm 1,0,1,7
1977 .long 0x10420D08
1978 lvx 1,3,6
1979 li 3,16
1980 vperm 0,1,0,7
1981 vxor 0,0,8
1982 .long 0x10620509
1983
1984 vperm 11,3,3,6
1985
1986 .long 0x7D602799
1987
1988 addi 4,4,16
1989
1990 subic. 5,5,16
1991 beq .Lxts_enc_done
1992
1993 vor 2,4,4
1994 lvx 4,0,10
1995 addi 10,10,16
1996 lvx 0,0,6
1997 lvx 1,3,6
1998 addi 3,3,16
1999
2000 subic 0,5,32
2001 subfe 0,0,0
2002 and 0,0,7
2003 add 10,10,0
2004
2005 vsrab 11,8,9
2006 vaddubm 8,8,8
2007 vsldoi 11,11,11,15
2008 vand 11,11,10
2009 vxor 8,8,11
2010
2011 vperm 2,2,4,5
2012 vperm 0,1,0,7
2013 vxor 2,2,8
2014 vxor 3,3,0
2015 vxor 2,2,0
2016 lvx 0,3,6
2017 addi 3,3,16
2018
2019 mtctr 9
2020 cmpldi 5,16
2021 bge .Loop_xts_enc
2022
2023 vxor 3,3,8
2024 lvsr 5,0,5
2025 vxor 4,4,4
2026 vspltisb 11,-1
2027 vperm 4,4,11,5
2028 vsel 2,2,3,4
2029
2030 subi 11,4,17
2031 subi 4,4,16
2032 mtctr 5
2033 li 5,16
2034 .Loop_xts_enc_steal:
2035 lbzu 0,1(11)
2036 stb 0,16(11)
2037 bdnz .Loop_xts_enc_steal
2038
2039 mtctr 9
2040 b .Loop_xts_enc
2041
2042 .Lxts_enc_done:
2043 cmpldi 8,0
2044 beq .Lxts_enc_ret
2045
2046 vsrab 11,8,9
2047 vaddubm 8,8,8
2048 vsldoi 11,11,11,15
2049 vand 11,11,10
2050 vxor 8,8,11
2051
2052 vperm 8,8,8,6
2053 .long 0x7D004799
2054
2055 .Lxts_enc_ret:
2056 or 12,12,12
2057 li 3,0
2058 blr
2059 .long 0
2060 .byte 0,12,0x04,0,0x80,6,6,0
2061 .long 0
2062 .size aes_p8_xts_encrypt,.-aes_p8_xts_encrypt
2063
2064 .globl aes_p8_xts_decrypt
2065 .type aes_p8_xts_decrypt,@function
2066 .align 5
2067 aes_p8_xts_decrypt:
2068 .localentry aes_p8_xts_decrypt,0
2069
2070 mr 10,3
2071 li 3,-1
2072 cmpldi 5,16
2073 .long 0x4dc00020
2074
2075 lis 0,0xfff8
2076 li 12,-1
2077 li 11,0
2078 or 0,0,0
2079
2080 andi. 0,5,15
2081 neg 0,0
2082 andi. 0,0,16
2083 sub 5,5,0
2084
2085 vspltisb 9,0x07
2086 lvsl 6,11,11
2087 vspltisb 11,0x0f
2088 vxor 6,6,9
2089
2090 li 3,15
2091 lvx 8,0,8
2092 lvsl 5,0,8
2093 lvx 4,3,8
2094 vxor 5,5,11
2095 vperm 8,8,4,5
2096
2097 neg 11,10
2098 lvsr 5,0,11
2099 lvx 2,0,10
2100 addi 10,10,15
2101 vxor 5,5,11
2102
2103 cmpldi 7,0
2104 beq .Lxts_dec_no_key2
2105
2106 lvsr 7,0,7
2107 lwz 9,240(7)
2108 srwi 9,9,1
2109 subi 9,9,1
2110 li 3,16
2111
2112 lvx 0,0,7
2113 lvx 1,3,7
2114 addi 3,3,16
2115 vperm 0,1,0,7
2116 vxor 8,8,0
2117 lvx 0,3,7
2118 addi 3,3,16
2119 mtctr 9
2120
2121 .Ltweak_xts_dec:
2122 vperm 1,0,1,7
2123 .long 0x11080D08
2124 lvx 1,3,7
2125 addi 3,3,16
2126 vperm 0,1,0,7
2127 .long 0x11080508
2128 lvx 0,3,7
2129 addi 3,3,16
2130 bdnz .Ltweak_xts_dec
2131
2132 vperm 1,0,1,7
2133 .long 0x11080D08
2134 lvx 1,3,7
2135 vperm 0,1,0,7
2136 .long 0x11080509
2137
2138 li 8,0
2139 b .Lxts_dec
2140
2141 .Lxts_dec_no_key2:
2142 neg 3,5
2143 andi. 3,3,15
2144 add 5,5,3
2145
2146
2147 .Lxts_dec:
2148 lvx 4,0,10
2149 addi 10,10,16
2150
2151 lvsr 7,0,6
2152 lwz 9,240(6)
2153 srwi 9,9,1
2154 subi 9,9,1
2155 li 3,16
2156
2157 vslb 10,9,9
2158 vor 10,10,9
2159 vspltisb 11,1
2160 vsldoi 10,10,11,15
2161
2162 cmpldi 5,96
2163 bge _aesp8_xts_decrypt6x
2164
2165 lvx 0,0,6
2166 lvx 1,3,6
2167 addi 3,3,16
2168 vperm 2,2,4,5
2169 vperm 0,1,0,7
2170 vxor 2,2,8
2171 vxor 2,2,0
2172 lvx 0,3,6
2173 addi 3,3,16
2174 mtctr 9
2175
2176 cmpldi 5,16
2177 blt .Ltail_xts_dec
2178
2179
2180 .align 5
2181 .Loop_xts_dec:
2182 vperm 1,0,1,7
2183 .long 0x10420D48
2184 lvx 1,3,6
2185 addi 3,3,16
2186 vperm 0,1,0,7
2187 .long 0x10420548
2188 lvx 0,3,6
2189 addi 3,3,16
2190 bdnz .Loop_xts_dec
2191
2192 vperm 1,0,1,7
2193 .long 0x10420D48
2194 lvx 1,3,6
2195 li 3,16
2196 vperm 0,1,0,7
2197 vxor 0,0,8
2198 .long 0x10620549
2199
2200 vperm 11,3,3,6
2201
2202 .long 0x7D602799
2203
2204 addi 4,4,16
2205
2206 subic. 5,5,16
2207 beq .Lxts_dec_done
2208
2209 vor 2,4,4
2210 lvx 4,0,10
2211 addi 10,10,16
2212 lvx 0,0,6
2213 lvx 1,3,6
2214 addi 3,3,16
2215
2216 vsrab 11,8,9
2217 vaddubm 8,8,8
2218 vsldoi 11,11,11,15
2219 vand 11,11,10
2220 vxor 8,8,11
2221
2222 vperm 2,2,4,5
2223 vperm 0,1,0,7
2224 vxor 2,2,8
2225 vxor 2,2,0
2226 lvx 0,3,6
2227 addi 3,3,16
2228
2229 mtctr 9
2230 cmpldi 5,16
2231 bge .Loop_xts_dec
2232
2233 .Ltail_xts_dec:
2234 vsrab 11,8,9
2235 vaddubm 12,8,8
2236 vsldoi 11,11,11,15
2237 vand 11,11,10
2238 vxor 12,12,11
2239
2240 subi 10,10,16
2241 add 10,10,5
2242
2243 vxor 2,2,8
2244 vxor 2,2,12
2245
2246 .Loop_xts_dec_short:
2247 vperm 1,0,1,7
2248 .long 0x10420D48
2249 lvx 1,3,6
2250 addi 3,3,16
2251 vperm 0,1,0,7
2252 .long 0x10420548
2253 lvx 0,3,6
2254 addi 3,3,16
2255 bdnz .Loop_xts_dec_short
2256
2257 vperm 1,0,1,7
2258 .long 0x10420D48
2259 lvx 1,3,6
2260 li 3,16
2261 vperm 0,1,0,7
2262 vxor 0,0,12
2263 .long 0x10620549
2264
2265 vperm 11,3,3,6
2266
2267 .long 0x7D602799
2268
2269
2270 vor 2,4,4
2271 lvx 4,0,10
2272
2273 lvx 0,0,6
2274 lvx 1,3,6
2275 addi 3,3,16
2276 vperm 2,2,4,5
2277 vperm 0,1,0,7
2278
2279 lvsr 5,0,5
2280 vxor 4,4,4
2281 vspltisb 11,-1
2282 vperm 4,4,11,5
2283 vsel 2,2,3,4
2284
2285 vxor 0,0,8
2286 vxor 2,2,0
2287 lvx 0,3,6
2288 addi 3,3,16
2289
2290 subi 11,4,1
2291 mtctr 5
2292 li 5,16
2293 .Loop_xts_dec_steal:
2294 lbzu 0,1(11)
2295 stb 0,16(11)
2296 bdnz .Loop_xts_dec_steal
2297
2298 mtctr 9
2299 b .Loop_xts_dec
2300
2301 .Lxts_dec_done:
2302 cmpldi 8,0
2303 beq .Lxts_dec_ret
2304
2305 vsrab 11,8,9
2306 vaddubm 8,8,8
2307 vsldoi 11,11,11,15
2308 vand 11,11,10
2309 vxor 8,8,11
2310
2311 vperm 8,8,8,6
2312 .long 0x7D004799
2313
2314 .Lxts_dec_ret:
2315 or 12,12,12
2316 li 3,0
2317 blr
2318 .long 0
2319 .byte 0,12,0x04,0,0x80,6,6,0
2320 .long 0
2321 .size aes_p8_xts_decrypt,.-aes_p8_xts_decrypt
2322 .align 5
2323 _aesp8_xts_encrypt6x:
2324 stdu 1,-448(1)
2325 mflr 11
2326 li 7,207
2327 li 3,223
2328 std 11,464(1)
2329 stvx 20,7,1
2330 addi 7,7,32
2331 stvx 21,3,1
2332 addi 3,3,32
2333 stvx 22,7,1
2334 addi 7,7,32
2335 stvx 23,3,1
2336 addi 3,3,32
2337 stvx 24,7,1
2338 addi 7,7,32
2339 stvx 25,3,1
2340 addi 3,3,32
2341 stvx 26,7,1
2342 addi 7,7,32
2343 stvx 27,3,1
2344 addi 3,3,32
2345 stvx 28,7,1
2346 addi 7,7,32
2347 stvx 29,3,1
2348 addi 3,3,32
2349 stvx 30,7,1
2350 stvx 31,3,1
2351 li 0,-1
2352 stw 12,396(1)
2353 li 3,0x10
2354 std 26,400(1)
2355 li 26,0x20
2356 std 27,408(1)
2357 li 27,0x30
2358 std 28,416(1)
2359 li 28,0x40
2360 std 29,424(1)
2361 li 29,0x50
2362 std 30,432(1)
2363 li 30,0x60
2364 std 31,440(1)
2365 li 31,0x70
2366 or 0,0,0
2367
2368 subi 9,9,3
2369
2370 lvx 23,0,6
2371 lvx 30,3,6
2372 addi 6,6,0x20
2373 lvx 31,0,6
2374 vperm 23,30,23,7
2375 addi 7,1,64+15
2376 mtctr 9
2377
2378 .Load_xts_enc_key:
2379 vperm 24,31,30,7
2380 lvx 30,3,6
2381 addi 6,6,0x20
2382 stvx 24,0,7
2383 vperm 25,30,31,7
2384 lvx 31,0,6
2385 stvx 25,3,7
2386 addi 7,7,0x20
2387 bdnz .Load_xts_enc_key
2388
2389 lvx 26,3,6
2390 vperm 24,31,30,7
2391 lvx 27,26,6
2392 stvx 24,0,7
2393 vperm 25,26,31,7
2394 lvx 28,27,6
2395 stvx 25,3,7
2396 addi 7,1,64+15
2397 vperm 26,27,26,7
2398 lvx 29,28,6
2399 vperm 27,28,27,7
2400 lvx 30,29,6
2401 vperm 28,29,28,7
2402 lvx 31,30,6
2403 vperm 29,30,29,7
2404 lvx 22,31,6
2405 vperm 30,31,30,7
2406 lvx 24,0,7
2407 vperm 31,22,31,7
2408 lvx 25,3,7
2409
2410 vperm 0,2,4,5
2411 subi 10,10,31
2412 vxor 17,8,23
2413 vsrab 11,8,9
2414 vaddubm 8,8,8
2415 vsldoi 11,11,11,15
2416 vand 11,11,10
2417 vxor 7,0,17
2418 vxor 8,8,11
2419
2420 .long 0x7C235699
2421 vxor 18,8,23
2422 vsrab 11,8,9
2423 vaddubm 8,8,8
2424 vsldoi 11,11,11,15
2425 vperm 1,1,1,6
2426 vand 11,11,10
2427 vxor 12,1,18
2428 vxor 8,8,11
2429
2430 .long 0x7C5A5699
2431 andi. 31,5,15
2432 vxor 19,8,23
2433 vsrab 11,8,9
2434 vaddubm 8,8,8
2435 vsldoi 11,11,11,15
2436 vperm 2,2,2,6
2437 vand 11,11,10
2438 vxor 13,2,19
2439 vxor 8,8,11
2440
2441 .long 0x7C7B5699
2442 sub 5,5,31
2443 vxor 20,8,23
2444 vsrab 11,8,9
2445 vaddubm 8,8,8
2446 vsldoi 11,11,11,15
2447 vperm 3,3,3,6
2448 vand 11,11,10
2449 vxor 14,3,20
2450 vxor 8,8,11
2451
2452 .long 0x7C9C5699
2453 subi 5,5,0x60
2454 vxor 21,8,23
2455 vsrab 11,8,9
2456 vaddubm 8,8,8
2457 vsldoi 11,11,11,15
2458 vperm 4,4,4,6
2459 vand 11,11,10
2460 vxor 15,4,21
2461 vxor 8,8,11
2462
2463 .long 0x7CBD5699
2464 addi 10,10,0x60
2465 vxor 22,8,23
2466 vsrab 11,8,9
2467 vaddubm 8,8,8
2468 vsldoi 11,11,11,15
2469 vperm 5,5,5,6
2470 vand 11,11,10
2471 vxor 16,5,22
2472 vxor 8,8,11
2473
2474 vxor 31,31,23
2475 mtctr 9
2476 b .Loop_xts_enc6x
2477
2478 .align 5
2479 .Loop_xts_enc6x:
2480 .long 0x10E7C508
2481 .long 0x118CC508
2482 .long 0x11ADC508
2483 .long 0x11CEC508
2484 .long 0x11EFC508
2485 .long 0x1210C508
2486 lvx 24,26,7
2487 addi 7,7,0x20
2488
2489 .long 0x10E7CD08
2490 .long 0x118CCD08
2491 .long 0x11ADCD08
2492 .long 0x11CECD08
2493 .long 0x11EFCD08
2494 .long 0x1210CD08
2495 lvx 25,3,7
2496 bdnz .Loop_xts_enc6x
2497
2498 subic 5,5,96
2499 vxor 0,17,31
2500 .long 0x10E7C508
2501 .long 0x118CC508
2502 vsrab 11,8,9
2503 vxor 17,8,23
2504 vaddubm 8,8,8
2505 .long 0x11ADC508
2506 .long 0x11CEC508
2507 vsldoi 11,11,11,15
2508 .long 0x11EFC508
2509 .long 0x1210C508
2510
2511 subfe. 0,0,0
2512 vand 11,11,10
2513 .long 0x10E7CD08
2514 .long 0x118CCD08
2515 vxor 8,8,11
2516 .long 0x11ADCD08
2517 .long 0x11CECD08
2518 vxor 1,18,31
2519 vsrab 11,8,9
2520 vxor 18,8,23
2521 .long 0x11EFCD08
2522 .long 0x1210CD08
2523
2524 and 0,0,5
2525 vaddubm 8,8,8
2526 vsldoi 11,11,11,15
2527 .long 0x10E7D508
2528 .long 0x118CD508
2529 vand 11,11,10
2530 .long 0x11ADD508
2531 .long 0x11CED508
2532 vxor 8,8,11
2533 .long 0x11EFD508
2534 .long 0x1210D508
2535
2536 add 10,10,0
2537
2538
2539
2540 vxor 2,19,31
2541 vsrab 11,8,9
2542 vxor 19,8,23
2543 vaddubm 8,8,8
2544 .long 0x10E7DD08
2545 .long 0x118CDD08
2546 vsldoi 11,11,11,15
2547 .long 0x11ADDD08
2548 .long 0x11CEDD08
2549 vand 11,11,10
2550 .long 0x11EFDD08
2551 .long 0x1210DD08
2552
2553 addi 7,1,64+15
2554 vxor 8,8,11
2555 .long 0x10E7E508
2556 .long 0x118CE508
2557 vxor 3,20,31
2558 vsrab 11,8,9
2559 vxor 20,8,23
2560 .long 0x11ADE508
2561 .long 0x11CEE508
2562 vaddubm 8,8,8
2563 vsldoi 11,11,11,15
2564 .long 0x11EFE508
2565 .long 0x1210E508
2566 lvx 24,0,7
2567 vand 11,11,10
2568
2569 .long 0x10E7ED08
2570 .long 0x118CED08
2571 vxor 8,8,11
2572 .long 0x11ADED08
2573 .long 0x11CEED08
2574 vxor 4,21,31
2575 vsrab 11,8,9
2576 vxor 21,8,23
2577 .long 0x11EFED08
2578 .long 0x1210ED08
2579 lvx 25,3,7
2580 vaddubm 8,8,8
2581 vsldoi 11,11,11,15
2582
2583 .long 0x10E7F508
2584 .long 0x118CF508
2585 vand 11,11,10
2586 .long 0x11ADF508
2587 .long 0x11CEF508
2588 vxor 8,8,11
2589 .long 0x11EFF508
2590 .long 0x1210F508
2591 vxor 5,22,31
2592 vsrab 11,8,9
2593 vxor 22,8,23
2594
2595 .long 0x10E70509
2596 .long 0x7C005699
2597 vaddubm 8,8,8
2598 vsldoi 11,11,11,15
2599 .long 0x118C0D09
2600 .long 0x7C235699
2601 .long 0x11AD1509
2602 vperm 0,0,0,6
2603 .long 0x7C5A5699
2604 vand 11,11,10
2605 .long 0x11CE1D09
2606 vperm 1,1,1,6
2607 .long 0x7C7B5699
2608 .long 0x11EF2509
2609 vperm 2,2,2,6
2610 .long 0x7C9C5699
2611 vxor 8,8,11
2612 .long 0x11702D09
2613
2614 vperm 3,3,3,6
2615 .long 0x7CBD5699
2616 addi 10,10,0x60
2617 vperm 4,4,4,6
2618 vperm 5,5,5,6
2619
2620 vperm 7,7,7,6
2621 vperm 12,12,12,6
2622 .long 0x7CE02799
2623 vxor 7,0,17
2624 vperm 13,13,13,6
2625 .long 0x7D832799
2626 vxor 12,1,18
2627 vperm 14,14,14,6
2628 .long 0x7DBA2799
2629 vxor 13,2,19
2630 vperm 15,15,15,6
2631 .long 0x7DDB2799
2632 vxor 14,3,20
2633 vperm 16,11,11,6
2634 .long 0x7DFC2799
2635 vxor 15,4,21
2636 .long 0x7E1D2799
2637
2638 vxor 16,5,22
2639 addi 4,4,0x60
2640
2641 mtctr 9
2642 beq .Loop_xts_enc6x
2643
2644 addic. 5,5,0x60
2645 beq .Lxts_enc6x_zero
2646 cmpwi 5,0x20
2647 blt .Lxts_enc6x_one
2648 nop
2649 beq .Lxts_enc6x_two
2650 cmpwi 5,0x40
2651 blt .Lxts_enc6x_three
2652 nop
2653 beq .Lxts_enc6x_four
2654
2655 .Lxts_enc6x_five:
2656 vxor 7,1,17
2657 vxor 12,2,18
2658 vxor 13,3,19
2659 vxor 14,4,20
2660 vxor 15,5,21
2661
2662 bl _aesp8_xts_enc5x
2663
2664 vperm 7,7,7,6
2665 vor 17,22,22
2666 vperm 12,12,12,6
2667 .long 0x7CE02799
2668 vperm 13,13,13,6
2669 .long 0x7D832799
2670 vperm 14,14,14,6
2671 .long 0x7DBA2799
2672 vxor 11,15,22
2673 vperm 15,15,15,6
2674 .long 0x7DDB2799
2675 .long 0x7DFC2799
2676 addi 4,4,0x50
2677 bne .Lxts_enc6x_steal
2678 b .Lxts_enc6x_done
2679
2680 .align 4
2681 .Lxts_enc6x_four:
2682 vxor 7,2,17
2683 vxor 12,3,18
2684 vxor 13,4,19
2685 vxor 14,5,20
2686 vxor 15,15,15
2687
2688 bl _aesp8_xts_enc5x
2689
2690 vperm 7,7,7,6
2691 vor 17,21,21
2692 vperm 12,12,12,6
2693 .long 0x7CE02799
2694 vperm 13,13,13,6
2695 .long 0x7D832799
2696 vxor 11,14,21
2697 vperm 14,14,14,6
2698 .long 0x7DBA2799
2699 .long 0x7DDB2799
2700 addi 4,4,0x40
2701 bne .Lxts_enc6x_steal
2702 b .Lxts_enc6x_done
2703
2704 .align 4
2705 .Lxts_enc6x_three:
2706 vxor 7,3,17
2707 vxor 12,4,18
2708 vxor 13,5,19
2709 vxor 14,14,14
2710 vxor 15,15,15
2711
2712 bl _aesp8_xts_enc5x
2713
2714 vperm 7,7,7,6
2715 vor 17,20,20
2716 vperm 12,12,12,6
2717 .long 0x7CE02799
2718 vxor 11,13,20
2719 vperm 13,13,13,6
2720 .long 0x7D832799
2721 .long 0x7DBA2799
2722 addi 4,4,0x30
2723 bne .Lxts_enc6x_steal
2724 b .Lxts_enc6x_done
2725
2726 .align 4
2727 .Lxts_enc6x_two:
2728 vxor 7,4,17
2729 vxor 12,5,18
2730 vxor 13,13,13
2731 vxor 14,14,14
2732 vxor 15,15,15
2733
2734 bl _aesp8_xts_enc5x
2735
2736 vperm 7,7,7,6
2737 vor 17,19,19
2738 vxor 11,12,19
2739 vperm 12,12,12,6
2740 .long 0x7CE02799
2741 .long 0x7D832799
2742 addi 4,4,0x20
2743 bne .Lxts_enc6x_steal
2744 b .Lxts_enc6x_done
2745
2746 .align 4
2747 .Lxts_enc6x_one:
2748 vxor 7,5,17
2749 nop
2750 .Loop_xts_enc1x:
2751 .long 0x10E7C508
2752 lvx 24,26,7
2753 addi 7,7,0x20
2754
2755 .long 0x10E7CD08
2756 lvx 25,3,7
2757 bdnz .Loop_xts_enc1x
2758
2759 add 10,10,31
2760 cmpwi 31,0
2761 .long 0x10E7C508
2762
2763 subi 10,10,16
2764 .long 0x10E7CD08
2765
2766 lvsr 5,0,31
2767 .long 0x10E7D508
2768
2769 .long 0x7C005699
2770 .long 0x10E7DD08
2771
2772 addi 7,1,64+15
2773 .long 0x10E7E508
2774 lvx 24,0,7
2775
2776 .long 0x10E7ED08
2777 lvx 25,3,7
2778 vxor 17,17,31
2779
2780 vperm 0,0,0,6
2781 .long 0x10E7F508
2782
2783 vperm 0,0,0,5
2784 .long 0x10E78D09
2785
2786 vor 17,18,18
2787 vxor 11,7,18
2788 vperm 7,7,7,6
2789 .long 0x7CE02799
2790 addi 4,4,0x10
2791 bne .Lxts_enc6x_steal
2792 b .Lxts_enc6x_done
2793
2794 .align 4
2795 .Lxts_enc6x_zero:
2796 cmpwi 31,0
2797 beq .Lxts_enc6x_done
2798
2799 add 10,10,31
2800 subi 10,10,16
2801 .long 0x7C005699
2802 lvsr 5,0,31
2803 vperm 0,0,0,6
2804 vperm 0,0,0,5
2805 vxor 11,11,17
2806 .Lxts_enc6x_steal:
2807 vxor 0,0,17
2808 vxor 7,7,7
2809 vspltisb 12,-1
2810 vperm 7,7,12,5
2811 vsel 7,0,11,7
2812
2813 subi 30,4,17
2814 subi 4,4,16
2815 mtctr 31
2816 .Loop_xts_enc6x_steal:
2817 lbzu 0,1(30)
2818 stb 0,16(30)
2819 bdnz .Loop_xts_enc6x_steal
2820
2821 li 31,0
2822 mtctr 9
2823 b .Loop_xts_enc1x
2824
2825 .align 4
2826 .Lxts_enc6x_done:
2827 cmpldi 8,0
2828 beq .Lxts_enc6x_ret
2829
2830 vxor 8,17,23
2831 vperm 8,8,8,6
2832 .long 0x7D004799
2833
2834 .Lxts_enc6x_ret:
2835 mtlr 11
2836 li 10,79
2837 li 11,95
2838 stvx 9,10,1
2839 addi 10,10,32
2840 stvx 9,11,1
2841 addi 11,11,32
2842 stvx 9,10,1
2843 addi 10,10,32
2844 stvx 9,11,1
2845 addi 11,11,32
2846 stvx 9,10,1
2847 addi 10,10,32
2848 stvx 9,11,1
2849 addi 11,11,32
2850 stvx 9,10,1
2851 addi 10,10,32
2852 stvx 9,11,1
2853 addi 11,11,32
2854
2855 or 12,12,12
2856 lvx 20,10,1
2857 addi 10,10,32
2858 lvx 21,11,1
2859 addi 11,11,32
2860 lvx 22,10,1
2861 addi 10,10,32
2862 lvx 23,11,1
2863 addi 11,11,32
2864 lvx 24,10,1
2865 addi 10,10,32
2866 lvx 25,11,1
2867 addi 11,11,32
2868 lvx 26,10,1
2869 addi 10,10,32
2870 lvx 27,11,1
2871 addi 11,11,32
2872 lvx 28,10,1
2873 addi 10,10,32
2874 lvx 29,11,1
2875 addi 11,11,32
2876 lvx 30,10,1
2877 lvx 31,11,1
2878 ld 26,400(1)
2879 ld 27,408(1)
2880 ld 28,416(1)
2881 ld 29,424(1)
2882 ld 30,432(1)
2883 ld 31,440(1)
2884 addi 1,1,448
2885 blr
2886 .long 0
2887 .byte 0,12,0x04,1,0x80,6,6,0
2888 .long 0
2889
2890 .align 5
2891 _aesp8_xts_enc5x:
2892 .long 0x10E7C508
2893 .long 0x118CC508
2894 .long 0x11ADC508
2895 .long 0x11CEC508
2896 .long 0x11EFC508
2897 lvx 24,26,7
2898 addi 7,7,0x20
2899
2900 .long 0x10E7CD08
2901 .long 0x118CCD08
2902 .long 0x11ADCD08
2903 .long 0x11CECD08
2904 .long 0x11EFCD08
2905 lvx 25,3,7
2906 bdnz _aesp8_xts_enc5x
2907
2908 add 10,10,31
2909 cmpwi 31,0
2910 .long 0x10E7C508
2911 .long 0x118CC508
2912 .long 0x11ADC508
2913 .long 0x11CEC508
2914 .long 0x11EFC508
2915
2916 subi 10,10,16
2917 .long 0x10E7CD08
2918 .long 0x118CCD08
2919 .long 0x11ADCD08
2920 .long 0x11CECD08
2921 .long 0x11EFCD08
2922 vxor 17,17,31
2923
2924 .long 0x10E7D508
2925 lvsr 5,0,31
2926 .long 0x118CD508
2927 .long 0x11ADD508
2928 .long 0x11CED508
2929 .long 0x11EFD508
2930 vxor 1,18,31
2931
2932 .long 0x10E7DD08
2933 .long 0x7C005699
2934 .long 0x118CDD08
2935 .long 0x11ADDD08
2936 .long 0x11CEDD08
2937 .long 0x11EFDD08
2938 vxor 2,19,31
2939
2940 addi 7,1,64+15
2941 .long 0x10E7E508
2942 .long 0x118CE508
2943 .long 0x11ADE508
2944 .long 0x11CEE508
2945 .long 0x11EFE508
2946 lvx 24,0,7
2947 vxor 3,20,31
2948
2949 .long 0x10E7ED08
2950 vperm 0,0,0,6
2951 .long 0x118CED08
2952 .long 0x11ADED08
2953 .long 0x11CEED08
2954 .long 0x11EFED08
2955 lvx 25,3,7
2956 vxor 4,21,31
2957
2958 .long 0x10E7F508
2959 vperm 0,0,0,5
2960 .long 0x118CF508
2961 .long 0x11ADF508
2962 .long 0x11CEF508
2963 .long 0x11EFF508
2964
2965 .long 0x10E78D09
2966 .long 0x118C0D09
2967 .long 0x11AD1509
2968 .long 0x11CE1D09
2969 .long 0x11EF2509
2970 blr
2971 .long 0
2972 .byte 0,12,0x14,0,0,0,0,0
2973
2974 .align 5
2975 _aesp8_xts_decrypt6x:
2976 stdu 1,-448(1)
2977 mflr 11
2978 li 7,207
2979 li 3,223
2980 std 11,464(1)
2981 stvx 20,7,1
2982 addi 7,7,32
2983 stvx 21,3,1
2984 addi 3,3,32
2985 stvx 22,7,1
2986 addi 7,7,32
2987 stvx 23,3,1
2988 addi 3,3,32
2989 stvx 24,7,1
2990 addi 7,7,32
2991 stvx 25,3,1
2992 addi 3,3,32
2993 stvx 26,7,1
2994 addi 7,7,32
2995 stvx 27,3,1
2996 addi 3,3,32
2997 stvx 28,7,1
2998 addi 7,7,32
2999 stvx 29,3,1
3000 addi 3,3,32
3001 stvx 30,7,1
3002 stvx 31,3,1
3003 li 0,-1
3004 stw 12,396(1)
3005 li 3,0x10
3006 std 26,400(1)
3007 li 26,0x20
3008 std 27,408(1)
3009 li 27,0x30
3010 std 28,416(1)
3011 li 28,0x40
3012 std 29,424(1)
3013 li 29,0x50
3014 std 30,432(1)
3015 li 30,0x60
3016 std 31,440(1)
3017 li 31,0x70
3018 or 0,0,0
3019
3020 subi 9,9,3
3021
3022 lvx 23,0,6
3023 lvx 30,3,6
3024 addi 6,6,0x20
3025 lvx 31,0,6
3026 vperm 23,30,23,7
3027 addi 7,1,64+15
3028 mtctr 9
3029
3030 .Load_xts_dec_key:
3031 vperm 24,31,30,7
3032 lvx 30,3,6
3033 addi 6,6,0x20
3034 stvx 24,0,7
3035 vperm 25,30,31,7
3036 lvx 31,0,6
3037 stvx 25,3,7
3038 addi 7,7,0x20
3039 bdnz .Load_xts_dec_key
3040
3041 lvx 26,3,6
3042 vperm 24,31,30,7
3043 lvx 27,26,6
3044 stvx 24,0,7
3045 vperm 25,26,31,7
3046 lvx 28,27,6
3047 stvx 25,3,7
3048 addi 7,1,64+15
3049 vperm 26,27,26,7
3050 lvx 29,28,6
3051 vperm 27,28,27,7
3052 lvx 30,29,6
3053 vperm 28,29,28,7
3054 lvx 31,30,6
3055 vperm 29,30,29,7
3056 lvx 22,31,6
3057 vperm 30,31,30,7
3058 lvx 24,0,7
3059 vperm 31,22,31,7
3060 lvx 25,3,7
3061
3062 vperm 0,2,4,5
3063 subi 10,10,31
3064 vxor 17,8,23
3065 vsrab 11,8,9
3066 vaddubm 8,8,8
3067 vsldoi 11,11,11,15
3068 vand 11,11,10
3069 vxor 7,0,17
3070 vxor 8,8,11
3071
3072 .long 0x7C235699
3073 vxor 18,8,23
3074 vsrab 11,8,9
3075 vaddubm 8,8,8
3076 vsldoi 11,11,11,15
3077 vperm 1,1,1,6
3078 vand 11,11,10
3079 vxor 12,1,18
3080 vxor 8,8,11
3081
3082 .long 0x7C5A5699
3083 andi. 31,5,15
3084 vxor 19,8,23
3085 vsrab 11,8,9
3086 vaddubm 8,8,8
3087 vsldoi 11,11,11,15
3088 vperm 2,2,2,6
3089 vand 11,11,10
3090 vxor 13,2,19
3091 vxor 8,8,11
3092
3093 .long 0x7C7B5699
3094 sub 5,5,31
3095 vxor 20,8,23
3096 vsrab 11,8,9
3097 vaddubm 8,8,8
3098 vsldoi 11,11,11,15
3099 vperm 3,3,3,6
3100 vand 11,11,10
3101 vxor 14,3,20
3102 vxor 8,8,11
3103
3104 .long 0x7C9C5699
3105 subi 5,5,0x60
3106 vxor 21,8,23
3107 vsrab 11,8,9
3108 vaddubm 8,8,8
3109 vsldoi 11,11,11,15
3110 vperm 4,4,4,6
3111 vand 11,11,10
3112 vxor 15,4,21
3113 vxor 8,8,11
3114
3115 .long 0x7CBD5699
3116 addi 10,10,0x60
3117 vxor 22,8,23
3118 vsrab 11,8,9
3119 vaddubm 8,8,8
3120 vsldoi 11,11,11,15
3121 vperm 5,5,5,6
3122 vand 11,11,10
3123 vxor 16,5,22
3124 vxor 8,8,11
3125
3126 vxor 31,31,23
3127 mtctr 9
3128 b .Loop_xts_dec6x
3129
3130 .align 5
3131 .Loop_xts_dec6x:
3132 .long 0x10E7C548
3133 .long 0x118CC548
3134 .long 0x11ADC548
3135 .long 0x11CEC548
3136 .long 0x11EFC548
3137 .long 0x1210C548
3138 lvx 24,26,7
3139 addi 7,7,0x20
3140
3141 .long 0x10E7CD48
3142 .long 0x118CCD48
3143 .long 0x11ADCD48
3144 .long 0x11CECD48
3145 .long 0x11EFCD48
3146 .long 0x1210CD48
3147 lvx 25,3,7
3148 bdnz .Loop_xts_dec6x
3149
3150 subic 5,5,96
3151 vxor 0,17,31
3152 .long 0x10E7C548
3153 .long 0x118CC548
3154 vsrab 11,8,9
3155 vxor 17,8,23
3156 vaddubm 8,8,8
3157 .long 0x11ADC548
3158 .long 0x11CEC548
3159 vsldoi 11,11,11,15
3160 .long 0x11EFC548
3161 .long 0x1210C548
3162
3163 subfe. 0,0,0
3164 vand 11,11,10
3165 .long 0x10E7CD48
3166 .long 0x118CCD48
3167 vxor 8,8,11
3168 .long 0x11ADCD48
3169 .long 0x11CECD48
3170 vxor 1,18,31
3171 vsrab 11,8,9
3172 vxor 18,8,23
3173 .long 0x11EFCD48
3174 .long 0x1210CD48
3175
3176 and 0,0,5
3177 vaddubm 8,8,8
3178 vsldoi 11,11,11,15
3179 .long 0x10E7D548
3180 .long 0x118CD548
3181 vand 11,11,10
3182 .long 0x11ADD548
3183 .long 0x11CED548
3184 vxor 8,8,11
3185 .long 0x11EFD548
3186 .long 0x1210D548
3187
3188 add 10,10,0
3189
3190
3191
3192 vxor 2,19,31
3193 vsrab 11,8,9
3194 vxor 19,8,23
3195 vaddubm 8,8,8
3196 .long 0x10E7DD48
3197 .long 0x118CDD48
3198 vsldoi 11,11,11,15
3199 .long 0x11ADDD48
3200 .long 0x11CEDD48
3201 vand 11,11,10
3202 .long 0x11EFDD48
3203 .long 0x1210DD48
3204
3205 addi 7,1,64+15
3206 vxor 8,8,11
3207 .long 0x10E7E548
3208 .long 0x118CE548
3209 vxor 3,20,31
3210 vsrab 11,8,9
3211 vxor 20,8,23
3212 .long 0x11ADE548
3213 .long 0x11CEE548
3214 vaddubm 8,8,8
3215 vsldoi 11,11,11,15
3216 .long 0x11EFE548
3217 .long 0x1210E548
3218 lvx 24,0,7
3219 vand 11,11,10
3220
3221 .long 0x10E7ED48
3222 .long 0x118CED48
3223 vxor 8,8,11
3224 .long 0x11ADED48
3225 .long 0x11CEED48
3226 vxor 4,21,31
3227 vsrab 11,8,9
3228 vxor 21,8,23
3229 .long 0x11EFED48
3230 .long 0x1210ED48
3231 lvx 25,3,7
3232 vaddubm 8,8,8
3233 vsldoi 11,11,11,15
3234
3235 .long 0x10E7F548
3236 .long 0x118CF548
3237 vand 11,11,10
3238 .long 0x11ADF548
3239 .long 0x11CEF548
3240 vxor 8,8,11
3241 .long 0x11EFF548
3242 .long 0x1210F548
3243 vxor 5,22,31
3244 vsrab 11,8,9
3245 vxor 22,8,23
3246
3247 .long 0x10E70549
3248 .long 0x7C005699
3249 vaddubm 8,8,8
3250 vsldoi 11,11,11,15
3251 .long 0x118C0D49
3252 .long 0x7C235699
3253 .long 0x11AD1549
3254 vperm 0,0,0,6
3255 .long 0x7C5A5699
3256 vand 11,11,10
3257 .long 0x11CE1D49
3258 vperm 1,1,1,6
3259 .long 0x7C7B5699
3260 .long 0x11EF2549
3261 vperm 2,2,2,6
3262 .long 0x7C9C5699
3263 vxor 8,8,11
3264 .long 0x12102D49
3265 vperm 3,3,3,6
3266 .long 0x7CBD5699
3267 addi 10,10,0x60
3268 vperm 4,4,4,6
3269 vperm 5,5,5,6
3270
3271 vperm 7,7,7,6
3272 vperm 12,12,12,6
3273 .long 0x7CE02799
3274 vxor 7,0,17
3275 vperm 13,13,13,6
3276 .long 0x7D832799
3277 vxor 12,1,18
3278 vperm 14,14,14,6
3279 .long 0x7DBA2799
3280 vxor 13,2,19
3281 vperm 15,15,15,6
3282 .long 0x7DDB2799
3283 vxor 14,3,20
3284 vperm 16,16,16,6
3285 .long 0x7DFC2799
3286 vxor 15,4,21
3287 .long 0x7E1D2799
3288 vxor 16,5,22
3289 addi 4,4,0x60
3290
3291 mtctr 9
3292 beq .Loop_xts_dec6x
3293
3294 addic. 5,5,0x60
3295 beq .Lxts_dec6x_zero
3296 cmpwi 5,0x20
3297 blt .Lxts_dec6x_one
3298 nop
3299 beq .Lxts_dec6x_two
3300 cmpwi 5,0x40
3301 blt .Lxts_dec6x_three
3302 nop
3303 beq .Lxts_dec6x_four
3304
3305 .Lxts_dec6x_five:
3306 vxor 7,1,17
3307 vxor 12,2,18
3308 vxor 13,3,19
3309 vxor 14,4,20
3310 vxor 15,5,21
3311
3312 bl _aesp8_xts_dec5x
3313
3314 vperm 7,7,7,6
3315 vor 17,22,22
3316 vxor 18,8,23
3317 vperm 12,12,12,6
3318 .long 0x7CE02799
3319 vxor 7,0,18
3320 vperm 13,13,13,6
3321 .long 0x7D832799
3322 vperm 14,14,14,6
3323 .long 0x7DBA2799
3324 vperm 15,15,15,6
3325 .long 0x7DDB2799
3326 .long 0x7DFC2799
3327 addi 4,4,0x50
3328 bne .Lxts_dec6x_steal
3329 b .Lxts_dec6x_done
3330
3331 .align 4
3332 .Lxts_dec6x_four:
3333 vxor 7,2,17
3334 vxor 12,3,18
3335 vxor 13,4,19
3336 vxor 14,5,20
3337 vxor 15,15,15
3338
3339 bl _aesp8_xts_dec5x
3340
3341 vperm 7,7,7,6
3342 vor 17,21,21
3343 vor 18,22,22
3344 vperm 12,12,12,6
3345 .long 0x7CE02799
3346 vxor 7,0,22
3347 vperm 13,13,13,6
3348 .long 0x7D832799
3349 vperm 14,14,14,6
3350 .long 0x7DBA2799
3351 .long 0x7DDB2799
3352 addi 4,4,0x40
3353 bne .Lxts_dec6x_steal
3354 b .Lxts_dec6x_done
3355
3356 .align 4
3357 .Lxts_dec6x_three:
3358 vxor 7,3,17
3359 vxor 12,4,18
3360 vxor 13,5,19
3361 vxor 14,14,14
3362 vxor 15,15,15
3363
3364 bl _aesp8_xts_dec5x
3365
3366 vperm 7,7,7,6
3367 vor 17,20,20
3368 vor 18,21,21
3369 vperm 12,12,12,6
3370 .long 0x7CE02799
3371 vxor 7,0,21
3372 vperm 13,13,13,6
3373 .long 0x7D832799
3374 .long 0x7DBA2799
3375 addi 4,4,0x30
3376 bne .Lxts_dec6x_steal
3377 b .Lxts_dec6x_done
3378
3379 .align 4
3380 .Lxts_dec6x_two:
3381 vxor 7,4,17
3382 vxor 12,5,18
3383 vxor 13,13,13
3384 vxor 14,14,14
3385 vxor 15,15,15
3386
3387 bl _aesp8_xts_dec5x
3388
3389 vperm 7,7,7,6
3390 vor 17,19,19
3391 vor 18,20,20
3392 vperm 12,12,12,6
3393 .long 0x7CE02799
3394 vxor 7,0,20
3395 .long 0x7D832799
3396 addi 4,4,0x20
3397 bne .Lxts_dec6x_steal
3398 b .Lxts_dec6x_done
3399
3400 .align 4
3401 .Lxts_dec6x_one:
3402 vxor 7,5,17
3403 nop
3404 .Loop_xts_dec1x:
3405 .long 0x10E7C548
3406 lvx 24,26,7
3407 addi 7,7,0x20
3408
3409 .long 0x10E7CD48
3410 lvx 25,3,7
3411 bdnz .Loop_xts_dec1x
3412
3413 subi 0,31,1
3414 .long 0x10E7C548
3415
3416 andi. 0,0,16
3417 cmpwi 31,0
3418 .long 0x10E7CD48
3419
3420 sub 10,10,0
3421 .long 0x10E7D548
3422
3423 .long 0x7C005699
3424 .long 0x10E7DD48
3425
3426 addi 7,1,64+15
3427 .long 0x10E7E548
3428 lvx 24,0,7
3429
3430 .long 0x10E7ED48
3431 lvx 25,3,7
3432 vxor 17,17,31
3433
3434 vperm 0,0,0,6
3435 .long 0x10E7F548
3436
3437 mtctr 9
3438 .long 0x10E78D49
3439
3440 vor 17,18,18
3441 vor 18,19,19
3442 vperm 7,7,7,6
3443 .long 0x7CE02799
3444 addi 4,4,0x10
3445 vxor 7,0,19
3446 bne .Lxts_dec6x_steal
3447 b .Lxts_dec6x_done
3448
3449 .align 4
3450 .Lxts_dec6x_zero:
3451 cmpwi 31,0
3452 beq .Lxts_dec6x_done
3453
3454 .long 0x7C005699
3455 vperm 0,0,0,6
3456 vxor 7,0,18
3457 .Lxts_dec6x_steal:
3458 .long 0x10E7C548
3459 lvx 24,26,7
3460 addi 7,7,0x20
3461
3462 .long 0x10E7CD48
3463 lvx 25,3,7
3464 bdnz .Lxts_dec6x_steal
3465
3466 add 10,10,31
3467 .long 0x10E7C548
3468
3469 cmpwi 31,0
3470 .long 0x10E7CD48
3471
3472 .long 0x7C005699
3473 .long 0x10E7D548
3474
3475 lvsr 5,0,31
3476 .long 0x10E7DD48
3477
3478 addi 7,1,64+15
3479 .long 0x10E7E548
3480 lvx 24,0,7
3481
3482 .long 0x10E7ED48
3483 lvx 25,3,7
3484 vxor 18,18,31
3485
3486 vperm 0,0,0,6
3487 .long 0x10E7F548
3488
3489 vperm 0,0,0,5
3490 .long 0x11679549
3491
3492 vperm 7,11,11,6
3493 .long 0x7CE02799
3494
3495
3496 vxor 7,7,7
3497 vspltisb 12,-1
3498 vperm 7,7,12,5
3499 vsel 7,0,11,7
3500 vxor 7,7,17
3501
3502 subi 30,4,1
3503 mtctr 31
3504 .Loop_xts_dec6x_steal:
3505 lbzu 0,1(30)
3506 stb 0,16(30)
3507 bdnz .Loop_xts_dec6x_steal
3508
3509 li 31,0
3510 mtctr 9
3511 b .Loop_xts_dec1x
3512
3513 .align 4
3514 .Lxts_dec6x_done:
3515 cmpldi 8,0
3516 beq .Lxts_dec6x_ret
3517
3518 vxor 8,17,23
3519 vperm 8,8,8,6
3520 .long 0x7D004799
3521
3522 .Lxts_dec6x_ret:
3523 mtlr 11
3524 li 10,79
3525 li 11,95
3526 stvx 9,10,1
3527 addi 10,10,32
3528 stvx 9,11,1
3529 addi 11,11,32
3530 stvx 9,10,1
3531 addi 10,10,32
3532 stvx 9,11,1
3533 addi 11,11,32
3534 stvx 9,10,1
3535 addi 10,10,32
3536 stvx 9,11,1
3537 addi 11,11,32
3538 stvx 9,10,1
3539 addi 10,10,32
3540 stvx 9,11,1
3541 addi 11,11,32
3542
3543 or 12,12,12
3544 lvx 20,10,1
3545 addi 10,10,32
3546 lvx 21,11,1
3547 addi 11,11,32
3548 lvx 22,10,1
3549 addi 10,10,32
3550 lvx 23,11,1
3551 addi 11,11,32
3552 lvx 24,10,1
3553 addi 10,10,32
3554 lvx 25,11,1
3555 addi 11,11,32
3556 lvx 26,10,1
3557 addi 10,10,32
3558 lvx 27,11,1
3559 addi 11,11,32
3560 lvx 28,10,1
3561 addi 10,10,32
3562 lvx 29,11,1
3563 addi 11,11,32
3564 lvx 30,10,1
3565 lvx 31,11,1
3566 ld 26,400(1)
3567 ld 27,408(1)
3568 ld 28,416(1)
3569 ld 29,424(1)
3570 ld 30,432(1)
3571 ld 31,440(1)
3572 addi 1,1,448
3573 blr
3574 .long 0
3575 .byte 0,12,0x04,1,0x80,6,6,0
3576 .long 0
3577
3578 .align 5
3579 _aesp8_xts_dec5x:
3580 .long 0x10E7C548
3581 .long 0x118CC548
3582 .long 0x11ADC548
3583 .long 0x11CEC548
3584 .long 0x11EFC548
3585 lvx 24,26,7
3586 addi 7,7,0x20
3587
3588 .long 0x10E7CD48
3589 .long 0x118CCD48
3590 .long 0x11ADCD48
3591 .long 0x11CECD48
3592 .long 0x11EFCD48
3593 lvx 25,3,7
3594 bdnz _aesp8_xts_dec5x
3595
3596 subi 0,31,1
3597 .long 0x10E7C548
3598 .long 0x118CC548
3599 .long 0x11ADC548
3600 .long 0x11CEC548
3601 .long 0x11EFC548
3602
3603 andi. 0,0,16
3604 cmpwi 31,0
3605 .long 0x10E7CD48
3606 .long 0x118CCD48
3607 .long 0x11ADCD48
3608 .long 0x11CECD48
3609 .long 0x11EFCD48
3610 vxor 17,17,31
3611
3612 sub 10,10,0
3613 .long 0x10E7D548
3614 .long 0x118CD548
3615 .long 0x11ADD548
3616 .long 0x11CED548
3617 .long 0x11EFD548
3618 vxor 1,18,31
3619
3620 .long 0x10E7DD48
3621 .long 0x7C005699
3622 .long 0x118CDD48
3623 .long 0x11ADDD48
3624 .long 0x11CEDD48
3625 .long 0x11EFDD48
3626 vxor 2,19,31
3627
3628 addi 7,1,64+15
3629 .long 0x10E7E548
3630 .long 0x118CE548
3631 .long 0x11ADE548
3632 .long 0x11CEE548
3633 .long 0x11EFE548
3634 lvx 24,0,7
3635 vxor 3,20,31
3636
3637 .long 0x10E7ED48
3638 vperm 0,0,0,6
3639 .long 0x118CED48
3640 .long 0x11ADED48
3641 .long 0x11CEED48
3642 .long 0x11EFED48
3643 lvx 25,3,7
3644 vxor 4,21,31
3645
3646 .long 0x10E7F548
3647 .long 0x118CF548
3648 .long 0x11ADF548
3649 .long 0x11CEF548
3650 .long 0x11EFF548
3651
3652 .long 0x10E78D49
3653 .long 0x118C0D49
3654 .long 0x11AD1549
3655 .long 0x11CE1D49
3656 .long 0x11EF2549
3657 mtctr 9
3658 blr
3659 .long 0
3660 .byte 0,12,0x14,0,0,0,0,0
Cache object: d8a49e63420187668ed330bea1a1df41
|