diff mbox

[FFmpeg-devel,4/5] x86inc: Remove argument from WIN64_RESTORE_XMM

Message ID 20170608230502.29258-5-jdarnley@obe.tv
State Accepted
Commit d991b3e8a87a26c9afa06da2f5f865ca43921ff1
Headers show

Commit Message

James Darnley June 8, 2017, 11:05 p.m. UTC
From: Anton Mitrofanov <BugMaster@narod.ru>

The use of rsp was pretty much hardcoded there and probably didn't work
otherwise with stack_size > 0.
---
 libavutil/x86/x86inc.asm | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

Comments

Ronald S. Bultje June 9, 2017, 11:49 a.m. UTC | #1
Hi,

On Thu, Jun 8, 2017 at 7:05 PM, James Darnley <jdarnley@obe.tv> wrote:

> From: Anton Mitrofanov <BugMaster@narod.ru>
>
> The use of rsp was pretty much hardcoded there and probably didn't work
> otherwise with stack_size > 0.
> ---
>  libavutil/x86/x86inc.asm | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)


LGTM.

Ronald
diff mbox

Patch

diff --git a/libavutil/x86/x86inc.asm b/libavutil/x86/x86inc.asm
index 65853f72cd..2a13ca957e 100644
--- a/libavutil/x86/x86inc.asm
+++ b/libavutil/x86/x86inc.asm
@@ -475,41 +475,42 @@  DECLARE_REG 14, R13, 120
     WIN64_PUSH_XMM
 %endmacro
 
-%macro WIN64_RESTORE_XMM_INTERNAL 1
+%macro WIN64_RESTORE_XMM_INTERNAL 0
     %assign %%pad_size 0
     %if xmm_regs_used > 8
         %assign %%i xmm_regs_used
         %rep xmm_regs_used-8
             %assign %%i %%i-1
-            movaps xmm %+ %%i, [%1 + (%%i-8)*16 + stack_size + 32]
+            movaps xmm %+ %%i, [rsp + (%%i-8)*16 + stack_size + 32]
         %endrep
     %endif
     %if stack_size_padded > 0
         %if stack_size > 0 && required_stack_alignment > STACK_ALIGNMENT
             mov rsp, rstkm
         %else
-            add %1, stack_size_padded
+            add rsp, stack_size_padded
             %assign %%pad_size stack_size_padded
         %endif
     %endif
     %if xmm_regs_used > 7
-        movaps xmm7, [%1 + stack_offset - %%pad_size + 24]
+        movaps xmm7, [rsp + stack_offset - %%pad_size + 24]
     %endif
     %if xmm_regs_used > 6
-        movaps xmm6, [%1 + stack_offset - %%pad_size +  8]
+        movaps xmm6, [rsp + stack_offset - %%pad_size +  8]
     %endif
 %endmacro
 
-%macro WIN64_RESTORE_XMM 1
-    WIN64_RESTORE_XMM_INTERNAL %1
+%macro WIN64_RESTORE_XMM 0
+    WIN64_RESTORE_XMM_INTERNAL
     %assign stack_offset (stack_offset-stack_size_padded)
+    %assign stack_size_padded 0
     %assign xmm_regs_used 0
 %endmacro
 
 %define has_epilogue regs_used > 7 || xmm_regs_used > 6 || mmsize == 32 || stack_size > 0
 
 %macro RET 0
-    WIN64_RESTORE_XMM_INTERNAL rsp
+    WIN64_RESTORE_XMM_INTERNAL
     POP_IF_USED 14, 13, 12, 11, 10, 9, 8, 7
     %if mmsize == 32
         vzeroupper
@@ -625,7 +626,7 @@  DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14
 %if WIN64 == 0
     %macro WIN64_SPILL_XMM 1
     %endmacro
-    %macro WIN64_RESTORE_XMM 1
+    %macro WIN64_RESTORE_XMM 0
     %endmacro
     %macro WIN64_PUSH_XMM 0
     %endmacro