From: lkcl Date: Wed, 5 Apr 2023 08:45:11 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls012_v1~124 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=357bf4aa908fae9197656ce666389d9605256cac;p=libreriscv.git --- diff --git a/openpower/sv/ldst.mdwn b/openpower/sv/ldst.mdwn index 943fd0095..62b7d3470 100644 --- a/openpower/sv/ldst.mdwn +++ b/openpower/sv/ldst.mdwn @@ -218,7 +218,7 @@ LD-VSPLAT is required then a single *scalar* cache-inhibited LD should be performed, followed by a VSPLAT-augmented mv, copying the one *scalar* value into multiple register destinations. -Note also that cache-inhibited VSPLAT with Predicate-result is possible. +Note also that cache-inhibited VSPLAT with Data-Dependent Fail-First is possible. This allows for example to issue a massive batch of memory-mapped peripheral reads, stopping at the first NULL-terminated character and truncating VL to that point. No branch is needed to issue that large @@ -494,14 +494,21 @@ one Element earlier. break # stop looping ``` -**Data-Dependent Fault-First on Store-Conditional** +**Data-Dependent Fault-First on Store-Conditional (Rc=1)** There are very few instructions that allow Rc=1 for Load/Store: one of those is the `stdcx.` and other Atomic Store-Conditional -instructions. It should be self-evident that being able to -Vectorise and then truncate a sequence of Atomic Store-Conditional -operations at the point where a store was not performed, should -be pretty important. +instructions. With Simple-V being a loop around Scalar instructions +strictly obeying Scalar Program Order a Fail-First loop on an +Atomic Store-Conditional will always fail the second and all other +Store-Conditional instructions in Horizontal-First Mode because +Load-Reservation and Store-Conditional are required to be executed +in pairs. + +By contrast, in Vertical-First Mode it is in fact possible to issue +the pairs, and consequently allowing Vectorised Data-Dependent Fail-First is +useful. Care should be taken however when VL is truncated in Vertical-First +Mode. ## LOAD/STORE Elwidths