Lines Matching +full:12 +full:- +full:17

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
59 vcipher 17, 17, 19
64 vcipher 17, 17, 20
69 vcipher 17, 17, 21
74 vcipher 17, 17, 22
84 vcipher 17, 17, 19
89 vcipher 17, 17, 20
94 vcipher 17, 17, 21
99 vcipher 17, 17, 22
105 vcipher 17, 17, 23
110 # v15 - v22 - input states
111 # vs1 - vs9 - round keys
121 vcipher 17, 17, 23
130 vcipher 17, 17, 24
139 vcipher 17, 17, 25
148 vcipher 17, 17, 26
162 vcipher 17, 17, 23
171 vcipher 17, 17, 24
180 vcipher 17, 17, 25
189 vcipher 17, 17, 26
199 vcipher 17, 17, 23
238 vpmsumd 23, 12, 15 # H4.L * X.L
240 vpmsumd 25, 6, 17
249 vpmsumd 26, 7, 17
269 vpmsumd 26, 8, 17
290 # v15 - v22 - input blocks
296 vpmsumd 23, 12, 15 # H4.L * X.L
298 vpmsumd 25, 6, 17
307 vpmsumd 26, 7, 17
328 vpmsumd 26, 8, 17
348 vpmsumd 23, 12, 19 # H4.L * X.L
428 stdu 1,-640(1)
434 std 17,136(1)
466 stxv 17, 512(1)
479 lxv 17, 512(1)
514 ld 17,136(1)
528 # load Hash - h^4, h^3, h^2, h
553 lxvd2x 12+32, 10, 8 # H^4l
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
584 mr 12, 5 # length
605 # load rounds - 10 (128), 12 (192), 14 (256)
611 vxor 15, 30, 29 # IV + round key - add round key 0
618 lxv 12, 0xc0(6)
620 cmpdi 9, 12
650 divdu 10, 12, 10 # n 128 bytes-blocks
657 vxor 17, 30, 29
673 li 17, 48
685 lxvb16x 17, 16, 14 # load block
686 lxvb16x 18, 17, 14 # load block
705 vcipher 17, 17, 23
714 vcipher 17, 17, 24
721 xxlor 23+32, 12, 12
723 cmpdi 10, 12
731 vcipher 17, 17, 23
740 vcipher 17, 17, 24
765 vcipherlast 17, 17, 23
768 xxlxor 49, 49, 17
771 stxvb16x 50, 17, 9 # store output
801 vxor 17, 30, 27
813 addi 12, 12, -128
822 cmpdi 12, 0
827 divdu 10, 12, 10
833 cmpdi 12, 16
852 xxlor 23+32, 12, 12
854 cmpdi 10, 12
879 addi 12, 12, -16
890 cmpdi 12, 0
908 xxlor 23+32, 12, 12
910 cmpdi 10, 12
934 cmpdi 12, 0
945 sub 15, 15, 12 # index to the mask
947 vspltisb 16, -1 # first 16 bytes - 0xffff...ff
948 vspltisb 17, 0 # second 16 bytes - 0x0000...00
952 stvx 17, 10, 1
965 std 12, 56(7) # update partial?
976 vspltisb 16, -1 # first 16 bytes - 0xffff...ff
977 vspltisb 17, 0 # second 16 bytes - 0x0000...00
979 stxvb16x 17+32, 10, 1
983 stxvb16x 17+32, 10, 1
994 add 17, 15, 5
995 cmpdi 17, 16
1005 lxvb16x 17+32, 0, 14 # load last block
1008 vsro 17, 17, 16
1009 xxlxor 47, 47, 17+32
1017 xxland 32+28, 32+17, 18
1037 sub 17, 16, 15 # 16 - partial
1042 mr 17, 5
1049 addi 10, 9, -1
1051 mtctr 17 # move partial byte count
1059 add 14, 14, 17
1060 add 9, 9, 17
1061 sub 12, 12, 17
1062 add 11, 11, 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
1091 addi 10, 9, -1
1094 mtctr 12 # remaining bytes
1107 add 3, 11, 12 # return count
1122 # initialize ICB: GHASH( IV ), IV - r7
1123 lxvb16x 30+32, 0, 7 # load IV - v30
1125 mr 12, 5 # length
1146 # load rounds - 10 (128), 12 (192), 14 (256)
1152 vxor 15, 30, 29 # IV + round key - add round key 0
1159 lxv 12, 0xc0(6)
1161 cmpdi 9, 12
1191 divdu 10, 12, 10 # n 128 bytes-blocks
1198 vxor 17, 30, 29
1214 li 17, 48
1226 lxvb16x 17, 16, 14 # load block
1227 lxvb16x 18, 17, 14 # load block
1246 vcipher 17, 17, 23
1255 vcipher 17, 17, 24
1262 xxlor 23+32, 12, 12
1264 cmpdi 10, 12
1272 vcipher 17, 17, 23
1281 vcipher 17, 17, 24
1306 vcipherlast 17, 17, 23
1309 xxlxor 49, 49, 17
1312 stxvb16x 50, 17, 9 # store output
1334 xxlor 17+32, 17, 17
1351 vxor 17, 30, 27
1363 addi 12, 12, -128
1372 cmpdi 12, 0
1377 divdu 10, 12, 10
1383 cmpdi 12, 16
1402 xxlor 23+32, 12, 12
1404 cmpdi 10, 12
1430 addi 12, 12, -16
1441 cmpdi 12, 0
1459 xxlor 23+32, 12, 12
1461 cmpdi 10, 12
1484 cmpdi 12, 0
1495 sub 15, 15, 12 # index to the mask
1497 vspltisb 16, -1 # first 16 bytes - 0xffff...ff
1498 vspltisb 17, 0 # second 16 bytes - 0x0000...00
1502 stvx 17, 10, 1
1516 std 12, 56(7) # update partial?