From: lkcl Date: Sun, 21 Aug 2022 12:45:13 +0000 (+0100) Subject: (no commit message) X-Git-Tag: opf_rfc_ls005_v1~814 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8a686a6a4482b791e4ad1c83a64706d6a2037b82;p=libreriscv.git --- diff --git a/openpower/sv/svp64_quirks.mdwn b/openpower/sv/svp64_quirks.mdwn index 852b6b18e..43d7249df 100644 --- a/openpower/sv/svp64_quirks.mdwn +++ b/openpower/sv/svp64_quirks.mdwn @@ -619,4 +619,24 @@ more of an artefact. LD/ST zero-immediate has similar quirky overwriting as the "mapreduce" mode, but actually requires the registers to be Vectors. It is simply a mathematical artefact of multiplying by zero, which happens to be -useful for cache=inhibited operations. +useful for cache-inhibited operations. + +# Limited space in LD/ST Mode + +As pointed out in the [[sv/ldst]] page there is limited space in only +5 mode bits to fully express all potential modes of operation. + +* LD/ST Immediate has no individual control over src/dest zeroing, + whereas LD/ST Indexed does. +* LD/ST Immediate has no Saturated Pack/Unpack (Arithmetic Mode does) +* LD/ST Indexed has no Pack/Unpack (REMAP may be used instead) + +These are not insurmountable problems: there do exist workarounds. +For example it is possible to set up Matrix REMAP to perform the same +job as Pack/Unpack, at which point the LD/ST "Saturation" mode may +be used, saving on costly intermediary registers at double the LD +width. Also, although potentially costly it may be possible to +use Indexed Mode after using `svstep` to compute a sequence of +Indices, then activate either `sz` or `dz` as required, as a workaround +for LDST Immediate only having `zz`. +