Module Name: src Committed By: christos Date: Sat Apr 11 22:41:06 UTC 2020
Modified Files: src/crypto/external/bsd/openssl/dist/crypto: ppccap.c src/crypto/external/bsd/openssl/dist/crypto/sha: keccak1600.c src/crypto/external/bsd/openssl/dist/crypto/sha/asm: keccak1600-ppc64.pl keccak1600p8-ppc.pl src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc: keccak1600p8-ppc.S sha.inc src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64: keccak1600-ppc64.S keccak1600p8-ppc.S Log Message: We can only use the SHA3 assembly routines if we have VSX To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 \ src/crypto/external/bsd/openssl/dist/crypto/ppccap.c cvs rdiff -u -r1.1.1.2 -r1.2 \ src/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c cvs rdiff -u -r1.1.1.2 -r1.2 \ src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl \ src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl cvs rdiff -u -r1.1 -r1.2 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S cvs rdiff -u -r1.2 -r1.3 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc cvs rdiff -u -r1.1 -r1.2 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/crypto/external/bsd/openssl/dist/crypto/ppccap.c diff -u src/crypto/external/bsd/openssl/dist/crypto/ppccap.c:1.12 src/crypto/external/bsd/openssl/dist/crypto/ppccap.c:1.13 --- src/crypto/external/bsd/openssl/dist/crypto/ppccap.c:1.12 Sat Mar 21 20:53:02 2020 +++ src/crypto/external/bsd/openssl/dist/crypto/ppccap.c Sat Apr 11 18:41:06 2020 @@ -160,6 +160,37 @@ void ecp_nistz256_from_mont(unsigned lon } #endif +size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, + size_t r); +void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r); + +size_t SHA3_absorb_default(uint64_t A[5][5], const unsigned char *inp, + size_t len, size_t r); +void SHA3_squeeze_default(uint64_t A[5][5], unsigned char *out, size_t len, + size_t r); + +size_t SHA3_absorb_vsx(uint64_t A[5][5], const unsigned char *inp, + size_t len, size_t r); +void SHA3_squeeze_vsx(uint64_t A[5][5], unsigned char *out, size_t len, + size_t r); + +size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, + size_t r) +{ + return OPENSSL_ppccap_P & PPC_CRYPTO207 + ? SHA3_absorb_vsx(A, inp, len, r) + : SHA3_absorb_default(A, inp, len, r); +} + +void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r) +{ + OPENSSL_ppccap_P & PPC_CRYPTO207 + ? SHA3_absorb_vsx(A, out, len, r) + : SHA3_squeeze_default(A, out, len, r); +} + + + static sigjmp_buf ill_jmp; static void ill_handler(int sig) { Index: src/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c diff -u src/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c:1.1.1.2 src/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c:1.2 --- src/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c:1.1.1.2 Sun Jun 9 13:47:44 2019 +++ src/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c Sat Apr 11 18:41:06 2020 @@ -11,6 +11,12 @@ #include <string.h> #include <assert.h> +#ifdef __powerpc__ +#define SHA3_absorb SHA3_absorb_default +#define SHA3_squeeze SHA3_squeeze_default +#undef KECCAK1600_ASM +#endif + size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, size_t r); void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r); Index: src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl diff -u src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl:1.1.1.2 src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl:1.2 --- src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl:1.1.1.2 Sat Mar 21 20:49:11 2020 +++ src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl Sat Apr 11 18:41:06 2020 @@ -405,10 +405,10 @@ dword_le_load: .long 0 .size dword_le_load,.-dword_le_load -.globl SHA3_absorb -.type SHA3_absorb,\@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,\@function .align 5 -SHA3_absorb: +SHA3_absorb_vsx: $STU $sp,-$FRAME($sp) mflr r0 $PUSH r14,`$FRAME-$SIZE_T*18`($sp) @@ -627,15 +627,15 @@ SHA3_absorb: .long 0 .byte 0,12,4,1,0x80,18,4,0 .long 0 -.size SHA3_absorb,.-SHA3_absorb +.size SHA3_absorb_vsx,.-SHA3_absorb_vsx ___ { my ($A_flat,$out,$len,$bsz) = map("r$_",(28..31)); $code.=<<___; -.globl SHA3_squeeze -.type SHA3_squeeze,\@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,\@function .align 5 -SHA3_squeeze: +SHA3_squeeze_vsx: $STU $sp,`-10*$SIZE_T`($sp) mflr r0 $PUSH r28,`6*$SIZE_T`($sp) @@ -705,7 +705,7 @@ SHA3_squeeze: .long 0 .byte 0,12,4,1,0x80,4,4,0 .long 0 -.size SHA3_squeeze,.-SHA3_squeeze +.size SHA3_squeeze_vsx,.-SHA3_squeeze_vsx ___ } Index: src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl diff -u src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl:1.1.1.2 src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl:1.2 --- src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl:1.1.1.2 Sat Mar 21 20:49:11 2020 +++ src/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl Sat Apr 11 18:41:06 2020 @@ -374,10 +374,10 @@ ___ my ($A_jagged,$inp,$len,$bsz) = map("r$_",(3..6)); $code.=<<___; -.globl SHA3_absorb -.type SHA3_absorb,\@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,\@function .align 5 -SHA3_absorb: +SHA3_absorb_vsx: $STU $sp,-$FRAME($sp) li r10,`15+6*$SIZE_T` li r11,`31+6*$SIZE_T` @@ -674,17 +674,17 @@ SHA3_absorb: .long 0 .byte 0,12,0x04,1,0x80,0,4,0 .long 0 -.size SHA3_absorb,.-SHA3_absorb +.size SHA3_absorb_vsx,.-SHA3_absorb_vsx ___ } { my ($A_jagged,$out,$len,$bsz) = map("r$_",(3..6)); $code.=<<___; -.globl SHA3_squeeze -.type SHA3_squeeze,\@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,\@function .align 5 -SHA3_squeeze: +SHA3_squeeze_vsx: mflr r9 ; r9 is not touched by KeccakF1600 subi $out,$out,1 ; prepare for stbu addi r8,$A_jagged,4 ; prepare volatiles @@ -770,7 +770,7 @@ SHA3_squeeze: .long 0 .byte 0,12,0x14,0,0,0,4,0 .long 0 -.size SHA3_squeeze,.-SHA3_squeeze +.size SHA3_squeeze_vsx,.-SHA3_squeeze_vsx ___ } $code.=<<___; Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S:1.2 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S:1.1 Sun Sep 23 09:33:04 2018 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S Sat Apr 11 18:41:06 2020 @@ -288,11 +288,11 @@ KeccakF1600: .byte 0,12,0x04,1,0x80,0,1,0 .long 0 -.globl SHA3_absorb -.type SHA3_absorb,@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,@function .align 5 -SHA3_absorb: +SHA3_absorb_vsx: stwu 1,-232(1) li 10,39 li 11,55 @@ -590,11 +590,11 @@ SHA3_absorb: .byte 0,12,0x04,1,0x80,0,4,0 .long 0 -.globl SHA3_squeeze -.type SHA3_squeeze,@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,@function .align 5 -SHA3_squeeze: +SHA3_squeeze_vsx: mflr 9 subi 4,4,1 addi 8,3,4 Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc:1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc:1.3 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc:1.2 Sun Sep 23 09:33:04 2018 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc Sat Apr 11 18:41:06 2020 @@ -1,5 +1,5 @@ .PATH.S: ${.PARSEDIR} -SHA_SRCS = sha1-ppc.S keccak1600p8-ppc.S +SHA_SRCS = sha1-ppc.S keccak1600p8-ppc.S keccak1600.c SHACPPFLAGS = -DSHA1_ASM -DKECCAK1600_ASM KECCAKNI = yes .if NOT_USING_SHAXXX_FROM_LIBC Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S:1.2 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S:1.1 Sun Sep 23 09:33:05 2018 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S Sat Apr 11 18:41:06 2020 @@ -317,16 +317,16 @@ dword_le_load: .long 0 -.globl SHA3_absorb -.type SHA3_absorb,@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,@function .section ".opd","aw" .align 3 -SHA3_absorb: -.quad .SHA3_absorb,.TOC.@tocbase,0 +SHA3_absorb_vsx: +.quad .SHA3_absorb_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_absorb: +.SHA3_absorb_vsx: stdu 1,-272(1) mflr 0 std 14,128(1) @@ -546,16 +546,16 @@ SHA3_absorb: .byte 0,12,4,1,0x80,18,4,0 .long 0 -.globl SHA3_squeeze -.type SHA3_squeeze,@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,@function .section ".opd","aw" .align 3 -SHA3_squeeze: -.quad .SHA3_squeeze,.TOC.@tocbase,0 +SHA3_squeeze_vsx: +.quad .SHA3_squeeze_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_squeeze: +.SHA3_squeeze_vsx: stdu 1,-80(1) mflr 0 std 28,48(1) Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S:1.2 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S:1.1 Sun Sep 23 09:33:05 2018 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S Sat Apr 11 18:41:06 2020 @@ -288,16 +288,16 @@ KeccakF1600: .byte 0,12,0x04,1,0x80,0,1,0 .long 0 -.globl SHA3_absorb -.type SHA3_absorb,@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,@function .section ".opd","aw" .align 3 -SHA3_absorb: -.quad .SHA3_absorb,.TOC.@tocbase,0 +SHA3_absorb_vsx: +.quad .SHA3_absorb_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_absorb: +.SHA3_absorb_vsx: stdu 1,-256(1) li 10,63 li 11,79 @@ -595,16 +595,16 @@ SHA3_absorb: .byte 0,12,0x04,1,0x80,0,4,0 .long 0 -.globl SHA3_squeeze -.type SHA3_squeeze,@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,@function .section ".opd","aw" .align 3 -SHA3_squeeze: -.quad .SHA3_squeeze,.TOC.@tocbase,0 +SHA3_squeeze_vsx: +.quad .SHA3_squeeze_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_squeeze: +.SHA3_squeeze_vsx: mflr 9 subi 4,4,1 addi 8,3,4