* <https://bugs.libre-soc.org/show_bug.cgi?id=139>
* <https://lists.libre-soc.org/pipermail/libre-soc-dev/2022-June/004913.html>
-Swizzle is usually done on a per-operand basis in 3D GPU ISAs, making
-for extremely long instructions (64 bits or greater).
+Swizzle is a type of permute shorthand allowing arbitrary selection
+of elements from vec2/3/4 creating a new vec2/3/4.
Their value lies in the high occurrence of Swizzle
-in 3D Shader Binaries (over 10% of all instructions),
+in 3D Shader Binaries (over 10% of all instructions).
+Swizzle is usually done on a per-vec-operand basis in 3D GPU ISAs, making
+for extremely long instructions (64 bits or greater),
however it is not practical to add two or more sets of 12-bit
prefixes into a single instruction.
-A compromise is to provide a Swizzle "Move".
+A compromise is to provide a Swizzle "Move": one such move is
+then required for each operand to a subsequent instruction.
The encoding for this instruction embeds static predication into the
swizzle as well as constants 1/1.0 and 0/0.0