X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=simple_v_extension%2Fappendix.mdwn;h=c29044cfea6b9772be22c43d9b8dc3d968f819ee;hb=37181e5b518787335694439350f8d7a6d4a5d444;hp=a951d4450663125307b76c5d5feff09a609c16c3;hpb=700d534cf47ddc39014ee6bf76f3cbac6733d411;p=libreriscv.git
diff --git a/simple_v_extension/appendix.mdwn b/simple_v_extension/appendix.mdwn
index a951d4450..c29044cfe 100644
--- a/simple_v_extension/appendix.mdwn
+++ b/simple_v_extension/appendix.mdwn
@@ -1,4 +1,8 @@
-# Simple-V (Parallelism Extension Proposal) Appendix
+[[!oldstandards]]
+
+# Simple-V (Parallelism Extension Proposal) Appendix (OBSOLETE)
+
+**OBSOLETE**
* Copyright (C) 2017, 2018, 2019 Luke Kenneth Casson Leighton
* Status: DRAFTv0.6
@@ -194,7 +198,9 @@ comprehensive in its effect on instructions.
Branch operations are augmented slightly to be a little more like FP
Compares (FEQ, FNE etc.), by permitting the cumulation (and storage)
of multiple comparisons into a register (taken indirectly from the predicate
-table). As such, "ffirst" - fail-on-first - condition mode can be enabled.
+table) and enhancing them to branch "consensually" depending on *multiple*
+tests. "ffirst" - fail-on-first - condition mode can also be enabled,
+to terminate the comparisons early.
See ffirst mode in the Predication Table section.
There are two registers for the comparison operation, therefore there
@@ -232,6 +238,13 @@ element tests must be performed (and the result optionally stored in
the result mask), with a "post-analysis" phase carried out which checks
whether to branch.
+Note also that whilst it may seem excessive to have all four (because
+conditional comparisons may be inverted by swapping src1 and src2),
+data-dependent fail-on-first is *not* invertible and *only* terminates
+on first zero-condition encountered. Additionally it may be inconvenient
+to have to swap the predicate registers associated with src1 and src2,
+because this involves a new VBLOCK Context.
+
### Standard Branch
Branch operations use standard RV opcodes that are reinterpreted to
@@ -1087,7 +1100,7 @@ Note:
is also marked as scalar, this is how the compatibility with
standard RV LOAD/STORE is preserved by this algorithm.
-### Example Tables showing LOAD elements
+### Example Tables showing LOAD elements
This section contains examples of vectorised LOAD operations, showing
how the two stage process works (three if zero/sign-extension is included).
@@ -1447,7 +1460,7 @@ circumstances it is perfectly fine to simply have the lanes
"inactive" for predicated elements, even though it results in
less than 100% ALU utilisation.
-## Twin-predication (based on source and destination register)
+## Twin-predication (based on source and destination register)
Twin-predication is not that much different, except that that
the source is independently zero-predicated from the destination.