Also, making life easier, RT and RA are only permitted to be even
(no overlapping can occur). This makes RT (and RA) a "pair" exactly
-as in `lq` and `stq`. Swizzle instructions must be atomically indivisible:
-an Exception or Interrupt may not occur during the pair of Moves.
+as in `lq` and `stq`. Scalar Swizzle instructions must be atomically
+indivisible: an Exception or Interrupt may not occur during the Moves.
+
+Note that unlike the Vectorised variant, when `RT=RA` the Scalar variant
+*must* buffer (read) both 64-bit RA registers before writing to the
+RT pair. This ensures that register file corruption does not occur.
**SVP64 Vectorised**
This in turn implies that Traps and Exceptions are, as usual,
permitted in between element-level moves, because due to there
being no overlap there is no risk of destroying a source with
-an overwrite.
+an overwrite. This is *unlike* the Scalar variant which, when
+`RT=RA`, must buffer both halves of the RT pair.
Determining the source and destination subvector lengths is tricky.
Swizzle Pseudocode:
the Swizzle Immediate. With the Swizzles marking what goes into
each destination position, the marker "0b001" may be used to indicate
the end. If no marker is present then the destination subvector length
-may be assumed to be 4.
+may be assumed to be 4. SUBVL is considered to be the "source" subvector
+length.
```
def index_src():