[Libre-soc-isa] [Bug 1077] evaluate removing /vec234 from instructions, move subvl to SVSTATE

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Wed May 3 13:53:55 BST 2023


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

--- Comment #18 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Dmitry Selyutin from comment #7)
> So we free 2 bits in RM (thus for each instruction) and move these two into
> SVSTATE (thus global). Before doing this, few questions:
> 1. Do we have use for two bits freed in RM? Perhaps some specifiers can be
> simplified.

yes.  the 5-bit mode is terribly cramped. modes that should be possible
together (independently) are mutually-exclusive.  source/dest-zeroing
is mostly disabled (crippled). and there's no future expansion room.

> 2. Do we have a real need in vec2/vec3/vec4 at all? If it can be emulated
> and emulation is cheap and/or this is a rarely used functionality, I'd
> simply drop it.

in GPU code and in vector pack/unpack it is incredibly useful.  imagine
being able to "unzip" RGB data, process it, then "zip" it back up again.
like this:

   https://libre-soc.org/openpower/sv/load-store.svg

so although the data (from memory or registers doesn't matter which)
could be R G B R G B you actually want to process all Rs together,
process all Gs together, process all Bs together, so UNPACK with
a vec3 will do precisely that: grab all R R R R R in sequence
grab all G G G G G in sequence grab all B B B B B in sequence.

VSX *only* has dual (twin) pack/unpack.  it does *not* have 3-wide
and it does not have 4-wide.  vpkss.  they're fixed size only.
basically back around 2003 when screens were 15-bit RGB, IBM added some
hard-coded instructions to cope with that. then things moved on...

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


More information about the Libre-SOC-ISA mailing list