android_external_ffmpeg/libavutil/riscv
Rémi Denis-Courmont 324899b748 lavu/riscv: use Zbb REV8 at run-time
This adds runtime support to use Zbb REV8 for 32- and 64-bit byte-wise
swaps. The result is about five times slower than if targetting Zbb
statically, but still a lot faster than the default bespoke C code or a
call to GCC run-time functions.

For 16-bit swap, this is however unsurprisingly a lot worse, and so this
sticks to the baseline. In fact, even using REV8 statically does not
seem to be beneficial in that case.

         Zbb static    Zbb dynamic   I baseline
bswap16:  0.668184765   3.340764069   0.668029012
bswap32:  0.668174014   3.340763319   9.353855435
bswap64:  0.668221765   3.340496313  14.698672283
(seconds for 1 billion iterations on a SiFive-U74 core)
2024-06-11 20:12:37 +03:00
..
asm.S riscv: allow passing addend to vtype_vli macro 2024-05-30 18:30:52 +03:00
bswap.h lavu/riscv: use Zbb REV8 at run-time 2024-06-11 20:12:37 +03:00
bswap_rvb.S riscv: factor out the bswap32 assembler 2023-10-02 22:28:21 +03:00
cpu.c lavu/riscv: fix parsing the unaligned access capability 2024-05-15 20:04:08 +03:00
cpu.h riscv: probe for Zbb extension at load time 2024-06-11 20:12:37 +03:00
cpu_common.c riscv: probe for Zbb extension at load time 2024-06-11 20:12:37 +03:00
fixed_dsp_init.c lavu/fixed_dsp: R-V V fmul_window_scaled 2023-11-23 18:57:18 +02:00
fixed_dsp_rvv.S lavu/fixed_dsp: R-V V fmul_window_scaled 2023-11-23 18:57:18 +02:00
float_dsp_init.c lavu/float_dsp: R-V V scalarproduct_double 2024-05-31 22:22:43 +03:00
float_dsp_rvv.S lavu/float_dsp: R-V V scalarproduct_double 2024-05-31 22:22:43 +03:00
intmath.h riscv/intmath: use builtins for counting ones 2023-05-02 22:08:25 +02:00
lls_init.c lavu/lls: R-V V update_lls 2024-06-01 18:05:58 +03:00
lls_rvv.S lavu/lls: R-V V update_lls 2024-06-01 18:05:58 +03:00
Makefile riscv: probe for Zbb extension at load time 2024-06-11 20:12:37 +03:00
timer.h Revert "lavu/timer: remove gratuitous volatile" 2023-09-28 17:48:18 +03:00