aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Gramner <henrik@gramner.com>2024-03-24 20:04:17 +0100
committerHenrik Gramner <henrik@gramner.com>2024-03-25 21:17:47 +0100
commit7c003b63c85aadf57ca10be849bd9895a4eeeb87 (patch)
tree064122fc15625de3cd6737a624326431213c1f22
parent316239096b15ed193056aada1555e84cce402b3a (diff)
downloadffmpeg-7c003b63c85aadf57ca10be849bd9895a4eeeb87.tar.gz
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.
-rw-r--r--libavcodec/x86/h264_idct.asm12
1 files 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