[Libre-soc-dev] SVP64 Vectorised add-carry => big int add

Jacob Lifshay programmerjake at gmail.com
Tue Apr 12 05:00:25 BST 2022


On Mon, Apr 11, 2022, 20:15 Jacob Lifshay <programmerjake at gmail.com> wrote:

> On Sun, Apr 10, 2022, 08:37 lkcl <luke.leighton at gmail.com> wrote:
>
>> https://libre-soc.org/openpower/sv/svp64/appendix/
>>
>> could someone please check the new section about CA/CA32, am i right and
>> is it clear that a chain of adde's (sv.adde) would in fact be a "Big
>> Integer Add"?
>>
>
> yes, that's correct.
>


reading through the wiki some more, i noticed it specifies that SO and
OV[32] are ignored and not written by SVP64 instructions, I think that may
not be the best decision, instead I think that SO should not be written to
avoid the dependency chain issues, but OV[32] should still be read/written
since, just like CA[32], they don't have the dependency chain issue.

Having OV still work with SVP64 allows use of addex (uses OV as a carry
in/out), allowing vectorizing big-int algorithms that need two separate
carry chains.

Both OpenPower (addex) and x86 (adox) have instructions that specifically
use the overflow flag as a carry in/out, so we shouldn't prevent it from
working with svp64.

https://www.felixcloutier.com/x86/adox

See table 2 in:
http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-large-integer-arithmetic-paper.pdf
for an example of why two separate carry chains are needed...the example
algorithm they use is 512-bit multiplication.

Jacob

>


More information about the Libre-soc-dev mailing list