(no commit message)
authorlkcl <lkcl@web>
Wed, 19 Jun 2019 13:34:42 +0000 (14:34 +0100)
committerIkiWiki <ikiwiki.info>
Wed, 19 Jun 2019 13:34:42 +0000 (14:34 +0100)
simple_v_extension/sv_prefix_proposal.rst

index 422b7d65daba68551fdb23221fdf32469743c341..254a381cca888b646d8074fc9ddb32322075f9bb 100644 (file)
@@ -191,25 +191,27 @@ Load/Store Kind (lsk) Field Encoding
 ====================================
 
 +------+----------+------------+-----------------------------------------------------------------+
-| lsk  | Mnemonic | Stride     | Meaning                                                         |
+| vd/vs2 | vs1  | Meaning                                                         |
 +======+==========+============+=================================================================+
-| 000  | C        |            | Contiguous                                                      |
+| 0      | 0   | srcbase is scalar, LD/ST is pure scalar.                                                      |
 +------+----------+------------+-----------------------------------------------------------------+
-| 001  | SI       | *svsz* * 2 | Strided with an immediate stride of 2 times the sub-vector size |
+| 1     | 0   | srcbase is scalar, LD/ST is unit strided |
 +------+----------+------------+-----------------------------------------------------------------+
-| 010  | SI       | *svsz* * 3 | Strided with an immediate stride of 3 times the sub-vector size |
+| 0     | 1   | srcbase is a vector (gather/scatter aka array of srcbases). VSPLAT and VSELECT |
 +------+----------+------------+-----------------------------------------------------------------+
-| 011  | SI       | *svsz* * 4 | Strided with an immediate stride of 4 times the sub-vector size |
-+------+----------+------------+-----------------------------------------------------------------+
-| 100  | SI       | *svsz* * 5 | Strided with an immediate stride of 5 times the sub-vector size |
-+------+----------+------------+-----------------------------------------------------------------+
-| 101  | SI       | *svsz* * 6 | Strided with an immediate stride of 6 times the sub-vector size |
-+------+----------+------------+-----------------------------------------------------------------+
-| 110  | SI       | *svsz* * 7 | Strided with an immediate stride of 7 times the sub-vector size |
-+------+----------+------------+-----------------------------------------------------------------+
-| 111  | S        | x8 (s0)    | Strided with a stride in bytes specified by a register          |
+| 1     | 1        | srcbase is a vector, LD/ST is a full vector LD/ST. |
 +------+----------+------------+-----------------------------------------------------------------+
 
+Notes:
+
+* A register strided LD/ST would require *5* registers. srcbase, vd/vs2, predicate 1, predicate 2 and the stride register.
+* Complex strides may all be done with a general purpose vector of srcbases.
+* Twin predication may be used even when vd/vs1 is a scalar, to give VSPLAT and VSELECT, because the hardware loop ends on the first occurrence of a 1 in the predicate when a predicate is applied to a scalar.
+* Full vectorised gather/scatter is enabled when both registers are marked as vectorised, however unlike e.g Intel AVX512, twin predication can be applied.
+
+Open question: RVV overloads the width field of LOAD-FP/STORE-FP using the bit 2 to indicate additional interpretation of the 11 bit immediate. Should this be considered?
+
+
 Sub-Vector Length (svlen) Field Encoding
 =======================================================