5f43a7
From cd904815e4f4e377faeacc01627aa3f15b6fb217 Mon Sep 17 00:00:00 2001
5f43a7
From: Daiki Ueno <dueno@redhat.com>
5f43a7
Date: Mon, 8 Jun 2020 10:26:34 +0200
5f43a7
Subject: [PATCH] Revert "Bug 1613238 - POWER SHA-2 digest vector acceleration.
5f43a7
 r=jcj,kjacobs"
5f43a7
5f43a7
This reverts commit 7d4b0ba0256aed6879008f87d9a3b4f6bfbc7817.
5f43a7
---
5f43a7
 lib/freebl/Makefile                |   3 -
5f43a7
 lib/freebl/freebl.gyp              |  58 +-
5f43a7
 lib/freebl/freebl_base.gypi        |   9 +-
5f43a7
 lib/freebl/gcm.h                   |  22 +-
5f43a7
 lib/freebl/ppc-crypto.h            |  31 --
5f43a7
 lib/freebl/scripts/LICENSE         |  36 --
5f43a7
 lib/freebl/scripts/gen.sh          |  19 -
5f43a7
 lib/freebl/scripts/ppc-xlate.pl    | 352 ------------
5f43a7
 lib/freebl/scripts/sha512p8-ppc.pl | 413 --------------
5f43a7
 lib/freebl/sha512-p8.s             | 851 -----------------------------
5f43a7
 lib/freebl/sha512.c                | 248 +++------
5f43a7
 11 files changed, 101 insertions(+), 1941 deletions(-)
5f43a7
 delete mode 100644 lib/freebl/ppc-crypto.h
5f43a7
 delete mode 100644 lib/freebl/scripts/LICENSE
5f43a7
 delete mode 100755 lib/freebl/scripts/gen.sh
5f43a7
 delete mode 100644 lib/freebl/scripts/ppc-xlate.pl
5f43a7
 delete mode 100644 lib/freebl/scripts/sha512p8-ppc.pl
5f43a7
 delete mode 100644 lib/freebl/sha512-p8.s
5f43a7
5f43a7
diff --git a/lib/freebl/Makefile b/lib/freebl/Makefile
5f43a7
index 5f7384429..a8ea6936a 100644
5f43a7
--- a/lib/freebl/Makefile
5f43a7
+++ b/lib/freebl/Makefile
5f43a7
@@ -267,7 +267,6 @@ ifeq ($(CPU_ARCH),arm)
5f43a7
 endif
5f43a7
 ifeq ($(CPU_ARCH),ppc)
5f43a7
     EXTRA_SRCS += gcm-ppc.c
5f43a7
-    ASFILES += sha512-p8.s
5f43a7
 ifdef USE_64
5f43a7
     DEFINES += -DNSS_NO_INIT_SUPPORT
5f43a7
 endif # USE_64
5f43a7
@@ -727,8 +726,6 @@ ifndef NSS_DISABLE_ALTIVEC
5f43a7
 $(OBJDIR)/$(PROG_PREFIX)gcm-ppc$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx
5f43a7
 $(OBJDIR)/$(PROG_PREFIX)gcm$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx
5f43a7
 $(OBJDIR)/$(PROG_PREFIX)rijndael$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx
5f43a7
-$(OBJDIR)/$(PROG_PREFIX)sha512$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx \
5f43a7
-					-funroll-loops -fpeel-loops
5f43a7
 endif
5f43a7
 endif
5f43a7
 
5f43a7
diff --git a/lib/freebl/freebl.gyp b/lib/freebl/freebl.gyp
5f43a7
index f3bb8a71a..1df25f88e 100644
5f43a7
--- a/lib/freebl/freebl.gyp
5f43a7
+++ b/lib/freebl/freebl.gyp
5f43a7
@@ -258,8 +258,7 @@
5f43a7
       'target_name': 'gcm-aes-ppc_c_lib',
5f43a7
       'type': 'static_library',
5f43a7
       'sources': [
5f43a7
-        'gcm-ppc.c',
5f43a7
-        'sha512-p8.s',
5f43a7
+        'gcm-ppc.c'
5f43a7
       ],
5f43a7
       'dependencies': [
5f43a7
         '<(DEPTH)/exports.gyp:nss_exports'
5f43a7
@@ -271,58 +270,7 @@
5f43a7
       'cflags_mozilla': [
5f43a7
         '-mcrypto',
5f43a7
         '-maltivec'
5f43a7
-      ],
5f43a7
-    },
5f43a7
-    {
5f43a7
-      'target_name': 'gcm-sha512-nodepend-ppc_c_lib',
5f43a7
-      'type': 'static_library',
5f43a7
-      'sources': [
5f43a7
-        'sha512.c',
5f43a7
-      ],
5f43a7
-      'dependencies': [
5f43a7
-        '<(DEPTH)/exports.gyp:nss_exports'
5f43a7
-      ],
5f43a7
-      'cflags': [
5f43a7
-        '-mcrypto',
5f43a7
-        '-maltivec',
5f43a7
-        '-mvsx',
5f43a7
-        '-funroll-loops',
5f43a7
-        '-fpeel-loops',
5f43a7
-      ],
5f43a7
-      'cflags_mozilla': [
5f43a7
-        '-mcrypto',
5f43a7
-        '-maltivec',
5f43a7
-        '-mvsx',
5f43a7
-        '-funroll-loops',
5f43a7
-        '-fpeel-loops',
5f43a7
-      ],
5f43a7
-    },
5f43a7
-    {
5f43a7
-      'target_name': 'gcm-sha512-ppc_c_lib',
5f43a7
-      'type': 'static_library',
5f43a7
-      'sources': [
5f43a7
-        'sha512.c',
5f43a7
-      ],
5f43a7
-      'dependencies': [
5f43a7
-        '<(DEPTH)/exports.gyp:nss_exports'
5f43a7
-      ],
5f43a7
-      'cflags': [
5f43a7
-        '-mcrypto',
5f43a7
-        '-maltivec',
5f43a7
-        '-mvsx',
5f43a7
-        '-funroll-loops',
5f43a7
-        '-fpeel-loops',
5f43a7
-      ],
5f43a7
-      'cflags_mozilla': [
5f43a7
-        '-mcrypto',
5f43a7
-        '-maltivec',
5f43a7
-        '-mvsx',
5f43a7
-        '-funroll-loops',
5f43a7
-        '-fpeel-loops',
5f43a7
-      ],
5f43a7
-      'defines!': [
5f43a7
-        'FREEBL_NO_DEPEND',
5f43a7
-      ],
5f43a7
+      ]
5f43a7
     },
5f43a7
     {
5f43a7
       'target_name': 'armv8_c_lib',
5f43a7
@@ -407,7 +355,6 @@
5f43a7
         [ 'disable_altivec==0 and (target_arch=="ppc64" or target_arch=="ppc64le")', {
5f43a7
           'dependencies': [
5f43a7
             'gcm-aes-ppc_c_lib',
5f43a7
-            'gcm-sha512-ppc_c_lib',
5f43a7
           ],
5f43a7
         }],
5f43a7
         [ 'disable_altivec==1 and (target_arch=="ppc64" or target_arch=="ppc64le")', {
5f43a7
@@ -475,7 +422,6 @@
5f43a7
         [ 'disable_altivec==0 and (target_arch=="ppc64" or target_arch=="ppc64le")', {
5f43a7
           'dependencies': [
5f43a7
             'gcm-aes-ppc_c_lib',
5f43a7
-            'gcm-sha512-nodepend-ppc_c_lib',
5f43a7
           ],
5f43a7
         }],
5f43a7
         [ 'disable_altivec==1 and (target_arch=="ppc64" or target_arch=="ppc64le")', {
5f43a7
diff --git a/lib/freebl/freebl_base.gypi b/lib/freebl/freebl_base.gypi
5f43a7
index 9ba9169f4..e1e4c88dc 100644
5f43a7
--- a/lib/freebl/freebl_base.gypi
5f43a7
+++ b/lib/freebl/freebl_base.gypi
5f43a7
@@ -55,6 +55,8 @@
5f43a7
     'rijndael.c',
5f43a7
     'rsa.c',
5f43a7
     'rsapkcs.c',
5f43a7
+    'seed.c',
5f43a7
+    'sha512.c',
5f43a7
     'sha_fast.c',
5f43a7
     'shvfy.c',
5f43a7
     'sysrand.c',
5f43a7
@@ -144,13 +146,6 @@
5f43a7
         'ecl/curve25519_32.c',
5f43a7
       ],
5f43a7
     }],
5f43a7
-    ['(target_arch!="ppc64" and target_arch!="ppc64le") or disable_altivec==1', {
5f43a7
-      'sources': [
5f43a7
-        # Gyp does not support per-file cflags, so working around like this.
5f43a7
-        # ppc performance greatly benefits from specific flags.
5f43a7
-        'sha512.c',
5f43a7
-      ],
5f43a7
-    }],
5f43a7
     [ 'disable_chachapoly==0', {
5f43a7
       # The ChaCha20 code is linked in through the static ssse3-crypto lib on
5f43a7
       # all platforms that support SSSE3. There are runtime checks in place to
5f43a7
diff --git a/lib/freebl/gcm.h b/lib/freebl/gcm.h
5f43a7
index 21792e0b3..38b066580 100644
5f43a7
--- a/lib/freebl/gcm.h
5f43a7
+++ b/lib/freebl/gcm.h
5f43a7
@@ -31,8 +31,26 @@
5f43a7
 #include <arm_neon.h>
5f43a7
 #endif
5f43a7
 
5f43a7
-#if defined(__powerpc64__)
5f43a7
-#include "ppc-crypto.h"
5f43a7
+#if defined(__powerpc64__) && !defined(NSS_DISABLE_ALTIVEC)
5f43a7
+#include "altivec-types.h"
5f43a7
+
5f43a7
+/* The ghash freebl test tries to use this in C++, and gcc defines conflict. */
5f43a7
+#ifdef __cplusplus
5f43a7
+#undef pixel
5f43a7
+#undef vector
5f43a7
+#undef bool
5f43a7
+#endif
5f43a7
+
5f43a7
+/*
5f43a7
+ * PPC CRYPTO requires at least gcc 8 or clang. The LE check is purely
5f43a7
+ * because it's only been tested on LE. If you're interested in BE,
5f43a7
+ * please send a patch.
5f43a7
+ */
5f43a7
+#if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 8)) && \
5f43a7
+    defined(IS_LITTLE_ENDIAN)
5f43a7
+#define USE_PPC_CRYPTO
5f43a7
+#endif
5f43a7
+
5f43a7
 #endif
5f43a7
 
5f43a7
 SEC_BEGIN_PROTOS
5f43a7
diff --git a/lib/freebl/ppc-crypto.h b/lib/freebl/ppc-crypto.h
5f43a7
deleted file mode 100644
5f43a7
index 4d283895f..000000000
5f43a7
--- a/lib/freebl/ppc-crypto.h
5f43a7
+++ /dev/null
5f43a7
@@ -1,31 +0,0 @@
5f43a7
-/* This Source Code Form is subject to the terms of the Mozilla Public
5f43a7
- * License, v. 2.0. If a copy of the MPL was not distributed with this
5f43a7
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5f43a7
-
5f43a7
-#ifndef PPC_CRYPTO_H
5f43a7
-#define PPC_CRYPTO_H 1
5f43a7
-
5f43a7
-#if defined(__powerpc64__) && defined(__ALTIVEC__) && \
5f43a7
-    !defined(NSS_DISABLE_ALTIVEC)
5f43a7
-#include "altivec-types.h"
5f43a7
-
5f43a7
-/* The ghash freebl test tries to use this in C++, and gcc defines conflict. */
5f43a7
-#ifdef __cplusplus
5f43a7
-#undef pixel
5f43a7
-#undef vector
5f43a7
-#undef bool
5f43a7
-#endif
5f43a7
-
5f43a7
-/*
5f43a7
- * PPC CRYPTO requires at least gcc 8 or clang. The LE check is purely
5f43a7
- * because it's only been tested on LE. If you're interested in BE,
5f43a7
- * please send a patch.
5f43a7
- */
5f43a7
-#if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 8)) && \
5f43a7
-    defined(IS_LITTLE_ENDIAN) && defined(__VSX__)
5f43a7
-#define USE_PPC_CRYPTO
5f43a7
-#endif
5f43a7
-
5f43a7
-#endif /* defined(__powerpc64__) && !defined(NSS_DISABLE_ALTIVEC) && defined(__ALTIVEC__) */
5f43a7
-
5f43a7
-#endif
5f43a7
diff --git a/lib/freebl/scripts/LICENSE b/lib/freebl/scripts/LICENSE
5f43a7
deleted file mode 100644
5f43a7
index a9335c22f..000000000
5f43a7
--- a/lib/freebl/scripts/LICENSE
5f43a7
+++ /dev/null
5f43a7
@@ -1,36 +0,0 @@
5f43a7
-Copyright (c) 2006, CRYPTOGAMS by <appro@openssl.org>
5f43a7
-All rights reserved.
5f43a7
-
5f43a7
-Redistribution and use in source and binary forms, with or without
5f43a7
-modification, are permitted provided that the following conditions
5f43a7
-are met:
5f43a7
-
5f43a7
-      *	Redistributions of source code must retain copyright notices,
5f43a7
-	this list of conditions and the following disclaimer.
5f43a7
-
5f43a7
-      *	Redistributions in binary form must reproduce the above
5f43a7
-	copyright notice, this list of conditions and the following
5f43a7
-	disclaimer in the documentation and/or other materials
5f43a7
-	provided with the distribution.
5f43a7
-
5f43a7
-      *	Neither the name of the CRYPTOGAMS nor the names of its
5f43a7
-	copyright holder and contributors may be used to endorse or
5f43a7
-	promote products derived from this software without specific
5f43a7
-	prior written permission.
5f43a7
-
5f43a7
-ALTERNATIVELY, provided that this notice is retained in full, this
5f43a7
-product may be distributed under the terms of the GNU General Public
5f43a7
-License (GPL), in which case the provisions of the GPL apply INSTEAD OF
5f43a7
-those given above.
5f43a7
-
5f43a7
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
5f43a7
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5f43a7
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
5f43a7
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
5f43a7
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
5f43a7
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
5f43a7
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
5f43a7
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
5f43a7
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
5f43a7
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
5f43a7
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5f43a7
diff --git a/lib/freebl/scripts/gen.sh b/lib/freebl/scripts/gen.sh
5f43a7
deleted file mode 100755
5f43a7
index ea415cc94..000000000
5f43a7
--- a/lib/freebl/scripts/gen.sh
5f43a7
+++ /dev/null
5f43a7
@@ -1,19 +0,0 @@
5f43a7
-#!/bin/sh
5f43a7
-#
5f43a7
-# Run the scripts in this folder, generating the assembly,
5f43a7
-#
5f43a7
-
5f43a7
-perl sha512p8-ppc.pl linux64le sha512-p8.s
5f43a7
-
5f43a7
-# Add the license mention
5f43a7
-cat > hdr << "EOF"
5f43a7
-# Copyright (c) 2006, CRYPTOGAMS by <appro@openssl.org>
5f43a7
-# All rights reserved.
5f43a7
-# See the full LICENSE under scripts/.
5f43a7
-
5f43a7
-EOF
5f43a7
-
5f43a7
-cat hdr sha512-p8.s > ../sha512-p8.s
5f43a7
-
5f43a7
-# Cleanup
5f43a7
-rm hdr sha512-p8.s
5f43a7
diff --git a/lib/freebl/scripts/ppc-xlate.pl b/lib/freebl/scripts/ppc-xlate.pl
5f43a7
deleted file mode 100644
5f43a7
index a0fcf6a31..000000000
5f43a7
--- a/lib/freebl/scripts/ppc-xlate.pl
5f43a7
+++ /dev/null
5f43a7
@@ -1,352 +0,0 @@
5f43a7
-#!/usr/bin/env perl
5f43a7
-
5f43a7
-# PowerPC assembler distiller by \@dot-asm.
5f43a7
-
5f43a7
-################################################################
5f43a7
-# Recognized "flavour"-s are:
5f43a7
-#
5f43a7
-# linux{32|64}[le]  GNU assembler and ELF symbol decorations,
5f43a7
-#                   with little-endian option
5f43a7
-# linux64v2         GNU asssembler and big-endian instantiation
5f43a7
-#                   of latest ELF specification
5f43a7
-# aix{32|64}        AIX assembler and symbol decorations
5f43a7
-# osx{32|64}        Mac OS X assembler and symbol decoratons
5f43a7
-
5f43a7
-my $flavour = shift;
5f43a7
-my $output = shift;
5f43a7
-open STDOUT,">$output" || die "can't open $output: $!";
5f43a7
-
5f43a7
-my %GLOBALS;
5f43a7
-my %TYPES;
5f43a7
-my $dotinlocallabels=($flavour=~/linux/)?1:0;
5f43a7
-
5f43a7
-################################################################
5f43a7
-# directives which need special treatment on different platforms
5f43a7
-################################################################
5f43a7
-my $type = sub {
5f43a7
-    my ($dir,$name,$type) = @_;
5f43a7
-
5f43a7
-    $TYPES{$name} = $type;
5f43a7
-    if ($flavour =~ /linux/) {
5f43a7
-	$name =~ s|^\.||;
5f43a7
-	".type	$name,$type";
5f43a7
-    } else {
5f43a7
-	"";
5f43a7
-    }
5f43a7
-};
5f43a7
-my $globl = sub {
5f43a7
-    my $junk = shift;
5f43a7
-    my $name = shift;
5f43a7
-    my $global = \$GLOBALS{$name};
5f43a7
-    my $type = \$TYPES{$name};
5f43a7
-    my $ret;
5f43a7
-
5f43a7
-    $name =~ s|^\.||;
5f43a7
-
5f43a7
-    SWITCH: for ($flavour) {
5f43a7
-	/aix/		&& do { if (!$$type) {
5f43a7
-				    $$type = "\@function";
5f43a7
-				}
5f43a7
-				if ($$type =~ /function/) {
5f43a7
-				    $name = ".$name";
5f43a7
-				}
5f43a7
-				last;
5f43a7
-			      };
5f43a7
-	/osx/		&& do { $name = "_$name";
5f43a7
-				last;
5f43a7
-			      };
5f43a7
-	/linux.*(32|64(le|v2))/
5f43a7
-			&& do {	$ret .= ".globl	$name";
5f43a7
-				if (!$$type) {
5f43a7
-				    $ret .= "\n.type	$name,\@function";
5f43a7
-				    $$type = "\@function";
5f43a7
-				}
5f43a7
-				last;
5f43a7
-			      };
5f43a7
-	/linux.*64/	&& do {	$ret .= ".globl	$name";
5f43a7
-				if (!$$type) {
5f43a7
-				    $ret .= "\n.type	$name,\@function";
5f43a7
-				    $$type = "\@function";
5f43a7
-				}
5f43a7
-				if ($$type =~ /function/) {
5f43a7
-				    $ret .= "\n.section	\".opd\",\"aw\"";
5f43a7
-				    $ret .= "\n.align	3";
5f43a7
-				    $ret .= "\n$name:";
5f43a7
-				    $ret .= "\n.quad	.$name,.TOC.\@tocbase,0";
5f43a7
-				    $ret .= "\n.previous";
5f43a7
-				    $name = ".$name";
5f43a7
-				}
5f43a7
-				last;
5f43a7
-			      };
5f43a7
-    }
5f43a7
-
5f43a7
-    $ret = ".globl	$name" if (!$ret);
5f43a7
-    $$global = $name;
5f43a7
-    $ret;
5f43a7
-};
5f43a7
-my $text = sub {
5f43a7
-    my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text";
5f43a7
-    $ret = ".abiversion	2\n".$ret	if ($flavour =~ /linux.*64(le|v2)/);
5f43a7
-    $ret;
5f43a7
-};
5f43a7
-my $machine = sub {
5f43a7
-    my $junk = shift;
5f43a7
-    my $arch = shift;
5f43a7
-    if ($flavour =~ /osx/)
5f43a7
-    {	$arch =~ s/\"//g;
5f43a7
-	$arch = ($flavour=~/64/) ? "ppc970-64" : "ppc970" if ($arch eq "any");
5f43a7
-    }
5f43a7
-    ".machine	$arch";
5f43a7
-};
5f43a7
-my $size = sub {
5f43a7
-    if ($flavour =~ /linux/)
5f43a7
-    {	shift;
5f43a7
-	my $name = shift;
5f43a7
-	my $real = $GLOBALS{$name} ? \$GLOBALS{$name} : \$name;
5f43a7
-	my $ret  = ".size	$$real,.-$$real";
5f43a7
-	$name =~ s|^\.||;
5f43a7
-	if ($$real ne $name) {
5f43a7
-	    $ret .= "\n.size	$name,.-$$real";
5f43a7
-	}
5f43a7
-	$ret;
5f43a7
-    }
5f43a7
-    else
5f43a7
-    {	"";	}
5f43a7
-};
5f43a7
-my $asciz = sub {
5f43a7
-    shift;
5f43a7
-    my $line = join(",",@_);
5f43a7
-    if ($line =~ /^"(.*)"$/)
5f43a7
-    {	".byte	" . join(",",unpack("C*",$1),0) . "\n.align	2";	}
5f43a7
-    else
5f43a7
-    {	"";	}
5f43a7
-};
5f43a7
-my $quad = sub {
5f43a7
-    shift;
5f43a7
-    my @ret;
5f43a7
-    my ($hi,$lo);
5f43a7
-    for (@_) {
5f43a7
-	if (/^0x([0-9a-f]*?)([0-9a-f]{1,8})$/io)
5f43a7
-	{  $hi=$1?"0x$1":"0"; $lo="0x$2";  }
5f43a7
-	elsif (/^([0-9]+)$/o)
5f43a7
-	{  $hi=$1>>32; $lo=$1&0xffffffff;  } # error-prone with 32-bit perl
5f43a7
-	else
5f43a7
-	{  $hi=undef; $lo=$_; }
5f43a7
-
5f43a7
-	if (defined($hi))
5f43a7
-	{  push(@ret,$flavour=~/le$/o?".long\t$lo,$hi":".long\t$hi,$lo");  }
5f43a7
-	else
5f43a7
-	{  push(@ret,".quad	$lo");  }
5f43a7
-    }
5f43a7
-    join("\n",@ret);
5f43a7
-};
5f43a7
-
5f43a7
-################################################################
5f43a7
-# simplified mnemonics not handled by at least one assembler
5f43a7
-################################################################
5f43a7
-my $cmplw = sub {
5f43a7
-    my $f = shift;
5f43a7
-    my $cr = 0; $cr = shift if ($#_>1);
5f43a7
-    # Some out-of-date 32-bit GNU assembler just can't handle cmplw...
5f43a7
-    ($flavour =~ /linux.*32/) ?
5f43a7
-	"	.long	".sprintf "0x%x",31<<26|$cr<<23|$_[0]<<16|$_[1]<<11|64 :
5f43a7
-	"	cmplw	".join(',',$cr,@_);
5f43a7
-};
5f43a7
-my $bdnz = sub {
5f43a7
-    my $f = shift;
5f43a7
-    my $bo = $f=~/[\+\-]/ ? 16+9 : 16;	# optional "to be taken" hint
5f43a7
-    "	bc	$bo,0,".shift;
5f43a7
-} if ($flavour!~/linux/);
5f43a7
-my $bltlr = sub {
5f43a7
-    my $f = shift;
5f43a7
-    my $bo = $f=~/\-/ ? 12+2 : 12;	# optional "not to be taken" hint
5f43a7
-    ($flavour =~ /linux/) ?		# GNU as doesn't allow most recent hints
5f43a7
-	"	.long	".sprintf "0x%x",19<<26|$bo<<21|16<<1 :
5f43a7
-	"	bclr	$bo,0";
5f43a7
-};
5f43a7
-my $bnelr = sub {
5f43a7
-    my $f = shift;
5f43a7
-    my $bo = $f=~/\-/ ? 4+2 : 4;	# optional "not to be taken" hint
5f43a7
-    ($flavour =~ /linux/) ?		# GNU as doesn't allow most recent hints
5f43a7
-	"	.long	".sprintf "0x%x",19<<26|$bo<<21|2<<16|16<<1 :
5f43a7
-	"	bclr	$bo,2";
5f43a7
-};
5f43a7
-my $beqlr = sub {
5f43a7
-    my $f = shift;
5f43a7
-    my $bo = $f=~/-/ ? 12+2 : 12;	# optional "not to be taken" hint
5f43a7
-    ($flavour =~ /linux/) ?		# GNU as doesn't allow most recent hints
5f43a7
-	"	.long	".sprintf "0x%X",19<<26|$bo<<21|2<<16|16<<1 :
5f43a7
-	"	bclr	$bo,2";
5f43a7
-};
5f43a7
-# GNU assembler can't handle extrdi rA,rS,16,48, or when sum of last two
5f43a7
-# arguments is 64, with "operand out of range" error.
5f43a7
-my $extrdi = sub {
5f43a7
-    my ($f,$ra,$rs,$n,$b) = @_;
5f43a7
-    $b = ($b+$n)&6;; $n = 64-$n;
5f43a7
-    "	rldicl	$ra,$rs,$b,$n";
5f43a7
-};
5f43a7
-my $vmr = sub {
5f43a7
-    my ($f,$vx,$vy) = @_;
5f43a7
-    "	vor	$vx,$vy,$vy";
5f43a7
-};
5f43a7
-
5f43a7
-# Some ABIs specify vrsave, special-purpose register #256, as reserved
5f43a7
-# for system use.
5f43a7
-my $no_vrsave = ($flavour =~ /aix|linux64(le|v2)/);
5f43a7
-my $mtspr = sub {
5f43a7
-    my ($f,$idx,$ra) = @_;
5f43a7
-    if ($idx == 256 && $no_vrsave) {
5f43a7
-	"	or	$ra,$ra,$ra";
5f43a7
-    } else {
5f43a7
-	"	mtspr	$idx,$ra";
5f43a7
-    }
5f43a7
-};
5f43a7
-my $mfspr = sub {
5f43a7
-    my ($f,$rd,$idx) = @_;
5f43a7
-    if ($idx == 256 && $no_vrsave) {
5f43a7
-	"	li	$rd,-1";
5f43a7
-    } else {
5f43a7
-	"	mfspr	$rd,$idx";
5f43a7
-    }
5f43a7
-};
5f43a7
-
5f43a7
-# PowerISA 2.06 stuff
5f43a7
-sub vsxmem_op {
5f43a7
-    my ($f, $vrt, $ra, $rb, $op) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($vrt<<21)|($ra<<16)|($rb<<11)|($op*2+1);
5f43a7
-}
5f43a7
-# made-up unaligned memory reference AltiVec/VMX instructions
5f43a7
-my $lvx_u	= sub {	vsxmem_op(@_, 844); };	# lxvd2x
5f43a7
-my $stvx_u	= sub {	vsxmem_op(@_, 972); };	# stxvd2x
5f43a7
-my $lvdx_u	= sub {	vsxmem_op(@_, 588); };	# lxsdx
5f43a7
-my $stvdx_u	= sub {	vsxmem_op(@_, 716); };	# stxsdx
5f43a7
-my $lvx_4w	= sub { vsxmem_op(@_, 780); };	# lxvw4x
5f43a7
-my $stvx_4w	= sub { vsxmem_op(@_, 908); };	# stxvw4x
5f43a7
-my $lvx_splt	= sub { vsxmem_op(@_, 332); };	# lxvdsx
5f43a7
-# VSX instruction[s] masqueraded as made-up AltiVec/VMX
5f43a7
-my $vpermdi	= sub {				# xxpermdi
5f43a7
-    my ($f, $vrt, $vra, $vrb, $dm) = @_;
5f43a7
-    $dm = oct($dm) if ($dm =~ /^0/);
5f43a7
-    "	.long	".sprintf "0x%X",(60<<26)|($vrt<<21)|($vra<<16)|($vrb<<11)|($dm<<8)|(10<<3)|7;
5f43a7
-};
5f43a7
-
5f43a7
-# PowerISA 2.07 stuff
5f43a7
-sub vcrypto_op {
5f43a7
-    my ($f, $vrt, $vra, $vrb, $op) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(4<<26)|($vrt<<21)|($vra<<16)|($vrb<<11)|$op;
5f43a7
-}
5f43a7
-sub vfour {
5f43a7
-    my ($f, $vrt, $vra, $vrb, $vrc, $op) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(4<<26)|($vrt<<21)|($vra<<16)|($vrb<<11)|($vrc<<6)|$op;
5f43a7
-};
5f43a7
-my $vcipher	= sub { vcrypto_op(@_, 1288); };
5f43a7
-my $vcipherlast	= sub { vcrypto_op(@_, 1289); };
5f43a7
-my $vncipher	= sub { vcrypto_op(@_, 1352); };
5f43a7
-my $vncipherlast= sub { vcrypto_op(@_, 1353); };
5f43a7
-my $vsbox	= sub { vcrypto_op(@_, 0, 1480); };
5f43a7
-my $vshasigmad	= sub { my ($st,$six)=splice(@_,-2); vcrypto_op(@_, $st<<4|$six, 1730); };
5f43a7
-my $vshasigmaw	= sub { my ($st,$six)=splice(@_,-2); vcrypto_op(@_, $st<<4|$six, 1666); };
5f43a7
-my $vpmsumb	= sub { vcrypto_op(@_, 1032); };
5f43a7
-my $vpmsumd	= sub { vcrypto_op(@_, 1224); };
5f43a7
-my $vpmsubh	= sub { vcrypto_op(@_, 1096); };
5f43a7
-my $vpmsumw	= sub { vcrypto_op(@_, 1160); };
5f43a7
-# These are not really crypto, but vcrypto_op template works
5f43a7
-my $vaddudm	= sub { vcrypto_op(@_, 192);  };
5f43a7
-my $vadduqm	= sub { vcrypto_op(@_, 256);  };
5f43a7
-my $vmuleuw	= sub { vcrypto_op(@_, 648);  };
5f43a7
-my $vmulouw	= sub { vcrypto_op(@_, 136);  };
5f43a7
-my $vrld	= sub { vcrypto_op(@_, 196);  };
5f43a7
-my $vsld	= sub { vcrypto_op(@_, 1476); };
5f43a7
-my $vsrd	= sub { vcrypto_op(@_, 1732); };
5f43a7
-my $vsubudm	= sub { vcrypto_op(@_, 1216); };
5f43a7
-my $vaddcuq	= sub { vcrypto_op(@_, 320);  };
5f43a7
-my $vaddeuqm	= sub { vfour(@_,60); };
5f43a7
-my $vaddecuq	= sub { vfour(@_,61); };
5f43a7
-my $vmrgew	= sub { vfour(@_,0,1932); };
5f43a7
-my $vmrgow	= sub { vfour(@_,0,1676); };
5f43a7
-
5f43a7
-my $mtsle	= sub {
5f43a7
-    my ($f, $arg) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($arg<<21)|(147*2);
5f43a7
-};
5f43a7
-
5f43a7
-# VSX instructions masqueraded as AltiVec/VMX
5f43a7
-my $mtvrd	= sub {
5f43a7
-    my ($f, $vrt, $ra) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($vrt<<21)|($ra<<16)|(179<<1)|1;
5f43a7
-};
5f43a7
-my $mtvrwz	= sub {
5f43a7
-    my ($f, $vrt, $ra) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($vrt<<21)|($ra<<16)|(243<<1)|1;
5f43a7
-};
5f43a7
-my $lvwzx_u	= sub { vsxmem_op(@_, 12); };	# lxsiwzx
5f43a7
-my $stvwx_u	= sub { vsxmem_op(@_, 140); };	# stxsiwx
5f43a7
-
5f43a7
-# PowerISA 3.0 stuff
5f43a7
-my $maddhdu	= sub { vfour(@_,49); };
5f43a7
-my $maddld	= sub { vfour(@_,51); };
5f43a7
-my $darn = sub {
5f43a7
-    my ($f, $rt, $l) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($rt<<21)|($l<<16)|(755<<1);
5f43a7
-};
5f43a7
-my $iseleq = sub {
5f43a7
-    my ($f, $rt, $ra, $rb) = @_;
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($rt<<21)|($ra<<16)|($rb<<11)|(2<<6)|30;
5f43a7
-};
5f43a7
-# VSX instruction[s] masqueraded as made-up AltiVec/VMX
5f43a7
-my $vspltib	= sub {				# xxspltib
5f43a7
-    my ($f, $vrt, $imm8) = @_;
5f43a7
-    $imm8 = oct($imm8) if ($imm8 =~ /^0/);
5f43a7
-    $imm8 &= 0xff;
5f43a7
-    "	.long	".sprintf "0x%X",(60<<26)|($vrt<<21)|($imm8<<11)|(360<<1)|1;
5f43a7
-};
5f43a7
-
5f43a7
-# PowerISA 3.0B stuff
5f43a7
-my $addex = sub {
5f43a7
-    my ($f, $rt, $ra, $rb, $cy) = @_;	# only cy==0 is specified in 3.0B
5f43a7
-    "	.long	".sprintf "0x%X",(31<<26)|($rt<<21)|($ra<<16)|($rb<<11)|($cy<<9)|(170<<1);
5f43a7
-};
5f43a7
-my $vmsumudm	= sub { vfour(@_,35); };
5f43a7
-
5f43a7
-while($line=<>) {
5f43a7
-
5f43a7
-    $line =~ s|[#!;].*$||;	# get rid of asm-style comments...
5f43a7
-    $line =~ s|/\*.*\*/||;	# ... and C-style comments...
5f43a7
-    $line =~ s|^\s+||;		# ... and skip white spaces in beginning...
5f43a7
-    $line =~ s|\s+$||;		# ... and at the end
5f43a7
-
5f43a7
-    {
5f43a7
-	$line =~ s|\.L(\w+)|L$1|g;	# common denominator for Locallabel
5f43a7
-	$line =~ s|\bL(\w+)|\.L$1|g	if ($dotinlocallabels);
5f43a7
-    }
5f43a7
-
5f43a7
-    {
5f43a7
-	$line =~ s|(^[\.\w]+)\:\s*||;
5f43a7
-	my $label = $1;
5f43a7
-	if ($label) {
5f43a7
-	    my $xlated = ($GLOBALS{$label} or $label);
5f43a7
-	    print "$xlated:";
5f43a7
-	    if ($flavour =~ /linux.*64(le|v2)/) {
5f43a7
-		if ($TYPES{$label} =~ /function/) {
5f43a7
-		    printf "\n.localentry	%s,0\n",$xlated;
5f43a7
-		}
5f43a7
-	    }
5f43a7
-	}
5f43a7
-    }
5f43a7
-
5f43a7
-    {
5f43a7
-	$line =~ s|^\s*(\.?)(\w+)([\.\+\-]?)\s*||;
5f43a7
-	my $c = $1; $c = "\t" if ($c eq "");
5f43a7
-	my $mnemonic = $2;
5f43a7
-	my $f = $3;
5f43a7
-	my $opcode = eval("\$$mnemonic");
5f43a7
-	$line =~ s/\b(c?[rf]|v|vs)([0-9]+)\b/$2/g if ($c ne "." and $flavour !~ /osx/);
5f43a7
-	if (ref($opcode) eq 'CODE') { $line = &$opcode($f,split(/,\s*/,$line)); }
5f43a7
-	elsif ($mnemonic)           { $line = $c.$mnemonic.$f."\t".$line; }
5f43a7
-    }
5f43a7
-
5f43a7
-    print $line if ($line);
5f43a7
-    print "\n";
5f43a7
-}
5f43a7
-
5f43a7
-close STDOUT;
5f43a7
diff --git a/lib/freebl/scripts/sha512p8-ppc.pl b/lib/freebl/scripts/sha512p8-ppc.pl
5f43a7
deleted file mode 100644
5f43a7
index 3bef98be7..000000000
5f43a7
--- a/lib/freebl/scripts/sha512p8-ppc.pl
5f43a7
+++ /dev/null
5f43a7
@@ -1,413 +0,0 @@
5f43a7
-#!/usr/bin/env perl
5f43a7
-
5f43a7
-# ====================================================================
5f43a7
-# Written by Andy Polyakov, @dot-asm, initially for use in the OpenSSL
5f43a7
-# project. The module is dual licensed under OpenSSL and CRYPTOGAMS
5f43a7
-# licenses depending on where you obtain it. For further details see
5f43a7
-# https://github.com/dot-asm/cryptogams/.
5f43a7
-# ====================================================================
5f43a7
-
5f43a7
-# SHA256/512 for PowerISA v2.07.
5f43a7
-#
5f43a7
-# Accurate performance measurements are problematic, because it's
5f43a7
-# always virtualized setup with possibly throttled processor.
5f43a7
-# Relative comparison is therefore more informative. This module is
5f43a7
-# ~60% faster than integer-only sha512-ppc.pl. To anchor to something
5f43a7
-# else, SHA256 is 24% slower than sha1-ppc.pl and 2.5x slower than
5f43a7
-# hardware-assisted aes-128-cbc encrypt. SHA512 is 20% faster than
5f43a7
-# sha1-ppc.pl and 1.6x slower than aes-128-cbc. Another interesting
5f43a7
-# result is degree of computational resources' utilization. POWER8 is
5f43a7
-# "massively multi-threaded chip" and difference between single- and
5f43a7
-# maximum multi-process benchmark results tells that utilization is
5f43a7
-# whooping 94%. For sha512-ppc.pl we get [not unimpressive] 84% and
5f43a7
-# for sha1-ppc.pl - 73%. 100% means that multi-process result equals
5f43a7
-# to single-process one, given that all threads end up on the same
5f43a7
-# physical core.
5f43a7
-#
5f43a7
-######################################################################
5f43a7
-# Believed-to-be-accurate results in cycles per processed byte [on
5f43a7
-# little-endian system]. Numbers in square brackets are for 64-bit
5f43a7
-# build of sha512-ppc.pl, presented for reference.
5f43a7
-#
5f43a7
-#		POWER8		POWER9
5f43a7
-# SHA256	9.7 [15.8]	11.2 [12.5]
5f43a7
-# SHA512	6.1 [10.3]	7.0 [7.9]
5f43a7
-
5f43a7
-$flavour=shift;
5f43a7
-$output =shift;
5f43a7
-
5f43a7
-if ($flavour =~ /64/) {
5f43a7
-	$SIZE_T=8;
5f43a7
-	$LRSAVE=2*$SIZE_T;
5f43a7
-	$STU="stdu";
5f43a7
-	$POP="ld";
5f43a7
-	$PUSH="std";
5f43a7
-} elsif ($flavour =~ /32/) {
5f43a7
-	$SIZE_T=4;
5f43a7
-	$LRSAVE=$SIZE_T;
5f43a7
-	$STU="stwu";
5f43a7
-	$POP="lwz";
5f43a7
-	$PUSH="stw";
5f43a7
-} else { die "nonsense $flavour"; }
5f43a7
-
5f43a7
-$LENDIAN=($flavour=~/le/);
5f43a7
-
5f43a7
-$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
5f43a7
-( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
5f43a7
-( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
5f43a7
-die "can't locate ppc-xlate.pl";
5f43a7
-
5f43a7
-open STDOUT,"| $^X $xlate $flavour $output" || die "can't call $xlate: $!";
5f43a7
-
5f43a7
-if ($output =~ /512/) {
5f43a7
-	$bits=512;
5f43a7
-	$SZ=8;
5f43a7
-	$sz="d";
5f43a7
-	$rounds=80;
5f43a7
-} else {
5f43a7
-	$bits=256;
5f43a7
-	$SZ=4;
5f43a7
-	$sz="w";
5f43a7
-	$rounds=64;
5f43a7
-}
5f43a7
-
5f43a7
-$func="sha${bits}_block_p8";
5f43a7
-$LOCALS=8*$SIZE_T+8*16;
5f43a7
-$FRAME=$LOCALS+9*16+6*$SIZE_T;
5f43a7
-
5f43a7
-$sp ="r1";
5f43a7
-$toc="r2";
5f43a7
-$ctx="r3";
5f43a7
-$inp="r4";
5f43a7
-$num="r5";
5f43a7
-$Tbl="r6";
5f43a7
-$idx="r7";
5f43a7
-$lrsave="r8";
5f43a7
-$offload="r11";
5f43a7
-$vrsave="r12";
5f43a7
-@I = ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70) = (0,map("r$_",(10,26..31)));
5f43a7
-
5f43a7
-@V=($A,$B,$C,$D,$E,$F,$G,$H)=map("v$_",(0..7));
5f43a7
-@X=map("v$_",(8..19,24..27));
5f43a7
-($Ki,$Func,$Sigma,$lemask)=map("v$_",(28..31));
5f43a7
-
5f43a7
-sub ROUND {
5f43a7
-my ($i,$a,$b,$c,$d,$e,$f,$g,$h)=@_;
5f43a7
-my $j=($i+1)%16;
5f43a7
-my $k=($i+2)%8;
5f43a7
-
5f43a7
-$code.=<<___		if ($i<15 && ($i%(16/$SZ))==(16/$SZ-1));
5f43a7
-	lvx_u		@X[$i+1],0,$inp		; load X[i] in advance
5f43a7
-	addi		$inp,$inp,16
5f43a7
-___
5f43a7
-$code.=<<___		if ($i<16 && ($i%(16/$SZ)));
5f43a7
-	vsldoi		@X[$i],@X[$i-1],@X[$i-1],$SZ
5f43a7
-___
5f43a7
-$code.=<<___		if ($LENDIAN && $i<16 && ($i%(16/$SZ))==0);
5f43a7
-	vperm		@X[$i],@X[$i],@X[$i],$lemask
5f43a7
-___
5f43a7
-$code.=<<___		if ($i>=15);
5f43a7
-	vshasigma${sz}	$Sigma,@X[($j+1)%16],0,0
5f43a7
-	vaddu${sz}m	@X[$j],@X[$j],$Sigma
5f43a7
-	vshasigma${sz}	$Sigma,@X[($j+14)%16],0,15
5f43a7
-	vaddu${sz}m	@X[$j],@X[$j],$Sigma
5f43a7
-	vaddu${sz}m	@X[$j],@X[$j],@X[($j+9)%16]
5f43a7
-___
5f43a7
-$code.=<<___;
5f43a7
-	vaddu${sz}m	$h,$h,@X[$i%16]		; h+=X[i]
5f43a7
-	vsel		$Func,$g,$f,$e		; Ch(e,f,g)
5f43a7
-	vaddu${sz}m	$g,$g,$Ki		; future h+=K[i]
5f43a7
-	vaddu${sz}m	$h,$h,$Func		; h+=Ch(e,f,g)
5f43a7
-	vshasigma${sz}	$Sigma,$e,1,15		; Sigma1(e)
5f43a7
-	vaddu${sz}m	$h,$h,$Sigma		; h+=Sigma1(e)
5f43a7
-	vxor		$Func,$a,$b
5f43a7
-	vsel		$Func,$b,$c,$Func	; Maj(a,b,c)
5f43a7
-	vaddu${sz}m	$d,$d,$h		; d+=h
5f43a7
-	vshasigma${sz}	$Sigma,$a,1,0		; Sigma0(a)
5f43a7
-	vaddu${sz}m	$Sigma,$Sigma,$Func	; Sigma0(a)+Maj(a,b,c)
5f43a7
-	vaddu${sz}m	$h,$h,$Sigma		; h+=Sigma0(a)+Maj(a,b,c)
5f43a7
-	lvx		$Ki,@I[$k],$idx		; load next K[i]
5f43a7
-___
5f43a7
-$code.=<<___		if ($k == 7);
5f43a7
-	addi		$idx,$idx,0x80
5f43a7
-___
5f43a7
-}
5f43a7
-
5f43a7
-$code=<<___;
5f43a7
-.machine	"any"
5f43a7
-.text
5f43a7
-
5f43a7
-.globl	$func
5f43a7
-.align	6
5f43a7
-$func:
5f43a7
-	$STU		$sp,-$FRAME($sp)
5f43a7
-	mflr		$lrsave
5f43a7
-	li		r10,`$LOCALS+15`
5f43a7
-	li		r11,`$LOCALS+31`
5f43a7
-	stvx		v24,r10,$sp		# ABI says so
5f43a7
-	addi		r10,r10,32
5f43a7
-	mfspr		$vrsave,256
5f43a7
-	stvx		v25,r11,$sp
5f43a7
-	addi		r11,r11,32
5f43a7
-	stvx		v26,r10,$sp
5f43a7
-	addi		r10,r10,32
5f43a7
-	stvx		v27,r11,$sp
5f43a7
-	addi		r11,r11,32
5f43a7
-	stvx		v28,r10,$sp
5f43a7
-	addi		r10,r10,32
5f43a7
-	stvx		v29,r11,$sp
5f43a7
-	addi		r11,r11,32
5f43a7
-	stvx		v30,r10,$sp
5f43a7
-	stvx		v31,r11,$sp
5f43a7
-	li		r11,-4096+255		# 0xfffff0ff
5f43a7
-	stw		$vrsave,`$FRAME-6*$SIZE_T-4`($sp)	# save vrsave
5f43a7
-	li		$x10,0x10
5f43a7
-	$PUSH		r26,`$FRAME-6*$SIZE_T`($sp)
5f43a7
-	li		$x20,0x20
5f43a7
-	$PUSH		r27,`$FRAME-5*$SIZE_T`($sp)
5f43a7
-	li		$x30,0x30
5f43a7
-	$PUSH		r28,`$FRAME-4*$SIZE_T`($sp)
5f43a7
-	li		$x40,0x40
5f43a7
-	$PUSH		r29,`$FRAME-3*$SIZE_T`($sp)
5f43a7
-	li		$x50,0x50
5f43a7
-	$PUSH		r30,`$FRAME-2*$SIZE_T`($sp)
5f43a7
-	li		$x60,0x60
5f43a7
-	$PUSH		r31,`$FRAME-1*$SIZE_T`($sp)
5f43a7
-	li		$x70,0x70
5f43a7
-	$PUSH		$lrsave,`$FRAME+$LRSAVE`($sp)
5f43a7
-	mtspr		256,r11
5f43a7
-
5f43a7
-	bl		LPICmeup
5f43a7
-	addi		$offload,$sp,`8*$SIZE_T+15`
5f43a7
-___
5f43a7
-$code.=<<___		if ($LENDIAN);
5f43a7
-	li		$idx,8
5f43a7
-	lvsl		$lemask,0,$idx
5f43a7
-	vspltisb	$Ki,0x0f
5f43a7
-	vxor		$lemask,$lemask,$Ki
5f43a7
-___
5f43a7
-$code.=<<___		if ($SZ==4);
5f43a7
-	lvx_4w		$A,$x00,$ctx
5f43a7
-	lvx_4w		$E,$x10,$ctx
5f43a7
-	vsldoi		$B,$A,$A,4		# unpack
5f43a7
-	vsldoi		$C,$A,$A,8
5f43a7
-	vsldoi		$D,$A,$A,12
5f43a7
-	vsldoi		$F,$E,$E,4
5f43a7
-	vsldoi		$G,$E,$E,8
5f43a7
-	vsldoi		$H,$E,$E,12
5f43a7
-___
5f43a7
-$code.=<<___		if ($SZ==8);
5f43a7
-	lvx_u		$A,$x00,$ctx
5f43a7
-	lvx_u		$C,$x10,$ctx
5f43a7
-	lvx_u		$E,$x20,$ctx
5f43a7
-	vsldoi		$B,$A,$A,8		# unpack
5f43a7
-	lvx_u		$G,$x30,$ctx
5f43a7
-	vsldoi		$D,$C,$C,8
5f43a7
-	vsldoi		$F,$E,$E,8
5f43a7
-	vsldoi		$H,$G,$G,8
5f43a7
-___
5f43a7
-$code.=<<___;
5f43a7
-	li		r0,`($rounds-16)/16`	# inner loop counter
5f43a7
-	b		Loop
5f43a7
-.align	5
5f43a7
-Loop:
5f43a7
-	lvx		$Ki,$x00,$Tbl
5f43a7
-	lvx_u		@X[0],0,$inp
5f43a7
-	addi		$inp,$inp,16
5f43a7
-	mr		$idx,$Tbl		# copy $Tbl
5f43a7
-	stvx		$A,$x00,$offload	# offload $A-$H
5f43a7
-	stvx		$B,$x10,$offload
5f43a7
-	stvx		$C,$x20,$offload
5f43a7
-	stvx		$D,$x30,$offload
5f43a7
-	stvx		$E,$x40,$offload
5f43a7
-	stvx		$F,$x50,$offload
5f43a7
-	stvx		$G,$x60,$offload
5f43a7
-	stvx		$H,$x70,$offload
5f43a7
-	vaddu${sz}m	$H,$H,$Ki		# h+K[i]
5f43a7
-	lvx		$Ki,$x10,$Tbl
5f43a7
-___
5f43a7
-for ($i=0;$i<16;$i++)	{ &ROUND($i,@V); unshift(@V,pop(@V)); }
5f43a7
-$code.=<<___;
5f43a7
-	mtctr		r0
5f43a7
-	b		L16_xx
5f43a7
-.align	5
5f43a7
-L16_xx:
5f43a7
-___
5f43a7
-for (;$i<32;$i++)	{ &ROUND($i,@V); unshift(@V,pop(@V)); }
5f43a7
-$code.=<<___;
5f43a7
-	bdnz		L16_xx
5f43a7
-
5f43a7
-	lvx		@X[2],$x00,$offload
5f43a7
-	subic.		$num,$num,1
5f43a7
-	lvx		@X[3],$x10,$offload
5f43a7
-	vaddu${sz}m	$A,$A,@X[2]
5f43a7
-	lvx		@X[4],$x20,$offload
5f43a7
-	vaddu${sz}m	$B,$B,@X[3]
5f43a7
-	lvx		@X[5],$x30,$offload
5f43a7
-	vaddu${sz}m	$C,$C,@X[4]
5f43a7
-	lvx		@X[6],$x40,$offload
5f43a7
-	vaddu${sz}m	$D,$D,@X[5]
5f43a7
-	lvx		@X[7],$x50,$offload
5f43a7
-	vaddu${sz}m	$E,$E,@X[6]
5f43a7
-	lvx		@X[8],$x60,$offload
5f43a7
-	vaddu${sz}m	$F,$F,@X[7]
5f43a7
-	lvx		@X[9],$x70,$offload
5f43a7
-	vaddu${sz}m	$G,$G,@X[8]
5f43a7
-	vaddu${sz}m	$H,$H,@X[9]
5f43a7
-	bne		Loop
5f43a7
-___
5f43a7
-$code.=<<___		if ($SZ==4);
5f43a7
-	lvx		@X[0],$x20,$idx
5f43a7
-	vperm		$A,$A,$B,$Ki		# pack the answer
5f43a7
-	lvx		@X[1],$x30,$idx
5f43a7
-	vperm		$E,$E,$F,$Ki
5f43a7
-	vperm		$A,$A,$C,@X[0]
5f43a7
-	vperm		$E,$E,$G,@X[0]
5f43a7
-	vperm		$A,$A,$D,@X[1]
5f43a7
-	vperm		$E,$E,$H,@X[1]
5f43a7
-	stvx_4w		$A,$x00,$ctx
5f43a7
-	stvx_4w		$E,$x10,$ctx
5f43a7
-___
5f43a7
-$code.=<<___		if ($SZ==8);
5f43a7
-	vperm		$A,$A,$B,$Ki		# pack the answer
5f43a7
-	vperm		$C,$C,$D,$Ki
5f43a7
-	vperm		$E,$E,$F,$Ki
5f43a7
-	vperm		$G,$G,$H,$Ki
5f43a7
-	stvx_u		$A,$x00,$ctx
5f43a7
-	stvx_u		$C,$x10,$ctx
5f43a7
-	stvx_u		$E,$x20,$ctx
5f43a7
-	stvx_u		$G,$x30,$ctx
5f43a7
-___
5f43a7
-$code.=<<___;
5f43a7
-	addi		$offload,$sp,`$LOCALS+15`
5f43a7
-	mtlr		$lrsave
5f43a7
-	mtspr		256,$vrsave
5f43a7
-	lvx		v24,$x00,$offload	# ABI says so
5f43a7
-	lvx		v25,$x10,$offload
5f43a7
-	lvx		v26,$x20,$offload
5f43a7
-	lvx		v27,$x30,$offload
5f43a7
-	lvx		v28,$x40,$offload
5f43a7
-	lvx		v29,$x50,$offload
5f43a7
-	lvx		v30,$x60,$offload
5f43a7
-	lvx		v31,$x70,$offload
5f43a7
-	$POP		r26,`$FRAME-6*$SIZE_T`($sp)
5f43a7
-	$POP		r27,`$FRAME-5*$SIZE_T`($sp)
5f43a7
-	$POP		r28,`$FRAME-4*$SIZE_T`($sp)
5f43a7
-	$POP		r29,`$FRAME-3*$SIZE_T`($sp)
5f43a7
-	$POP		r30,`$FRAME-2*$SIZE_T`($sp)
5f43a7
-	$POP		r31,`$FRAME-1*$SIZE_T`($sp)
5f43a7
-	addi		$sp,$sp,$FRAME
5f43a7
-	blr
5f43a7
-	.long		0
5f43a7
-	.byte		0,12,4,1,0x80,6,3,0
5f43a7
-	.long		0
5f43a7
-.size	$func,.-$func
5f43a7
-___
5f43a7
-
5f43a7
-# Ugly hack here, because PPC assembler syntax seem to vary too
5f43a7
-# much from platforms to platform...
5f43a7
-$code.=<<___;
5f43a7
-.align	6
5f43a7
-LPICmeup:
5f43a7
-	mflr	r0
5f43a7
-	bcl	20,31,\$+4
5f43a7
-	mflr	$Tbl	; vvvvvv "distance" between . and 1st data entry
5f43a7
-	addi	$Tbl,$Tbl,`64-8`
5f43a7
-	mtlr	r0
5f43a7
-	blr
5f43a7
-	.long	0
5f43a7
-	.byte	0,12,0x14,0,0,0,0,0
5f43a7
-	.space	`64-9*4`
5f43a7
-___
5f43a7
-
5f43a7
-if ($SZ==8) {
5f43a7
-    local *table = sub {
5f43a7
-	foreach(@_) { $code.=".quad	$_,$_\n"; }
5f43a7
-    };
5f43a7
-    table(
5f43a7
-	"0x428a2f98d728ae22","0x7137449123ef65cd",
5f43a7
-	"0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc",
5f43a7
-	"0x3956c25bf348b538","0x59f111f1b605d019",
5f43a7
-	"0x923f82a4af194f9b","0xab1c5ed5da6d8118",
5f43a7
-	"0xd807aa98a3030242","0x12835b0145706fbe",
5f43a7
-	"0x243185be4ee4b28c","0x550c7dc3d5ffb4e2",
5f43a7
-	"0x72be5d74f27b896f","0x80deb1fe3b1696b1",
5f43a7
-	"0x9bdc06a725c71235","0xc19bf174cf692694",
5f43a7
-	"0xe49b69c19ef14ad2","0xefbe4786384f25e3",
5f43a7
-	"0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65",
5f43a7
-	"0x2de92c6f592b0275","0x4a7484aa6ea6e483",
5f43a7
-	"0x5cb0a9dcbd41fbd4","0x76f988da831153b5",
5f43a7
-	"0x983e5152ee66dfab","0xa831c66d2db43210",
5f43a7
-	"0xb00327c898fb213f","0xbf597fc7beef0ee4",
5f43a7
-	"0xc6e00bf33da88fc2","0xd5a79147930aa725",
5f43a7
-	"0x06ca6351e003826f","0x142929670a0e6e70",
5f43a7
-	"0x27b70a8546d22ffc","0x2e1b21385c26c926",
5f43a7
-	"0x4d2c6dfc5ac42aed","0x53380d139d95b3df",
5f43a7
-	"0x650a73548baf63de","0x766a0abb3c77b2a8",
5f43a7
-	"0x81c2c92e47edaee6","0x92722c851482353b",
5f43a7
-	"0xa2bfe8a14cf10364","0xa81a664bbc423001",
5f43a7
-	"0xc24b8b70d0f89791","0xc76c51a30654be30",
5f43a7
-	"0xd192e819d6ef5218","0xd69906245565a910",
5f43a7
-	"0xf40e35855771202a","0x106aa07032bbd1b8",
5f43a7
-	"0x19a4c116b8d2d0c8","0x1e376c085141ab53",
5f43a7
-	"0x2748774cdf8eeb99","0x34b0bcb5e19b48a8",
5f43a7
-	"0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb",
5f43a7
-	"0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3",
5f43a7
-	"0x748f82ee5defb2fc","0x78a5636f43172f60",
5f43a7
-	"0x84c87814a1f0ab72","0x8cc702081a6439ec",
5f43a7
-	"0x90befffa23631e28","0xa4506cebde82bde9",
5f43a7
-	"0xbef9a3f7b2c67915","0xc67178f2e372532b",
5f43a7
-	"0xca273eceea26619c","0xd186b8c721c0c207",
5f43a7
-	"0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178",
5f43a7
-	"0x06f067aa72176fba","0x0a637dc5a2c898a6",
5f43a7
-	"0x113f9804bef90dae","0x1b710b35131c471b",
5f43a7
-	"0x28db77f523047d84","0x32caab7b40c72493",
5f43a7
-	"0x3c9ebe0a15c9bebc","0x431d67c49c100d4c",
5f43a7
-	"0x4cc5d4becb3e42b6","0x597f299cfc657e2a",
5f43a7
-	"0x5fcb6fab3ad6faec","0x6c44198c4a475817","0");
5f43a7
-$code.=<<___	if (!$LENDIAN);
5f43a7
-.quad	0x0001020304050607,0x1011121314151617
5f43a7
-___
5f43a7
-$code.=<<___	if ($LENDIAN);	# quad-swapped
5f43a7
-.quad	0x1011121314151617,0x0001020304050607
5f43a7
-___
5f43a7
-} else {
5f43a7
-    local *table = sub {
5f43a7
-	foreach(@_) { $code.=".long	$_,$_,$_,$_\n"; }
5f43a7
-    };
5f43a7
-    table(
5f43a7
-	"0x428a2f98","0x71374491","0xb5c0fbcf","0xe9b5dba5",
5f43a7
-	"0x3956c25b","0x59f111f1","0x923f82a4","0xab1c5ed5",
5f43a7
-	"0xd807aa98","0x12835b01","0x243185be","0x550c7dc3",
5f43a7
-	"0x72be5d74","0x80deb1fe","0x9bdc06a7","0xc19bf174",
5f43a7
-	"0xe49b69c1","0xefbe4786","0x0fc19dc6","0x240ca1cc",
5f43a7
-	"0x2de92c6f","0x4a7484aa","0x5cb0a9dc","0x76f988da",
5f43a7
-	"0x983e5152","0xa831c66d","0xb00327c8","0xbf597fc7",
5f43a7
-	"0xc6e00bf3","0xd5a79147","0x06ca6351","0x14292967",
5f43a7
-	"0x27b70a85","0x2e1b2138","0x4d2c6dfc","0x53380d13",
5f43a7
-	"0x650a7354","0x766a0abb","0x81c2c92e","0x92722c85",
5f43a7
-	"0xa2bfe8a1","0xa81a664b","0xc24b8b70","0xc76c51a3",
5f43a7
-	"0xd192e819","0xd6990624","0xf40e3585","0x106aa070",
5f43a7
-	"0x19a4c116","0x1e376c08","0x2748774c","0x34b0bcb5",
5f43a7
-	"0x391c0cb3","0x4ed8aa4a","0x5b9cca4f","0x682e6ff3",
5f43a7
-	"0x748f82ee","0x78a5636f","0x84c87814","0x8cc70208",
5f43a7
-	"0x90befffa","0xa4506ceb","0xbef9a3f7","0xc67178f2","0");
5f43a7
-$code.=<<___	if (!$LENDIAN);
5f43a7
-.long	0x00010203,0x10111213,0x10111213,0x10111213
5f43a7
-.long	0x00010203,0x04050607,0x10111213,0x10111213
5f43a7
-.long	0x00010203,0x04050607,0x08090a0b,0x10111213
5f43a7
-___
5f43a7
-$code.=<<___	if ($LENDIAN);	# word-swapped
5f43a7
-.long	0x10111213,0x10111213,0x10111213,0x00010203
5f43a7
-.long	0x10111213,0x10111213,0x04050607,0x00010203
5f43a7
-.long	0x10111213,0x08090a0b,0x04050607,0x00010203
5f43a7
-___
5f43a7
-}
5f43a7
-$code.=<<___;
5f43a7
-.asciz	"SHA${bits} for PowerISA 2.07, CRYPTOGAMS by <appro\@openssl.org>"
5f43a7
-.align	2
5f43a7
-___
5f43a7
-
5f43a7
-$code =~ s/\`([^\`]*)\`/eval $1/gem;
5f43a7
-print $code;
5f43a7
-close STDOUT;
5f43a7
diff --git a/lib/freebl/sha512-p8.s b/lib/freebl/sha512-p8.s
5f43a7
deleted file mode 100644
5f43a7
index d84ec0478..000000000
5f43a7
--- a/lib/freebl/sha512-p8.s
5f43a7
+++ /dev/null
5f43a7
@@ -1,851 +0,0 @@
5f43a7
-# Copyright (c) 2006, CRYPTOGAMS by <appro@openssl.org>
5f43a7
-# All rights reserved.
5f43a7
-# See the full LICENSE under scripts/.
5f43a7
-
5f43a7
-.machine	"any"
5f43a7
-.abiversion	2
5f43a7
-.text
5f43a7
-
5f43a7
-.globl	sha512_block_p8
5f43a7
-.type	sha512_block_p8,@function
5f43a7
-.align	6
5f43a7
-sha512_block_p8:
5f43a7
-.localentry	sha512_block_p8,0
5f43a7
-
5f43a7
-	stdu	1,-384(1)
5f43a7
-	mflr	8
5f43a7
-	li	10,207
5f43a7
-	li	11,223
5f43a7
-	stvx	24,10,1
5f43a7
-	addi	10,10,32
5f43a7
-	li	12,-1
5f43a7
-	stvx	25,11,1
5f43a7
-	addi	11,11,32
5f43a7
-	stvx	26,10,1
5f43a7
-	addi	10,10,32
5f43a7
-	stvx	27,11,1
5f43a7
-	addi	11,11,32
5f43a7
-	stvx	28,10,1
5f43a7
-	addi	10,10,32
5f43a7
-	stvx	29,11,1
5f43a7
-	addi	11,11,32
5f43a7
-	stvx	30,10,1
5f43a7
-	stvx	31,11,1
5f43a7
-	li	11,-4096+255
5f43a7
-	stw	12,332(1)
5f43a7
-	li	10,0x10
5f43a7
-	std	26,336(1)
5f43a7
-	li	26,0x20
5f43a7
-	std	27,344(1)
5f43a7
-	li	27,0x30
5f43a7
-	std	28,352(1)
5f43a7
-	li	28,0x40
5f43a7
-	std	29,360(1)
5f43a7
-	li	29,0x50
5f43a7
-	std	30,368(1)
5f43a7
-	li	30,0x60
5f43a7
-	std	31,376(1)
5f43a7
-	li	31,0x70
5f43a7
-	std	8,400(1)
5f43a7
-	or	11,11,11
5f43a7
-
5f43a7
-	bl	.LPICmeup
5f43a7
-	addi	11,1,79
5f43a7
-	li	7,8
5f43a7
-	lvsl	31,0,7
5f43a7
-	vspltisb	28,0x0f
5f43a7
-	vxor	31,31,28
5f43a7
-	.long	0x7C001E99
5f43a7
-	.long	0x7C4A1E99
5f43a7
-	.long	0x7C9A1E99
5f43a7
-	vsldoi	1,0,0,8
5f43a7
-	.long	0x7CDB1E99
5f43a7
-	vsldoi	3,2,2,8
5f43a7
-	vsldoi	5,4,4,8
5f43a7
-	vsldoi	7,6,6,8
5f43a7
-	li	0,4
5f43a7
-	b	.Loop
5f43a7
-.align	5
5f43a7
-.Loop:
5f43a7
-	lvx	28,0,6
5f43a7
-	.long	0x7D002699
5f43a7
-	addi	4,4,16
5f43a7
-	mr	7,6
5f43a7
-	stvx	0,0,11
5f43a7
-	stvx	1,10,11
5f43a7
-	stvx	2,26,11
5f43a7
-	stvx	3,27,11
5f43a7
-	stvx	4,28,11
5f43a7
-	stvx	5,29,11
5f43a7
-	stvx	6,30,11
5f43a7
-	stvx	7,31,11
5f43a7
-	.long	0x10E7E0C0
5f43a7
-	lvx	28,10,6
5f43a7
-	vperm	8,8,8,31
5f43a7
-	.long	0x10E740C0
5f43a7
-	vsel	29,6,5,4
5f43a7
-	.long	0x10C6E0C0
5f43a7
-	.long	0x10E7E8C0
5f43a7
-	.long	0x13C4FEC2
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	vxor	29,0,1
5f43a7
-	vsel	29,1,2,29
5f43a7
-	.long	0x106338C0
5f43a7
-	.long	0x13C086C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	lvx	28,26,7
5f43a7
-	.long	0x7D402699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	9,8,8,8
5f43a7
-	.long	0x10C648C0
5f43a7
-	vsel	29,5,4,3
5f43a7
-	.long	0x10A5E0C0
5f43a7
-	.long	0x10C6E8C0
5f43a7
-	.long	0x13C3FEC2
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	vxor	29,7,0
5f43a7
-	vsel	29,0,1,29
5f43a7
-	.long	0x104230C0
5f43a7
-	.long	0x13C786C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	lvx	28,27,7
5f43a7
-	vperm	10,10,10,31
5f43a7
-	.long	0x10A550C0
5f43a7
-	vsel	29,4,3,2
5f43a7
-	.long	0x1084E0C0
5f43a7
-	.long	0x10A5E8C0
5f43a7
-	.long	0x13C2FEC2
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	vxor	29,6,7
5f43a7
-	vsel	29,7,0,29
5f43a7
-	.long	0x102128C0
5f43a7
-	.long	0x13C686C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	lvx	28,28,7
5f43a7
-	.long	0x7D802699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	11,10,10,8
5f43a7
-	.long	0x108458C0
5f43a7
-	vsel	29,3,2,1
5f43a7
-	.long	0x1063E0C0
5f43a7
-	.long	0x1084E8C0
5f43a7
-	.long	0x13C1FEC2
5f43a7
-	.long	0x1084F0C0
5f43a7
-	vxor	29,5,6
5f43a7
-	vsel	29,6,7,29
5f43a7
-	.long	0x100020C0
5f43a7
-	.long	0x13C586C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1084F0C0
5f43a7
-	lvx	28,29,7
5f43a7
-	vperm	12,12,12,31
5f43a7
-	.long	0x106360C0
5f43a7
-	vsel	29,2,1,0
5f43a7
-	.long	0x1042E0C0
5f43a7
-	.long	0x1063E8C0
5f43a7
-	.long	0x13C0FEC2
5f43a7
-	.long	0x1063F0C0
5f43a7
-	vxor	29,4,5
5f43a7
-	vsel	29,5,6,29
5f43a7
-	.long	0x10E718C0
5f43a7
-	.long	0x13C486C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1063F0C0
5f43a7
-	lvx	28,30,7
5f43a7
-	.long	0x7DC02699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	13,12,12,8
5f43a7
-	.long	0x104268C0
5f43a7
-	vsel	29,1,0,7
5f43a7
-	.long	0x1021E0C0
5f43a7
-	.long	0x1042E8C0
5f43a7
-	.long	0x13C7FEC2
5f43a7
-	.long	0x1042F0C0
5f43a7
-	vxor	29,3,4
5f43a7
-	vsel	29,4,5,29
5f43a7
-	.long	0x10C610C0
5f43a7
-	.long	0x13C386C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1042F0C0
5f43a7
-	lvx	28,31,7
5f43a7
-	addi	7,7,0x80
5f43a7
-	vperm	14,14,14,31
5f43a7
-	.long	0x102170C0
5f43a7
-	vsel	29,0,7,6
5f43a7
-	.long	0x1000E0C0
5f43a7
-	.long	0x1021E8C0
5f43a7
-	.long	0x13C6FEC2
5f43a7
-	.long	0x1021F0C0
5f43a7
-	vxor	29,2,3
5f43a7
-	vsel	29,3,4,29
5f43a7
-	.long	0x10A508C0
5f43a7
-	.long	0x13C286C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1021F0C0
5f43a7
-	lvx	28,0,7
5f43a7
-	.long	0x7E002699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	15,14,14,8
5f43a7
-	.long	0x100078C0
5f43a7
-	vsel	29,7,6,5
5f43a7
-	.long	0x10E7E0C0
5f43a7
-	.long	0x1000E8C0
5f43a7
-	.long	0x13C5FEC2
5f43a7
-	.long	0x1000F0C0
5f43a7
-	vxor	29,1,2
5f43a7
-	vsel	29,2,3,29
5f43a7
-	.long	0x108400C0
5f43a7
-	.long	0x13C186C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1000F0C0
5f43a7
-	lvx	28,10,7
5f43a7
-	vperm	16,16,16,31
5f43a7
-	.long	0x10E780C0
5f43a7
-	vsel	29,6,5,4
5f43a7
-	.long	0x10C6E0C0
5f43a7
-	.long	0x10E7E8C0
5f43a7
-	.long	0x13C4FEC2
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	vxor	29,0,1
5f43a7
-	vsel	29,1,2,29
5f43a7
-	.long	0x106338C0
5f43a7
-	.long	0x13C086C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	lvx	28,26,7
5f43a7
-	.long	0x7E402699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	17,16,16,8
5f43a7
-	.long	0x10C688C0
5f43a7
-	vsel	29,5,4,3
5f43a7
-	.long	0x10A5E0C0
5f43a7
-	.long	0x10C6E8C0
5f43a7
-	.long	0x13C3FEC2
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	vxor	29,7,0
5f43a7
-	vsel	29,0,1,29
5f43a7
-	.long	0x104230C0
5f43a7
-	.long	0x13C786C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	lvx	28,27,7
5f43a7
-	vperm	18,18,18,31
5f43a7
-	.long	0x10A590C0
5f43a7
-	vsel	29,4,3,2
5f43a7
-	.long	0x1084E0C0
5f43a7
-	.long	0x10A5E8C0
5f43a7
-	.long	0x13C2FEC2
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	vxor	29,6,7
5f43a7
-	vsel	29,7,0,29
5f43a7
-	.long	0x102128C0
5f43a7
-	.long	0x13C686C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	lvx	28,28,7
5f43a7
-	.long	0x7F002699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	19,18,18,8
5f43a7
-	.long	0x108498C0
5f43a7
-	vsel	29,3,2,1
5f43a7
-	.long	0x1063E0C0
5f43a7
-	.long	0x1084E8C0
5f43a7
-	.long	0x13C1FEC2
5f43a7
-	.long	0x1084F0C0
5f43a7
-	vxor	29,5,6
5f43a7
-	vsel	29,6,7,29
5f43a7
-	.long	0x100020C0
5f43a7
-	.long	0x13C586C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1084F0C0
5f43a7
-	lvx	28,29,7
5f43a7
-	vperm	24,24,24,31
5f43a7
-	.long	0x1063C0C0
5f43a7
-	vsel	29,2,1,0
5f43a7
-	.long	0x1042E0C0
5f43a7
-	.long	0x1063E8C0
5f43a7
-	.long	0x13C0FEC2
5f43a7
-	.long	0x1063F0C0
5f43a7
-	vxor	29,4,5
5f43a7
-	vsel	29,5,6,29
5f43a7
-	.long	0x10E718C0
5f43a7
-	.long	0x13C486C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1063F0C0
5f43a7
-	lvx	28,30,7
5f43a7
-	.long	0x7F402699
5f43a7
-	addi	4,4,16
5f43a7
-	vsldoi	25,24,24,8
5f43a7
-	.long	0x1042C8C0
5f43a7
-	vsel	29,1,0,7
5f43a7
-	.long	0x1021E0C0
5f43a7
-	.long	0x1042E8C0
5f43a7
-	.long	0x13C7FEC2
5f43a7
-	.long	0x1042F0C0
5f43a7
-	vxor	29,3,4
5f43a7
-	vsel	29,4,5,29
5f43a7
-	.long	0x10C610C0
5f43a7
-	.long	0x13C386C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1042F0C0
5f43a7
-	lvx	28,31,7
5f43a7
-	addi	7,7,0x80
5f43a7
-	vperm	26,26,26,31
5f43a7
-	.long	0x1021D0C0
5f43a7
-	vsel	29,0,7,6
5f43a7
-	.long	0x1000E0C0
5f43a7
-	.long	0x1021E8C0
5f43a7
-	.long	0x13C6FEC2
5f43a7
-	.long	0x1021F0C0
5f43a7
-	vxor	29,2,3
5f43a7
-	vsel	29,3,4,29
5f43a7
-	.long	0x10A508C0
5f43a7
-	.long	0x13C286C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1021F0C0
5f43a7
-	lvx	28,0,7
5f43a7
-	vsldoi	27,26,26,8
5f43a7
-	.long	0x13C906C2
5f43a7
-	.long	0x1108F0C0
5f43a7
-	.long	0x13DA7EC2
5f43a7
-	.long	0x1108F0C0
5f43a7
-	.long	0x110888C0
5f43a7
-	.long	0x1000D8C0
5f43a7
-	vsel	29,7,6,5
5f43a7
-	.long	0x10E7E0C0
5f43a7
-	.long	0x1000E8C0
5f43a7
-	.long	0x13C5FEC2
5f43a7
-	.long	0x1000F0C0
5f43a7
-	vxor	29,1,2
5f43a7
-	vsel	29,2,3,29
5f43a7
-	.long	0x108400C0
5f43a7
-	.long	0x13C186C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1000F0C0
5f43a7
-	lvx	28,10,7
5f43a7
-	mtctr	0
5f43a7
-	b	.L16_xx
5f43a7
-.align	5
5f43a7
-.L16_xx:
5f43a7
-	.long	0x13CA06C2
5f43a7
-	.long	0x1129F0C0
5f43a7
-	.long	0x13DB7EC2
5f43a7
-	.long	0x1129F0C0
5f43a7
-	.long	0x112990C0
5f43a7
-	.long	0x10E740C0
5f43a7
-	vsel	29,6,5,4
5f43a7
-	.long	0x10C6E0C0
5f43a7
-	.long	0x10E7E8C0
5f43a7
-	.long	0x13C4FEC2
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	vxor	29,0,1
5f43a7
-	vsel	29,1,2,29
5f43a7
-	.long	0x106338C0
5f43a7
-	.long	0x13C086C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	lvx	28,26,7
5f43a7
-	.long	0x13CB06C2
5f43a7
-	.long	0x114AF0C0
5f43a7
-	.long	0x13C87EC2
5f43a7
-	.long	0x114AF0C0
5f43a7
-	.long	0x114A98C0
5f43a7
-	.long	0x10C648C0
5f43a7
-	vsel	29,5,4,3
5f43a7
-	.long	0x10A5E0C0
5f43a7
-	.long	0x10C6E8C0
5f43a7
-	.long	0x13C3FEC2
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	vxor	29,7,0
5f43a7
-	vsel	29,0,1,29
5f43a7
-	.long	0x104230C0
5f43a7
-	.long	0x13C786C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	lvx	28,27,7
5f43a7
-	.long	0x13CC06C2
5f43a7
-	.long	0x116BF0C0
5f43a7
-	.long	0x13C97EC2
5f43a7
-	.long	0x116BF0C0
5f43a7
-	.long	0x116BC0C0
5f43a7
-	.long	0x10A550C0
5f43a7
-	vsel	29,4,3,2
5f43a7
-	.long	0x1084E0C0
5f43a7
-	.long	0x10A5E8C0
5f43a7
-	.long	0x13C2FEC2
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	vxor	29,6,7
5f43a7
-	vsel	29,7,0,29
5f43a7
-	.long	0x102128C0
5f43a7
-	.long	0x13C686C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	lvx	28,28,7
5f43a7
-	.long	0x13CD06C2
5f43a7
-	.long	0x118CF0C0
5f43a7
-	.long	0x13CA7EC2
5f43a7
-	.long	0x118CF0C0
5f43a7
-	.long	0x118CC8C0
5f43a7
-	.long	0x108458C0
5f43a7
-	vsel	29,3,2,1
5f43a7
-	.long	0x1063E0C0
5f43a7
-	.long	0x1084E8C0
5f43a7
-	.long	0x13C1FEC2
5f43a7
-	.long	0x1084F0C0
5f43a7
-	vxor	29,5,6
5f43a7
-	vsel	29,6,7,29
5f43a7
-	.long	0x100020C0
5f43a7
-	.long	0x13C586C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1084F0C0
5f43a7
-	lvx	28,29,7
5f43a7
-	.long	0x13CE06C2
5f43a7
-	.long	0x11ADF0C0
5f43a7
-	.long	0x13CB7EC2
5f43a7
-	.long	0x11ADF0C0
5f43a7
-	.long	0x11ADD0C0
5f43a7
-	.long	0x106360C0
5f43a7
-	vsel	29,2,1,0
5f43a7
-	.long	0x1042E0C0
5f43a7
-	.long	0x1063E8C0
5f43a7
-	.long	0x13C0FEC2
5f43a7
-	.long	0x1063F0C0
5f43a7
-	vxor	29,4,5
5f43a7
-	vsel	29,5,6,29
5f43a7
-	.long	0x10E718C0
5f43a7
-	.long	0x13C486C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1063F0C0
5f43a7
-	lvx	28,30,7
5f43a7
-	.long	0x13CF06C2
5f43a7
-	.long	0x11CEF0C0
5f43a7
-	.long	0x13CC7EC2
5f43a7
-	.long	0x11CEF0C0
5f43a7
-	.long	0x11CED8C0
5f43a7
-	.long	0x104268C0
5f43a7
-	vsel	29,1,0,7
5f43a7
-	.long	0x1021E0C0
5f43a7
-	.long	0x1042E8C0
5f43a7
-	.long	0x13C7FEC2
5f43a7
-	.long	0x1042F0C0
5f43a7
-	vxor	29,3,4
5f43a7
-	vsel	29,4,5,29
5f43a7
-	.long	0x10C610C0
5f43a7
-	.long	0x13C386C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1042F0C0
5f43a7
-	lvx	28,31,7
5f43a7
-	addi	7,7,0x80
5f43a7
-	.long	0x13D006C2
5f43a7
-	.long	0x11EFF0C0
5f43a7
-	.long	0x13CD7EC2
5f43a7
-	.long	0x11EFF0C0
5f43a7
-	.long	0x11EF40C0
5f43a7
-	.long	0x102170C0
5f43a7
-	vsel	29,0,7,6
5f43a7
-	.long	0x1000E0C0
5f43a7
-	.long	0x1021E8C0
5f43a7
-	.long	0x13C6FEC2
5f43a7
-	.long	0x1021F0C0
5f43a7
-	vxor	29,2,3
5f43a7
-	vsel	29,3,4,29
5f43a7
-	.long	0x10A508C0
5f43a7
-	.long	0x13C286C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1021F0C0
5f43a7
-	lvx	28,0,7
5f43a7
-	.long	0x13D106C2
5f43a7
-	.long	0x1210F0C0
5f43a7
-	.long	0x13CE7EC2
5f43a7
-	.long	0x1210F0C0
5f43a7
-	.long	0x121048C0
5f43a7
-	.long	0x100078C0
5f43a7
-	vsel	29,7,6,5
5f43a7
-	.long	0x10E7E0C0
5f43a7
-	.long	0x1000E8C0
5f43a7
-	.long	0x13C5FEC2
5f43a7
-	.long	0x1000F0C0
5f43a7
-	vxor	29,1,2
5f43a7
-	vsel	29,2,3,29
5f43a7
-	.long	0x108400C0
5f43a7
-	.long	0x13C186C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1000F0C0
5f43a7
-	lvx	28,10,7
5f43a7
-	.long	0x13D206C2
5f43a7
-	.long	0x1231F0C0
5f43a7
-	.long	0x13CF7EC2
5f43a7
-	.long	0x1231F0C0
5f43a7
-	.long	0x123150C0
5f43a7
-	.long	0x10E780C0
5f43a7
-	vsel	29,6,5,4
5f43a7
-	.long	0x10C6E0C0
5f43a7
-	.long	0x10E7E8C0
5f43a7
-	.long	0x13C4FEC2
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	vxor	29,0,1
5f43a7
-	vsel	29,1,2,29
5f43a7
-	.long	0x106338C0
5f43a7
-	.long	0x13C086C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10E7F0C0
5f43a7
-	lvx	28,26,7
5f43a7
-	.long	0x13D306C2
5f43a7
-	.long	0x1252F0C0
5f43a7
-	.long	0x13D07EC2
5f43a7
-	.long	0x1252F0C0
5f43a7
-	.long	0x125258C0
5f43a7
-	.long	0x10C688C0
5f43a7
-	vsel	29,5,4,3
5f43a7
-	.long	0x10A5E0C0
5f43a7
-	.long	0x10C6E8C0
5f43a7
-	.long	0x13C3FEC2
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	vxor	29,7,0
5f43a7
-	vsel	29,0,1,29
5f43a7
-	.long	0x104230C0
5f43a7
-	.long	0x13C786C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10C6F0C0
5f43a7
-	lvx	28,27,7
5f43a7
-	.long	0x13D806C2
5f43a7
-	.long	0x1273F0C0
5f43a7
-	.long	0x13D17EC2
5f43a7
-	.long	0x1273F0C0
5f43a7
-	.long	0x127360C0
5f43a7
-	.long	0x10A590C0
5f43a7
-	vsel	29,4,3,2
5f43a7
-	.long	0x1084E0C0
5f43a7
-	.long	0x10A5E8C0
5f43a7
-	.long	0x13C2FEC2
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	vxor	29,6,7
5f43a7
-	vsel	29,7,0,29
5f43a7
-	.long	0x102128C0
5f43a7
-	.long	0x13C686C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x10A5F0C0
5f43a7
-	lvx	28,28,7
5f43a7
-	.long	0x13D906C2
5f43a7
-	.long	0x1318F0C0
5f43a7
-	.long	0x13D27EC2
5f43a7
-	.long	0x1318F0C0
5f43a7
-	.long	0x131868C0
5f43a7
-	.long	0x108498C0
5f43a7
-	vsel	29,3,2,1
5f43a7
-	.long	0x1063E0C0
5f43a7
-	.long	0x1084E8C0
5f43a7
-	.long	0x13C1FEC2
5f43a7
-	.long	0x1084F0C0
5f43a7
-	vxor	29,5,6
5f43a7
-	vsel	29,6,7,29
5f43a7
-	.long	0x100020C0
5f43a7
-	.long	0x13C586C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1084F0C0
5f43a7
-	lvx	28,29,7
5f43a7
-	.long	0x13DA06C2
5f43a7
-	.long	0x1339F0C0
5f43a7
-	.long	0x13D37EC2
5f43a7
-	.long	0x1339F0C0
5f43a7
-	.long	0x133970C0
5f43a7
-	.long	0x1063C0C0
5f43a7
-	vsel	29,2,1,0
5f43a7
-	.long	0x1042E0C0
5f43a7
-	.long	0x1063E8C0
5f43a7
-	.long	0x13C0FEC2
5f43a7
-	.long	0x1063F0C0
5f43a7
-	vxor	29,4,5
5f43a7
-	vsel	29,5,6,29
5f43a7
-	.long	0x10E718C0
5f43a7
-	.long	0x13C486C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1063F0C0
5f43a7
-	lvx	28,30,7
5f43a7
-	.long	0x13DB06C2
5f43a7
-	.long	0x135AF0C0
5f43a7
-	.long	0x13D87EC2
5f43a7
-	.long	0x135AF0C0
5f43a7
-	.long	0x135A78C0
5f43a7
-	.long	0x1042C8C0
5f43a7
-	vsel	29,1,0,7
5f43a7
-	.long	0x1021E0C0
5f43a7
-	.long	0x1042E8C0
5f43a7
-	.long	0x13C7FEC2
5f43a7
-	.long	0x1042F0C0
5f43a7
-	vxor	29,3,4
5f43a7
-	vsel	29,4,5,29
5f43a7
-	.long	0x10C610C0
5f43a7
-	.long	0x13C386C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1042F0C0
5f43a7
-	lvx	28,31,7
5f43a7
-	addi	7,7,0x80
5f43a7
-	.long	0x13C806C2
5f43a7
-	.long	0x137BF0C0
5f43a7
-	.long	0x13D97EC2
5f43a7
-	.long	0x137BF0C0
5f43a7
-	.long	0x137B80C0
5f43a7
-	.long	0x1021D0C0
5f43a7
-	vsel	29,0,7,6
5f43a7
-	.long	0x1000E0C0
5f43a7
-	.long	0x1021E8C0
5f43a7
-	.long	0x13C6FEC2
5f43a7
-	.long	0x1021F0C0
5f43a7
-	vxor	29,2,3
5f43a7
-	vsel	29,3,4,29
5f43a7
-	.long	0x10A508C0
5f43a7
-	.long	0x13C286C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1021F0C0
5f43a7
-	lvx	28,0,7
5f43a7
-	.long	0x13C906C2
5f43a7
-	.long	0x1108F0C0
5f43a7
-	.long	0x13DA7EC2
5f43a7
-	.long	0x1108F0C0
5f43a7
-	.long	0x110888C0
5f43a7
-	.long	0x1000D8C0
5f43a7
-	vsel	29,7,6,5
5f43a7
-	.long	0x10E7E0C0
5f43a7
-	.long	0x1000E8C0
5f43a7
-	.long	0x13C5FEC2
5f43a7
-	.long	0x1000F0C0
5f43a7
-	vxor	29,1,2
5f43a7
-	vsel	29,2,3,29
5f43a7
-	.long	0x108400C0
5f43a7
-	.long	0x13C186C2
5f43a7
-	.long	0x13DEE8C0
5f43a7
-	.long	0x1000F0C0
5f43a7
-	lvx	28,10,7
5f43a7
-	bdnz	.L16_xx
5f43a7
-
5f43a7
-	lvx	10,0,11
5f43a7
-	subic.	5,5,1
5f43a7
-	lvx	11,10,11
5f43a7
-	.long	0x100050C0
5f43a7
-	lvx	12,26,11
5f43a7
-	.long	0x102158C0
5f43a7
-	lvx	13,27,11
5f43a7
-	.long	0x104260C0
5f43a7
-	lvx	14,28,11
5f43a7
-	.long	0x106368C0
5f43a7
-	lvx	15,29,11
5f43a7
-	.long	0x108470C0
5f43a7
-	lvx	16,30,11
5f43a7
-	.long	0x10A578C0
5f43a7
-	lvx	17,31,11
5f43a7
-	.long	0x10C680C0
5f43a7
-	.long	0x10E788C0
5f43a7
-	bne	.Loop
5f43a7
-	vperm	0,0,1,28
5f43a7
-	vperm	2,2,3,28
5f43a7
-	vperm	4,4,5,28
5f43a7
-	vperm	6,6,7,28
5f43a7
-	.long	0x7C001F99
5f43a7
-	.long	0x7C4A1F99
5f43a7
-	.long	0x7C9A1F99
5f43a7
-	.long	0x7CDB1F99
5f43a7
-	addi	11,1,207
5f43a7
-	mtlr	8
5f43a7
-	or	12,12,12
5f43a7
-	lvx	24,0,11
5f43a7
-	lvx	25,10,11
5f43a7
-	lvx	26,26,11
5f43a7
-	lvx	27,27,11
5f43a7
-	lvx	28,28,11
5f43a7
-	lvx	29,29,11
5f43a7
-	lvx	30,30,11
5f43a7
-	lvx	31,31,11
5f43a7
-	ld	26,336(1)
5f43a7
-	ld	27,344(1)
5f43a7
-	ld	28,352(1)
5f43a7
-	ld	29,360(1)
5f43a7
-	ld	30,368(1)
5f43a7
-	ld	31,376(1)
5f43a7
-	addi	1,1,384
5f43a7
-	blr	
5f43a7
-.long	0
5f43a7
-.byte	0,12,4,1,0x80,6,3,0
5f43a7
-.long	0
5f43a7
-.size	sha512_block_p8,.-sha512_block_p8
5f43a7
-.align	6
5f43a7
-.LPICmeup:
5f43a7
-	mflr	0
5f43a7
-	bcl	20,31,$+4
5f43a7
-	mflr	6
5f43a7
-	addi	6,6,56
5f43a7
-	mtlr	0
5f43a7
-	blr	
5f43a7
-.long	0
5f43a7
-.byte	0,12,0x14,0,0,0,0,0
5f43a7
-.space	28
5f43a7
-.long	0xd728ae22,0x428a2f98
5f43a7
-.long	0xd728ae22,0x428a2f98
5f43a7
-.long	0x23ef65cd,0x71374491
5f43a7
-.long	0x23ef65cd,0x71374491
5f43a7
-.long	0xec4d3b2f,0xb5c0fbcf
5f43a7
-.long	0xec4d3b2f,0xb5c0fbcf
5f43a7
-.long	0x8189dbbc,0xe9b5dba5
5f43a7
-.long	0x8189dbbc,0xe9b5dba5
5f43a7
-.long	0xf348b538,0x3956c25b
5f43a7
-.long	0xf348b538,0x3956c25b
5f43a7
-.long	0xb605d019,0x59f111f1
5f43a7
-.long	0xb605d019,0x59f111f1
5f43a7
-.long	0xaf194f9b,0x923f82a4
5f43a7
-.long	0xaf194f9b,0x923f82a4
5f43a7
-.long	0xda6d8118,0xab1c5ed5
5f43a7
-.long	0xda6d8118,0xab1c5ed5
5f43a7
-.long	0xa3030242,0xd807aa98
5f43a7
-.long	0xa3030242,0xd807aa98
5f43a7
-.long	0x45706fbe,0x12835b01
5f43a7
-.long	0x45706fbe,0x12835b01
5f43a7
-.long	0x4ee4b28c,0x243185be
5f43a7
-.long	0x4ee4b28c,0x243185be
5f43a7
-.long	0xd5ffb4e2,0x550c7dc3
5f43a7
-.long	0xd5ffb4e2,0x550c7dc3
5f43a7
-.long	0xf27b896f,0x72be5d74
5f43a7
-.long	0xf27b896f,0x72be5d74
5f43a7
-.long	0x3b1696b1,0x80deb1fe
5f43a7
-.long	0x3b1696b1,0x80deb1fe
5f43a7
-.long	0x25c71235,0x9bdc06a7
5f43a7
-.long	0x25c71235,0x9bdc06a7
5f43a7
-.long	0xcf692694,0xc19bf174
5f43a7
-.long	0xcf692694,0xc19bf174
5f43a7
-.long	0x9ef14ad2,0xe49b69c1
5f43a7
-.long	0x9ef14ad2,0xe49b69c1
5f43a7
-.long	0x384f25e3,0xefbe4786
5f43a7
-.long	0x384f25e3,0xefbe4786
5f43a7
-.long	0x8b8cd5b5,0x0fc19dc6
5f43a7
-.long	0x8b8cd5b5,0x0fc19dc6
5f43a7
-.long	0x77ac9c65,0x240ca1cc
5f43a7
-.long	0x77ac9c65,0x240ca1cc
5f43a7
-.long	0x592b0275,0x2de92c6f
5f43a7
-.long	0x592b0275,0x2de92c6f
5f43a7
-.long	0x6ea6e483,0x4a7484aa
5f43a7
-.long	0x6ea6e483,0x4a7484aa
5f43a7
-.long	0xbd41fbd4,0x5cb0a9dc
5f43a7
-.long	0xbd41fbd4,0x5cb0a9dc
5f43a7
-.long	0x831153b5,0x76f988da
5f43a7
-.long	0x831153b5,0x76f988da
5f43a7
-.long	0xee66dfab,0x983e5152
5f43a7
-.long	0xee66dfab,0x983e5152
5f43a7
-.long	0x2db43210,0xa831c66d
5f43a7
-.long	0x2db43210,0xa831c66d
5f43a7
-.long	0x98fb213f,0xb00327c8
5f43a7
-.long	0x98fb213f,0xb00327c8
5f43a7
-.long	0xbeef0ee4,0xbf597fc7
5f43a7
-.long	0xbeef0ee4,0xbf597fc7
5f43a7
-.long	0x3da88fc2,0xc6e00bf3
5f43a7
-.long	0x3da88fc2,0xc6e00bf3
5f43a7
-.long	0x930aa725,0xd5a79147
5f43a7
-.long	0x930aa725,0xd5a79147
5f43a7
-.long	0xe003826f,0x06ca6351
5f43a7
-.long	0xe003826f,0x06ca6351
5f43a7
-.long	0x0a0e6e70,0x14292967
5f43a7
-.long	0x0a0e6e70,0x14292967
5f43a7
-.long	0x46d22ffc,0x27b70a85
5f43a7
-.long	0x46d22ffc,0x27b70a85
5f43a7
-.long	0x5c26c926,0x2e1b2138
5f43a7
-.long	0x5c26c926,0x2e1b2138
5f43a7
-.long	0x5ac42aed,0x4d2c6dfc
5f43a7
-.long	0x5ac42aed,0x4d2c6dfc
5f43a7
-.long	0x9d95b3df,0x53380d13
5f43a7
-.long	0x9d95b3df,0x53380d13
5f43a7
-.long	0x8baf63de,0x650a7354
5f43a7
-.long	0x8baf63de,0x650a7354
5f43a7
-.long	0x3c77b2a8,0x766a0abb
5f43a7
-.long	0x3c77b2a8,0x766a0abb
5f43a7
-.long	0x47edaee6,0x81c2c92e
5f43a7
-.long	0x47edaee6,0x81c2c92e
5f43a7
-.long	0x1482353b,0x92722c85
5f43a7
-.long	0x1482353b,0x92722c85
5f43a7
-.long	0x4cf10364,0xa2bfe8a1
5f43a7
-.long	0x4cf10364,0xa2bfe8a1
5f43a7
-.long	0xbc423001,0xa81a664b
5f43a7
-.long	0xbc423001,0xa81a664b
5f43a7
-.long	0xd0f89791,0xc24b8b70
5f43a7
-.long	0xd0f89791,0xc24b8b70
5f43a7
-.long	0x0654be30,0xc76c51a3
5f43a7
-.long	0x0654be30,0xc76c51a3
5f43a7
-.long	0xd6ef5218,0xd192e819
5f43a7
-.long	0xd6ef5218,0xd192e819
5f43a7
-.long	0x5565a910,0xd6990624
5f43a7
-.long	0x5565a910,0xd6990624
5f43a7
-.long	0x5771202a,0xf40e3585
5f43a7
-.long	0x5771202a,0xf40e3585
5f43a7
-.long	0x32bbd1b8,0x106aa070
5f43a7
-.long	0x32bbd1b8,0x106aa070
5f43a7
-.long	0xb8d2d0c8,0x19a4c116
5f43a7
-.long	0xb8d2d0c8,0x19a4c116
5f43a7
-.long	0x5141ab53,0x1e376c08
5f43a7
-.long	0x5141ab53,0x1e376c08
5f43a7
-.long	0xdf8eeb99,0x2748774c
5f43a7
-.long	0xdf8eeb99,0x2748774c
5f43a7
-.long	0xe19b48a8,0x34b0bcb5
5f43a7
-.long	0xe19b48a8,0x34b0bcb5
5f43a7
-.long	0xc5c95a63,0x391c0cb3
5f43a7
-.long	0xc5c95a63,0x391c0cb3
5f43a7
-.long	0xe3418acb,0x4ed8aa4a
5f43a7
-.long	0xe3418acb,0x4ed8aa4a
5f43a7
-.long	0x7763e373,0x5b9cca4f
5f43a7
-.long	0x7763e373,0x5b9cca4f
5f43a7
-.long	0xd6b2b8a3,0x682e6ff3
5f43a7
-.long	0xd6b2b8a3,0x682e6ff3
5f43a7
-.long	0x5defb2fc,0x748f82ee
5f43a7
-.long	0x5defb2fc,0x748f82ee
5f43a7
-.long	0x43172f60,0x78a5636f
5f43a7
-.long	0x43172f60,0x78a5636f
5f43a7
-.long	0xa1f0ab72,0x84c87814
5f43a7
-.long	0xa1f0ab72,0x84c87814
5f43a7
-.long	0x1a6439ec,0x8cc70208
5f43a7
-.long	0x1a6439ec,0x8cc70208
5f43a7
-.long	0x23631e28,0x90befffa
5f43a7
-.long	0x23631e28,0x90befffa
5f43a7
-.long	0xde82bde9,0xa4506ceb
5f43a7
-.long	0xde82bde9,0xa4506ceb
5f43a7
-.long	0xb2c67915,0xbef9a3f7
5f43a7
-.long	0xb2c67915,0xbef9a3f7
5f43a7
-.long	0xe372532b,0xc67178f2
5f43a7
-.long	0xe372532b,0xc67178f2
5f43a7
-.long	0xea26619c,0xca273ece
5f43a7
-.long	0xea26619c,0xca273ece
5f43a7
-.long	0x21c0c207,0xd186b8c7
5f43a7
-.long	0x21c0c207,0xd186b8c7
5f43a7
-.long	0xcde0eb1e,0xeada7dd6
5f43a7
-.long	0xcde0eb1e,0xeada7dd6
5f43a7
-.long	0xee6ed178,0xf57d4f7f
5f43a7
-.long	0xee6ed178,0xf57d4f7f
5f43a7
-.long	0x72176fba,0x06f067aa
5f43a7
-.long	0x72176fba,0x06f067aa
5f43a7
-.long	0xa2c898a6,0x0a637dc5
5f43a7
-.long	0xa2c898a6,0x0a637dc5
5f43a7
-.long	0xbef90dae,0x113f9804
5f43a7
-.long	0xbef90dae,0x113f9804
5f43a7
-.long	0x131c471b,0x1b710b35
5f43a7
-.long	0x131c471b,0x1b710b35
5f43a7
-.long	0x23047d84,0x28db77f5
5f43a7
-.long	0x23047d84,0x28db77f5
5f43a7
-.long	0x40c72493,0x32caab7b
5f43a7
-.long	0x40c72493,0x32caab7b
5f43a7
-.long	0x15c9bebc,0x3c9ebe0a
5f43a7
-.long	0x15c9bebc,0x3c9ebe0a
5f43a7
-.long	0x9c100d4c,0x431d67c4
5f43a7
-.long	0x9c100d4c,0x431d67c4
5f43a7
-.long	0xcb3e42b6,0x4cc5d4be
5f43a7
-.long	0xcb3e42b6,0x4cc5d4be
5f43a7
-.long	0xfc657e2a,0x597f299c
5f43a7
-.long	0xfc657e2a,0x597f299c
5f43a7
-.long	0x3ad6faec,0x5fcb6fab
5f43a7
-.long	0x3ad6faec,0x5fcb6fab
5f43a7
-.long	0x4a475817,0x6c44198c
5f43a7
-.long	0x4a475817,0x6c44198c
5f43a7
-.long	0,0
5f43a7
-.long	0,0
5f43a7
-.long	0x14151617,0x10111213
5f43a7
-.long	0x04050607,0x00010203
5f43a7
-.byte	83,72,65,53,49,50,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
5f43a7
-.align	2
5f43a7
-.align	2
5f43a7
diff --git a/lib/freebl/sha512.c b/lib/freebl/sha512.c
5f43a7
index f2a1a33ca..c1cfb7376 100644
5f43a7
--- a/lib/freebl/sha512.c
5f43a7
+++ b/lib/freebl/sha512.c
5f43a7
@@ -18,10 +18,8 @@
5f43a7
 #include "prlong.h"
5f43a7
 #include "secport.h" /* for PORT_XXX */
5f43a7
 #include "blapi.h"
5f43a7
-#include "blapii.h"
5f43a7
 #include "sha256.h" /* for struct SHA256ContextStr */
5f43a7
 #include "crypto_primitives.h"
5f43a7
-#include "ppc-crypto.h" /* for USE_PPC_CRYPTO */
5f43a7
 
5f43a7
 /* ============= Common constants and defines ======================= */
5f43a7
 
5f43a7
@@ -45,7 +43,7 @@ static const PRUint8 pad[240] = {
5f43a7
 /* ============= SHA256 implementation ================================== */
5f43a7
 
5f43a7
 /* SHA-256 constants, K256. */
5f43a7
-pre_align static const PRUint32 K256[64] post_align = {
5f43a7
+static const PRUint32 K256[64] = {
5f43a7
     0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
5f43a7
     0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
5f43a7
     0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
5f43a7
@@ -179,162 +177,9 @@ SHA256_Begin(SHA256Context *ctx)
5f43a7
     memcpy(H, H256, sizeof H256);
5f43a7
 }
5f43a7
 
5f43a7
-#if defined(USE_PPC_CRYPTO)
5f43a7
-
5f43a7
-#define ROUND(n, a, b, c, d, e, f, g, h)         \
5f43a7
-    s0 = __builtin_crypto_vshasigmaw(e, 1, 0xf); \
5f43a7
-    h += s0 + vec_sel(g, f, e) + w[n / 4];       \
5f43a7
-    d += h;                                      \
5f43a7
-    s0 = __builtin_crypto_vshasigmaw(a, 1, 0);   \
5f43a7
-    h += s0 + vec_sel(b, c, vec_xor(a, b));      \
5f43a7
-    if (n % 4 != 3)                              \
5f43a7
-        w[n / 4] = vec_sro(w[n / 4], rshift);
5f43a7
-
5f43a7
-#else
5f43a7
-
5f43a7
-#define ROUND(n, a, b, c, d, e, f, g, h)       \
5f43a7
-    h += S1(e) + Ch(e, f, g) + K256[n] + W[n]; \
5f43a7
-    d += h;                                    \
5f43a7
-    h += S0(a) + Maj(a, b, c);
5f43a7
-
5f43a7
-#endif
5f43a7
-
5f43a7
-#define SHA256_UNROLLED_ROUNDS        \
5f43a7
-    ROUND(0, a, b, c, d, e, f, g, h)  \
5f43a7
-    ROUND(1, h, a, b, c, d, e, f, g)  \
5f43a7
-    ROUND(2, g, h, a, b, c, d, e, f)  \
5f43a7
-    ROUND(3, f, g, h, a, b, c, d, e)  \
5f43a7
-    ROUND(4, e, f, g, h, a, b, c, d)  \
5f43a7
-    ROUND(5, d, e, f, g, h, a, b, c)  \
5f43a7
-    ROUND(6, c, d, e, f, g, h, a, b)  \
5f43a7
-    ROUND(7, b, c, d, e, f, g, h, a)  \
5f43a7
-                                      \
5f43a7
-    ROUND(8, a, b, c, d, e, f, g, h)  \
5f43a7
-    ROUND(9, h, a, b, c, d, e, f, g)  \
5f43a7
-    ROUND(10, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(11, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(12, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(13, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(14, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(15, b, c, d, e, f, g, h, a) \
5f43a7
-                                      \
5f43a7
-    ROUND(16, a, b, c, d, e, f, g, h) \
5f43a7
-    ROUND(17, h, a, b, c, d, e, f, g) \
5f43a7
-    ROUND(18, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(19, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(20, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(21, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(22, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(23, b, c, d, e, f, g, h, a) \
5f43a7
-                                      \
5f43a7
-    ROUND(24, a, b, c, d, e, f, g, h) \
5f43a7
-    ROUND(25, h, a, b, c, d, e, f, g) \
5f43a7
-    ROUND(26, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(27, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(28, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(29, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(30, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(31, b, c, d, e, f, g, h, a) \
5f43a7
-                                      \
5f43a7
-    ROUND(32, a, b, c, d, e, f, g, h) \
5f43a7
-    ROUND(33, h, a, b, c, d, e, f, g) \
5f43a7
-    ROUND(34, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(35, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(36, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(37, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(38, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(39, b, c, d, e, f, g, h, a) \
5f43a7
-                                      \
5f43a7
-    ROUND(40, a, b, c, d, e, f, g, h) \
5f43a7
-    ROUND(41, h, a, b, c, d, e, f, g) \
5f43a7
-    ROUND(42, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(43, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(44, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(45, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(46, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(47, b, c, d, e, f, g, h, a) \
5f43a7
-                                      \
5f43a7
-    ROUND(48, a, b, c, d, e, f, g, h) \
5f43a7
-    ROUND(49, h, a, b, c, d, e, f, g) \
5f43a7
-    ROUND(50, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(51, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(52, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(53, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(54, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(55, b, c, d, e, f, g, h, a) \
5f43a7
-                                      \
5f43a7
-    ROUND(56, a, b, c, d, e, f, g, h) \
5f43a7
-    ROUND(57, h, a, b, c, d, e, f, g) \
5f43a7
-    ROUND(58, g, h, a, b, c, d, e, f) \
5f43a7
-    ROUND(59, f, g, h, a, b, c, d, e) \
5f43a7
-    ROUND(60, e, f, g, h, a, b, c, d) \
5f43a7
-    ROUND(61, d, e, f, g, h, a, b, c) \
5f43a7
-    ROUND(62, c, d, e, f, g, h, a, b) \
5f43a7
-    ROUND(63, b, c, d, e, f, g, h, a)
5f43a7
-
5f43a7
 static void
5f43a7
 SHA256_Compress(SHA256Context *ctx)
5f43a7
 {
5f43a7
-#if defined(USE_PPC_CRYPTO)
5f43a7
-    vec_u32 w[16], s0, s1;
5f43a7
-    const vec_u8 rshift = (vec_u8)vec_splats(4 << 3);
5f43a7
-    const vec_u8 shifthalf = (vec_u8)vec_splats(8 << 3);
5f43a7
-    const vec_u8 bswap4 = (vec_u8){
5f43a7
-        3, 2, 1, 0, 7, 6, 5, 4, 11,
5f43a7
-        10, 9, 8, 15, 14, 13, 12,
5f43a7
-    };
5f43a7
-    unsigned i;
5f43a7
-
5f43a7
-    for (i = 0; i < 4; i++) {
5f43a7
-        w[i] = vec_vsx_ld(0, &W[i * 4]);
5f43a7
-        w[i] = vec_perm(w[i], w[i], bswap4);
5f43a7
-    }
5f43a7
-
5f43a7
-    /* prepare the message schedule */
5f43a7
-    for (i = 4; i < 16; i++) {
5f43a7
-        vec_u32 off1 = vec_sld(w[i - 3], w[i - 4], 12);
5f43a7
-        vec_u32 off2 = vec_sld(w[i - 1], w[i - 2], 12);
5f43a7
-        s0 = __builtin_crypto_vshasigmaw(off1, 0, 0);
5f43a7
-        /* first half, s1 depends on two prior ints */
5f43a7
-        s1 = __builtin_crypto_vshasigmaw(w[i - 1], 0, 0xf);
5f43a7
-        s1 = vec_sro(s1, shifthalf);
5f43a7
-        w[i] = w[i - 4] + s0 + off2 + s1;
5f43a7
-
5f43a7
-        /* second half s1 */
5f43a7
-        s1 = __builtin_crypto_vshasigmaw(w[i], 0, 0xf);
5f43a7
-        s1 = vec_slo(s1, shifthalf);
5f43a7
-        w[i] += s1;
5f43a7
-    }
5f43a7
-
5f43a7
-    for (i = 0; i < 16; i++) {
5f43a7
-        w[i] += vec_ld(0, &K256[i * 4]);
5f43a7
-    }
5f43a7
-
5f43a7
-    vec_u32 a, b, c, d, e, f, g, h;
5f43a7
-    a = vec_splats(H[0]);
5f43a7
-    b = vec_splats(H[1]);
5f43a7
-    c = vec_splats(H[2]);
5f43a7
-    d = vec_splats(H[3]);
5f43a7
-    e = vec_splats(H[4]);
5f43a7
-    f = vec_splats(H[5]);
5f43a7
-    g = vec_splats(H[6]);
5f43a7
-    h = vec_splats(H[7]);
5f43a7
-
5f43a7
-    SHA256_UNROLLED_ROUNDS;
5f43a7
-
5f43a7
-    H[0] += a[0];
5f43a7
-    H[1] += b[0];
5f43a7
-    H[2] += c[0];
5f43a7
-    H[3] += d[0];
5f43a7
-    H[4] += e[0];
5f43a7
-    H[5] += f[0];
5f43a7
-    H[6] += g[0];
5f43a7
-    H[7] += h[0];
5f43a7
-
5f43a7
-#undef ROUND
5f43a7
-
5f43a7
-#else /* USE_PPC_CRYPTO*/
5f43a7
-
5f43a7
     {
5f43a7
 #if defined(IS_LITTLE_ENDIAN)
5f43a7
         BYTESWAP4(W[0]);
5f43a7
@@ -435,6 +280,11 @@ SHA256_Compress(SHA256Context *ctx)
5f43a7
         g = H[6];
5f43a7
         h = H[7];
5f43a7
 
5f43a7
+#define ROUND(n, a, b, c, d, e, f, g, h)       \
5f43a7
+    h += S1(e) + Ch(e, f, g) + K256[n] + W[n]; \
5f43a7
+    d += h;                                    \
5f43a7
+    h += S0(a) + Maj(a, b, c);
5f43a7
+
5f43a7
 #ifdef NOUNROLL256
5f43a7
         {
5f43a7
             int t;
5f43a7
@@ -450,7 +300,77 @@ SHA256_Compress(SHA256Context *ctx)
5f43a7
             }
5f43a7
         }
5f43a7
 #else
5f43a7
-        SHA256_UNROLLED_ROUNDS;
5f43a7
+        ROUND(0, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(1, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(2, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(3, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(4, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(5, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(6, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(7, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(8, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(9, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(10, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(11, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(12, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(13, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(14, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(15, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(16, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(17, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(18, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(19, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(20, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(21, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(22, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(23, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(24, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(25, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(26, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(27, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(28, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(29, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(30, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(31, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(32, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(33, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(34, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(35, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(36, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(37, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(38, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(39, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(40, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(41, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(42, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(43, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(44, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(45, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(46, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(47, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(48, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(49, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(50, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(51, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(52, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(53, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(54, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(55, b, c, d, e, f, g, h, a)
5f43a7
+
5f43a7
+        ROUND(56, a, b, c, d, e, f, g, h)
5f43a7
+        ROUND(57, h, a, b, c, d, e, f, g)
5f43a7
+        ROUND(58, g, h, a, b, c, d, e, f)
5f43a7
+        ROUND(59, f, g, h, a, b, c, d, e)
5f43a7
+        ROUND(60, e, f, g, h, a, b, c, d)
5f43a7
+        ROUND(61, d, e, f, g, h, a, b, c)
5f43a7
+        ROUND(62, c, d, e, f, g, h, a, b)
5f43a7
+        ROUND(63, b, c, d, e, f, g, h, a)
5f43a7
 #endif
5f43a7
 
5f43a7
         H[0] += a;
5f43a7
@@ -463,7 +383,6 @@ SHA256_Compress(SHA256Context *ctx)
5f43a7
         H[7] += h;
5f43a7
     }
5f43a7
 #undef ROUND
5f43a7
-#endif /* !USE_PPC_CRYPTO */
5f43a7
 }
5f43a7
 
5f43a7
 #undef s0
5f43a7
@@ -772,11 +691,6 @@ SHA224_Clone(SHA224Context *dest, SHA224Context *src)
5f43a7
 
5f43a7
 #endif
5f43a7
 
5f43a7
-#if defined(USE_PPC_CRYPTO)
5f43a7
-void sha512_block_p8(void *ctx, const void *inp, size_t len);
5f43a7
-
5f43a7
-#else /* USE_PPC_CRYPTO */
5f43a7
-
5f43a7
 /* SHA-384 and SHA-512 constants, K512. */
5f43a7
 static const PRUint64 K512[80] = {
5f43a7
 #if PR_BYTES_PER_LONG == 8
5f43a7
@@ -864,8 +778,6 @@ static const PRUint64 K512[80] = {
5f43a7
 #endif
5f43a7
 };
5f43a7
 
5f43a7
-#endif /* !USE_PPC_CRYPTO */
5f43a7
-
5f43a7
 struct SHA512ContextStr {
5f43a7
     union {
5f43a7
         PRUint64 w[80]; /* message schedule, input buffer, plus 64 words */
5f43a7
@@ -1020,10 +932,6 @@ SHA512_Begin(SHA512Context *ctx)
5f43a7
 static void
5f43a7
 SHA512_Compress(SHA512Context *ctx)
5f43a7
 {
5f43a7
-#if defined(USE_PPC_CRYPTO)
5f43a7
-    sha512_block_p8(&H[0], &W[0], 1);
5f43a7
-#else /* USE_PPC_CRYPTO */
5f43a7
-
5f43a7
 #if defined(IS_LITTLE_ENDIAN)
5f43a7
     {
5f43a7
         BYTESWAP8(W[0]);
5f43a7
@@ -1266,8 +1174,6 @@ SHA512_Compress(SHA512Context *ctx)
5f43a7
         ADDTO(g, H[6]);
5f43a7
         ADDTO(h, H[7]);
5f43a7
     }
5f43a7
-
5f43a7
-#endif /* !USE_PPC_CRYPTO */
5f43a7
 }
5f43a7
 
5f43a7
 void
5f43a7
-- 
5f43a7
2.26.2
5f43a7