From: lkcl Date: Sun, 14 Aug 2022 00:18:38 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~865 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fa5351c50ae9d305512c68da79b91a4f72d6af85;p=libreriscv.git --- diff --git a/openpower/sv/svp64/appendix.mdwn b/openpower/sv/svp64/appendix.mdwn index 3e4699da7..c51e85d0d 100644 --- a/openpower/sv/svp64/appendix.mdwn +++ b/openpower/sv/svp64/appendix.mdwn @@ -601,39 +601,24 @@ Thus logically there is nothing special or unanticipated about Sub-Vector rules. By contrast, when SVM is set and SUBVL!=1, a Horizontal -Subvector mode is enabled, which behaves very much more -like a traditional Vector Processor Reduction instruction. +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. -Example for a vec2: - - for i in range(VL): - iregs[RT+i] = op(iregs[RA+i].x, iregs[RB+i].y) - -Example for a vec3: - - for i in range(VL): - iregs[RT+i] = op(iregs[RA+i].x, iregs[RB+i].y) - iregs[RT+i] = op(iregs[RT+i] , iregs[RB+i].z) +  for (i = 0; i < VL; i++) + if (predval & 1<