arithmetic: Rewrite limbs_reduce_once
.
#2435
Open
+171
−52
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Move the function to
arithmetic
fromlimb
. This is step towards moving all arithmetic out oflimb
.Change the signature so that the reduction is done separately instead of in-place. It was already being done separately in
bigint
and it costs very little, if anything, to do the same in the other caller inec
.Optimize the implementation to take advantage of the fact that
r
anda
do not alias each other. To do so, replaceLIMBS_reduce_once
with two separate helper functions,LIMBS_sub
andLIMBS_cmov
.As part of doing this, ensure we're not passing any empty slices to the relevant C code.