From: lkcl Date: Thu, 27 Jun 2019 22:27:57 +0000 (+0100) Subject: (no commit message) X-Git-Tag: convert-csv-opcode-to-binary~4375 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f374088273efb5e011da9a5b0bdc80cfd1da22f0;p=libreriscv.git --- diff --git a/simple_v_extension/abridged_spec.mdwn b/simple_v_extension/abridged_spec.mdwn index 6d707b5ed..fef232cd6 100644 --- a/simple_v_extension/abridged_spec.mdwn +++ b/simple_v_extension/abridged_spec.mdwn @@ -222,21 +222,9 @@ Pseudocode for predication: ffirst is a special data-dependent predicate mode. There are two variants: one is for faults: typically for LOAD/STORE operations, which may encounter end of page faults during a series of operations. -The other variant is comparisons such as FEQ (or the augmented behaviour -of Branch), and any operation that returns a result of zero (whether -integer or floating-point). In the FP case, this includes negative-zero. - -Note that the execution order must "appear" to be sequential for ffirst -mode to work correctly. An in-order architecture must execute the element -operations in sequence, whilst an out-of-order architecture must *commit* -the element operations in sequence (giving the appearance of in-order -execution). - -Note also, that if ffirst mode is needed without predication, a special -"always-on" Predicate Table Entry may be constructed by setting -inverse-on and using x0 as the predicate register. This -will have the effect of creating a mask of all ones, allowing ffirst -to be set. +The other variant is comparisons, and anything that returns "zero" or "fail". Note: no instruction may operate in both fault mode and "condition fail" mode. + +Fail on first critically relies on the program order being sequential, even for elements. Out of order designs must *commit* in-order, and are required to cancel elements at and beyond the fail point. See [[appendix]] for more details on fail-on-first modes.