adding missing files
authorShriya Sharma <shriya@redsemiconductor.com>
Mon, 8 Jan 2024 14:01:13 +0000 (14:01 +0000)
committerShriya Sharma <shriya@redsemiconductor.com>
Mon, 8 Jan 2024 14:01:13 +0000 (14:01 +0000)
conferences/fosdem2024/fosdem2024_ddffirst/pospopcount.c [new file with mode: 0644]
conferences/fosdem2024/fosdem2024_ddffirst/pospopcount.s [new file with mode: 0644]

diff --git a/conferences/fosdem2024/fosdem2024_ddffirst/pospopcount.c b/conferences/fosdem2024/fosdem2024_ddffirst/pospopcount.c
new file mode 100644 (file)
index 0000000..0fe84be
--- /dev/null
@@ -0,0 +1,11 @@
+// Copyright (c) 2020 Robert Clausecker <fuz@fuz.su>
+// count8 reference implementation for tests.  Do not alter.
+func count8safe(counts *[8]int, buf []uint8) 
+       {
+               for i := range buf {
+                       for j := 0; j < 8; j++ {
+                               counts[j] += int(buf[i] >> j & 1)
+                       }
+               }
+       }
+               
\ No newline at end of file
diff --git a/conferences/fosdem2024/fosdem2024_ddffirst/pospopcount.s b/conferences/fosdem2024/fosdem2024_ddffirst/pospopcount.s
new file mode 100644 (file)
index 0000000..c834792
--- /dev/null
@@ -0,0 +1,14 @@
+
+       mtspr 9, 3                 # move r3 to CTR
+       setvl 3,0,8,0,1,1          # set MVL=8, VL=r3=MIN(MVL,CTR)
+       # load VL bytes (update r4 addr) but compressed (dw=8)
+       addi 6, 0, 0               # initialise all 64-bits of r6 to zero
+       sv.lbzu/pi/dw=8 *6, 1(4)   # should be /lf here as well
+       # gather performs the transpose (which gets us to positional..)
+       gbbd 8,6
+       # now those bits have been turned around, popcount and sum them
+       setvl 0,0,8,0,1,1          # set MVL=VL=8
+       sv.popcntd/sw=8 *24,*8     # do the (now transposed) popcount
+       sv.add *16,*16,*24         # and accumulate in results
+       # 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
\ No newline at end of file