about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-07-17 17:46:04 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-07-17 17:46:04 +0200
commit65045c4897c1e10d3c2f5df3711d0083a1a729ad (patch)
tree021cd4846dcfc28f6b6c6ea92ad64c3c8547fd6b /src
parente46133c8506614fe8b4246fb6c4703c2649ba004 (diff)
downloadbox64-65045c4897c1e10d3c2f5df3711d0083a1a729ad.tar.gz
box64-65045c4897c1e10d3c2f5df3711d0083a1a729ad.zip
Added 67 F3 0F 6F opcode ([ARM64_DYNAREC] too) (for #873 / steam on wow64)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_67.c14
-rw-r--r--src/emu/x64run670f.c6
2 files changed, 20 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index 24b87d9b..b1a657f1 100755
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -208,6 +208,20 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                                 VLD64(v0, ed, fixedaddress);

                             }

                             break;

+                        case 2:

+                            INST_NAME("MOVDQU Gx,Ex");

+                            nextop = F8;

+                            if(MODREG) {

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

+                                GETGX_empty(v0);

+                                VMOVQ(v0, v1);

+                            } else {

+                                GETGX_empty(v0);

+                                SMREAD();

+                                addr = geted32(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<4, 15, rex, NULL, 0, 0);

+                                VLD128(v0, ed, fixedaddress);

+                            }

+                            break;

                         default:

                             DEFAULT;

                     }

diff --git a/src/emu/x64run670f.c b/src/emu/x64run670f.c
index c0283ab5..3627ed93 100644
--- a/src/emu/x64run670f.c
+++ b/src/emu/x64run670f.c
@@ -84,6 +84,12 @@ uintptr_t Run670F(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
                     GETGM;
                     GM->q = EM->q;
                     break;
+                case 2:  /* MOVDQU Gx, Ex */
+                    nextop = F8;
+                    GETEX32(0);
+                    GETGX;
+                    memcpy(GX, EX, 16);    // unaligned...
+                    break;
                 default:
                     return 0;
             }