Improve the overflow handling in rsaz_512_sqr
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Wed, 4 Dec 2019 11:57:41 +0000 (12:57 +0100)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 6 Dec 2019 12:36:16 +0000 (13:36 +0100)
commit46ac489a1369f6d938adda356accab83acf2987a
treea8ef42e8fb22d85088925b555b1f41d45a01320b
parent419102400a2811582a7a3d4a4e317d72e5ce0a8f
Improve the overflow handling in rsaz_512_sqr

We have always a carry in %rcx or %rbx in range 0..2
from the previous stage, that is added to the result
of the 64-bit square, but the low nibble of any square
can only be 0, 1, 4, 9.

Therefore one "adcq $0, %rdx" can be removed.
Likewise in the ADX code we can remove one
"adcx %rbp, $out" since %rbp is always 0, and carry is
also zero, therefore that is a no-op.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/10575)
crypto/bn/asm/rsaz-x86_64.pl