(no commit message)
authorlkcl <lkcl@web>
Sun, 3 Jul 2022 19:23:39 +0000 (20:23 +0100)
committerIkiWiki <ikiwiki.info>
Sun, 3 Jul 2022 19:23:39 +0000 (20:23 +0100)
openpower/sv/setvl.mdwn

index d6cb15dc0fbdbe3addd5016a79a170a2b151da6f..dcbfec2e54294b5fe36c00b67be2e4e70a66d830 100644 (file)
@@ -96,12 +96,16 @@ Note that the immediate (`SVi`) spans 7 bits (16 to 22)
 * `vf` - bit 25 - sets "Vertical First Mode".
 
 Note that in immediate setting mode VL and MVL start from **one**
-i.e. that an immediate value of zero will result in VL/MVL being set to 1.
-0b111111 results in VL/MVL being set to 64. This is because setting
+but that this is compensated for in the assembly notation.
+i.e. that an immediate value of 1 in assembler notation
+actually places the value 0b0000000 in the `SVi` field bits:
+on execution the `setvl` instruction adds one to the decoded
+`SVi` field bits, resulting in
+VL/MVL being set to 1. This is because setting
 VL/MVL to 1 results in "scalar identity" behaviour, where setting VL/MVL
 to 0 would result in all Vector operations becoming `nop`.  If this is
 truly desired (nop behaviour) then setting VL and MVL to zero is to be
-done via the [[SVSTATE SPR|sv/sprs]]
+done via the [[SVSTATE SPR|sv/sprs]].
 
 Note that setmvli is a pseudo-op, based on RA/RT=0, and setvli likewise