[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