Commit 50f1b47c authored by Andy Polyakov's avatar Andy Polyakov
Browse files

PPC assembly pack: jumbo update from master.

Add Vector Permutation AES and little-endian support.
parent 5572bc4e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -139,8 +139,8 @@ my $s390x_asm="s390xcap.o s390xcpuid.o:bn-s390x.o s390x-mont.o s390x-gf2m.o::aes
my $armv4_asm="armcap.o armv4cpuid.o:bn_asm.o armv4-mont.o armv4-gf2m.o::aes_cbc.o aes-armv4.o bsaes-armv7.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::ghash-armv4.o::void";
my $parisc11_asm="pariscid.o:bn_asm.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::32";
my $parisc20_asm="pariscid.o:pa-risc2W.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64";
my $ppc32_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o::::::::";
my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::::";
my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::::";
my $ppc32_asm=$ppc64_asm;
my $no_asm=":::::::::::::::void";

# As for $BSDthreads. Idea is to maintain "collective" set of flags,
@@ -365,6 +365,7 @@ my %table=(
####
"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-ppc64",	"gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
"linux-ppc64le","gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::",
"linux-ia64",	"gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-x86_64",	"gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+47 −14
Original line number Diff line number Diff line
@@ -902,10 +902,10 @@ $bn_ops = BN_LLONG RC4_CHAR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
@@ -935,10 +935,10 @@ $bn_ops = BN_LLONG RC4_CHAR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
@@ -1001,7 +1001,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -1034,7 +1034,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -1463,10 +1463,10 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
@@ -1496,7 +1496,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -2189,10 +2189,10 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
@@ -4400,10 +4400,10 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
@@ -4433,7 +4433,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -4455,6 +4455,39 @@ $ranlib =
$arflags      = 
$multilib     = 64

*** linux-ppc64le
$cc           = gcc
$cflags       = -m64 -DL_ENDIAN -DTERMIO -O3 -Wall
$unistd       = 
$thread_cflag = -D_REENTRANT
$sys_id       = 
$lflags       = -ldl
$bn_ops       = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
$cpuid_obj    = ppccpuid.o ppccap.o
$bn_obj       = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj      = 
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$engines_obj  = 
$perlasm_scheme = linux64le
$dso_scheme   = dlfcn
$shared_target= linux-shared
$shared_cflag = -fPIC
$shared_ldflag = -m64
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
$ranlib       = 
$arflags      = 
$multilib     = 

*** linux-sparcv8
$cc           = gcc
$cflags       = -mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W
+2 −0
Original line number Diff line number Diff line
@@ -75,6 +75,8 @@ aest4-sparcv9.s: asm/aest4-sparcv9.pl

aes-ppc.s:	asm/aes-ppc.pl
	$(PERL) asm/aes-ppc.pl $(PERLASM_SCHEME) $@
vpaes-ppc.s:	asm/vpaes-ppc.pl
	$(PERL) asm/vpaes-ppc.pl $(PERLASM_SCHEME) $@

aes-parisc.s:	asm/aes-parisc.pl
	$(PERL) asm/aes-parisc.pl $(PERLASM_SCHEME) $@
+90 −0
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ if ($flavour =~ /64/) {
	$PUSH	="stw";
} else { die "nonsense $flavour"; }

$LITTLE_ENDIAN = ($flavour=~/le$/) ? $SIZE_T : 0;

$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
@@ -361,17 +363,61 @@ $code.=<<___;
	bne	Lenc_unaligned

Lenc_unaligned_ok:
___
$code.=<<___ if (!$LITTLE_ENDIAN);
	lwz	$s0,0($inp)
	lwz	$s1,4($inp)
	lwz	$s2,8($inp)
	lwz	$s3,12($inp)
___
$code.=<<___ if ($LITTLE_ENDIAN);
	lwz	$t0,0($inp)
	lwz	$t1,4($inp)
	lwz	$t2,8($inp)
	lwz	$t3,12($inp)
	rotlwi	$s0,$t0,8
	rotlwi	$s1,$t1,8
	rotlwi	$s2,$t2,8
	rotlwi	$s3,$t3,8
	rlwimi	$s0,$t0,24,0,7
	rlwimi	$s1,$t1,24,0,7
	rlwimi	$s2,$t2,24,0,7
	rlwimi	$s3,$t3,24,0,7
	rlwimi	$s0,$t0,24,16,23
	rlwimi	$s1,$t1,24,16,23
	rlwimi	$s2,$t2,24,16,23
	rlwimi	$s3,$t3,24,16,23
___
$code.=<<___;
	bl	LAES_Te
	bl	Lppc_AES_encrypt_compact
	$POP	$out,`$FRAME-$SIZE_T*19`($sp)
___
$code.=<<___ if ($LITTLE_ENDIAN);
	rotlwi	$t0,$s0,8
	rotlwi	$t1,$s1,8
	rotlwi	$t2,$s2,8
	rotlwi	$t3,$s3,8
	rlwimi	$t0,$s0,24,0,7
	rlwimi	$t1,$s1,24,0,7
	rlwimi	$t2,$s2,24,0,7
	rlwimi	$t3,$s3,24,0,7
	rlwimi	$t0,$s0,24,16,23
	rlwimi	$t1,$s1,24,16,23
	rlwimi	$t2,$s2,24,16,23
	rlwimi	$t3,$s3,24,16,23
	stw	$t0,0($out)
	stw	$t1,4($out)
	stw	$t2,8($out)
	stw	$t3,12($out)
___
$code.=<<___ if (!$LITTLE_ENDIAN);
	stw	$s0,0($out)
	stw	$s1,4($out)
	stw	$s2,8($out)
	stw	$s3,12($out)
___
$code.=<<___;
	b	Lenc_done

Lenc_unaligned:
@@ -795,17 +841,61 @@ Lenc_compact_done:
	bne	Ldec_unaligned

Ldec_unaligned_ok:
___
$code.=<<___ if (!$LITTLE_ENDIAN);
	lwz	$s0,0($inp)
	lwz	$s1,4($inp)
	lwz	$s2,8($inp)
	lwz	$s3,12($inp)
___
$code.=<<___ if ($LITTLE_ENDIAN);
	lwz	$t0,0($inp)
	lwz	$t1,4($inp)
	lwz	$t2,8($inp)
	lwz	$t3,12($inp)
	rotlwi	$s0,$t0,8
	rotlwi	$s1,$t1,8
	rotlwi	$s2,$t2,8
	rotlwi	$s3,$t3,8
	rlwimi	$s0,$t0,24,0,7
	rlwimi	$s1,$t1,24,0,7
	rlwimi	$s2,$t2,24,0,7
	rlwimi	$s3,$t3,24,0,7
	rlwimi	$s0,$t0,24,16,23
	rlwimi	$s1,$t1,24,16,23
	rlwimi	$s2,$t2,24,16,23
	rlwimi	$s3,$t3,24,16,23
___
$code.=<<___;
	bl	LAES_Td
	bl	Lppc_AES_decrypt_compact
	$POP	$out,`$FRAME-$SIZE_T*19`($sp)
___
$code.=<<___ if ($LITTLE_ENDIAN);
	rotlwi	$t0,$s0,8
	rotlwi	$t1,$s1,8
	rotlwi	$t2,$s2,8
	rotlwi	$t3,$s3,8
	rlwimi	$t0,$s0,24,0,7
	rlwimi	$t1,$s1,24,0,7
	rlwimi	$t2,$s2,24,0,7
	rlwimi	$t3,$s3,24,0,7
	rlwimi	$t0,$s0,24,16,23
	rlwimi	$t1,$s1,24,16,23
	rlwimi	$t2,$s2,24,16,23
	rlwimi	$t3,$s3,24,16,23
	stw	$t0,0($out)
	stw	$t1,4($out)
	stw	$t2,8($out)
	stw	$t3,12($out)
___
$code.=<<___ if (!$LITTLE_ENDIAN);
	stw	$s0,0($out)
	stw	$s1,4($out)
	stw	$s2,8($out)
	stw	$s3,12($out)
___
$code.=<<___;
	b	Ldec_done

Ldec_unaligned:
+1507 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading