chacha/asm/chacha-ppc.pl: get misalignment corner case right on big-endian.
authorAndy Polyakov <appro@openssl.org>
Sat, 23 Apr 2016 17:16:56 +0000 (19:16 +0200)
committerAndy Polyakov <appro@openssl.org>
Mon, 25 Apr 2016 09:48:44 +0000 (11:48 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
crypto/chacha/asm/chacha-ppc.pl

index 2bb3fce8ed97265030ea1574b1f44ea91b93abca..4c5d2d1aeca6108cfa8e712c9426c36c68127fb4 100755 (executable)
@@ -527,9 +527,11 @@ $code.=<<___;
        ?lvsl   $outperm,0,$out                 # prepare for unaligned store
        ?vperm  $outmask,$outmask,$T0,$outperm
 
+       be?lvsl $T0,0,@x[0]                     # 0x00..0f
        be?vspltisb $T1,3                       # 0x03..03
-       be?vxor $inpperm,$inpperm,$T1           # swap bytes within words
+       be?vxor $T0,$T0,$T1                     # swap bytes within words
        be?vxor $outperm,$outperm,$T1
+       be?vperm $inpperm,$inpperm,$inpperm,$T0
 
        b       Loop_outer_vmx