isaacpittman-hitachi / rpms / openssl

Forked from rpms/openssl 2 years ago
Clone
22d461
diff --git a/crypto/bn/asm/ppc64-mont-fixed.pl b/crypto/bn/asm/ppc64-mont-fixed.pl
22d461
index 56df89dc27da..e69de29bb2d1 100755
22d461
--- a/crypto/bn/asm/ppc64-mont-fixed.pl
22d461
+++ b/crypto/bn/asm/ppc64-mont-fixed.pl
22d461
@@ -1,581 +0,0 @@
22d461
-#! /usr/bin/env perl
22d461
-# Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
22d461
-#
22d461
-# Licensed under the Apache License 2.0 (the "License").  You may not use
22d461
-# this file except in compliance with the License.  You can obtain a copy
22d461
-# in the file LICENSE in the source distribution or at
22d461
-# https://www.openssl.org/source/license.html
22d461
-
22d461
-# ====================================================================
22d461
-# Written by Amitay Isaacs <amitay@ozlabs.org>, Martin Schwenke
22d461
-# <martin@meltin.net> & Alastair D'Silva <alastair@d-silva.org> for
22d461
-# the OpenSSL project.
22d461
-# ====================================================================
22d461
-
22d461
-#
22d461
-# Fixed length (n=6), unrolled PPC Montgomery Multiplication
22d461
-#
22d461
-
22d461
-# 2021
22d461
-#
22d461
-# Although this is a generic implementation for unrolling Montgomery
22d461
-# Multiplication for arbitrary values of n, this is currently only
22d461
-# used for n = 6 to improve the performance of ECC p384.
22d461
-#
22d461
-# Unrolling allows intermediate results to be stored in registers,
22d461
-# rather than on the stack, improving performance by ~7% compared to
22d461
-# the existing PPC assembly code.
22d461
-#
22d461
-# The ISA 3.0 implementation uses combination multiply/add
22d461
-# instructions (maddld, maddhdu) to improve performance by an
22d461
-# additional ~10% on Power 9.
22d461
-#
22d461
-# Finally, saving non-volatile registers into volatile vector
22d461
-# registers instead of onto the stack saves a little more.
22d461
-#
22d461
-# On a Power 9 machine we see an overall improvement of ~18%.
22d461
-#
22d461
-
22d461
-use strict;
22d461
-use warnings;
22d461
-
22d461
-my ($flavour, $output, $dir, $xlate);
22d461
-
22d461
-# $output is the last argument if it looks like a file (it has an extension)
22d461
-# $flavour is the first argument if it doesn't look like a file
22d461
-$output = $#ARGV >= 0 && $ARGV[$#ARGV] =~ m|\.\w+$| ? pop : undef;
22d461
-$flavour = $#ARGV >= 0 && $ARGV[0] !~ m|\.| ? shift : undef;
22d461
-
22d461
-$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
22d461
-( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
22d461
-( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
22d461
-die "can't locate ppc-xlate.pl";
22d461
-
22d461
-open STDOUT,"| $^X $xlate $flavour \"$output\""
22d461
-    or die "can't call $xlate: $!";
22d461
-
22d461
-if ($flavour !~ /64/) {
22d461
-	die "bad flavour ($flavour) - only ppc64 permitted";
22d461
-}
22d461
-
22d461
-my $SIZE_T= 8;
22d461
-
22d461
-# Registers are global so the code is remotely readable
22d461
-
22d461
-# Parameters for Montgomery multiplication
22d461
-my $sp	= "r1";
22d461
-my $toc	= "r2";
22d461
-my $rp	= "r3";
22d461
-my $ap	= "r4";
22d461
-my $bp	= "r5";
22d461
-my $np	= "r6";
22d461
-my $n0	= "r7";
22d461
-my $num	= "r8";
22d461
-
22d461
-my $i	= "r9";
22d461
-my $c0	= "r10";
22d461
-my $bp0	= "r11";
22d461
-my $bpi	= "r11";
22d461
-my $bpj	= "r11";
22d461
-my $tj	= "r12";
22d461
-my $apj	= "r12";
22d461
-my $npj	= "r12";
22d461
-my $lo	= "r14";
22d461
-my $c1	= "r14";
22d461
-
22d461
-# Non-volatile registers used for tp[i]
22d461
-#
22d461
-# 12 registers are available but the limit on unrolling is 10,
22d461
-# since registers from $tp[0] to $tp[$n+1] are used.
22d461
-my @tp = ("r20" .. "r31");
22d461
-
22d461
-# volatile VSRs for saving non-volatile GPRs - faster than stack
22d461
-my @vsrs = ("v32" .. "v46");
22d461
-
22d461
-package Mont;
22d461
-
22d461
-sub new($$)
22d461
-{
22d461
-	my ($class, $n) = @_;
22d461
-
22d461
-	if ($n > 10) {
22d461
-		die "Can't unroll for BN length ${n} (maximum 10)"
22d461
-	}
22d461
-
22d461
-	my $self = {
22d461
-		code => "",
22d461
-		n => $n,
22d461
-	};
22d461
-	bless $self, $class;
22d461
-
22d461
-	return $self;
22d461
-}
22d461
-
22d461
-sub add_code($$)
22d461
-{
22d461
-	my ($self, $c) = @_;
22d461
-
22d461
-	$self->{code} .= $c;
22d461
-}
22d461
-
22d461
-sub get_code($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	return $self->{code};
22d461
-}
22d461
-
22d461
-sub get_function_name($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	return "bn_mul_mont_fixed_n" . $self->{n};
22d461
-}
22d461
-
22d461
-sub get_label($$)
22d461
-{
22d461
-	my ($self, $l) = @_;
22d461
-
22d461
-	return "L" . $l . "_" . $self->{n};
22d461
-}
22d461
-
22d461
-sub get_labels($@)
22d461
-{
22d461
-	my ($self, @labels) = @_;
22d461
-
22d461
-	my %out = ();
22d461
-
22d461
-	foreach my $l (@labels) {
22d461
-		$out{"$l"} = $self->get_label("$l");
22d461
-	}
22d461
-
22d461
-	return \%out;
22d461
-}
22d461
-
22d461
-sub nl($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	$self->add_code("\n");
22d461
-}
22d461
-
22d461
-sub copy_result($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	my ($n) = $self->{n};
22d461
-
22d461
-	for (my $j = 0; $j < $n; $j++) {
22d461
-		$self->add_code(<<___);
22d461
-	std		$tp[$j],`$j*$SIZE_T`($rp)
22d461
-___
22d461
-	}
22d461
-
22d461
-}
22d461
-
22d461
-sub mul_mont_fixed($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	my ($n) = $self->{n};
22d461
-	my $fname = $self->get_function_name();
22d461
-	my $label = $self->get_labels("outer", "enter", "sub", "copy", "end");
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-
22d461
-.globl	.${fname}
22d461
-.align	5
22d461
-.${fname}:
22d461
-
22d461
-___
22d461
-
22d461
-	$self->save_registers();
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	ld		$n0,0($n0)
22d461
-
22d461
-	ld		$bp0,0($bp)
22d461
-
22d461
-	ld		$apj,0($ap)
22d461
-___
22d461
-
22d461
-	$self->mul_c_0($tp[0], $apj, $bp0, $c0);
22d461
-
22d461
-	for (my $j = 1; $j < $n - 1; $j++) {
22d461
-		$self->add_code(<<___);
22d461
-	ld		$apj,`$j*$SIZE_T`($ap)
22d461
-___
22d461
-		$self->mul($tp[$j], $apj, $bp0, $c0);
22d461
-	}
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	ld		$apj,`($n-1)*$SIZE_T`($ap)
22d461
-___
22d461
-
22d461
-	$self->mul_last($tp[$n-1], $tp[$n], $apj, $bp0, $c0);
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	li		$tp[$n+1],0
22d461
-
22d461
-___
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	li		$i,0
22d461
-	mtctr		$num
22d461
-	b		$label->{"enter"}
22d461
-
22d461
-.align	4
22d461
-$label->{"outer"}:
22d461
-	ldx		$bpi,$bp,$i
22d461
-
22d461
-	ld		$apj,0($ap)
22d461
-___
22d461
-
22d461
-	$self->mul_add_c_0($tp[0], $tp[0], $apj, $bpi, $c0);
22d461
-
22d461
-	for (my $j = 1; $j < $n; $j++) {
22d461
-		$self->add_code(<<___);
22d461
-	ld		$apj,`$j*$SIZE_T`($ap)
22d461
-___
22d461
-		$self->mul_add($tp[$j], $tp[$j], $apj, $bpi, $c0);
22d461
-	}
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	addc		$tp[$n],$tp[$n],$c0
22d461
-	addze		$tp[$n+1],$tp[$n+1]
22d461
-___
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-.align	4
22d461
-$label->{"enter"}:
22d461
-	mulld		$bpi,$tp[0],$n0
22d461
-
22d461
-	ld		$npj,0($np)
22d461
-___
22d461
-
22d461
-	$self->mul_add_c_0($lo, $tp[0], $bpi, $npj, $c0);
22d461
-
22d461
-	for (my $j = 1; $j < $n; $j++) {
22d461
-		$self->add_code(<<___);
22d461
-	ld		$npj,`$j*$SIZE_T`($np)
22d461
-___
22d461
-		$self->mul_add($tp[$j-1], $tp[$j], $npj, $bpi, $c0);
22d461
-	}
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	addc		$tp[$n-1],$tp[$n],$c0
22d461
-	addze		$tp[$n],$tp[$n+1]
22d461
-
22d461
-	addi		$i,$i,$SIZE_T
22d461
-	bdnz		$label->{"outer"}
22d461
-
22d461
-	and.		$tp[$n],$tp[$n],$tp[$n]
22d461
-	bne		$label->{"sub"}
22d461
-
22d461
-	cmpld	$tp[$n-1],$npj
22d461
-	blt		$label->{"copy"}
22d461
-
22d461
-$label->{"sub"}:
22d461
-___
22d461
-
22d461
-	#
22d461
-	# Reduction
22d461
-	#
22d461
-
22d461
-		$self->add_code(<<___);
22d461
-	ld		$bpj,`0*$SIZE_T`($np)
22d461
-	subfc		$c1,$bpj,$tp[0]
22d461
-	std		$c1,`0*$SIZE_T`($rp)
22d461
-
22d461
-___
22d461
-	for (my $j = 1; $j < $n - 1; $j++) {
22d461
-		$self->add_code(<<___);
22d461
-	ld		$bpj,`$j*$SIZE_T`($np)
22d461
-	subfe		$c1,$bpj,$tp[$j]
22d461
-	std		$c1,`$j*$SIZE_T`($rp)
22d461
-
22d461
-___
22d461
-	}
22d461
-
22d461
-		$self->add_code(<<___);
22d461
-	subfe		$c1,$npj,$tp[$n-1]
22d461
-	std		$c1,`($n-1)*$SIZE_T`($rp)
22d461
-
22d461
-___
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	addme.		$tp[$n],$tp[$n]
22d461
-	beq		$label->{"end"}
22d461
-
22d461
-$label->{"copy"}:
22d461
-___
22d461
-
22d461
-	$self->copy_result();
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-
22d461
-$label->{"end"}:
22d461
-___
22d461
-
22d461
-	$self->restore_registers();
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	li		r3,1
22d461
-	blr
22d461
-.size .${fname},.-.${fname}
22d461
-___
22d461
-
22d461
-}
22d461
-
22d461
-package Mont::GPR;
22d461
-
22d461
-our @ISA = ('Mont');
22d461
-
22d461
-sub new($$)
22d461
-{
22d461
-    my ($class, $n) = @_;
22d461
-
22d461
-    return $class->SUPER::new($n);
22d461
-}
22d461
-
22d461
-sub save_registers($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	my $n = $self->{n};
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	std	$lo,-8($sp)
22d461
-___
22d461
-
22d461
-	for (my $j = 0; $j <= $n+1; $j++) {
22d461
-		$self->{code}.=<<___;
22d461
-	std	$tp[$j],-`($j+2)*8`($sp)
22d461
-___
22d461
-	}
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-sub restore_registers($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	my $n = $self->{n};
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	ld	$lo,-8($sp)
22d461
-___
22d461
-
22d461
-	for (my $j = 0; $j <= $n+1; $j++) {
22d461
-		$self->{code}.=<<___;
22d461
-	ld	$tp[$j],-`($j+2)*8`($sp)
22d461
-___
22d461
-	}
22d461
-
22d461
-	$self->{code} .=<<___;
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Direct translation of C mul()
22d461
-sub mul($$$$$)
22d461
-{
22d461
-	my ($self, $r, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	mulld		$lo,$a,$w
22d461
-	addc		$r,$lo,$c
22d461
-	mulhdu		$c,$a,$w
22d461
-	addze		$c,$c
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Like mul() but $c is ignored as an input - an optimisation to save a
22d461
-# preliminary instruction that would set input $c to 0
22d461
-sub mul_c_0($$$$$)
22d461
-{
22d461
-	my ($self, $r, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	mulld		$r,$a,$w
22d461
-	mulhdu		$c,$a,$w
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Like mul() but does not to the final addition of CA into $c - an
22d461
-# optimisation to save an instruction
22d461
-sub mul_last($$$$$$)
22d461
-{
22d461
-	my ($self, $r1, $r2, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	mulld		$lo,$a,$w
22d461
-	addc		$r1,$lo,$c
22d461
-	mulhdu		$c,$a,$w
22d461
-
22d461
-	addze		$r2,$c
22d461
-___
22d461
-}
22d461
-
22d461
-# Like C mul_add() but allow $r_out and $r_in to be different
22d461
-sub mul_add($$$$$$)
22d461
-{
22d461
-	my ($self, $r_out, $r_in, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	mulld		$lo,$a,$w
22d461
-	addc		$lo,$lo,$c
22d461
-	mulhdu		$c,$a,$w
22d461
-	addze		$c,$c
22d461
-	addc		$r_out,$r_in,$lo
22d461
-	addze		$c,$c
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Like mul_add() but $c is ignored as an input - an optimisation to save a
22d461
-# preliminary instruction that would set input $c to 0
22d461
-sub mul_add_c_0($$$$$$)
22d461
-{
22d461
-	my ($self, $r_out, $r_in, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	mulld		$lo,$a,$w
22d461
-	addc		$r_out,$r_in,$lo
22d461
-	mulhdu		$c,$a,$w
22d461
-	addze		$c,$c
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-package Mont::GPR_300;
22d461
-
22d461
-our @ISA = ('Mont::GPR');
22d461
-
22d461
-sub new($$)
22d461
-{
22d461
-	my ($class, $n) = @_;
22d461
-
22d461
-	my $mont = $class->SUPER::new($n);
22d461
-
22d461
-	return $mont;
22d461
-}
22d461
-
22d461
-sub get_function_name($)
22d461
-{
22d461
-	my ($self) = @_;
22d461
-
22d461
-	return "bn_mul_mont_300_fixed_n" . $self->{n};
22d461
-}
22d461
-
22d461
-sub get_label($$)
22d461
-{
22d461
-	my ($self, $l) = @_;
22d461
-
22d461
-	return "L" . $l . "_300_" . $self->{n};
22d461
-}
22d461
-
22d461
-# Direct translation of C mul()
22d461
-sub mul($$$$$)
22d461
-{
22d461
-	my ($self, $r, $a, $w, $c, $last) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	maddld		$r,$a,$w,$c
22d461
-	maddhdu		$c,$a,$w,$c
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Save the last carry as the final entry
22d461
-sub mul_last($$$$$)
22d461
-{
22d461
-	my ($self, $r1, $r2, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	maddld		$r1,$a,$w,$c
22d461
-	maddhdu		$r2,$a,$w,$c
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Like mul() but $c is ignored as an input - an optimisation to save a
22d461
-# preliminary instruction that would set input $c to 0
22d461
-sub mul_c_0($$$$$)
22d461
-{
22d461
-	my ($self, $r, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	mulld          $r,$a,$w
22d461
-	mulhdu          $c,$a,$w
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Like C mul_add() but allow $r_out and $r_in to be different
22d461
-sub mul_add($$$$$$)
22d461
-{
22d461
-	my ($self, $r_out, $r_in, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	maddld		$lo,$a,$w,$c
22d461
-	maddhdu		$c,$a,$w,$c
22d461
-	addc		$r_out,$r_in,$lo
22d461
-	addze		$c,$c
22d461
-
22d461
-___
22d461
-}
22d461
-
22d461
-# Like mul_add() but $c is ignored as an input - an optimisation to save a
22d461
-# preliminary instruction that would set input $c to 0
22d461
-sub mul_add_c_0($$$$$$)
22d461
-{
22d461
-	my ($self, $r_out, $r_in, $a, $w, $c) = @_;
22d461
-
22d461
-	$self->add_code(<<___);
22d461
-	maddld		$lo,$a,$w,$r_in
22d461
-	maddhdu		$c,$a,$w,$r_in
22d461
-___
22d461
-
22d461
-	if ($r_out ne $lo) {
22d461
-		$self->add_code(<<___);
22d461
-	mr			$r_out,$lo
22d461
-___
22d461
-	}
22d461
-
22d461
-	$self->nl();
22d461
-}
22d461
-
22d461
-
22d461
-package main;
22d461
-
22d461
-my $code;
22d461
-
22d461
-$code.=<<___;
22d461
-.machine "any"
22d461
-.text
22d461
-___
22d461
-
22d461
-my $mont;
22d461
-
22d461
-$mont = new Mont::GPR(6);
22d461
-$mont->mul_mont_fixed();
22d461
-$code .= $mont->get_code();
22d461
-
22d461
-$mont = new Mont::GPR_300(6);
22d461
-$mont->mul_mont_fixed();
22d461
-$code .= $mont->get_code();
22d461
-
22d461
-$code =~ s/\`([^\`]*)\`/eval $1/gem;
22d461
-
22d461
-$code.=<<___;
22d461
-.asciz  "Montgomery Multiplication for PPC by <amitay\@ozlabs.org>, <alastair\@d-silva.org>"
22d461
-___
22d461
-
22d461
-print $code;
22d461
-close STDOUT or die "error closing STDOUT: $!";
22d461
diff --git a/crypto/bn/bn_ppc.c b/crypto/bn/bn_ppc.c
22d461
index 1e9421bee213..3ee76ea96574 100644
22d461
--- a/crypto/bn/bn_ppc.c
22d461
+++ b/crypto/bn/bn_ppc.c
22d461
@@ -19,12 +19,6 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
22d461
                         const BN_ULONG *np, const BN_ULONG *n0, int num);
22d461
     int bn_mul4x_mont_int(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
22d461
                           const BN_ULONG *np, const BN_ULONG *n0, int num);
22d461
-    int bn_mul_mont_fixed_n6(BN_ULONG *rp, const BN_ULONG *ap,
22d461
-                             const BN_ULONG *bp, const BN_ULONG *np,
22d461
-                             const BN_ULONG *n0, int num);
22d461
-    int bn_mul_mont_300_fixed_n6(BN_ULONG *rp, const BN_ULONG *ap,
22d461
-                                 const BN_ULONG *bp, const BN_ULONG *np,
22d461
-                                 const BN_ULONG *n0, int num);
22d461
 
22d461
     if (num < 4)
22d461
         return 0;
22d461
@@ -40,14 +34,5 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
22d461
      * no opportunity to figure it out...
22d461
      */
22d461
 
22d461
-#if defined(_ARCH_PPC64)
22d461
-    if (num == 6) {
22d461
-        if (OPENSSL_ppccap_P & PPC_MADD300)
22d461
-            return bn_mul_mont_300_fixed_n6(rp, ap, bp, np, n0, num);
22d461
-        else
22d461
-            return bn_mul_mont_fixed_n6(rp, ap, bp, np, n0, num);
22d461
-    }
22d461
-#endif
22d461
-
22d461
     return bn_mul_mont_int(rp, ap, bp, np, n0, num);
22d461
 }
22d461
diff --git a/crypto/bn/build.info b/crypto/bn/build.info
22d461
index 987a70ae263b..4f8d0689b5ea 100644
22d461
--- a/crypto/bn/build.info
22d461
+++ b/crypto/bn/build.info
22d461
@@ -79,7 +79,7 @@ IF[{- !$disabled{asm} -}]
22d461
 
22d461
   $BNASM_ppc32=bn_ppc.c bn-ppc.s ppc-mont.s
22d461
   $BNDEF_ppc32=OPENSSL_BN_ASM_MONT
22d461
-  $BNASM_ppc64=$BNASM_ppc32 ppc64-mont-fixed.s
22d461
+  $BNASM_ppc64=$BNASM_ppc32
22d461
   $BNDEF_ppc64=$BNDEF_ppc32
22d461
 
22d461
   $BNASM_c64xplus=asm/bn-c64xplus.asm
22d461
@@ -173,7 +173,6 @@ GENERATE[parisc-mont.s]=asm/parisc-mont.pl
22d461
 GENERATE[bn-ppc.s]=asm/ppc.pl
22d461
 GENERATE[ppc-mont.s]=asm/ppc-mont.pl
22d461
 GENERATE[ppc64-mont.s]=asm/ppc64-mont.pl
22d461
-GENERATE[ppc64-mont-fixed.s]=asm/ppc64-mont-fixed.pl
22d461
 
22d461
 GENERATE[alpha-mont.S]=asm/alpha-mont.pl
22d461
 
22d461
diff --git a/test/recipes/30-test_evp_data/evppkey_ecdsa.txt b/test/recipes/30-test_evp_data/evppkey_ecdsa.txt
22d461
index f36982845db4..1543ed9f7534 100644
22d461
--- a/test/recipes/30-test_evp_data/evppkey_ecdsa.txt
22d461
+++ b/test/recipes/30-test_evp_data/evppkey_ecdsa.txt
22d461
@@ -97,6 +97,18 @@ Key = P-256-PUBLIC
22d461
 Input = "Hello World"
22d461
 Output = 3046022100e7515177ec3817b77a4a94066ab3070817b7aa9d44a8a09f040da250116e8972022100ba59b0f631258e59a9026be5d84f60685f4cf22b9165a0c2736d5c21c8ec1862
22d461
 
22d461
+PublicKey=P-384-PUBLIC
22d461
+-----BEGIN PUBLIC KEY-----
22d461
+MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAES/TlL5WEJ+u1kV+4yVlVUbTTo/2rZ7rd
22d461
+nWwwk/QlukNjDfcfQvDrfOqpTZ9kSKhd0wMxWIJJ/S/cCzCex+2EgbwW8ngAwT19
22d461
+twD8guGxyFRaoMDTtW47/nifwYqRaIfC
22d461
+-----END PUBLIC KEY-----
22d461
+
22d461
+DigestVerify = SHA384
22d461
+Key = P-384-PUBLIC
22d461
+Input = "123400"
22d461
+Output = 304d0218389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68b023100ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52970
22d461
+
22d461
 # Oneshot tests
22d461
 OneShotDigestVerify = SHA256
22d461
 Key = P-256-PUBLIC