From: lkcl Date: Sat, 2 Apr 2022 10:48:55 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~2936 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=89a252f9d56abbdf3d13a4992d102774e9bf21e6;p=libreriscv.git --- diff --git a/openpower/sv/branches.mdwn b/openpower/sv/branches.mdwn index 3bf996d0b..0f07a85c7 100644 --- a/openpower/sv/branches.mdwn +++ b/openpower/sv/branches.mdwn @@ -190,11 +190,11 @@ Scalar v3.0B Branches. `bclr` for example will always update LR, whereas It is important to keep in mind that just like all SVP64 instructions, the `BI` field of the base v3.0B Branch Conditional instruction may be extended by SVP64 EXTRA augmentation, as well as be marked -as either Scalar or Vector. It is also crucially important to be reminded -that SVP64 sequentially increments the CR *Field* numbers. -CR *Fields* are treated as elrments, not bit-numbers of the CR *register*. +as either Scalar or Vector. It is also crucially important to keep in mind +that for CRs, SVP64 sequentially increments the CR *Field* numbers. +CR *Fields* are treated as elements, not bit-numbers of the CR *register*. -The `BI` field of Branch Conditional operations is five bits, in scalar +The `BI` operand of Branch Conditional operations is five bits, in scalar v3.0B this would select one bit of the 32 bit CR, comprising eight CR Fields of 4 bits each. In SVP64 there are 16 32 bit CRs, containing 128 4-bit CR Fields. Therefore, the 2 LSBs of @@ -204,7 +204,8 @@ as specified in SVP64 [[sv/svp64/appendix]]. When the CR Fields selected by SVP64-Augmented `BI` is marked as scalar, then as the usual SVP64 rules apply: -the Vector loop ends at the first element tested, after taking +the Vector loop ends at the first element tested +(the first CR *Field*), after taking predication into consideration. Thus, also as usual, when a predicate mask is given, and `BI` marked as scalar, and `sz` is zero, srcstep skips forward to the first non-zero predicated element, and only that