Skip to content

Commit bc2f3ed

Browse files
committed
Preserve full XMM registers in Windows VM wrapper
1 parent 14f2071 commit bc2f3ed

1 file changed

Lines changed: 24 additions & 24 deletions

File tree

Zend/asm/save_xmm_x86_64_ms_masm.asm

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,34 @@ EXTERN execute_ex_real:PROC
99
; save the preserved registers when re-entering the VM from JIT code.
1010
; See GH-18136.
1111
execute_ex PROC EXPORT FRAME
12-
; 10 floating points numbers
12+
; 10 XMM registers
1313
; 32 bytes shadow space
1414
; 8 bytes to align after the return address
15-
sub rsp, 8*10 + 32 + 8
16-
.allocstack 8*10 + 32 + 8
15+
sub rsp, 16*10 + 32 + 8
16+
.allocstack 16*10 + 32 + 8
1717
.endprolog
18-
movsd qword ptr [rsp + 32 + 8*0], xmm6
19-
movsd qword ptr [rsp + 32 + 8*1], xmm7
20-
movsd qword ptr [rsp + 32 + 8*2], xmm8
21-
movsd qword ptr [rsp + 32 + 8*3], xmm9
22-
movsd qword ptr [rsp + 32 + 8*4], xmm10
23-
movsd qword ptr [rsp + 32 + 8*5], xmm11
24-
movsd qword ptr [rsp + 32 + 8*6], xmm12
25-
movsd qword ptr [rsp + 32 + 8*7], xmm13
26-
movsd qword ptr [rsp + 32 + 8*8], xmm14
27-
movsd qword ptr [rsp + 32 + 8*9], xmm15
18+
movaps xmmword ptr [rsp + 32 + 16*0], xmm6
19+
movaps xmmword ptr [rsp + 32 + 16*1], xmm7
20+
movaps xmmword ptr [rsp + 32 + 16*2], xmm8
21+
movaps xmmword ptr [rsp + 32 + 16*3], xmm9
22+
movaps xmmword ptr [rsp + 32 + 16*4], xmm10
23+
movaps xmmword ptr [rsp + 32 + 16*5], xmm11
24+
movaps xmmword ptr [rsp + 32 + 16*6], xmm12
25+
movaps xmmword ptr [rsp + 32 + 16*7], xmm13
26+
movaps xmmword ptr [rsp + 32 + 16*8], xmm14
27+
movaps xmmword ptr [rsp + 32 + 16*9], xmm15
2828
call execute_ex_real
29-
movsd xmm6, qword ptr [rsp + 32 + 8*0]
30-
movsd xmm7, qword ptr [rsp + 32 + 8*1]
31-
movsd xmm8, qword ptr [rsp + 32 + 8*2]
32-
movsd xmm9, qword ptr [rsp + 32 + 8*3]
33-
movsd xmm10, qword ptr [rsp + 32 + 8*4]
34-
movsd xmm11, qword ptr [rsp + 32 + 8*5]
35-
movsd xmm12, qword ptr [rsp + 32 + 8*6]
36-
movsd xmm13, qword ptr [rsp + 32 + 8*7]
37-
movsd xmm14, qword ptr [rsp + 32 + 8*8]
38-
movsd xmm15, qword ptr [rsp + 32 + 8*9]
39-
add rsp, 8*10 + 32 + 8
29+
movaps xmm6, xmmword ptr [rsp + 32 + 16*0]
30+
movaps xmm7, xmmword ptr [rsp + 32 + 16*1]
31+
movaps xmm8, xmmword ptr [rsp + 32 + 16*2]
32+
movaps xmm9, xmmword ptr [rsp + 32 + 16*3]
33+
movaps xmm10, xmmword ptr [rsp + 32 + 16*4]
34+
movaps xmm11, xmmword ptr [rsp + 32 + 16*5]
35+
movaps xmm12, xmmword ptr [rsp + 32 + 16*6]
36+
movaps xmm13, xmmword ptr [rsp + 32 + 16*7]
37+
movaps xmm14, xmmword ptr [rsp + 32 + 16*8]
38+
movaps xmm15, xmmword ptr [rsp + 32 + 16*9]
39+
add rsp, 16*10 + 32 + 8
4040
ret
4141
execute_ex ENDP
4242

0 commit comments

Comments
 (0)