From 8cb0f7a2b4ddd7183f49751796cd9598c47bb011 Mon Sep 17 00:00:00 2001 From: Henrik Gramner Date: Sun, 24 Mar 2024 20:04:17 +0100 Subject: [PATCH] avcodec/x86/h264_idct: Fix incorrect xmm spilling on win64 Broken in afa471d0efed1df5dca6eeeb2fcdd211ae4cad4e. It just happened to work before due to x86inc.asm previously performing XMM spills in INIT_MMX mode which was more of a bug than an intentional feature. Signed-off-by: Paul B Mahol --- libavcodec/x86/h264_idct.asm | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/libavcodec/x86/h264_idct.asm b/libavcodec/x86/h264_idct.asm index b29ddde200..d9c3c9c862 100644 --- a/libavcodec/x86/h264_idct.asm +++ b/libavcodec/x86/h264_idct.asm @@ -716,11 +716,9 @@ RET %endif %endmacro -%macro IDCT_DC_DEQUANT 1 -cglobal h264_luma_dc_dequant_idct, 3, 4, %1 - ; manually spill XMM registers for Win64 because - ; the code here is initialized with INIT_MMX - WIN64_SPILL_XMM %1 +INIT_XMM sse2 +cglobal h264_luma_dc_dequant_idct, 3, 4, 7 +INIT_MMX cpuname movq m3, [r1+24] movq m2, [r1+16] movq m1, [r1+ 8] @@ -757,10 +755,6 @@ cglobal h264_luma_dc_dequant_idct, 3, 4, %1 movd xmm6, t1d DEQUANT_STORE xmm6 RET -%endmacro - -INIT_MMX sse2 -IDCT_DC_DEQUANT 7 %ifdef __NASM_VER__ %if __NASM_MAJOR__ >= 2 && __NASM_MINOR__ >= 4