From: lkcl Date: Tue, 14 Jun 2022 06:16:29 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~1798 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=db01d633875631719f949dffc7b695c293e2b853;p=libreriscv.git --- diff --git a/openpower/sv/mv.swizzle.mdwn b/openpower/sv/mv.swizzle.mdwn index b1cf79955..26ab13877 100644 --- a/openpower/sv/mv.swizzle.mdwn +++ b/openpower/sv/mv.swizzle.mdwn @@ -7,13 +7,16 @@ Links * * -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