Lines Matching +full:10 +full:- +full:11

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)
175 # Hash keys = v3 - v14
176 # Scratch: v23 - v29
186 vpmsumd 28, 10, \S2 # H3.L * X1.H + H3.H * X1.L
210 xxlor 32+25, 10, 10
214 vpmsumd 27, 11, \S2
250 xxlor 32+25, 10, 10
263 # Hash keys = v3 - v14
269 # load Hash - h^4, h^3, h^2, h
270 li 10, 32
271 lxvd2x 2+32, 10, 8 # H Poli
272 li 10, 48
273 lxvd2x 3+32, 10, 8 # Hl
274 li 10, 64
275 lxvd2x 4+32, 10, 8 # H
276 li 10, 80
277 lxvd2x 5+32, 10, 8 # Hh
279 li 10, 96
280 lxvd2x 6+32, 10, 8 # H^2l
281 li 10, 112
282 lxvd2x 7+32, 10, 8 # H^2
283 li 10, 128
284 lxvd2x 8+32, 10, 8 # H^2h
286 li 10, 144
287 lxvd2x 9+32, 10, 8 # H^3l
288 li 10, 160
289 lxvd2x 10+32, 10, 8 # H^3
290 li 10, 176
291 lxvd2x 11+32, 10, 8 # H^3h
293 li 10, 192
294 lxvd2x 12+32, 10, 8 # H^4l
295 li 10, 208
296 lxvd2x 13+32, 10, 8 # H^4
297 li 10, 224
298 lxvd2x 14+32, 10, 8 # H^4h
314 li 10, 16
315 divdu 12, 5, 10
319 # Pre-load 8 AES rounds to scratch vectors.
329 addi 22, 23, -9 # remaing AES rounds
337 addi 10, 6, 144
348 lxv 32+1, 0(10)
350 addi 10, 10, 16
352 lxv 32+1, 0(10) # last round key
353 lxvb16x 11, 0, 14 # load input block
356 xxlxor 32+15, 32+15, 11
363 xxlor 15+32, 11, 11
368 addi 5, 5, -16
369 addi 11, 11, 16
373 addi 12, 12, -1
393 vspltisb 16, -1
400 lxvb16x 11, 0, 14 # load partial block
401 xxland 11, 11, 32+16
406 addi 22, 23, -1 # loop - 1
408 addi 10, 6, 16
411 lxv 32+1, 0(10)
413 addi 10, 10, 16
415 lxv 32+1, 0(10) # last round key
418 xxlxor 32+15, 32+15, 11
423 li 10, 224
424 stxvb16x 15+32, 10, 1 # write v15 to stack
425 addi 10, 1, 223
426 addi 12, 9, -1
429 lbzu 22, 1(10)
435 xxlor 32+15, 11, 11 # decrypt using the input block
443 sub 11, 11, 5
451 li 10, 64
453 stxvb16x 32+15, 10, 7 # Update pblock
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
512 addi 22, 23, -1 # loop - 1
514 addi 10, 6, 16
517 lxv 32+1, 0(10)
519 addi 10, 10, 16
521 lxv 32+1, 0(10) # last round key
529 li 10, 224
530 stxvb16x 15+32, 10, 1 # write v15 to stack
531 addi 10, 1, 223
532 add 10, 10, 12 # add offset
533 addi 15, 9, -1
536 lbzu 22, 1(10)
541 add 11, 11, 21
554 li 10, 64
555 lxvb16x 32+17, 10, 7 # load previous pblock
562 stxvb16x 32+15, 10, 7 # Update current pblock
575 stxvb16x 32+0, 10, 7 # update pblock for debug?
581 # gcm_update(iv, Xi) - compute last hash
586 ld 10, 56(3)
587 cmpdi 10, 0
591 # load Hash - h^4, h^3, h^2, h
592 li 10, 32
593 lxvd2x 2+32, 10, 4 # H Poli
594 li 10, 48
595 lxvd2x 3+32, 10, 4 # Hl
596 li 10, 64
597 lxvd2x 4+32, 10, 4 # H
598 li 10, 80
599 lxvd2x 5+32, 10, 4 # Hh
601 addis 11, 2, permx@toc@ha
602 addi 11, 11, permx@toc@l
603 lxv 10, 0(11) # vs10: vpermxor vector
618 xxlor 32+15, 10, 10
627 li 10, 0
628 std 10, 56(3)
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
669 addis 11, 2, permx@toc@ha
670 addi 11, 11, permx@toc@l
671 lxv 10, 0(11) # vs10: vpermxor vector
672 li 11, 0
685 # load rounds - 10 (128), 12 (192), 14 (256)
704 li 10, 128
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
749 lxv 32+1, 0(10) # round key
751 addi 10, 10, 16
753 lxv 32+1, 0(10) # last round key (v1)
819 vxor 15, 15, 27 # IV + round key - add round key 0
828 addi 5, 5, -128
829 addi 11, 11, 128
833 addi 10, 6, 144
835 lxv 32+1, 0(10) # round key
837 addi 10, 10, 16
839 lxv 32+1, 0(10) # last round key (v1)
841 addi 12, 12, -1
895 addi 5, 5, -128
896 addi 11, 11, 128
936 # initialize ICB: GHASH( IV ), IV - r7
937 lxvb16x 30+32, 0, 7 # load IV - v30
947 addis 11, 2, permx@toc@ha
948 addi 11, 11, permx@toc@l
949 lxv 10, 0(11) # vs10: vpermxor vector
950 li 11, 0
963 # load rounds - 10 (128), 12 (192), 14 (256)
982 li 10, 128
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
1027 lxv 32+1, 0(10) # round key
1029 addi 10, 10, 16
1031 lxv 32+1, 0(10) # last round key (v1)
1107 vxor 15, 15, 27 # IV + round key - add round key 0
1116 addi 5, 5, -128
1117 addi 11, 11, 128
1121 addi 10, 6, 144
1123 lxv 32+1, 0(10) # round key
1125 addi 10, 10, 16
1127 lxv 32+1, 0(10) # last round key (v1)
1129 addi 12, 12, -1
1193 addi 5, 5, -128
1194 addi 11, 11, 128
1221 mr 3, 11 # return count