bn/asm/x86_64-mont5.pl: fix valgrind error.
[openssl.git] / crypto / bn / asm / x86_64-mont5.pl
index 69e81bf4dd6ff1940da9a1026f94c031d113ebd1..aa96d43e8909ecf12250e920fdfc5dfc90071625 100755 (executable)
@@ -3231,11 +3231,16 @@ $code.=<<___;
 .type  bn_get_bits5,\@abi-omnipotent
 .align 16
 bn_get_bits5:
-       mov     $inp,%r10
+       lea     0($inp),%r10
+       lea     1($inp),%r11
        mov     $num,%ecx
-       shr     \$3,$num
-       movzw   (%r10,$num),%eax
-       and     \$7,%ecx
+       shr     \$4,$num
+       and     \$15,%ecx
+       lea     -8(%ecx),%eax
+       cmp     \$11,%ecx
+       cmova   %r11,%r10
+       cmova   %eax,%ecx
+       movzw   (%r10,$num,2),%eax
        shrl    %cl,%eax
        and     \$31,%eax
        ret