Lines Matching +full:0 +full:- +full:31
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
5 # Copyright 2023- IBM Corp. All rights reserved
10 # Poly1305 - this version mainly using vector/VSX/Scalar
11 # - 26 bits limbs
12 # - Handle multiple 64 byte blcok.
16 # clamp r &= 0x0FFFFFFC0FFFFFFC 0x0FFFFFFC0FFFFFFF
17 # p = 2^130 - 5
25 # 07/22/21 - this revison based on the above sum of products. Setup r^4, r^3, r^2, r and s3, s2, …
56 #include <asm/asm-offsets.h>
57 #include <asm/asm-compat.h>
93 mflr 0
94 std 0, 16(1)
95 stdu 1,-752(1)
114 SAVE_GPR 31, 248, 1
117 SAVE_VRS 20, 0, 9
128 SAVE_VRS 31, 176, 9
147 SAVE_VSX 31, 464, 9
152 RESTORE_VRS 20, 0, 9
163 RESTORE_VRS 31, 176, 9
182 RESTORE_VSX 31, 464, 9
201 RESTORE_GPR 31, 248, 1
204 ld 0, 16(1)
205 mtlr 0
209 # p[0] = a0*r0 + a1*r4*5 + a2*r3*5 + a3*r2*5 + a4*r1*5;
224 vmulouw 13, 8, 0
272 vmuleuw 13, 8, 0
354 xxlxor 31, 31, 31
364 xxpermdi 58, 58, 36, 0x3 # r0
365 xxpermdi 59, 59, 37, 0x3 # r1
366 xxpermdi 60, 60, 38, 0x3 # r2
367 xxpermdi 61, 61, 39, 0x3 # r3
368 xxpermdi 62, 62, 40, 0x3 # r4
369 xxpermdi 36, 36, 36, 0x3
370 xxpermdi 37, 37, 37, 0x3
371 xxpermdi 38, 38, 38, 0x3
372 xxpermdi 39, 39, 39, 0x3
373 xxpermdi 40, 40, 40, 0x3
379 vaddudm 0, 9, 27
395 vaddudm 0, 9, 27
401 xxlor 0, 58, 58
431 vaddudm 0, 9, 27
443 vsrd 10, 14, 31
444 vsrd 11, 17, 31
448 vsrd 12, 18, 31
451 vsrd 11, 15, 31
458 vsrd 13, 6, 31
461 vsrd 10, 4, 31
464 vsrd 11, 7, 31
479 ld 11, 0(10)
486 lvx 25, 0, 10 # v25 - mask
487 lvx 31, 14, 10 # v31 = 1a
502 extrdi 16, 9, 12, 0
503 mtvsrdd 58, 0, 14
505 mtvsrdd 59, 0, 15
507 mtvsrdd 60, 0, 16
508 extrdi 18, 10, 24, 0
509 mtvsrdd 61, 0, 17
510 mtvsrdd 62, 0, 18
514 mtvsrdd 36, 0, 9
515 vmulouw 0, 27, 4 # v0 = rr0
537 li 21, 0 # counter to message
543 ld 9, 0(3)
547 mtvsrdd 41, 0, 19
550 extrdi 16, 9, 12, 0
551 mtvsrdd 36, 0, 14
553 mtvsrdd 37, 0, 15
555 mtvsrdd 38, 0, 16
556 extrdi 18, 10, 24, 0
557 mtvsrdd 39, 0, 17
558 mtvsrdd 40, 0, 18
565 lxvw4x 43, 0, 20
567 lxvw4x 44, 0, 17
571 vsrd 10, 14, 31 # >> 26
572 vsrd 11, 10, 31 # 12 bits left
581 vsrd 13, 12, 31 # >> 26, a4
592 lxvw4x 43, 0, 17
594 lxvw4x 44, 0, 17
598 vsrd 10, 14, 31 # >> 26
599 vsrd 11, 10, 31 # 12 bits left
608 vsrd 13, 12, 31 # >> 26, a4
619 addi 5, 5, -64 # len -= 64
623 divdu 31, 5, 9
625 cmpdi 31, 0
628 mtctr 31
633 # h3 = (h1 + m3) * r^2, h4 = (h2 + m4) * r^2 --> (h0 + m1) r*4 + (h3 + m3) r^2, (h0 + m2) r^4 + (h…
635 # h5 = (h3 + m5) * r^2, h6 = (h4 + m6) * r^2 -->
636 # h7 = (h5 + m7) * r^2, h8 = (h6 + m8) * r^1 --> m5 * r^4 + m6 * r^3 + m7 * r^2 + m8 * r
645 vsrd 10, 14, 31
646 vsrd 11, 17, 31
650 vsrd 12, 18, 31
653 vsrd 11, 15, 31
660 vsrd 13, 6, 31
663 vsrd 10, 4, 31
666 vsrd 11, 7, 31
676 lxvw4x 43, 0, 20
678 lxvw4x 44, 0, 17
682 lxvw4x 43, 0, 17
684 lxvw4x 44, 0, 17
690 vsrd 21, 14, 31 # >> 26
691 vsrd 22, 21, 31 # 12 bits left
692 vsrd 10, 17, 31 # >> 26
693 vsrd 11, 10, 31 # 12 bits left
709 vsrd 24, 23, 31 # >> 26, a4
712 vsrd 13, 12, 31 # >> 26, a4
729 addi 5, 5, -64 # len -= 64
735 xxlor 58, 0, 0
750 xxpermdi 41, 31, 46, 0
751 xxpermdi 42, 31, 47, 0
753 xxpermdi 36, 31, 36, 3
755 xxpermdi 37, 31, 37, 3
756 xxpermdi 43, 31, 48, 0
758 xxpermdi 38, 31, 38, 3
759 xxpermdi 44, 31, 49, 0
761 xxpermdi 39, 31, 39, 3
762 xxpermdi 45, 31, 50, 0
764 xxpermdi 40, 31, 40, 3
768 vsrd 10, 4, 31
769 vsrd 11, 7, 31
773 vsrd 12, 8, 31
776 vsrd 11, 5, 31
783 vsrd 13, 6, 31
786 vsrd 10, 4, 31
789 vsrd 11, 7, 31
793 vsrd 10, 5, 31
803 vsld 5, 5, 31
807 vsld 6, 6, 31
808 vsld 6, 6, 31
815 vsld 8, 8, 31
821 std 17, 0(3)
826 li 3, 0
833 li 3, 0
842 # mask 0x0FFFFFFC0FFFFFFC
843 # mask 0x0FFFFFFC0FFFFFFF
846 ld 11, 0(10)
857 add 19, 21, 10 # s1: r19 - (r1 >> 2) *5
860 li 25, 0
861 mtvsrdd 32+0, 9, 19 # r0, s1
878 vmsumudm 7, 6, 0, 9 # h0 * r0, h1 * s1
905 srdi 22, 29, 0x2
906 sldi 23, 22, 0x2
910 andi. 29, 29, 0x3 # h2
923 # - no highbit if final leftover block (highbit = 0)
926 cmpdi 5, 0
929 mflr 0
930 std 0, 16(1)
931 stdu 1,-400(1)
950 SAVE_GPR 31, 248, 1
955 li 25, 0 # offset to inp and outp
961 ld 27, 0(3)
966 divdu 31, 5, 30
968 mtctr 31
975 ld 20, 0(11)
983 li 22, 0
993 std 27, 0(3)
997 li 3, 0
1016 RESTORE_GPR 31, 248, 1
1019 ld 0, 16(1)
1020 mtlr 0
1025 li 3, 0
1034 ld 10, 0(3)
1039 # h + 5 + (-p)
1047 cmpdi 9, 0
1054 ld 6, 0(4)
1060 std 10, 0(5)
1068 .byte 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x0f
1070 .long 0x03ffffff, 0x00000000, 0x03ffffff, 0x00000000
1071 .long 0x1a, 0x00, 0x1a, 0x00
1072 .long 0x01000000, 0x01000000, 0x01000000, 0x01000000
1073 .long 0x00010203, 0x04050607, 0x10111213, 0x14151617
1074 .long 0x08090a0b, 0x0c0d0e0f, 0x18191a1b, 0x1c1d1e1f