FFmpeg/libavcodec/riscv
Rémi Denis-Courmont cd7b352c53 lavc/sbrdsp: R-V V autocorrelate
With 5 accumulator vectors and 6 inputs, this can only use LMUL=2.
Also the number of vector loop iterations is small, just 5 on 128-bit
vector hardware.

The vector loop is somewhat unusual in that it processes data in
descending memory order, in order to save on vector slides:
in descending order, we can extract elements to carry over to the next
iteration from the bottom of the vectors directly. With ascending order
(see in the Opus postfilter function), there are no ways to get the top
elements directly. On the downside, this requires the use of separate
shift and sub (the would-be SH3SUB instruction does not exist), with
a small pipeline stall on the vector load address.

The edge cases in scalar are done in scalar as this saves on loads
and remains significantly faster than C.

autocorrelate_c: 669.2
autocorrelate_rvv_f32: 421.0
2023-11-12 14:03:09 +02:00
..
aacpsdsp_init.c lavc/aacpsdsp: rework R-V V hybrid_synthesis_deint 2023-11-12 14:03:09 +02:00
aacpsdsp_rvv.S lavc/aacpsdsp: rework R-V V hybrid_synthesis_deint 2023-11-12 14:03:09 +02:00
ac3dsp_init.c lavc/ac3: add R-V Zbb extract_exponents 2023-10-05 18:13:00 +03:00
ac3dsp_rvb.S lavc/ac3: add R-V Zbb extract_exponents 2023-10-05 18:13:00 +03:00
alacdsp_init.c
alacdsp_rvv.S
audiodsp_init.c
audiodsp_rvf.S
audiodsp_rvv.S
bswapdsp_init.c
bswapdsp_rvb.S riscv: factor out the bswap32 assembler 2023-10-02 22:28:21 +03:00
bswapdsp_rvv.S
exrdsp_init.c lavc/exrdsp: R-V V reoder_pixels 2023-10-09 19:52:51 +03:00
exrdsp_rvv.S lavc/exrdsp: R-V V reoder_pixels 2023-10-09 19:52:51 +03:00
fmtconvert_init.c
fmtconvert_rvv.S lavc/fmtconvert: unroll R-V V int32_to_float_fmul_scalar 2023-10-02 18:08:23 +03:00
g722dsp_init.c
g722dsp_rvv.S
h264_chroma_init_riscv.c
h264_mc_chroma.S
huffyuvdsp_init.c lavc/huffyuvdsp: R-V V add_int16 2023-10-31 21:33:25 +02:00
huffyuvdsp_rvv.S lavc/huffyuvdsp: R-V V add_int16 2023-10-31 21:33:25 +02:00
idctdsp_init.c lavc/idctdsp: require Zve64x for R-V V functions 2023-10-30 18:14:16 +02:00
idctdsp_rvv.S lavc/idctdsp: improve R-V V put_pixels_clamped 2023-10-30 18:14:16 +02:00
jpeg2000dsp_init.c lavc/jpeg2000dsp: R-V V rct_int 2023-11-01 18:52:55 +02:00
jpeg2000dsp_rvv.S lavc/jpeg2000dsp: R-V V rct_int 2023-11-01 18:52:55 +02:00
Makefile lavc/sbrdsp: R-V V sum64x5 2023-11-01 22:53:26 +02:00
opusdsp_init.c lavc/opusdsp: rewrite R-V V postfilter 2023-11-06 22:09:30 +02:00
opusdsp_rvv.S lavc/opusdsp: rewrite R-V V postfilter 2023-11-06 22:09:30 +02:00
pixblockdsp_init.c lavc/pixblockdsp: rework R-V V get_pixels_unaligned 2023-11-06 19:42:49 +02:00
pixblockdsp_rvi.S
pixblockdsp_rvv.S lavc/pixblockdsp: rework R-V V get_pixels_unaligned 2023-11-06 19:42:49 +02:00
sbrdsp_init.c lavc/sbrdsp: R-V V autocorrelate 2023-11-12 14:03:09 +02:00
sbrdsp_rvv.S lavc/sbrdsp: R-V V autocorrelate 2023-11-12 14:03:09 +02:00
utvideodsp_init.c lavc/utvideodsp: R-V V restore_rgb_planes10 2023-10-31 21:33:25 +02:00
utvideodsp_rvv.S lavc/utvideodsp: R-V V restore_rgb_planes10 2023-10-31 21:33:25 +02:00
vorbisdsp_init.c
vorbisdsp_rvv.S