[FFmpeg-devel] [PATCH] lavu/riscv: Fallback to getauxval() for cpu flags

Nathan E. Egge unlord at xiph.org
Tue Jul 30 17:07:52 EEST 2024


Signed-off-by: Nathan E. Egge <unlord at xiph.org>
---
 libavutil/riscv/cpu.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libavutil/riscv/cpu.c b/libavutil/riscv/cpu.c
index e035f4b024..13b939b9d9 100644
--- a/libavutil/riscv/cpu.c
+++ b/libavutil/riscv/cpu.c
@@ -90,7 +90,8 @@ int ff_get_cpu_flags_riscv(void)
             default:
         }
     }
-#elif HAVE_GETAUXVAL
+#endif
+#if HAVE_GETAUXVAL
     {
         const unsigned long hwcap = getauxval(AT_HWCAP);
 
@@ -100,14 +101,16 @@ int ff_get_cpu_flags_riscv(void)
             ret |= AV_CPU_FLAG_RVF;
         if (hwcap & HWCAP_RV('D'))
             ret |= AV_CPU_FLAG_RVD;
-        if (hwcap & HWCAP_RV('B'))
-            ret |= AV_CPU_FLAG_RVB_ADDR | AV_CPU_FLAG_RVB_BASIC |
-                   AV_CPU_FLAG_RVB;
 
         /* The V extension implies all Zve* functional subsets */
         if (hwcap & HWCAP_RV('V'))
              ret |= AV_CPU_FLAG_RVV_I32 | AV_CPU_FLAG_RVV_I64
                   | AV_CPU_FLAG_RVV_F32 | AV_CPU_FLAG_RVV_F64;
+
+        /* The V extension implies Zb* on all existing hardware */
+        if (hwcap & (HWCAP_RV('B') | HWCAP_RV('V')))
+            ret |= AV_CPU_FLAG_RVB_ADDR | AV_CPU_FLAG_RVB_BASIC |
+                   AV_CPU_FLAG_RVB;
     }
 #endif
 
-- 
2.45.1



More information about the ffmpeg-devel mailing list