From a40a4ad2ba130116fc5cfe08b3c65ce84a053403 Mon Sep 17 00:00:00 2001 From: lkcl Date: Thu, 24 Dec 2020 21:04:46 +0000 Subject: [PATCH] --- openpower/sv/overview.mdwn | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/openpower/sv/overview.mdwn b/openpower/sv/overview.mdwn index e4aaa0610..b963a065d 100644 --- a/openpower/sv/overview.mdwn +++ b/openpower/sv/overview.mdwn @@ -98,12 +98,7 @@ A particularly interesting case is if the destination is scalar, and the first f If all three registers are marked as Vector then the "traditional" predicated Vector behaviour is provided. Yet, just as before, all other options are still provided, right the way back to the pure-scalar case, as if this were a straight OpenPOWER v3.0B non-augmented instruction. -Predication therefore provides several modes traditionally seen in Vector ISAs, particularly if the predicate may be set conveniently as a single bit *(In Simple-V, setting only one bit of the predicate is assisted by a special mode: `1< + +Adding in support for SUBVL is a matter of adding in an extra inner +for-loop, where register src and dest are still incremented inside the +inner part. Note that the predication is still taken from the VL index. + +So whilst elements are indexed by "(i * SUBVL + s)", predicate bits are +indexed by "(i)" + + function op_add(rd, rs1, rs2) # add not VADD! +  int id=0, irs1=0, irs2=0; +  predval = get_pred_val(FALSE, rd); + for i = 0 to VL-1: + if (predval & 1<