| Index: openssl/crypto/rc4/asm/rc4-s390x.pl
 | 
| diff --git a/openssl/crypto/rc4/asm/rc4-s390x.pl b/openssl/crypto/rc4/asm/rc4-s390x.pl
 | 
| deleted file mode 100644
 | 
| index 7528ece13c308eb7d17a3ff2b39e5f9741dcf7cf..0000000000000000000000000000000000000000
 | 
| --- a/openssl/crypto/rc4/asm/rc4-s390x.pl
 | 
| +++ /dev/null
 | 
| @@ -1,234 +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/.
 | 
| -# ====================================================================
 | 
| -#
 | 
| -# February 2009
 | 
| -#
 | 
| -# Performance is 2x of gcc 3.4.6 on z10. Coding "secret" is to
 | 
| -# "cluster" Address Generation Interlocks, so that one pipeline stall
 | 
| -# resolves several dependencies.
 | 
| -
 | 
| -# 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. On z990 it was measured to perform
 | 
| -# 50% better than code generated by gcc 4.3.
 | 
| -
 | 
| -$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";
 | 
| -
 | 
| -$rp="%r14";
 | 
| -$sp="%r15";
 | 
| -$code=<<___;
 | 
| -.text
 | 
| -
 | 
| -___
 | 
| -
 | 
| -# void RC4(RC4_KEY *key,size_t len,const void *inp,void *out)
 | 
| -{
 | 
| -$acc="%r0";
 | 
| -$cnt="%r1";
 | 
| -$key="%r2";
 | 
| -$len="%r3";
 | 
| -$inp="%r4";
 | 
| -$out="%r5";
 | 
| -
 | 
| -@XX=("%r6","%r7");
 | 
| -@TX=("%r8","%r9");
 | 
| -$YY="%r10";
 | 
| -$TY="%r11";
 | 
| -
 | 
| -$code.=<<___;
 | 
| -.globl	RC4
 | 
| -.type	RC4,\@function
 | 
| -.align	64
 | 
| -RC4:
 | 
| -	stm${g}	%r6,%r11,6*$SIZE_T($sp)
 | 
| -___
 | 
| -$code.=<<___ if ($flavour =~ /3[12]/);
 | 
| -	llgfr	$len,$len
 | 
| -___
 | 
| -$code.=<<___;
 | 
| -	llgc	$XX[0],0($key)
 | 
| -	llgc	$YY,1($key)
 | 
| -	la	$XX[0],1($XX[0])
 | 
| -	nill	$XX[0],0xff
 | 
| -	srlg	$cnt,$len,3
 | 
| -	ltgr	$cnt,$cnt
 | 
| -	llgc	$TX[0],2($XX[0],$key)
 | 
| -	jz	.Lshort
 | 
| -	j	.Loop8
 | 
| -
 | 
| -.align	64
 | 
| -.Loop8:
 | 
| -___
 | 
| -for ($i=0;$i<8;$i++) {
 | 
| -$code.=<<___;
 | 
| -	la	$YY,0($YY,$TX[0])	# $i
 | 
| -	nill	$YY,255
 | 
| -	la	$XX[1],1($XX[0])
 | 
| -	nill	$XX[1],255
 | 
| -___
 | 
| -$code.=<<___ if ($i==1);
 | 
| -	llgc	$acc,2($TY,$key)
 | 
| -___
 | 
| -$code.=<<___ if ($i>1);
 | 
| -	sllg	$acc,$acc,8
 | 
| -	ic	$acc,2($TY,$key)
 | 
| -___
 | 
| -$code.=<<___;
 | 
| -	llgc	$TY,2($YY,$key)
 | 
| -	stc	$TX[0],2($YY,$key)
 | 
| -	llgc	$TX[1],2($XX[1],$key)
 | 
| -	stc	$TY,2($XX[0],$key)
 | 
| -	cr	$XX[1],$YY
 | 
| -	jne	.Lcmov$i
 | 
| -	la	$TX[1],0($TX[0])
 | 
| -.Lcmov$i:
 | 
| -	la	$TY,0($TY,$TX[0])
 | 
| -	nill	$TY,255
 | 
| -___
 | 
| -push(@TX,shift(@TX)); push(@XX,shift(@XX));     # "rotate" registers
 | 
| -}
 | 
| -
 | 
| -$code.=<<___;
 | 
| -	lg	$TX[1],0($inp)
 | 
| -	sllg	$acc,$acc,8
 | 
| -	la	$inp,8($inp)
 | 
| -	ic	$acc,2($TY,$key)
 | 
| -	xgr	$acc,$TX[1]
 | 
| -	stg	$acc,0($out)
 | 
| -	la	$out,8($out)
 | 
| -	brctg	$cnt,.Loop8
 | 
| -
 | 
| -.Lshort:
 | 
| -	lghi	$acc,7
 | 
| -	ngr	$len,$acc
 | 
| -	jz	.Lexit
 | 
| -	j	.Loop1
 | 
| -
 | 
| -.align	16
 | 
| -.Loop1:
 | 
| -	la	$YY,0($YY,$TX[0])
 | 
| -	nill	$YY,255
 | 
| -	llgc	$TY,2($YY,$key)
 | 
| -	stc	$TX[0],2($YY,$key)
 | 
| -	stc	$TY,2($XX[0],$key)
 | 
| -	ar	$TY,$TX[0]
 | 
| -	ahi	$XX[0],1
 | 
| -	nill	$TY,255
 | 
| -	nill	$XX[0],255
 | 
| -	llgc	$acc,0($inp)
 | 
| -	la	$inp,1($inp)
 | 
| -	llgc	$TY,2($TY,$key)
 | 
| -	llgc	$TX[0],2($XX[0],$key)
 | 
| -	xr	$acc,$TY
 | 
| -	stc	$acc,0($out)
 | 
| -	la	$out,1($out)
 | 
| -	brct	$len,.Loop1
 | 
| -
 | 
| -.Lexit:
 | 
| -	ahi	$XX[0],-1
 | 
| -	stc	$XX[0],0($key)
 | 
| -	stc	$YY,1($key)
 | 
| -	lm${g}	%r6,%r11,6*$SIZE_T($sp)
 | 
| -	br	$rp
 | 
| -.size	RC4,.-RC4
 | 
| -.string	"RC4 for s390x, CRYPTOGAMS by <appro\@openssl.org>"
 | 
| -
 | 
| -___
 | 
| -}
 | 
| -
 | 
| -# void RC4_set_key(RC4_KEY *key,unsigned int len,const void *inp)
 | 
| -{
 | 
| -$cnt="%r0";
 | 
| -$idx="%r1";
 | 
| -$key="%r2";
 | 
| -$len="%r3";
 | 
| -$inp="%r4";
 | 
| -$acc="%r5";
 | 
| -$dat="%r6";
 | 
| -$ikey="%r7";
 | 
| -$iinp="%r8";
 | 
| -
 | 
| -$code.=<<___;
 | 
| -.globl	private_RC4_set_key
 | 
| -.type	private_RC4_set_key,\@function
 | 
| -.align	64
 | 
| -private_RC4_set_key:
 | 
| -	stm${g}	%r6,%r8,6*$SIZE_T($sp)
 | 
| -	lhi	$cnt,256
 | 
| -	la	$idx,0(%r0)
 | 
| -	sth	$idx,0($key)
 | 
| -.align	4
 | 
| -.L1stloop:
 | 
| -	stc	$idx,2($idx,$key)
 | 
| -	la	$idx,1($idx)
 | 
| -	brct	$cnt,.L1stloop
 | 
| -
 | 
| -	lghi	$ikey,-256
 | 
| -	lr	$cnt,$len
 | 
| -	la	$iinp,0(%r0)
 | 
| -	la	$idx,0(%r0)
 | 
| -.align	16
 | 
| -.L2ndloop:
 | 
| -	llgc	$acc,2+256($ikey,$key)
 | 
| -	llgc	$dat,0($iinp,$inp)
 | 
| -	la	$idx,0($idx,$acc)
 | 
| -	la	$ikey,1($ikey)
 | 
| -	la	$idx,0($idx,$dat)
 | 
| -	nill	$idx,255
 | 
| -	la	$iinp,1($iinp)
 | 
| -	tml	$ikey,255
 | 
| -	llgc	$dat,2($idx,$key)
 | 
| -	stc	$dat,2+256-1($ikey,$key)
 | 
| -	stc	$acc,2($idx,$key)
 | 
| -	jz	.Ldone
 | 
| -	brct	$cnt,.L2ndloop
 | 
| -	lr	$cnt,$len
 | 
| -	la	$iinp,0(%r0)
 | 
| -	j	.L2ndloop
 | 
| -.Ldone:
 | 
| -	lm${g}	%r6,%r8,6*$SIZE_T($sp)
 | 
| -	br	$rp
 | 
| -.size	private_RC4_set_key,.-private_RC4_set_key
 | 
| -
 | 
| -___
 | 
| -}
 | 
| -
 | 
| -# const char *RC4_options()
 | 
| -$code.=<<___;
 | 
| -.globl	RC4_options
 | 
| -.type	RC4_options,\@function
 | 
| -.align	16
 | 
| -RC4_options:
 | 
| -	larl	%r2,.Loptions
 | 
| -	br	%r14
 | 
| -.size	RC4_options,.-RC4_options
 | 
| -.section	.rodata
 | 
| -.Loptions:
 | 
| -.align	8
 | 
| -.string	"rc4(8x,char)"
 | 
| -___
 | 
| -
 | 
| -print $code;
 | 
| -close STDOUT;	# force flush
 | 
| 
 |