(no commit message)
authorlkcl <lkcl@web>
Mon, 2 Aug 2021 10:32:54 +0000 (11:32 +0100)
committerIkiWiki <ikiwiki.info>
Mon, 2 Aug 2021 10:32:54 +0000 (11:32 +0100)
openpower/sv/branches.mdwn

index 6a5655d199fa7d23f235cd6b74523bd5b6771ab9..a27179676f25c66418b3c0fc8eda03ae9309213c 100644 (file)
@@ -148,3 +148,33 @@ Pseudocode for Horizontal-First Mode:
                if el_cond_ok:
                    break
 ```
+
+Pseudocode for Vertical-First Mode:
+
+```
+   new_srcstep, CRbits = SVSTATE_NEXT(srcstep)
+   if BO[0]:
+       cond_ok = 1
+   else
+       # select predicate bit or zero/one
+       if predicate[srcstep]:
+           # get SVP64 extended CR field 0..127
+           SVCRf = SVP64EXTRA(BI>>2)
+           CR{SVCRf+srcstep} = CRbits
+           testbit = CRbits[BI & 0b11]
+       else if not SVRMmode.sz:
+           SVSTATE.srcstep = new_srcstep
+           exit # no branch testing
+       else
+           testbit = SVRMmode.SNZ
+       # actual element test here
+       cond_ok <- ¬(testbit ^ BO[1])
+
+       # test for VL to be set (and exit)
+       if ~cond_ok and VLSET
+           if SVRMmode.VLI
+               SVSTATE.VL = new_srcstep+1
+           else
+               SVSTATE.VL = new_srcstep
+    SVSTATE.srcstep = new_srcstep
+```