about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2023-04-09 14:41:36 +0800
committerGitHub <noreply@github.com>2023-04-09 08:41:36 +0200
commit24f2720df43c4570ab9d344a688e0a36d0a8fa88 (patch)
tree04e3028d83969421887e29468106f46b416b9144 /src/emu
parentd9c30c8942888d609d89df5b8ea29071d2663b46 (diff)
downloadbox64-24f2720df43c4570ab9d344a688e0a36d0a8fa88.tar.gz
box64-24f2720df43c4570ab9d344a688e0a36d0a8fa88.zip
[TESTS] Disable compiler optimizations for test17 and some related fixes (#677)
* [TESTS] Disable compiler optimizations for test17

* [INTERP] Fixed MAXSD/MINSD when both sources are 0

* [RV64_DYNAREC] Fixed F2 0F 5D MINSD opcode
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/x64runf20f.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/emu/x64runf20f.c b/src/emu/x64runf20f.c
index 10da2f09..33750318 100644
--- a/src/emu/x64runf20f.c
+++ b/src/emu/x64runf20f.c
@@ -205,6 +205,8 @@ uintptr_t RunF20F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
         nextop = F8;

         GETEX(0);

         GETGX;

+        if (GX->d[0] == 0.0 && EX->d[0]  == 0.0)

+            GX->d[0] = EX->d[0];

         if (isnan(GX->d[0]) || isnan(EX->d[0]) || isless(EX->d[0], GX->d[0]))

             GX->d[0] = EX->d[0];

         break;

@@ -225,6 +227,8 @@ uintptr_t RunF20F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
         nextop = F8;

         GETEX(0);

         GETGX;

+        if (GX->d[0] == 0.0 && EX->d[0]  == 0.0)

+            GX->d[0] = EX->d[0];

         if (isnan(GX->d[0]) || isnan(EX->d[0]) || isgreater(EX->d[0], GX->d[0]))

             GX->d[0] = EX->d[0];

         break;