summaryrefslogtreecommitdiffstats
path: root/crypto/chacha
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2018-06-07 14:04:34 +0200
committerAndy Polyakov <appro@openssl.org>2018-06-08 15:49:09 +0200
commit10f279713ae39736ca1c7bcb09e240c7c5fb298a (patch)
tree726ad790787f31cc02e93bbe2923206e19bef4d4 /crypto/chacha
parentbb5f281ad0eed55ae4ddc7ba0ce953411b64bf32 (diff)
chacha/asm/chacha-ppc.pl: fix big-endian build.
It's kind of a "brown-bag" bug, as I did recognize the problem and verified an ad-hoc solution, but failed to follow up with cross-checks prior filing previous merge request. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6435)
Diffstat (limited to 'crypto/chacha')
-rwxr-xr-xcrypto/chacha/asm/chacha-ppc.pl11
1 files changed, 6 insertions, 5 deletions
diff --git a/crypto/chacha/asm/chacha-ppc.pl b/crypto/chacha/asm/chacha-ppc.pl
index 96cdfeb7f8..f4f8610bf3 100755
--- a/crypto/chacha/asm/chacha-ppc.pl
+++ b/crypto/chacha/asm/chacha-ppc.pl
@@ -438,9 +438,9 @@ my ($a,$b,$c,$d)=@_;
"&vxor ('$b','$b','$c')",
"&vrlw ('$b','$b','$seven')",
- "&vsldoi ('$c','$c','$c',8)",
- "&vsldoi ('$b','$b','$b',$odd?4:12)",
- "&vsldoi ('$d','$d','$d',$odd?12:4)"
+ "&vrldoi ('$c','$c',8)",
+ "&vrldoi ('$b','$b',$odd?4:12)",
+ "&vrldoi ('$d','$d',$odd?12:4)"
);
}
@@ -1334,11 +1334,12 @@ foreach (split("\n",$code)) {
s/\?lvsr/lvsl/ or
s/\?lvsl/lvsr/ or
s/\?(vperm\s+v[0-9]+,\s*)(v[0-9]+,\s*)(v[0-9]+,\s*)(v[0-9]+)/$1$3$2$4/ or
- s/(vsldoi\s+v[0-9]+,\s*)(v[0-9]+,)\s*(v[0-9]+,\s*)([0-9]+)/$1$3$2 16-$4/;
+ s/vrldoi(\s+v[0-9]+,\s*)(v[0-9]+,)\s*([0-9]+)/vsldoi$1$2$2 16-$3/;
} else { # little-endian
s/le\?// or
s/be\?/#be#/ or
- s/\?([a-z]+)/$1/;
+ s/\?([a-z]+)/$1/ or
+ s/vrldoi(\s+v[0-9]+,\s*)(v[0-9]+,)\s*([0-9]+)/vsldoi$1$2$2 $3/;
}
print $_,"\n";