From fdebde817c03e0983da31a1d5445b48bf0122e2c Mon Sep 17 00:00:00 2001 From: sunyuechi Date: Thu, 1 Feb 2024 15:41:09 +0800 Subject: [PATCH] lavc/blockdsp: R-V V clear_blocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C908: blockdsp.clear_blocks_c: 128.2 blockdsp.clear_blocks_rvv_i64: 102.5 Signed-off-by: RĂ©mi Denis-Courmont --- libavcodec/riscv/blockdsp_init.c | 2 ++ libavcodec/riscv/blockdsp_rvv.S | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/libavcodec/riscv/blockdsp_init.c b/libavcodec/riscv/blockdsp_init.c index 5370418687..59b2f9d47b 100644 --- a/libavcodec/riscv/blockdsp_init.c +++ b/libavcodec/riscv/blockdsp_init.c @@ -26,6 +26,7 @@ #include "libavcodec/blockdsp.h" void ff_clear_block_rvv(int16_t *block); +void ff_clear_blocks_rvv(int16_t *block); av_cold void ff_blockdsp_init_riscv(BlockDSPContext *c) { @@ -34,6 +35,7 @@ av_cold void ff_blockdsp_init_riscv(BlockDSPContext *c) if (flags & AV_CPU_FLAG_RVV_I64 && ff_get_rv_vlenb() >= 16) { c->clear_block = ff_clear_block_rvv; + c->clear_blocks = ff_clear_blocks_rvv; } #endif } diff --git a/libavcodec/riscv/blockdsp_rvv.S b/libavcodec/riscv/blockdsp_rvv.S index e85697613a..8bb00bb467 100644 --- a/libavcodec/riscv/blockdsp_rvv.S +++ b/libavcodec/riscv/blockdsp_rvv.S @@ -27,3 +27,16 @@ func ff_clear_block_rvv, zve64x ret endfunc + +func ff_clear_blocks_rvv, zve64x + vsetivli zero, 16, e64, m8, ta, ma + vmv.v.i v0, 0 + + .rept 5 + vse64.v v0, (a0) + addi a0, a0, 128 + .endr + vse64.v v0, (a0) + + ret +endfunc