[[!tag oldstandards]] **THIS PAGE US OBSOLETE, OUT OF DATE, AND MUST BE REPLACED. THE BUGREPORT IS NOT OUT-OF-DATE** # LD.X and LD.Swizzle See 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. In addition, Vulkan requires swizzled LD/ST covering: * identity (no swizzle) * constant 0 * 1 or 1.0 depending on Op type * x, y, z, or w. See Note that the swizzle has to be on selecting the src that will go into a sequentially indexed dest: for i in range(4): srcidx = swizzle[i] srcaddr = base + srcidx * elwidth regs[rd+i] = mem[srcaddr] Swizzling on the dest would not work because xxyz would try to set the same dest twice.