| Index: openssl/crypto/sha/asm/sha1-s390x.pl
 | 
| diff --git a/openssl/crypto/sha/asm/sha1-s390x.pl b/openssl/crypto/sha/asm/sha1-s390x.pl
 | 
| deleted file mode 100644
 | 
| index 9193dda45eff974206f24a23480d27d604b8b4e6..0000000000000000000000000000000000000000
 | 
| --- a/openssl/crypto/sha/asm/sha1-s390x.pl
 | 
| +++ /dev/null
 | 
| @@ -1,246 +0,0 @@
 | 
| -#!/usr/bin/env perl
 | 
| -
 | 
| -# ====================================================================
 | 
| -# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
 | 
| -# project. The module is, however, dual licensed under OpenSSL and
 | 
| -# CRYPTOGAMS licenses depending on where you obtain it. For further
 | 
| -# details see http://www.openssl.org/~appro/cryptogams/.
 | 
| -# ====================================================================
 | 
| -
 | 
| -# SHA1 block procedure for s390x.
 | 
| -
 | 
| -# April 2007.
 | 
| -#
 | 
| -# Performance is >30% better than gcc 3.3 generated code. But the real
 | 
| -# twist is that SHA1 hardware support is detected and utilized. In
 | 
| -# which case performance can reach further >4.5x for larger chunks.
 | 
| -
 | 
| -# January 2009.
 | 
| -#
 | 
| -# Optimize Xupdate for amount of memory references and reschedule
 | 
| -# instructions to favour dual-issue z10 pipeline. On z10 hardware is
 | 
| -# "only" ~2.3x faster than software.
 | 
| -
 | 
| -# November 2010.
 | 
| -#
 | 
| -# Adapt for -m31 build. If kernel supports what's called "highgprs"
 | 
| -# feature on Linux [see /proc/cpuinfo], it's possible to use 64-bit
 | 
| -# instructions and achieve "64-bit" performance even in 31-bit legacy
 | 
| -# application context. The feature is not specific to any particular
 | 
| -# processor, as long as it's "z-CPU". Latter implies that the code
 | 
| -# remains z/Architecture specific.
 | 
| -
 | 
| -$kimdfunc=1;	# magic function code for kimd instruction
 | 
| -
 | 
| -$flavour = shift;
 | 
| -
 | 
| -if ($flavour =~ /3[12]/) {
 | 
| -	$SIZE_T=4;
 | 
| -	$g="";
 | 
| -} else {
 | 
| -	$SIZE_T=8;
 | 
| -	$g="g";
 | 
| -}
 | 
| -
 | 
| -while (($output=shift) && ($output!~/^\w[\w\-]*\.\w+$/)) {}
 | 
| -open STDOUT,">$output";
 | 
| -
 | 
| -$K_00_39="%r0"; $K=$K_00_39;
 | 
| -$K_40_79="%r1";
 | 
| -$ctx="%r2";	$prefetch="%r2";
 | 
| -$inp="%r3";
 | 
| -$len="%r4";
 | 
| -
 | 
| -$A="%r5";
 | 
| -$B="%r6";
 | 
| -$C="%r7";
 | 
| -$D="%r8";
 | 
| -$E="%r9";	@V=($A,$B,$C,$D,$E);
 | 
| -$t0="%r10";
 | 
| -$t1="%r11";
 | 
| -@X=("%r12","%r13","%r14");
 | 
| -$sp="%r15";
 | 
| -
 | 
| -$stdframe=16*$SIZE_T+4*8;
 | 
| -$frame=$stdframe+16*4;
 | 
| -
 | 
| -sub Xupdate {
 | 
| -my $i=shift;
 | 
| -
 | 
| -$code.=<<___ if ($i==15);
 | 
| -	lg	$prefetch,$stdframe($sp)	### Xupdate(16) warm-up
 | 
| -	lr	$X[0],$X[2]
 | 
| -___
 | 
| -return if ($i&1);	# Xupdate is vectorized and executed every 2nd cycle
 | 
| -$code.=<<___ if ($i<16);
 | 
| -	lg	$X[0],`$i*4`($inp)	### Xload($i)
 | 
| -	rllg	$X[1],$X[0],32
 | 
| -___
 | 
| -$code.=<<___ if ($i>=16);
 | 
| -	xgr	$X[0],$prefetch		### Xupdate($i)
 | 
| -	lg	$prefetch,`$stdframe+4*(($i+2)%16)`($sp)
 | 
| -	xg	$X[0],`$stdframe+4*(($i+8)%16)`($sp)
 | 
| -	xgr	$X[0],$prefetch
 | 
| -	rll	$X[0],$X[0],1
 | 
| -	rllg	$X[1],$X[0],32
 | 
| -	rll	$X[1],$X[1],1
 | 
| -	rllg	$X[0],$X[1],32
 | 
| -	lr	$X[2],$X[1]		# feedback
 | 
| -___
 | 
| -$code.=<<___ if ($i<=70);
 | 
| -	stg	$X[0],`$stdframe+4*($i%16)`($sp)
 | 
| -___
 | 
| -unshift(@X,pop(@X));
 | 
| -}
 | 
| -
 | 
| -sub BODY_00_19 {
 | 
| -my ($i,$a,$b,$c,$d,$e)=@_;
 | 
| -my $xi=$X[1];
 | 
| -
 | 
| -	&Xupdate($i);
 | 
| -$code.=<<___;
 | 
| -	alr	$e,$K		### $i
 | 
| -	rll	$t1,$a,5
 | 
| -	lr	$t0,$d
 | 
| -	xr	$t0,$c
 | 
| -	alr	$e,$t1
 | 
| -	nr	$t0,$b
 | 
| -	alr	$e,$xi
 | 
| -	xr	$t0,$d
 | 
| -	rll	$b,$b,30
 | 
| -	alr	$e,$t0
 | 
| -___
 | 
| -}
 | 
| -
 | 
| -sub BODY_20_39 {
 | 
| -my ($i,$a,$b,$c,$d,$e)=@_;
 | 
| -my $xi=$X[1];
 | 
| -
 | 
| -	&Xupdate($i);
 | 
| -$code.=<<___;
 | 
| -	alr	$e,$K		### $i
 | 
| -	rll	$t1,$a,5
 | 
| -	lr	$t0,$b
 | 
| -	alr	$e,$t1
 | 
| -	xr	$t0,$c
 | 
| -	alr	$e,$xi
 | 
| -	xr	$t0,$d
 | 
| -	rll	$b,$b,30
 | 
| -	alr	$e,$t0
 | 
| -___
 | 
| -}
 | 
| -
 | 
| -sub BODY_40_59 {
 | 
| -my ($i,$a,$b,$c,$d,$e)=@_;
 | 
| -my $xi=$X[1];
 | 
| -
 | 
| -	&Xupdate($i);
 | 
| -$code.=<<___;
 | 
| -	alr	$e,$K		### $i
 | 
| -	rll	$t1,$a,5
 | 
| -	lr	$t0,$b
 | 
| -	alr	$e,$t1
 | 
| -	or	$t0,$c
 | 
| -	lr	$t1,$b
 | 
| -	nr	$t0,$d
 | 
| -	nr	$t1,$c
 | 
| -	alr	$e,$xi
 | 
| -	or	$t0,$t1
 | 
| -	rll	$b,$b,30
 | 
| -	alr	$e,$t0
 | 
| -___
 | 
| -}
 | 
| -
 | 
| -$code.=<<___;
 | 
| -.text
 | 
| -.align	64
 | 
| -.type	Ktable,\@object
 | 
| -Ktable: .long	0x5a827999,0x6ed9eba1,0x8f1bbcdc,0xca62c1d6
 | 
| -	.skip	48	#.long	0,0,0,0,0,0,0,0,0,0,0,0
 | 
| -.size	Ktable,.-Ktable
 | 
| -.globl	sha1_block_data_order
 | 
| -.type	sha1_block_data_order,\@function
 | 
| -sha1_block_data_order:
 | 
| -___
 | 
| -$code.=<<___ if ($kimdfunc);
 | 
| -	larl	%r1,OPENSSL_s390xcap_P
 | 
| -	lg	%r0,0(%r1)
 | 
| -	tmhl	%r0,0x4000	# check for message-security assist
 | 
| -	jz	.Lsoftware
 | 
| -	lghi	%r0,0
 | 
| -	la	%r1,`2*$SIZE_T`($sp)
 | 
| -	.long	0xb93e0002	# kimd %r0,%r2
 | 
| -	lg	%r0,`2*$SIZE_T`($sp)
 | 
| -	tmhh	%r0,`0x8000>>$kimdfunc`
 | 
| -	jz	.Lsoftware
 | 
| -	lghi	%r0,$kimdfunc
 | 
| -	lgr	%r1,$ctx
 | 
| -	lgr	%r2,$inp
 | 
| -	sllg	%r3,$len,6
 | 
| -	.long	0xb93e0002	# kimd %r0,%r2
 | 
| -	brc	1,.-4		# pay attention to "partial completion"
 | 
| -	br	%r14
 | 
| -.align	16
 | 
| -.Lsoftware:
 | 
| -___
 | 
| -$code.=<<___;
 | 
| -	lghi	%r1,-$frame
 | 
| -	st${g}	$ctx,`2*$SIZE_T`($sp)
 | 
| -	stm${g}	%r6,%r15,`6*$SIZE_T`($sp)
 | 
| -	lgr	%r0,$sp
 | 
| -	la	$sp,0(%r1,$sp)
 | 
| -	st${g}	%r0,0($sp)
 | 
| -
 | 
| -	larl	$t0,Ktable
 | 
| -	llgf	$A,0($ctx)
 | 
| -	llgf	$B,4($ctx)
 | 
| -	llgf	$C,8($ctx)
 | 
| -	llgf	$D,12($ctx)
 | 
| -	llgf	$E,16($ctx)
 | 
| -
 | 
| -	lg	$K_00_39,0($t0)
 | 
| -	lg	$K_40_79,8($t0)
 | 
| -
 | 
| -.Lloop:
 | 
| -	rllg	$K_00_39,$K_00_39,32
 | 
| -___
 | 
| -for ($i=0;$i<20;$i++)	{ &BODY_00_19($i,@V); unshift(@V,pop(@V)); }
 | 
| -$code.=<<___;
 | 
| -	rllg	$K_00_39,$K_00_39,32
 | 
| -___
 | 
| -for (;$i<40;$i++)	{ &BODY_20_39($i,@V); unshift(@V,pop(@V)); }
 | 
| -$code.=<<___;	$K=$K_40_79;
 | 
| -	rllg	$K_40_79,$K_40_79,32
 | 
| -___
 | 
| -for (;$i<60;$i++)	{ &BODY_40_59($i,@V); unshift(@V,pop(@V)); }
 | 
| -$code.=<<___;
 | 
| -	rllg	$K_40_79,$K_40_79,32
 | 
| -___
 | 
| -for (;$i<80;$i++)	{ &BODY_20_39($i,@V); unshift(@V,pop(@V)); }
 | 
| -$code.=<<___;
 | 
| -
 | 
| -	l${g}	$ctx,`$frame+2*$SIZE_T`($sp)
 | 
| -	la	$inp,64($inp)
 | 
| -	al	$A,0($ctx)
 | 
| -	al	$B,4($ctx)
 | 
| -	al	$C,8($ctx)
 | 
| -	al	$D,12($ctx)
 | 
| -	al	$E,16($ctx)
 | 
| -	st	$A,0($ctx)
 | 
| -	st	$B,4($ctx)
 | 
| -	st	$C,8($ctx)
 | 
| -	st	$D,12($ctx)
 | 
| -	st	$E,16($ctx)
 | 
| -	brct${g} $len,.Lloop
 | 
| -
 | 
| -	lm${g}	%r6,%r15,`$frame+6*$SIZE_T`($sp)
 | 
| -	br	%r14
 | 
| -.size	sha1_block_data_order,.-sha1_block_data_order
 | 
| -.string	"SHA1 block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
 | 
| -.comm	OPENSSL_s390xcap_P,16,8
 | 
| -___
 | 
| -
 | 
| -$code =~ s/\`([^\`]*)\`/eval $1/gem;
 | 
| -
 | 
| -print $code;
 | 
| -close STDOUT;
 | 
| 
 |