(no commit message)
authorlkcl <lkcl@web>
Tue, 14 Jun 2022 06:16:29 +0000 (07:16 +0100)
committerIkiWiki <ikiwiki.info>
Tue, 14 Jun 2022 06:16:29 +0000 (07:16 +0100)
openpower/sv/mv.swizzle.mdwn

index b1cf7995508643e3caffa631453a41d82d984b95..26ab13877c4bcec9cbf27626fe2a5d4858d49b95 100644 (file)
@@ -7,13 +7,16 @@ Links
 * <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