[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