Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: linux-ppc64le/crypto/aes/aesp8-ppc.S

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

Powered by Google App Engine
This is Rietveld 408576698