Lines Matching +full:6 +full:- +full:14

1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 # Accelerated AES-GCM stitched implementation for ppc64le.
5 # Copyright 2024- IBM Inc.
22 # Hash keys = v3 - v14
29 # v31 - counter 1
32 # vs0 - round key 0
35 # This implementation uses stitched AES-GCM approach to improve overall performance.
66 stdu 1,-512(1)
68 SAVE_GPR 14, 112, 1
110 RESTORE_GPR 14, 112, 1
143 \_VCIPHER \ST+6, \ST+6, \r
157 xxlor 32+24, 6, 6
175 # Hash keys = v3 - v14
176 # Scratch: v23 - v29
182 vpmsumd 25, 6, \S3
213 vpmsumd 26, 14, \S1 # H4.H * X.H
263 # Hash keys = v3 - v14
269 # load Hash - h^4, h^3, h^2, h
280 lxvd2x 6+32, 10, 8 # H^2l
298 lxvd2x 14+32, 10, 8 # H^4h
319 # Pre-load 8 AES rounds to scratch vectors.
325 xxlor 32+21, 6, 6
328 lwz 23, 240(6) # n rounds
329 addi 22, 23, -9 # remaing AES rounds
337 addi 10, 6, 144
353 lxvb16x 11, 0, 14 # load input block
358 addi 14, 14, 16
368 addi 5, 5, -16
373 addi 12, 12, -1
393 vspltisb 16, -1
400 lxvb16x 11, 0, 14 # load partial block
405 lwz 23, 240(6) # n rounds
406 addi 22, 23, -1 # loop - 1
408 addi 10, 6, 16
426 addi 12, 9, -1
440 add 14, 14, 5
462 # - Compute ghash for a full block. Clear Partial_len and pblock. Update IV.
464 # - Don't compute ghash if not full block. gcm_update will take care of it
490 vspltisb 16, -1
500 lxvb16x 32+19, 0, 14 # load partial block
511 lwz 23, 240(6) # n rounds
512 addi 22, 23, -1 # loop - 1
514 addi 10, 6, 16
533 addi 15, 9, -1
540 add 14, 14, 21
581 # gcm_update(iv, Xi) - compute last hash
591 # load Hash - h^4, h^3, h^2, h
606 lxvb16x 32+6, 9, 3 # load pblock
607 vxor 6, 6, 0
610 vpmsumd 12, 3, 6 # L
611 vpmsumd 13, 4, 6 # M
612 vpmsumd 14, 5, 6 # H
617 vxor 14, 14, 16 # HH + HH
622 vxor 13, 13, 14
639 # r3 - inp
640 # r4 - out
641 # r5 - len
642 # r6 - AES round keys
643 # r7 - iv and other data
644 # r8 - Xi, HPoli, hash keys
658 # initialize ICB: GHASH( IV ), IV - r7
659 lxvb16x 30+32, 0, 7 # load IV - v30
661 mr 14, 3
675 lxv 0, 0(6) # round key 0
676 lxv 1, 16(6) # round key 1
677 lxv 2, 32(6) # round key 2
678 lxv 3, 48(6) # round key 3
679 lxv 4, 64(6) # round key 4
680 lxv 5, 80(6) # round key 5
681 lxv 6, 96(6) # round key 6
682 lxv 7, 112(6) # round key 7
683 lxv 8, 128(6) # round key 8
685 # load rounds - 10 (128), 12 (192), 14 (256)
686 lwz 23, 240(6) # n rounds
705 divdu 12, 5, 10 # n 128 bytes-blocks
707 addi 12, 12, -1 # loop - 1
721 vxor 15, 15, 29 # IV + round key - add round key 0
739 # Pre-compute first 8 AES state and leave 1/3/5 more rounds
742 addi 22, 23, -9 # process 8 keys
744 addi 10, 6, 144
771 lxvb16x 32+23, 0, 14 # load block
772 lxvb16x 32+24, 15, 14 # load block
773 lxvb16x 32+25, 16, 14 # load block
774 lxvb16x 32+26, 17, 14 # load block
775 lxvb16x 32+27, 18, 14 # load block
776 lxvb16x 32+28, 19, 14 # load block
777 lxvb16x 32+29, 20, 14 # load block
778 lxvb16x 32+30, 21, 14 # load block
779 addi 14, 14, 128
819 vxor 15, 15, 27 # IV + round key - add round key 0
828 addi 5, 5, -128
833 addi 10, 6, 144
841 addi 12, 12, -1
855 lxvb16x 32+23, 0, 14 # load block
856 lxvb16x 32+24, 15, 14 # load block
857 lxvb16x 32+25, 16, 14 # load block
858 lxvb16x 32+26, 17, 14 # load block
859 lxvb16x 32+27, 18, 14 # load block
860 lxvb16x 32+28, 19, 14 # load block
861 lxvb16x 32+29, 20, 14 # load block
862 lxvb16x 32+30, 21, 14 # load block
863 addi 14, 14, 128
895 addi 5, 5, -128
936 # initialize ICB: GHASH( IV ), IV - r7
937 lxvb16x 30+32, 0, 7 # load IV - v30
939 mr 14, 3
953 lxv 0, 0(6) # round key 0
954 lxv 1, 16(6) # round key 1
955 lxv 2, 32(6) # round key 2
956 lxv 3, 48(6) # round key 3
957 lxv 4, 64(6) # round key 4
958 lxv 5, 80(6) # round key 5
959 lxv 6, 96(6) # round key 6
960 lxv 7, 112(6) # round key 7
961 lxv 8, 128(6) # round key 8
963 # load rounds - 10 (128), 12 (192), 14 (256)
964 lwz 23, 240(6) # n rounds
983 divdu 12, 5, 10 # n 128 bytes-blocks
985 addi 12, 12, -1 # loop - 1
999 vxor 15, 15, 29 # IV + round key - add round key 0
1017 # Pre-compute first 8 AES state and leave 1/3/5 more rounds
1020 addi 22, 23, -9 # process 8 keys
1022 addi 10, 6, 144
1049 lxvb16x 32+23, 0, 14 # load block
1050 lxvb16x 32+24, 15, 14 # load block
1051 lxvb16x 32+25, 16, 14 # load block
1052 lxvb16x 32+26, 17, 14 # load block
1053 lxvb16x 32+27, 18, 14 # load block
1054 lxvb16x 32+28, 19, 14 # load block
1055 lxvb16x 32+29, 20, 14 # load block
1056 lxvb16x 32+30, 21, 14 # load block
1057 addi 14, 14, 128
1107 vxor 15, 15, 27 # IV + round key - add round key 0
1116 addi 5, 5, -128
1121 addi 10, 6, 144
1129 addi 12, 12, -1
1143 lxvb16x 32+23, 0, 14 # load block
1144 lxvb16x 32+24, 15, 14 # load block
1145 lxvb16x 32+25, 16, 14 # load block
1146 lxvb16x 32+26, 17, 14 # load block
1147 lxvb16x 32+27, 18, 14 # load block
1148 lxvb16x 32+28, 19, 14 # load block
1149 lxvb16x 32+29, 20, 14 # load block
1150 lxvb16x 32+30, 21, 14 # load block
1151 addi 14, 14, 128
1193 addi 5, 5, -128