if swiz[i] == 0b001:
dst_subvl = i+1
break
- # source subvector length is maximum of both RM fields
- src_subvl = MAX(SRC_SUBVL, SUBVL)
```
What is going on here is that the option is provided to have different
the end. If no marker is present then the destination subvector length
may be assumed to be 4.
+```
+ def index_src():
+ for i in range(VL):
+ for j in range(SUBVL):
+ if swiz[j] == 0b000: # skip
+ continue
+ if swiz[j] == 0b001: # end
+ break
+ if swiz[j] in [0b010, 0b011]:
+ yield (i*SUBVL, CONSTANT)
+ else:
+ yield (i*SUBVL, swiz[j]-3)
+
+ # yield an outer-SUBVL, inner VL loop with DEST SUBVL
+ def index_dest():
+ for i in range(VL):
+ for j in range(dst_subvl):
+ yield i*dst_subvl+j
+```
+
**Effect of Saturation on Vectorised Swizzle**
A useful convenience for pixel data is to be able to insert values