]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix 80-bit non-JIT FMOD and FREM.
authorToni Wilen <twilen@winuae.net>
Fri, 22 Jun 2018 09:22:35 +0000 (12:22 +0300)
committerToni Wilen <twilen@winuae.net>
Fri, 22 Jun 2018 09:22:35 +0000 (12:22 +0300)
od-win32/fpux64_80.asm
od-win32/fpux86_80.asm

index 254b0d1f8d64061d0498e70f7246e3b54d576b4f..4397d51c7568dfff4d2a85daa64a0a37471f7b38 100644 (file)
@@ -68,6 +68,11 @@ bits 64
        fld tword[rdx]
 %endmacro
 
+%macro loadfp2swap 0
+       fld tword[rdx]
+       fld tword[rcx]
+%endmacro
+
 %macro storefp 0
        fstp tword[rcx]
 %endmacro
@@ -220,14 +225,14 @@ xfp_atan:
 
 
 xfp_rem:
-       loadfp2
+       loadfp2swap
        fprem
        fstp st1
        storefp
        ret
 
 xfp_rem1:
-       loadfp2
+       loadfp2swap
        fprem1
        fstp st1        
        storefp
@@ -248,8 +253,7 @@ xfp_getman:
        ret
 
 xfp_scale:
-       loadfp2
-       fxch
+       loadfp2swap
        fscale
        fstp st1
        storefp
index c88a570316b8d8a9db211f854c858bf1f42bddd3..ffe780ecd98a161ebd35a2bdb202b889c0b5a510 100644 (file)
@@ -70,6 +70,14 @@ section .text
        fld tword[ecx]
 %endmacro
 
+%macro loadfp2swap 0
+       mov eax,[esp+4]
+       mov ecx,[esp+8]
+       fld tword[ecx]
+       fld tword[eax]
+%endmacro
+
+
 %macro storefp 0
        fstp tword[eax]
 %endmacro
@@ -241,14 +249,14 @@ _xfp_atan:
        ret
 
 _xfp_rem:
-       loadfp2
+       loadfp2swap
        fprem
        fstp st1
        storefp
        ret
 
 _xfp_rem1:
-       loadfp2
+       loadfp2swap
        fprem1
        fstp st1        
        storefp
@@ -269,8 +277,7 @@ _xfp_getman:
        ret
 
 _xfp_scale:
-       loadfp2
-       fxch
+       loadfp2swap
        fscale
        fstp st1
        storefp