From bac0ba478204c04721eee66cf1dcfb5d33e68499 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Wed, 5 Apr 2023 10:57:22 +0100 Subject: [PATCH] whitespace --- openpower/sv/ldst.mdwn | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/openpower/sv/ldst.mdwn b/openpower/sv/ldst.mdwn index 62b7d3470..1623f513f 100644 --- a/openpower/sv/ldst.mdwn +++ b/openpower/sv/ldst.mdwn @@ -447,34 +447,33 @@ FFirst where Vertical-First Mode is fully deterministic, not speculative. ## Data-Dependent Fail-First (not Fail/Fault-First) Not to be confused with Fail/Fault First, Data-Fail-First performs an -additional check on the data into a Condition Register Field and if a test on -the CR Field fails then VL is truncated and further looping terminates. -This is precisely the same as Arithmetic Data-Dependent Fail-First, the -only difference being that the result comes from the LD/ST. +additional check on the data into a Condition Register Field and if a test +on the CR Field fails then VL is truncated and further looping terminates. +This is precisely the same as Arithmetic Data-Dependent Fail-First, +the only difference being that the result comes from the LD/ST. In the case of Store operations there is a quirk when VLi (VL inclusive is "Valid") is clear. Bear in mind the criteria is that the truncated -Vector of results, -when VLi is clear, must all pass the "test", but when VLi is set the -*current failed test* is permitted to be included. Thus, the actual -update (store) to Memory is **not permitted to take place** should the -test fail. Therefore, on testing the value to be stored, and after updating -the corresponding CR Field Element, when VLi=0 and finding that the -test fails the Memory store must **not** occur. +Vector of results, when VLi is clear, must all pass the "test", but when +VLi is set the *current failed test* is permitted to be included. Thus, +the actual update (store) to Memory is **not permitted to take place** +should the test fail. Therefore, on testing the value to be stored, +and after updating the corresponding CR Field Element, when VLi=0 and +finding that the test fails the Memory store must **not** occur. Additionally, when VLi=0 and a test fails then RA does **not** receive a copy of the Effective Address. Hardware implementations with Out-of-Order Micro-Architectures should use speculative Shadow-Hold and Cancellation when the test fails. -By contrast if VLi=1 -and the test fails, Store may proceed *and then* looping terminates. -In this way, when non-Inclusive, the Vector of Truncated results contains -only Stores that passed the test (and RA=EA updates if any), and when Inclusive the Vector of -Truncated results contains the first-failed data. +By contrast if VLi=1 and the test fails, Store may proceed *and then* +looping terminates. In this way, when non-Inclusive, the Vector of +Truncated results contains only Stores that passed the test (and RA=EA +updates if any), and when Inclusive the Vector of Truncated results +contains the first-failed data. -Below is an example of loading the starting addresses of Linked-List nodes. -If VLi=1 it will load the NULL pointer into the Vector of results. +Below is an example of loading the starting addresses of Linked-List +nodes. If VLi=1 it will load the NULL pointer into the Vector of results. If however VLi=0 it will *exclude* the NULL pointer by truncating VL to one Element earlier. -- 2.30.2