lavc/llvidencdsp: R-V V sub_left_predict

SpacemiT X60:
sub_left_predict_c:                                  51836.0 ( 1.00x)
sub_left_predict_rvv_i32:                             5843.1 ( 8.87x)
This commit is contained in:
Rémi Denis-Courmont
2025-12-10 20:35:59 +02:00
parent 37858dc6bd
commit a4cb6c724b
2 changed files with 31 additions and 0 deletions

View File

@@ -26,6 +26,9 @@
void ff_llvidenc_diff_bytes_rvv(uint8_t *dst, const uint8_t *src1,
const uint8_t *src2, intptr_t w);
void ff_llvidenc_sub_left_predict_rvv(uint8_t *dst, const uint8_t *src,
ptrdiff_t stride, ptrdiff_t width,
int height);
av_cold void ff_llvidencdsp_init_riscv(LLVidEncDSPContext *c)
{
@@ -34,6 +37,7 @@ av_cold void ff_llvidencdsp_init_riscv(LLVidEncDSPContext *c)
if (flags & AV_CPU_FLAG_RVV_I32) {
c->diff_bytes = ff_llvidenc_diff_bytes_rvv;
c->sub_left_predict = ff_llvidenc_sub_left_predict_rvv;
}
#endif
}

View File

@@ -36,3 +36,30 @@ func ff_llvidenc_diff_bytes_rvv, zve32x
ret
endfunc
func ff_llvidenc_sub_left_predict_rvv, zve32x
lpad 0
li a5, -0x80
sub a2, a2, a3
1:
mv t3, a3
addi a4, a4, -1
2:
vsetvli t0, t3, e8, m8, ta, ma
vle8.v v16, (a1)
sub t3, t3, t0
vle8.v v8, (a0)
add a1, a1, t0
vslide1up.vx v24, v16, a5
vadd.vv v8, v8, v16
lb a5, -1(a1)
vsub.vv v8, v8, v24
vse8.v v8, (a0)
add a0, a0, t0
bnez t3, 2b
add a1, a1, a2
bnez a4, 1b
ret
endfunc