David Miller <da...@davemloft.net> writes:

> If it's needed for sub_n, then yes that's a bit difficult.  I was
> trying to figure out ways to fabricate the needed calculations
> using just subcc and addxc/addxcc but haven't come up with anything
> just yet.

You could always do the two's complement of one of the operands on the
fly, and then use the same add with carry instructions as in add_n.

I'm thinking aloud, so I'm sorry if I get this wrong, but I think it's
best to handle the unlikely case of low zero limbs up front. Then it's a
plain negate of the first non-zero limb, and a plain complement for the
remaining limbs; the important thing here is that the negation generates
no additional carries to propagate.

So compared to add_n, you just get an additional xor with -1 in the loop
(and not on the loop's critical path). I can't guess whether or not that
will be visible in the execution time.

Regards,
/Niels

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
http://gmplib.org/mailman/listinfo/gmp-devel

Reply via email to