add sv.bc warm words for pospopcount bug #672
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 5 Dec 2023 15:49:37 +0000 (15:49 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 5 Dec 2023 15:49:37 +0000 (15:49 +0000)
openpower/sv/cookbook/pospopcnt.mdwn

index bf3a6880c38787a34df008d5fef30f30aeaf2e37..0c3bd5eb4fdc9fea5defe4f1200d01548f4a794a 100644 (file)
@@ -166,6 +166,13 @@ set already by the `setvl` above.
 sv.add *16,*16,*24         # and accumulate in results
 ```
 
+Finally, `sv.bc` loops back, subtracting VL from CTR.
+Being based on Power ISA Scalar Branch-Conditional, if
+CTR goes negative (which it will because VL was set
+hard-coded to 8, above) it does not matter, the loop
+will still be correctly exited. In other words we complete
+the correct number of *blocks* (of length 8).
+
 ```
 # branch back if CTR still non-zero. works even though VL=8
 sv.bc/all 16, *0, -0x28   # reduce CTR by VL and stop if -ve