From c92e1199c06ca6898c706d75a2ceded4218e35a1 Mon Sep 17 00:00:00 2001 From: lkcl Date: Fri, 10 Jun 2022 11:17:29 +0100 Subject: [PATCH] --- openpower/sv/svp64/appendix.mdwn | 42 ++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/openpower/sv/svp64/appendix.mdwn b/openpower/sv/svp64/appendix.mdwn index c57f8e370..bb163869d 100644 --- a/openpower/sv/svp64/appendix.mdwn +++ b/openpower/sv/svp64/appendix.mdwn @@ -284,9 +284,12 @@ In SVSTATE, for Single-predication, implementors MUST increment both srcstep and dststep can still potentially become different indices. Only when sz=dz is srcstep guaranteed to equal dststep at all times. +Note that in some Mode Formats there is only one flag (zz). This indicates +that *both* sz *and* dz are set to the same. + Example 1: -* VL=3 +* VL=4 * mask=0b1101 * sz=0, dz=1 @@ -297,8 +300,43 @@ The following schedule for srcstep and dststep will occur: | 0 | 0 | both mask[src=0] and mask[dst=0] are 1 | | 1 | 2 | sz=1 but dz=0: dst skips mask[1], src soes not | | 2 | 3 | mask[src=2] and mask[dst=3] are 1 | +| end | end | loop has ended because dst reached VL-1 | + +Example 2: + +* VL=4 +* mask=0b1101 +* sz=1, dz=0 + +The following schedule for srcstep and dststep will occur: + +| srcstep | dststep | comment | +| ---- | ----- | -------- | +| 0 | 0 | both mask[src=0] and mask[dst=0] are 1 | +| 2 | 1 | sz=0 but dz=1: src skips mask[1], dst does not | +| 3 | 2 | mask[src=3] and mask[dst=2] are 1 | +| end | end | loop has ended because src reached VL-1 | + +In both these examples it is crucial to note that despite there being +a single predicate mask, with sz and dz being different, srcstep and +dststep are being requested to react differently. + +Example 3: + +* VL=4 +* mask=0b1101 +* sz=0, dz=0 + +The following schedule for srcstep and dststep will occur: + +| srcstep | dststep | comment | +| ---- | ----- | -------- | +| 0 | 0 | both mask[src=0] and mask[dst=0] are 1 | +| 2 | 2 | sz=0 and dz=0: both src and dst skip mask[1] | +| 3 | 3 | mask[src=3] and mask[dst=3] are 1 | +| end | end | loop has ended because src and dst reached VL-1 | -sz and dz however still interact +Here, both srcstep and dststep remain in lockstep because sz=dz=1 # Twin Predication -- 2.30.2