[Libre-soc-bugs] [Bug 782] add galois field bitmanip instructions
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Fri Mar 4 12:08:01 GMT 2022
https://bugs.libre-soc.org/show_bug.cgi?id=782
--- Comment #10 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #8)
> Please don't edit old comments...I didn't notice till now that you had
> changed what you wrote...
>
> (In reply to Luke Kenneth Casson Leighton from comment #6)
> > (In reply to Jacob Lifshay from comment #3)
> >
> > > then we need a gfmadd instruction.
> >
> > and a twin version.
>
> If you mean something that can use twin predication,
nono, not predication, two ops in one instruction. look at the pseudocode
https://libre-soc.org/openpower/isa/svfparith/
the reason why i was able to do inplace FFT is the twin butterfly ops.
otherwise you need a temp reg and two instructions and obviously that
doesnt fit with Horizontal SVP64.
> > yes because on exceeding polynomial you need a cleanup.
> > as long as both inputs are below polynomial the cleanup
> > is i believe a simple check.
>
> I'd just expect the inputs to nearly always be in-range (100% of the time in
> >99% of programs), meaning that xor is completely sufficient. I don't think
> this justifies a separate instruction.
mrhhm mumble mumble we need to be 100% certain.
> > do they mean e.g. Gf 2^5
>
> yes, when you have any degree 5 reducing polynomial. If you have a
> polynomial that is some other degree, such as 6, then the field described is
> some instance of GF(2^6) for degree 6, GF(2^3) for degree 3, etc.
ok excellent. i knew that, but sometimes reading wikipedia talk they help
you lose track of the facts rather than give you insights :)
> The polynomial must always be irreducible (the polynomial equivalent of
> being a prime number), otherwise you don't get a Galois Field (you get a
> Ring instead), which means that the LSB must be non-zero for degree > 2
> polynomials, otherwise it would be divisible by the polynomial x^1+0, which
> would mean that your polynomial wasn't irreducible after all, making your
> nice Galois Field no longer a Field, essentially breaking the math. Think of
> it as like dividing by zero.
eep. bad.
and also fascinating.
ok then i like the encoding.
(In reply to Jacob Lifshay from comment #9)
> > isn't it beautifully completely nuts? :) i tracked down a simple version
> > based on long division, see bitmanip page section "gf invert", it looks
> > half decent, reminds me of the arithmetic div pipeline and of CORDIC.
>
> yeah, that's for binary GF. prime GF is a whole other beast.
ok i get the message i need to look this up. if you know of some simple
easy to understand implementation do put it in the wiki.
give me a day or a few to read up on it, any papers/academic tutorials
you know of do let me know.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list