From: lkcl Date: Thu, 23 Jun 2022 14:18:30 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~1567 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=97fb269a03db35ad253ccf51546fbfea2b9bb29f;p=libreriscv.git --- diff --git a/openpower/sv/mv.swizzle.mdwn b/openpower/sv/mv.swizzle.mdwn index dde041da5..7fe991734 100644 --- a/openpower/sv/mv.swizzle.mdwn +++ b/openpower/sv/mv.swizzle.mdwn @@ -234,26 +234,20 @@ the maximum permitted Saturated value is inserted rather than Constant 1. zero because there is no encoding space to select between -1, 0 and 1, and 0 and max values are more useful. -# RM Mode Concept: - -MVRM-2P-1S1D: - -| Field Name | Field bits | Description | -|------------|------------|----------------------------| -| Rdest_EXTRA2 | `10:11` | extends Rdest (R\*\_EXTRA2 Encoding) | -| Rsrc_EXTRA2 | `12:13` | extends Rsrc (R\*\_EXTRA2 Encoding) | -| PACK_en | `14` | Enable pack | -| UNPACK_en | `15` | Enable unpack | -| MASK_SRC | `16:18` | Execution Mask for Source | - -The inclusion of a separate src SUBVL allows -`sv.mv.swiz RT.vecN RA.vecN` to mean zip/unzip (pack/unpack). -This is conceptually achieved by having both source and +# Pack/Unpack Mode: + +It is possible to apply Pack and Unpack to Vectorised +swizzle moves, and these instructions are of EXTRA type +`RM-2P-1S1D-PU`. The interaction requires specific explanation +because it involves the separate SUBVLs (with destination SUBVL +being separate). Key to understanding is that the +source and destination SUBVL be "outer" loops instead of inner loops, -exactly as in [[sv/remap]] Matrix mode. +exactly as in [[sv/remap]] Matrix mode, under the control +of `PACK_en` and `UNPACK_en`. Illustrating a -"normal" SVP64 operation with `SUBVL!=1:` (assuming no elwidth overrides): +"normal" SVP64 operation with `SUBVL!=1` (assuming no elwidth overrides): def index(): for i in range(VL):