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]
