From ad4e0e57d25b5b954257923258d400d4aa327866 Mon Sep 17 00:00:00 2001 From: kai Date: Fri, 25 Jan 2013 19:42:19 +0100 Subject: [PATCH 1/2] Added new LLVM 3.3 intrinsics --- runtime/druntime | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/druntime b/runtime/druntime index ec414425..3a46e0d2 160000 --- a/runtime/druntime +++ b/runtime/druntime @@ -1 +1 @@ -Subproject commit ec414425059171376d8ea6ca601daae7d59a3d35 +Subproject commit 3a46e0d24429f2052ad1f2a076e7b20394f97942 From 98669eef5bb218401f563ebad49104de434747a7 Mon Sep 17 00:00:00 2001 From: sgraf812 Date: Fri, 25 Jan 2013 14:46:01 +0100 Subject: [PATCH 2/2] using rsp instead of esp Using esp resulted in crashes on x64. --- vcbuild/ldfpu.asm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/vcbuild/ldfpu.asm b/vcbuild/ldfpu.asm index c7958d69..6cb5f6b5 100644 --- a/vcbuild/ldfpu.asm +++ b/vcbuild/ldfpu.asm @@ -31,7 +31,7 @@ twoPow63 dd 0, 80000000h, 03fffh + 63 ld_read PROC fld tbyte ptr [rcx] push rax - fstp qword ptr [esp] + fstp qword ptr [rsp] movq xmm0,qword ptr [rsp] pop rax ret @@ -42,7 +42,7 @@ ld_read ENDP ld_readll PROC fld tbyte ptr [rcx] push rax - fistp qword ptr [esp] + fistp qword ptr [rsp] pop rax ret ld_readll ENDP @@ -55,7 +55,7 @@ ld_readull PROC lea rax,twoPow63 fld tbyte ptr [rax] fsubp ST(1),ST(0) ; move it into signed range - fistp qword ptr [esp] + fistp qword ptr [rsp] pop rax btc rax,63 ret @@ -78,9 +78,9 @@ ld_set ENDP ; rdx: d ld_setll PROC push rdx - fild qword ptr [esp] - fstp tbyte ptr [rcx] - pop rax + fild qword ptr [rsp] + fstp tbyte ptr [rcx] + pop rax ret ld_setll ENDP @@ -90,12 +90,12 @@ ld_setll ENDP ld_setull PROC btc rdx,63 push rdx - fild qword ptr [esp] + fild qword ptr [rsp] lea rax,twoPow63 fld tbyte ptr [rax] faddp ST(1),ST(0) - fstp tbyte ptr [rcx] - pop rax + fstp tbyte ptr [rcx] + pop rax ret ld_setull ENDP @@ -104,12 +104,12 @@ ld_setull ENDP ; edx: exp ld_expl PROC push rdx - fild dword ptr [esp] + fild dword ptr [rsp] fld tbyte ptr [rcx] fscale ; ST(0) = ST(0) * (2**ST(1)) fstp ST(1) fstp tbyte ptr [rcx] - pop rax + pop rax ret ld_expl ENDP