[libre-riscv-dev] [Bug 139] Add LD.X and ST.X? Strided

bugzilla-daemon at libre-riscv.org bugzilla-daemon at libre-riscv.org
Sun Oct 6 09:51:18 BST 2019


http://bugs.libre-riscv.org/show_bug.cgi?id=139

--- Comment #43 from Jacob Lifshay <programmerjake at gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #40)
> (In reply to Jacob Lifshay from comment #38)
> 
> >             let src = if (sel_field & 0b100) == 0 {
> >                 &rs1[(vindex * srcsubvl)..]
> >             } else {
> >                 SwizzleConstants::CONSTANTS
> >             };
> 
> ok yes i see how that works.
> 
> predication can be pseudo-added by:
> 
> if (sel_field == 0b111) continue.

if we're going to do that, we really should increase the field size to 4 bits
per element, since shuffle2 already uses them all (rs1 x, y, z, and w and rs3
x, y, z, and w)

though I am extremely disinclined to have something that sets the output subvl
in a data-dependent way (basically the output type & complete layout), that
seems like a giant mess of security vulnerabilities just waiting to happen.

also, what do you do when subvector 1 has 2 ignores, subvector 2 has 3 ignores,
subvector 3 has 1 ignore, and so on?!

> 
> thus skipping anything where the selector field requests it.
> 
> 
> in swizzle2, i think "ignore" (with some thought / augmentation)
> can be used to select either of rs1 or rs3, skipping *either* src
> *or* dest.  twin-predication in other words.
> 
> this would get rid of the need to have separate dest-sub-vl and
> src-sub-vl.  "skip / ignore" would simply *automatically* not
> overwrite (or read) src or dest based on the skip/ignore-parts
> of rs2.
> 
> we discussed "reconstructing" twin-predication state restoration,
> a few months back.
> 
> the reason why i thought it would be an extremely bad idea is because
> of the length of VL.  looping desperately through VL (up to 64 bits),
> examining the masks to reconstruct the start-point: really bad idea.
> 
> however, here, because it's applied to SUBVL, and SUBVL is only 2,3 or 4,
> it's fine.  that can be done as a (slightly complex) single combinatorial
> block, possibly even just a lookup table.

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


More information about the libre-riscv-dev mailing list