add swizzle description to abridged sv spec
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 13 Aug 2019 10:53:12 +0000 (11:53 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 13 Aug 2019 10:53:12 +0000 (11:53 +0100)
simple_v_extension/abridged_spec.mdwn
simple_v_extension/vblock_format_table.mdwn

index f5a607ab558578471baebaea46aa344ac8df4aa2..86c10714c29a34bd8238534c2d029f15de93c385 100644 (file)
@@ -221,6 +221,23 @@ Pseudocode for predication:
 [[!inline raw="yes" pages="simple_v_extension/pred_table" ]]
 [[!inline raw="yes" pages="simple_v_extension/get_pred_value" ]]
 
+## Swizzle Table <a name="swizzle_table></a>
+
+The swizzle table is a key-value store that indicates (if a given
+register is used, and SUBVL is 2, 3 or 4) that the sub-elements are to
+be re-ordered according to the indices in the Swizzle format.
+
+Source vectors are free to have the swizzle indices point to the same
+sub-vector element.  However when using swizzling on destination vectors,
+the swizzle **must** be a permutation (no two swizzle indices point to
+the same sub-element).  An illegal instruction exception must be raised
+if this occurs.
+
+[[!inline raw="yes" pages="simple_v_extension/swizzle_table_format" ]]
+
+For more information on swizzling, see the Khronos wiki page
+<https://www.khronos.org/opengl/wiki/Data_Type_(GLSL)#Swizzling>
+
 ## Fail-on-First Mode <a name="ffirst-mode"></a>
 
 ffirst is a special data-dependent predicate mode.  There are two
index d10a5e63280a8e196f60ff18989b9df6c140cc70..6698059c8d089be6025a3bd14dec19fc2da5e41c 100644 (file)
@@ -24,11 +24,11 @@ The VL/MAXVL/SubVL Block format, when 16xil != 0b111, is:
 """]]
 
 When 16xil is 0b111, this is the "Extended" Format, using the >= 192-bit
-RISC-V ISA format.  Note that the length is 80+16\*nnnnnn, not 192+
+RISC-V ISA format.  Note that the length is 96+16\*nnnnnn, not 192+
 
 | base+5 ... base+3         | base+1  | base             | no. of bits   |
 | ------ -----------------  |         | ---------------- | ------------- |
-| ..xxxx  xxxxxxxxxxxxxxxx  |         | x111xxxxx1111111 | 80+16\*nnnnnn |
+| ..xxxx  xxxxxxxxxxxxxxxx  |         | x111xxxxx1111111 | 96+16\*nnnnnn |
 | {ops}{Pred}{Reg}{VL Block}| VBLOCK2 | VBLOCK Prefix    |               |
 
 VBLOCK2 extends the VBLOCK fields: