(no commit message)
authorlkcl <lkcl@web>
Thu, 2 Jun 2022 11:32:16 +0000 (12:32 +0100)
committerIkiWiki <ikiwiki.info>
Thu, 2 Jun 2022 11:32:16 +0000 (12:32 +0100)
openpower/sv/svp64_quirks.mdwn

index ad9beddc4bc595a2d1189acb3f3d3789b49860c2..90d689ca6d30a11ab44a8b8b29fb983652f0ae36 100644 (file)
@@ -104,7 +104,7 @@ RM Prefix to convey the stride mode, changing the Effective Address
 computation as a result. Interestingly, worth noting for Hardware
 designers: it did turn out to be possible to perform pre-multiplication
 of the D/DS Immediate by the stride amount, making it possible to avoid
-actually modifying the LD/ST Pipelibe itself.
+actually modifying the LD/ST Pipeline itself.
 
 Other areas where LD/ST went quirky: element-width overrides especially
 when combined with Saturation, given that LD/ST operations have byte,
@@ -113,6 +113,26 @@ widths as part of the actual operation, and the source and destination
 elwidth overrides, was particularly obtuse and hard to derive: some care
 and attention is advised, here, when reading the specification.
 
+**Non-vectorised**
+
+The concept of a Vectorised halt (`attn`) makes no sense. There are never
+going to be a Vector of global MSRs (Machine Status Register). `mtcr`
+on the other hand is a grey area: `mtspr` is clearly Vectoriseable.
+Even `td` and `tdi` makes a strange type of sense to permit it to be
+Vectorised, because a sequence of comparisons could be Vectorised.
+Vectorised System Calls (`sc`) or `tlbie` and other Cache or Virtual
+Nemory Management
+instructions, these make no sense to Vectorise.
+
+However, it is really quite important to not be tempted to conclude that
+just because these instructions are un-vectoriseable, the opcode space
+must be free for reiterpretation and use for other purposes. This would
+be a serious mistake because a future revision of the specification
+might *retire* the Scalar instruction, replace it with another.
+Again this comes down to being quite strict about the rules: only Scalar
+instructions get Vectorised: there are *no* actual explicit Vector
+instructions.
+
 # CR weird instructions
 
 [[sv/int_cr_predication]] is by far the biggest violator of the SVP64