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:31:31 +0000 (13:31 +0100)
commit8736f9538121443cdb2e21951a85e465b8f7f790
tree62427506849ff4adc0ad229c8d1fdc2f034b87cf
parent8c6f86c7c5350fadf22d32d6cd4712e2ad4447ba
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/10574)
crypto/bn/asm/rsaz-x86_64.pl