# Pack/Unpack Mode:
It is possible to apply Pack and Unpack to Vectorised
-swizzle moves, and these instructions are of EXTRA type
-`RM-2P-1S1D-PU`. The interaction requires specific explanation
+swizzle moves. The interaction requires specific explanation
because it involves the separate SUBVLs (with destination SUBVL
being separate). Key to understanding is that the
source and
destination SUBVL be "outer" loops instead of inner loops,
exactly as in [[sv/remap]] Matrix mode, under the control
-of `PACK_en` and `UNPACK_en`.
+of `SVSTATE.PACK` and `SVSTATE.UNPACK`.
Illustrating a
"normal" SVP64 operation with `SUBVL!=1` (assuming no elwidth overrides):
+```
def index():
for i in range(VL):
for j in range(SUBVL):
for idx in index():
operation_on(RA+idx)
+```
For a separate source/dest SUBVL (again, no elwidth overrides):
+```
# yield an outer-SUBVL or inner VL loop with SUBVL
def index_dest(outer):
if outer:
for i in range(VL):
for j in range(SUBVL):
....
+```
"yield" from python is used here for simplicity and clarity.
The two Finite State Machines for the generation of the source