about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-03-03 12:50:27 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-03-03 12:50:27 +0100
commitb1bd9c6810ec7e69e7c113d321c701466986bce3 (patch)
treed29ba2f7dbc31fe36442e0402f911d18822061bb /src
parent6f4ce37cceaa3f623d43d68f8607151f56216fb9 (diff)
downloadbox64-b1bd9c6810ec7e69e7c113d321c701466986bce3.tar.gz
box64-b1bd9c6810ec7e69e7c113d321c701466986bce3.zip
[DYNAREC] Fixed F3 0F E6 opcode (help Factorio)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_f30f.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_f30f.c b/src/dynarec/arm64/dynarec_arm64_f30f.c
index 5f489168..4e441172 100755
--- a/src/dynarec/arm64/dynarec_arm64_f30f.c
+++ b/src/dynarec/arm64/dynarec_arm64_f30f.c
@@ -426,7 +426,14 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
         case 0xE6:

             INST_NAME("CVTDQ2PD Gx, Ex");

             nextop = F8;

-            GETEX(v1, 0);

+            // cannot use GETEX because we want 64bits not 32bits

+            if(MODREG) {

+                v1 = sse_get_reg(dyn, ninst, x1, (nextop&7)+(rex.b<<3));

+            } else {

+                v1 = fpu_get_scratch(dyn);

+                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<3, 7, rex, 0, 0);

+                VLDR64_U12(v1, ed, fixedaddress);

+            }

             GETGX_empty(v0);

             d0 = fpu_get_scratch(dyn);

             SXTL_32(v0, v1);