Rémi Denis-Courmont
f6d0a41c8c
lavu/riscv: use Zbb CLZ/CTZ/CLZW/CTZW at run-time
...
Zbb static Zbb dynamic I baseline
clz 0.668032642 1.336072283 19.552376803
clzl 0.668092643 1.336181786 26.110855571
ctz 1.336208533 3.340209702 26.054869008
ctzl 1.336247784 3.340362457 26.055266290
(seconds for 1 billion iterations on a SiFive-U74 core)
2024-06-11 20:12:37 +03:00
Rémi Denis-Courmont
98db140910
lavu/riscv: use Zbb CPOP/CPOPW at run-time
...
Zbb static Zbb dynamic I baseline
popcount 1.336129286 3.469067758 20.146362909
popcountl 1.336322291 3.340292968 20.224829821
(seconds for 1 billion iterations on a SiFive-U74 core)
2024-06-11 20:12:37 +03:00
Rémi Denis-Courmont
0e580806d8
riscv/intmath: use builtins for counting ones
...
As with the earlier bswap change, all versions of GCC and Clang that
support RISC-V support the popcount built-ins, so we can just use them
instead of inline assembler.
2023-05-02 22:08:25 +02:00
Rémi Denis-Courmont
6df3ad9687
lavu/riscv: fix off-by-one in bit-magnitude clip
2022-09-15 18:11:12 -03:00
Rémi Denis-Courmont
a5ce44f301
lavu/riscv: fix av_clip_int16
...
Some serious copy-paste / squash / rebase mismanipulation here.
Signed-off-by: James Almer <jamrial@gmail.com>
2022-09-14 14:37:21 -03:00
Rémi Denis-Courmont
c177108ae1
lavu/riscv: add <intmath.h> optimisations
...
This provides some micro-optimisations for signed integer clipping, and
support for bit weight with the Zbb extension.
2022-09-13 16:50:43 -03:00