PR #22526 opened by Zhao Zhili (quink)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22526
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22526.patch


>From 9fe980e0089dd532ff7a8a177f3f0be904fc6cc3 Mon Sep 17 00:00:00 2001
From: Zhao Zhili <[email protected]>
Date: Tue, 17 Mar 2026 16:34:26 +0800
Subject: [PATCH 1/2] checkasm/aarch64: fix operator precedence bug in
 ARG_STACK

The expression
  ((8*(MAX_ARGS - 8) + 15) & ~15 + 16)
is equal to
  ((8*(MAX_ARGS - 8) + 15) & (~15 + 16))

which evaluated to zero.
---
 tests/checkasm/aarch64/checkasm.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/checkasm/aarch64/checkasm.S 
b/tests/checkasm/aarch64/checkasm.S
index 6d3c738801..4b2db86a9e 100644
--- a/tests/checkasm/aarch64/checkasm.S
+++ b/tests/checkasm/aarch64/checkasm.S
@@ -68,7 +68,7 @@ function checkasm_stack_clobber, export=1
 endfunc
 
 // + 16 for stack canary reference
-#define ARG_STACK ((8*(MAX_ARGS - 8) + 15) & ~15 + 16)
+#define ARG_STACK (((8*(MAX_ARGS - 8) + 15) & ~15) + 16)
 
 function checkasm_checked_call, export=1
         stp             x29, x30, [sp, #-16]!
-- 
2.52.0


>From eff960998fdc5820f903ecf636dacc63ac17f76e Mon Sep 17 00:00:00 2001
From: Zhao Zhili <[email protected]>
Date: Tue, 17 Mar 2026 15:59:33 +0800
Subject: [PATCH 2/2] checkasm/aarch64: eliminates serial data dependencies on
 sp

Signed-off-by: Zhao Zhili <[email protected]>
---
 tests/checkasm/aarch64/checkasm.S | 46 ++++++++++++++++---------------
 1 file changed, 24 insertions(+), 22 deletions(-)

diff --git a/tests/checkasm/aarch64/checkasm.S 
b/tests/checkasm/aarch64/checkasm.S
index 4b2db86a9e..2ec6d78240 100644
--- a/tests/checkasm/aarch64/checkasm.S
+++ b/tests/checkasm/aarch64/checkasm.S
@@ -71,17 +71,18 @@ endfunc
 #define ARG_STACK (((8*(MAX_ARGS - 8) + 15) & ~15) + 16)
 
 function checkasm_checked_call, export=1
-        stp             x29, x30, [sp, #-16]!
-        mov             x29, sp
-        stp             x19, x20, [sp, #-16]!
-        stp             x21, x22, [sp, #-16]!
-        stp             x23, x24, [sp, #-16]!
-        stp             x25, x26, [sp, #-16]!
-        stp             x27, x28, [sp, #-16]!
-        stp             d8,  d9,  [sp, #-16]!
-        stp             d10, d11, [sp, #-16]!
-        stp             d12, d13, [sp, #-16]!
-        stp             d14, d15, [sp, #-16]!
+        sub             sp,  sp,  #160
+        stp             x29, x30, [sp, #144]
+        add             x29, sp,  #144
+        stp             x19, x20, [sp, #128]
+        stp             x21, x22, [sp, #112]
+        stp             x23, x24, [sp, #96]
+        stp             x25, x26, [sp, #80]
+        stp             x27, x28, [sp, #64]
+        stp             d8,  d9,  [sp, #48]
+        stp             d10, d11, [sp, #32]
+        stp             d12, d13, [sp, #16]
+        stp             d14, d15, [sp]
 
         movrel          x9, register_init
         ldp             d8,  d9,  [x9], #16
@@ -183,16 +184,17 @@ function checkasm_checked_call, export=1
 1:
         bl              X(checkasm_fail_func)
 0:
-        ldp             x0,  x1,  [sp], #16
-        ldp             d14, d15, [sp], #16
-        ldp             d12, d13, [sp], #16
-        ldp             d10, d11, [sp], #16
-        ldp             d8,  d9,  [sp], #16
-        ldp             x27, x28, [sp], #16
-        ldp             x25, x26, [sp], #16
-        ldp             x23, x24, [sp], #16
-        ldp             x21, x22, [sp], #16
-        ldp             x19, x20, [sp], #16
-        ldp             x29, x30, [sp], #16
+        ldp             x0,  x1,  [sp]
+        ldp             d14, d15, [sp, #16]
+        ldp             d12, d13, [sp, #32]
+        ldp             d10, d11, [sp, #48]
+        ldp             d8,  d9,  [sp, #64]
+        ldp             x27, x28, [sp, #80]
+        ldp             x25, x26, [sp, #96]
+        ldp             x23, x24, [sp, #112]
+        ldp             x21, x22, [sp, #128]
+        ldp             x19, x20, [sp, #144]
+        ldp             x29, x30, [sp, #160]
+        add             sp,  sp,  #176
         ret
 endfunc
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to