diff options
author | Rémi Denis-Courmont <remi@remlab.net> | 2024-07-28 21:17:58 +0300 |
---|---|---|
committer | Rémi Denis-Courmont <remi@remlab.net> | 2024-08-01 18:43:04 +0300 |
commit | 952b426f3bcc6206eff2fa338ff7da475a28692b (patch) | |
tree | bac4859011a792b227faa77b81c0a1901e4af40f /libavcodec/riscv/bswapdsp_init.c | |
parent | f4daf633b2e31e2e0fb3e0fcf1c7deacbc57b93e (diff) | |
download | ffmpeg-952b426f3bcc6206eff2fa338ff7da475a28692b.tar.gz |
lavc/bswapdsp: add RV Zvbb bswap16 and bswap32
Diffstat (limited to 'libavcodec/riscv/bswapdsp_init.c')
-rw-r--r-- | libavcodec/riscv/bswapdsp_init.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libavcodec/riscv/bswapdsp_init.c b/libavcodec/riscv/bswapdsp_init.c index c13387c232..43d74a4e98 100644 --- a/libavcodec/riscv/bswapdsp_init.c +++ b/libavcodec/riscv/bswapdsp_init.c @@ -27,6 +27,8 @@ void ff_bswap32_buf_rvb(uint32_t *dst, const uint32_t *src, int len); void ff_bswap16_buf_rvv(uint16_t *dst, const uint16_t *src, int len); +void ff_bswap32_buf_rvvb(uint32_t *dst, const uint32_t *src, int len); +void ff_bswap16_buf_rvvb(uint16_t *dst, const uint16_t *src, int len); av_cold void ff_bswapdsp_init_riscv(BswapDSPContext *c) { @@ -38,9 +40,14 @@ av_cold void ff_bswapdsp_init_riscv(BswapDSPContext *c) c->bswap_buf = ff_bswap32_buf_rvb; #endif #if HAVE_RVV - if (flags & AV_CPU_FLAG_RVB_ADDR) { - if (flags & AV_CPU_FLAG_RVV_I32) - c->bswap16_buf = ff_bswap16_buf_rvv; + if ((flags & AV_CPU_FLAG_RVV_I32) && (flags & AV_CPU_FLAG_RVB)) { + c->bswap16_buf = ff_bswap16_buf_rvv; +#if HAVE_RV_ZVBB + if (flags & AV_CPU_FLAG_RV_ZVBB) { + c->bswap_buf = ff_bswap32_buf_rvvb; + c->bswap16_buf = ff_bswap16_buf_rvvb; + } +#endif } #endif #endif |