From: lkcl Date: Mon, 6 Jun 2022 23:41:42 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~1929 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5c907b8bd58f6954b5ba1aa405cf77dec981a690;p=libreriscv.git --- diff --git a/openpower/sv/remap.mdwn b/openpower/sv/remap.mdwn index 47b715765..dec09925a 100644 --- a/openpower/sv/remap.mdwn +++ b/openpower/sv/remap.mdwn @@ -261,6 +261,24 @@ Example 2: if mask=0b10001 then again SVSHAPE0 and SVSHAPE1 are set up, but the REMAP SPR is set so that mi0 uses SVSHAPE0 and mo1 uses SVSHAPE1. +When `mm=1`: + +* bits 0-2 of mask indicate an index selecting mi0-mo1 +* bits 3-4 of mask indicate which SVSHAPE 0-3 shall be updated +* only the selected SVSHAPE is overwritten +* only the relevant bits in the REMAP SPR are updated + +Example 1: if mask=0b10011 then mo0 is selected and SVSHAPE2 +to be updated. REMAP.SVme[3] will be set high and REMAP.mo0 +set to 2 (SVSHAPE2). + +Example 2: if mask=0b11100 then mo1 is selected and SVSHAPE3 +to be updated. REMAP.SVme[4] will be set high and REMAP.mo1 +set to 3 (SVSHAPE3). + +In essence, `mm=0` is intended for use to set as much of the +REMAP State SPRs as practical with a single instruction, +whilst `mm=1` is intended to be a little more refined. # REMAP Matrix pseudocode