diff --git a/Zend/asm/save_xmm_x86_64_ms_masm.asm b/Zend/asm/save_xmm_x86_64_ms_masm.asm index 1569d6bdb0e8..0af7c346095d 100644 --- a/Zend/asm/save_xmm_x86_64_ms_masm.asm +++ b/Zend/asm/save_xmm_x86_64_ms_masm.asm @@ -9,34 +9,34 @@ EXTERN execute_ex_real:PROC ; save the preserved registers when re-entering the VM from JIT code. ; See GH-18136. execute_ex PROC EXPORT FRAME - ; 10 floating points numbers + ; 10 XMM registers ; 32 bytes shadow space ; 8 bytes to align after the return address - sub rsp, 8*10 + 32 + 8 - .allocstack 8*10 + 32 + 8 + sub rsp, 16*10 + 32 + 8 + .allocstack 16*10 + 32 + 8 .endprolog - movsd qword ptr [rsp + 32 + 8*0], xmm6 - movsd qword ptr [rsp + 32 + 8*1], xmm7 - movsd qword ptr [rsp + 32 + 8*2], xmm8 - movsd qword ptr [rsp + 32 + 8*3], xmm9 - movsd qword ptr [rsp + 32 + 8*4], xmm10 - movsd qword ptr [rsp + 32 + 8*5], xmm11 - movsd qword ptr [rsp + 32 + 8*6], xmm12 - movsd qword ptr [rsp + 32 + 8*7], xmm13 - movsd qword ptr [rsp + 32 + 8*8], xmm14 - movsd qword ptr [rsp + 32 + 8*9], xmm15 + movaps xmmword ptr [rsp + 32 + 16*0], xmm6 + movaps xmmword ptr [rsp + 32 + 16*1], xmm7 + movaps xmmword ptr [rsp + 32 + 16*2], xmm8 + movaps xmmword ptr [rsp + 32 + 16*3], xmm9 + movaps xmmword ptr [rsp + 32 + 16*4], xmm10 + movaps xmmword ptr [rsp + 32 + 16*5], xmm11 + movaps xmmword ptr [rsp + 32 + 16*6], xmm12 + movaps xmmword ptr [rsp + 32 + 16*7], xmm13 + movaps xmmword ptr [rsp + 32 + 16*8], xmm14 + movaps xmmword ptr [rsp + 32 + 16*9], xmm15 call execute_ex_real - movsd xmm6, qword ptr [rsp + 32 + 8*0] - movsd xmm7, qword ptr [rsp + 32 + 8*1] - movsd xmm8, qword ptr [rsp + 32 + 8*2] - movsd xmm9, qword ptr [rsp + 32 + 8*3] - movsd xmm10, qword ptr [rsp + 32 + 8*4] - movsd xmm11, qword ptr [rsp + 32 + 8*5] - movsd xmm12, qword ptr [rsp + 32 + 8*6] - movsd xmm13, qword ptr [rsp + 32 + 8*7] - movsd xmm14, qword ptr [rsp + 32 + 8*8] - movsd xmm15, qword ptr [rsp + 32 + 8*9] - add rsp, 8*10 + 32 + 8 + movaps xmm6, xmmword ptr [rsp + 32 + 16*0] + movaps xmm7, xmmword ptr [rsp + 32 + 16*1] + movaps xmm8, xmmword ptr [rsp + 32 + 16*2] + movaps xmm9, xmmword ptr [rsp + 32 + 16*3] + movaps xmm10, xmmword ptr [rsp + 32 + 16*4] + movaps xmm11, xmmword ptr [rsp + 32 + 16*5] + movaps xmm12, xmmword ptr [rsp + 32 + 16*6] + movaps xmm13, xmmword ptr [rsp + 32 + 16*7] + movaps xmm14, xmmword ptr [rsp + 32 + 16*8] + movaps xmm15, xmmword ptr [rsp + 32 + 16*9] + add rsp, 16*10 + 32 + 8 ret execute_ex ENDP