Reimplement bn_mul_words(), bn_mul_add_words() and bn_mul_comba{4,8}().
authorjsing <jsing@openbsd.org>
Tue, 14 Feb 2023 18:37:15 +0000 (18:37 +0000)
committerjsing <jsing@openbsd.org>
Tue, 14 Feb 2023 18:37:15 +0000 (18:37 +0000)
commitdf1d0ed5bb4253fbd3e57fbba5daf089ed1fc61f
treeb076d213e6e8f2613945fec17f6d438d69e3e1e5
parent27142ad25f84e935b75df0be9cf66d0e04ee6f82
Reimplement bn_mul_words(), bn_mul_add_words() and bn_mul_comba{4,8}().

Use bignum primitives rather than the current mess of macros, which also
allows us to remove the essentially duplicate versions of
bn_mul_words() and bn_mul_add_words() for BN_LLONG.

The "mul" macro gets replaced by bn_mulw_addw(), "mul_add" with
bn_mulw_addw_addw() and "mul_add_c" with bn_mulw_addtw() (where 'w'
indicates single word input and 'tw' indicates triple word input).

The variables in the comba functions have also been reordered, so that the
patterns are easier to understand - the compiler can take care of
optimising the inputs and outputs to avoid register moves.

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