[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:30:40 BST 2019
http://bugs.libre-riscv.org/show_bug.cgi?id=139
--- Comment #40 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(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.
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