[Libre-soc-bugs] [Bug 782] add galois field bitmanip instructions

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sat Mar 5 00:46:57 GMT 2022


https://bugs.libre-soc.org/show_bug.cgi?id=782

--- Comment #21 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
found it

https://git.libre-soc.org/?p=openpower-isa.git;a=blob;f=src/openpower/decoder/isa/test_caller_svp64_fft.py;h=5ea7fcc89c8102b7a0ca34403fefb9e15f40eb2c;hb=d1b415e4383366cf445fd4ff2db828a612f88099#l140

twin butterfly, of Cooley-Tukey, we want a GF version.  you can
use the DFT example as pretty much cut/paste for everything, almost.

it is *3* input, *2* output, see ffmadds, where the SV RM entry
has 2 RT destinations hence you get 5 actual operands where
there is only space for 4 in the opcode.

if really really really pushed for space it can be made a
3 operand "overwrite" (with 5 offsets) so actually:

   sv.gfpmuladdsub RS, RA, RB

but:

* RS gets a "src1" offset (this is the add)
* RA gets a "src2" offset (this is the sub)
* RB gets a "src3" offset (this is the w coefficient)
* RS and RA *ALSO* get *dest* offsets

where again if pushed src1 offset can be the same as dst1
and src2 can be the same as dest2 offset.

do not worry about the "efficiency" of 3in 2out operations,
it is more important to have RS RA RB all as "in-flight",
using Reservation Stations to avoid the use of a temp register.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list