[Libre-soc-bugs] [Bug 1044] SVP64 implementation of pow(x,y,z)
    bugzilla-daemon at libre-soc.org 
    bugzilla-daemon at libre-soc.org
       
    Fri Oct  6 04:25:39 BST 2023
    
    
  
https://bugs.libre-soc.org/show_bug.cgi?id=1044
--- Comment #24 from Jacob Lifshay <programmerjake at gmail.com> ---
I wrote the powmod assembly, and got a python equivalent working, however,
because divmod is really slow, running one powmod invocation is a few hundred
thousand simulated instructions (powmod calls divmod 256-512 times, divmod
loops 256 times, each inner loop is ~20 ops).
Therefore, I think I should implement Knuth's algorithm D instead of the shift
& subtract divmod algorithm we currently have, since I expect it to run 20-50x
faster.
I pushed to the programmerjake/powmod branch.
https://git.libre-soc.org/?p=openpower-isa.git;a=shortlog;h=f8467f43e8e04f84280ac5586f92222916df0676
commit f8467f43e8e04f84280ac5586f92222916df0676
Author: Jacob Lifshay <programmerjake at gmail.com>
Date:   Thu Oct 5 19:57:29 2023 -0700
    add WIP powmod_256 -- asm test is currently disabled since divmod is too
slow
commit f56b16a029c1e41b323b99f9514e04a42bba9c3a
Author: Jacob Lifshay <programmerjake at gmail.com>
Date:   Thu Oct 5 19:53:45 2023 -0700
    fix assemble to properly look for whole symbols to replace
    previously if there were labels foo and foobar, it would partially
    replace foobar giving 0x<addr>bar, which is wrong.
    also optimized to use dict instead of linear search for label names
-- 
You are receiving this mail because:
You are on the CC list for the bug.
    
    
More information about the libre-soc-bugs
mailing list