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>
Wed, 4 Dec 2019 21:57:18 +0000 (22:57 +0100)
commitec8fcae925cca769cfdae4e4dd5ec62d32110982
treef203a04fbcbf27fd59ea5d71861b5dd698d01677
parentf1c5eea8a817075d31e43f5876993c6710238c98
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/10576)
crypto/bn/asm/rsaz-x86_64.pl