5 See <http://bugs.libre-riscv.org/show_bug.cgi?id=139>
7 SV is based on vectorisation of scalar opcodes. LD and ST from scalar RISCV can be extended by either rd or rs1 being vectorised, however a third "immediate element strided" multiples do not fit.
9 In addition, Vulkan requires swizzled LD/ST covering:
11 * identity (no swizzle)
13 * 1 or 1.0 depending on Op type
16 See <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkComponentSwizzle.html>
18 Note that the swizzle has to be on selecting the src that will go into a sequentially indexed dest:
22 srcaddr = base + srcidx * elwidth
23 regs[rd+i] = mem[srcaddr]
25 Swizzling on the dest would not work because xxyz would try to set the same dest twice.