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

Reply via email to