From: Andy Polyakov Date: Thu, 7 Jun 2018 12:04:34 +0000 (+0200) Subject: chacha/asm/chacha-ppc.pl: fix big-endian build. X-Git-Tag: OpenSSL_1_1_1-pre8~56 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=10f279713ae39736ca1c7bcb09e240c7c5fb298a;p=oweals%2Fopenssl.git 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 (Merged from https://github.com/openssl/openssl/pull/6435) --- 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";