diff --git a/include/vlc_cpu.h b/include/vlc_cpu.h
index 607a53843149730ee280177fcf8d063620e2176f..b2e9b40aa6139b524a911734ca51297370b17f2e 100644
--- a/include/vlc_cpu.h
+++ b/include/vlc_cpu.h
@@ -201,6 +201,13 @@ unsigned vlc_CPU_raw(void);
 #  ifdef __riscv_flen
 #   define HAVE_FPU 1
 #  endif
+#  define VLC_CPU_RV_V 0x1
+
+#  ifdef __riscv_v
+#   define vlc_CPU_RV_V() (1)
+#  else
+#   define vlc_CPU_RV_V() ((vlc_CPU() & VLC_CPU_RV_V) != 0)
+#  endif
 
 # else
 /**
diff --git a/src/misc/cpu.c b/src/misc/cpu.c
index d37f60d3f9a3b2dd7d3de29b961e4aa67ee4a517..921e52a5cd3bfe0a3d7c587af2090eb739edf24c 100644
--- a/src/misc/cpu.c
+++ b/src/misc/cpu.c
@@ -293,6 +293,10 @@ void vlc_CPU_dump (vlc_object_t *obj)
     if (vlc_CPU_ARM_NEON())
         vlc_memstream_puts(&stream, "ARM_NEON ");
 
+#elif defined (__riscv)
+    if (vlc_CPU_RV_V())
+        vlc_memstream_puts(&stream, "V ");
+
 #endif
 
 #if HAVE_FPU