(no commit message)
authorlkcl <lkcl@web>
Wed, 19 Apr 2023 13:14:34 +0000 (14:14 +0100)
committerIkiWiki <ikiwiki.info>
Wed, 19 Apr 2023 13:14:34 +0000 (14:14 +0100)
openpower/sv/setvl.mdwn

index d271cf96a47f72cfdc20825f625c1eff0ca0b1b8..59e0e36fb11f6b25456a68e434f424659deb3b1d 100644 (file)
@@ -144,19 +144,28 @@ to the order in which VL and SUBVL loops are applied being swapped
 
 ### Core concept loop
 
+This example illustrates the Cray-style Loop concept. However where most Cray
+Vectors have a Max Vector Length hard-coded into the architecture, Simple-V
+allows MVL to be set, but only as a static immediate, so that compilers may
+embed the register resource allocation statically at compile-time.
+
 ```
 loop:
     setvl a3, a0, MVL=8    #  update a3 with vl
                            # (# of elements this iteration)
-                           # set MVL to 8
+                           # set MVL to 8 and
+                           # set a3=VL=MIN(a0,MVL)
     # do vector operations at up to 8 length (MVL=8)
     # ...
-    sub a0, a0, a3   # Decrement count by vl
+    sub. a0, a0, a3   # Decrement count by vl, set CR0.eq
     bnez a0, loop    # Any more?
 ```
 
 ### Loop using Rc=1
 
+In this example, the `setvl.` instruction enabled Rc=1, which
+sets CR0.eq when VL becomes zero.
+
 ```
     my_fn:
       li r3, 1000