about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorxctan <xctan@cirno.icu>2023-05-05 23:49:40 +0800
committerGitHub <noreply@github.com>2023-05-05 17:49:40 +0200
commite444b277f853ff30231678016034c8c2cb52bd0b (patch)
treeda0392c3ef976ece616ab2185292db792c38045b
parent49dfbee2119ce52600f7acbf61af690d6c9ef16c (diff)
downloadbox64-e444b277f853ff30231678016034c8c2cb52bd0b.tar.gz
box64-e444b277f853ff30231678016034c8c2cb52bd0b.zip
[RV64_DYNAREC] Fixed 66 0F 3A 0B ROUNDSD opcode (#765)
-rw-r--r--src/dynarec/rv64/dynarec_rv64_660f.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_660f.c b/src/dynarec/rv64/dynarec_rv64_660f.c
index 2e79019b..0408aeaa 100644
--- a/src/dynarec/rv64/dynarec_rv64_660f.c
+++ b/src/dynarec/rv64/dynarec_rv64_660f.c
@@ -411,14 +411,13 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     MARK2;
                     if(u8&4) {
                         u8 = sse_setround(dyn, ninst, x4, x2);
-                        FCVTLD(x5, v1, RD_DYN);
-                        FCVTDL(v0, x5, RD_DYN);
+                        FCVTLD(x5, d0, RD_DYN);
+                        FCVTDL(v0, x5, RD_RTZ);
                         x87_restoreround(dyn, ninst, u8);
                     } else {
-                        FCVTLD(x5, v1, round_round[u8&3]);
-                        FCVTDL(v0, x5, round_round[u8&3]);
+                        FCVTLD(x5, d0, round_round[u8&3]);
+                        FCVTDL(v0, x5, RD_RTZ);
                     }
-                    FSGNJD(v0, v0, d0);
                     break;
                 case 0x0E:
                     INST_NAME("PBLENDW Gx, Ex, Ib");