Replace bn_sqr_words() with bn_sqr_add_words().
authorjsing <jsing@openbsd.org>
Sun, 2 Jul 2023 13:11:23 +0000 (13:11 +0000)
committerjsing <jsing@openbsd.org>
Sun, 2 Jul 2023 13:11:23 +0000 (13:11 +0000)
commit3f0fe28843d6ff4cb0235528ecf99dda3069074d
tree04a5ecb6ab1917cb92c37add7b56bfe50cdd3891
parent544a150acf0c267ddd9096fa1ee5af32d8d9f014
Replace bn_sqr_words() with bn_sqr_add_words().

In order to implement efficient squaring, we compute the sum of products
(omitting the squares), double the sum of products and then finally
compute and add in the squares. However, for reasons unknown the final
calculation was implemented as two separate steps.

Replace bn_sqr_words() with bn_sqr_add_words() such that we do the
computation in one step, avoid the need for temporary BN and remove
needless overhead. This gives us a performance gain across most
architectures (even with the loss of sse2 on i386, for example).

ok tb@
lib/libcrypto/bn/bn_sqr.c