aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Denis-Courmont <remi@remlab.net>2024-10-12 08:30:37 +0300
committerRémi Denis-Courmont <remi@remlab.net>2024-10-12 09:23:33 +0300
commit1eb026dd8be01ff387436467195238f3b99ab1b9 (patch)
tree7224a5955ed693c56253967a3799225ddfbf59dd
parent5557c673ea783a48e8b97c2b740b22eeeca6399b (diff)
downloadffmpeg-1eb026dd8be01ff387436467195238f3b99ab1b9.tar.gz
riscv/vvc: fix UNDEF whilst initialising DSP
The current triggers an illegal instruction if the CPU does not support vectors.
-rw-r--r--libavcodec/riscv/vvc/vvcdsp_init.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/libavcodec/riscv/vvc/vvcdsp_init.c b/libavcodec/riscv/vvc/vvcdsp_init.c
index 0a9f393259..30e8f59a58 100644
--- a/libavcodec/riscv/vvc/vvcdsp_init.c
+++ b/libavcodec/riscv/vvc/vvcdsp_init.c
@@ -41,10 +41,13 @@ void ff_vvc_dsp_init_riscv(VVCDSPContext *const c, const int bd)
{
#if HAVE_RVV
const int flags = av_get_cpu_flags();
- int vlenb = ff_get_rv_vlenb();
+ int vlenb;
- if ((flags & AV_CPU_FLAG_RVV_I32) && (flags & AV_CPU_FLAG_RVB) &&
- vlenb >= 32) {
+ if (!(flags & AV_CPU_FLAG_RVV_I32) || !(flags & AV_CPU_FLAG_RVB))
+ return;
+
+ vlenb = ff_get_rv_vlenb();
+ if (vlenb >= 32) {
switch (bd) {
case 8:
c->inter.avg = ff_vvc_avg_8_rvv_256;
@@ -55,8 +58,7 @@ void ff_vvc_dsp_init_riscv(VVCDSPContext *const c, const int bd)
default:
break;
}
- } else if ((flags & AV_CPU_FLAG_RVV_I32) && (flags & AV_CPU_FLAG_RVB) &&
- vlenb >= 16) {
+ } else if (vlenb >= 16) {
switch (bd) {
case 8:
c->inter.avg = ff_vvc_avg_8_rvv_128;