(no commit message)
authorlkcl <lkcl@web>
Sun, 21 Aug 2022 12:45:13 +0000 (13:45 +0100)
committerIkiWiki <ikiwiki.info>
Sun, 21 Aug 2022 12:45:13 +0000 (13:45 +0100)
openpower/sv/svp64_quirks.mdwn

index 852b6b18ee9e2646e7e1a15cbf74ed8afa254004..43d7249df22871f5bf4e230c0bd6acd6501e1873 100644 (file)
@@ -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`.
+