(no commit message)
authorlkcl <lkcl@web>
Mon, 27 Mar 2023 09:21:56 +0000 (10:21 +0100)
committerIkiWiki <ikiwiki.info>
Mon, 27 Mar 2023 09:21:56 +0000 (10:21 +0100)
openpower/sv/rfc/ls009.mdwn

index 846ab816d528022102748613a7357b9ab70213e6..6e80dfc3599b949afe09151b7499868a173584e3 100644 (file)
@@ -453,39 +453,10 @@ not work.
 
 ### Sub-Vector Horizontal Reduction
 
-Note that when SVM is clear and SUBVL!=1 a Parallel Reduction is performed
-on all first Subvector elements, followed by another separate independent
-Parallel Reduction on all the second Subvector elements and so on.
-
-    for selectsubelement in (x,y,z,w):
-       parallelreduce(0..VL-1, selectsubelement)
-
-By contrast, when SVM is set and SUBVL!=1, a Horizontal
-Subvector mode is enabled, applying the Parallel Reduction
-Algorithm to the Subvector Elements. The Parallel Reduction
-is independently applied VL times, to each group of Subvector
-elements. Bear in mind that predication is never applied down
-into individual Subvector elements, but will be applied
-to select whether the *entire* Parallel Reduction on each
-group is performed or not.
-
-      for (i = 0; i < VL; i++)
-        if (predval & 1<<i) # predication
-           el = element[i]
-           parallelreduction([el.x, el.y, el.z, el.w])
-
-Note that as this is a Parallel Reduction, for best results
-it should be an overwrite operation, where the result for
-the Horizontal Reduction of each Subvector will be in the
-first Subvector element.
-Also note that use of Rc=1 is `UNDEFINED` behaviour.
-
-In essence what is happening here is that Structure Packing is being
-combined with Parallel Reduction.  If the Subvector elements may be
-laid out as a 2D matrix, with the Subvector elements on rows,
-and Parallel Reduction is applied per row, then if `SVM` is **clear**
-the Matrix is transposed (like Pack/Unpack)
-before still applying the Parallel Reduction to the **row**.
+To achieve Sub-Vector Horizontal Reduction, Pack/Unpack should be enabled,
+which will turn the Schedule around such that issuing of the Scalar
+Defined Words is done with SUBVL looping as the inner loop not the
+outer loop. Rc=1 with Sub-Vectors (SUBVL=2,3,4) is `UNDEFINED` behaviour.
 
 ## Determining Register Hazards