]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/x86/x86inc.asm
Merge commit 'f1d8763a02b5fce9a7d9789e049d74a45b15e1e8'
[ffmpeg] / libavutil / x86 / x86inc.asm
index 55bbbca26761b559cd16b8492d1c78688964bf7e..59ddc9ddd10ad433501c59844b0097163a4423ef 100644 (file)
@@ -172,10 +172,10 @@ CPUNOP amdnop
         %define r%1mp %2
     %elif ARCH_X86_64 ; memory
         %define r%1m [rstk + stack_offset + %3]
-        %define r%1mp qword r %+ %1m
+        %define r%1mp qword r %+ %1 %+ m
     %else
         %define r%1m [rstk + stack_offset + %3]
-        %define r%1mp dword r %+ %1m
+        %define r%1mp dword r %+ %1 %+ m
     %endif
     %define r%1  %2
 %endmacro
@@ -447,7 +447,7 @@ DECLARE_REG 14, R15, 120
     %assign %%i xmm_regs_used
     %rep (xmm_regs_used-6)
         %assign %%i %%i-1
-        movdqa [rsp + (%%i-6)*16 + stack_size], xmm %+ %%i
+        movdqa [rsp + (%%i-6)*16 + stack_size + (~stack_offset&8)], xmm %+ %%i
     %endrep
 %endmacro
 
@@ -455,8 +455,7 @@ DECLARE_REG 14, R15, 120
     %assign xmm_regs_used %1
     ASSERT xmm_regs_used <= 16
     %if xmm_regs_used > 6
-        %assign stack_size_padded (xmm_regs_used-6)*16+16-gprsize-(stack_offset&15)
-        SUB rsp, stack_size_padded
+        SUB rsp, (xmm_regs_used-6)*16+16
         WIN64_PUSH_XMM
     %endif
 %endmacro
@@ -466,8 +465,11 @@ DECLARE_REG 14, R15, 120
         %assign %%i xmm_regs_used
         %rep (xmm_regs_used-6)
             %assign %%i %%i-1
-            movdqa xmm %+ %%i, [%1 + (%%i-6)*16+stack_size]
+            movdqa xmm %+ %%i, [%1 + (%%i-6)*16+stack_size+(~stack_offset&8)]
         %endrep
+        %if stack_size_padded == 0
+            add %1, (xmm_regs_used-6)*16+16
+        %endif
     %endif
     %if stack_size_padded > 0
         %if stack_size > 0 && (mmsize == 32 || HAVE_ALIGNED_STACK == 0)