Hi

I propose some new mpn functions/macro's

left and right shift by 1 bit  say called mpn_lshift1 , but with no partial 
overlap of source and destination. Quite a few cpus should be able to use 
their mpn_add_n for the mpn_lshift1 so not just the K8 will benefit.
On the K8 I have a general shift running at 2.21c/l and a shift by 1 running 
at 1.28c/l (left and right). For cpus where we dont have a native version we 
can just define mpn_lshift1 as a macro to call mpn_lshift(....,1) , no loss 
of speed and no backwards compatibility issues.
Looking at the existing mpir code you can see quite a few instances where we 
have a fixed shift of 1 , and the correct overlap restrictions.


Some new HAVE_NATIVE functions (ie like mpn_addlsh1_n)

mpn_addadd_n()
mpn_addsub_n()

which are (rp,n)=(s1p,n)+(s2p,n)+-(s3p,n)

for example on the K8 , two adds are 3.0c/l but addadd is 2.25c/l 
the existing mpn_mul_kara can use both of these.
Another possible use of mpn_addsub_n is modulo addition , although you best 
test the high limb first.

Note: the name above mpn_addsub_n conflicts with an existing function which 
calculates the sum and diff , but its undocumented so we could change the 
name

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-devel@googlegroups.com
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to