Lines Matching +full:1 +full:- +full:9
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 # Accelerated AES-GCM stitched implementation for ppc64le.
5 # Copyright 2022- IBM Inc. All rights reserved
22 # Hash keys = v3 - v14
29 # v31 - counter 1
32 # vs0 - vs14 for round keys
35 # This implementation uses stitched AES-GCM approach to improve overall performance.
48 # v15 - v18 - input states
49 # vs1 - vs9 - round keys
52 xxlor 19+32, 1, 1
102 xxlor 23+32, 9, 9
110 # v15 - v22 - input states
111 # vs1 - vs9 - round keys
114 xxlor 23+32, 1, 1
196 xxlor 23+32, 9, 9
208 xxlor 19+32, 1, 1
228 xxlor 19+32, 9, 9
239 vpmsumd 24, 9, 16
290 # v15 - v22 - input blocks
297 vpmsumd 24, 9, 16
341 vxor 27, 23, 27 # 1st Xi
344 vpmsumd 24, 9, 20
428 stdu 1,-640(1)
431 std 14,112(1)
432 std 15,120(1)
433 std 16,128(1)
434 std 17,136(1)
435 std 18,144(1)
436 std 19,152(1)
437 std 20,160(1)
438 std 21,168(1)
439 li 9, 256
440 stvx 20, 9, 1
441 addi 9, 9, 16
442 stvx 21, 9, 1
443 addi 9, 9, 16
444 stvx 22, 9, 1
445 addi 9, 9, 16
446 stvx 23, 9, 1
447 addi 9, 9, 16
448 stvx 24, 9, 1
449 addi 9, 9, 16
450 stvx 25, 9, 1
451 addi 9, 9, 16
452 stvx 26, 9, 1
453 addi 9, 9, 16
454 stvx 27, 9, 1
455 addi 9, 9, 16
456 stvx 28, 9, 1
457 addi 9, 9, 16
458 stvx 29, 9, 1
459 addi 9, 9, 16
460 stvx 30, 9, 1
461 addi 9, 9, 16
462 stvx 31, 9, 1
463 stxv 14, 464(1)
464 stxv 15, 480(1)
465 stxv 16, 496(1)
466 stxv 17, 512(1)
467 stxv 18, 528(1)
468 stxv 19, 544(1)
469 stxv 20, 560(1)
470 stxv 21, 576(1)
471 stxv 22, 592(1)
472 std 0, 656(1)
476 lxv 14, 464(1)
477 lxv 15, 480(1)
478 lxv 16, 496(1)
479 lxv 17, 512(1)
480 lxv 18, 528(1)
481 lxv 19, 544(1)
482 lxv 20, 560(1)
483 lxv 21, 576(1)
484 lxv 22, 592(1)
485 li 9, 256
486 lvx 20, 9, 1
487 addi 9, 9, 16
488 lvx 21, 9, 1
489 addi 9, 9, 16
490 lvx 22, 9, 1
491 addi 9, 9, 16
492 lvx 23, 9, 1
493 addi 9, 9, 16
494 lvx 24, 9, 1
495 addi 9, 9, 16
496 lvx 25, 9, 1
497 addi 9, 9, 16
498 lvx 26, 9, 1
499 addi 9, 9, 16
500 lvx 27, 9, 1
501 addi 9, 9, 16
502 lvx 28, 9, 1
503 addi 9, 9, 16
504 lvx 29, 9, 1
505 addi 9, 9, 16
506 lvx 30, 9, 1
507 addi 9, 9, 16
508 lvx 31, 9, 1
510 ld 0, 656(1)
511 ld 14,112(1)
512 ld 15,120(1)
513 ld 16,128(1)
514 ld 17,136(1)
515 ld 18,144(1)
516 ld 19,152(1)
517 ld 20,160(1)
518 ld 21,168(1)
521 addi 1, 1, 640
528 # load Hash - h^4, h^3, h^2, h
546 lxvd2x 9+32, 10, 8 # H^3l
564 # r3 - inp
565 # r4 - out
566 # r5 - len
567 # r6 - AES round keys
568 # r7 - iv and other data
569 # r8 - Xi, HPoli, hash keys
581 # initialize ICB: GHASH( IV ), IV - r7
582 lxvb16x 30+32, 0, 7 # load IV - v30
587 # counter 1
589 vspltisb 22, 1
590 vsldoi 31, 31, 22,1 # counter 1
594 lxv 1, 0x10(6)
602 lxv 9, 0x90(6)
605 # load rounds - 10 (128), 12 (192), 14 (256)
606 lwz 9,240(6)
611 vxor 15, 30, 29 # IV + round key - add round key 0
613 cmpdi 9, 10
620 cmpdi 9, 12
626 cmpdi 9, 14
634 mr 9, 4
650 divdu 10, 12, 10 # n 128 bytes-blocks
761 stxvb16x 47, 0, 9 # store output
763 stxvb16x 48, 15, 9 # store output
769 stxvb16x 49, 16, 9 # store output
771 stxvb16x 50, 17, 9 # store output
777 stxvb16x 51, 18, 9 # store output
779 stxvb16x 52, 19, 9 # store output
785 stxvb16x 53, 20, 9 # store output
787 stxvb16x 54, 21, 9 # store output
789 addi 9, 9, 128
813 addi 12, 12, -128
872 stxvb16x 47, 0, 9 # store output
874 addi 9, 9, 16
879 addi 12, 12, -16
947 vspltisb 16, -1 # first 16 bytes - 0xffff...ff
948 vspltisb 17, 0 # second 16 bytes - 0x0000...00
950 stvx 16, 10, 1
952 stvx 17, 10, 1
954 addi 10, 1, 192
976 vspltisb 16, -1 # first 16 bytes - 0xffff...ff
977 vspltisb 17, 0 # second 16 bytes - 0x0000...00
979 stxvb16x 17+32, 10, 1
981 stxvb16x 16+32, 10, 1
983 stxvb16x 17+32, 10, 1
985 addi 10, 1, 192
1034 #stxvb16x 15+32, 0, 9 # last block
1037 sub 17, 16, 15 # 16 - partial
1047 stxvb16x 15+32, 10, 1 # save current block
1049 addi 10, 9, -1
1050 addi 16, 1, 191
1054 lbzu 18, 1(16)
1055 stbu 18, 1(10)
1060 add 9, 9, 17
1071 vxor 15, 30, 29 # IV + round key - add round key 0
1073 std 15, 56(7) # partial done - clear
1083 # r9 - output
1084 # r12 - remaining bytes
1085 # v15 - partial input data
1089 stxvb16x 15+32, 10, 1 # last block
1091 addi 10, 9, -1
1092 addi 16, 1, 191
1098 lbzu 14, 1(16)
1099 stbu 14, 1(10)
1122 # initialize ICB: GHASH( IV ), IV - r7
1123 lxvb16x 30+32, 0, 7 # load IV - v30
1128 # counter 1
1130 vspltisb 22, 1
1131 vsldoi 31, 31, 22,1 # counter 1
1135 lxv 1, 0x10(6)
1143 lxv 9, 0x90(6)
1146 # load rounds - 10 (128), 12 (192), 14 (256)
1147 lwz 9,240(6)
1152 vxor 15, 30, 29 # IV + round key - add round key 0
1154 cmpdi 9, 10
1161 cmpdi 9, 12
1167 cmpdi 9, 14
1175 mr 9, 4
1191 divdu 10, 12, 10 # n 128 bytes-blocks
1302 stxvb16x 47, 0, 9 # store output
1304 stxvb16x 48, 15, 9 # store output
1310 stxvb16x 49, 16, 9 # store output
1312 stxvb16x 50, 17, 9 # store output
1318 stxvb16x 51, 18, 9 # store output
1320 stxvb16x 52, 19, 9 # store output
1326 stxvb16x 53, 20, 9 # store output
1328 stxvb16x 54, 21, 9 # store output
1330 addi 9, 9, 128
1363 addi 12, 12, -128
1422 stxvb16x 47, 0, 9 # store output
1424 addi 9, 9, 16
1430 addi 12, 12, -16
1479 li 21, 1 # decrypt
1497 vspltisb 16, -1 # first 16 bytes - 0xffff...ff
1498 vspltisb 17, 0 # second 16 bytes - 0x0000...00
1500 stvx 16, 10, 1
1502 stvx 17, 10, 1
1504 addi 10, 1, 192