[Libre-soc-bugs] [Bug 755] add grev instruction (OP_GREV)

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Tue May 17 15:30:17 BST 2022


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

--- Comment #56 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
ok so the key difference as to why i designed grevlut the way it is,
is to bring in *two* bits (A[i] and A[i^crossover]) into the binary LUT.

the cascade effect of the application of multiple LUTs results in
e.g. ANDing or NANDing of multiple bits, which is how the magic
constants 0x11111111 0x10101010 0x10001000 0x10000000 emerge,
and it turns out that 0x77777777 0x70707070 etc and many more
can be created as well.

the AOI trick *cannot do that* because the bits A[i] and A[i^crossover]
are treated as *independent*

thus unless otherwise radically altered the AOI trick is not going to
be useful.


one way to reduce the number of MUXes on the grevlut path
is to substitute "identity" immediates:

    imm_left  = sh[j] ? imm[0:3] : 0b0101
    imm_right = sh[j] ? imm[4:7] : 0b1100

i think that does the trick... it'll be pretty close.  this knocks out
one MUX per layer in the shortest critical path.

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


More information about the libre-soc-bugs mailing list