diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-07-17 17:46:04 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-07-17 17:46:04 +0200 |
| commit | 65045c4897c1e10d3c2f5df3711d0083a1a729ad (patch) | |
| tree | 021cd4846dcfc28f6b6c6ea92ad64c3c8547fd6b /src | |
| parent | e46133c8506614fe8b4246fb6c4703c2649ba004 (diff) | |
| download | box64-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-x | src/dynarec/arm64/dynarec_arm64_67.c | 14 | ||||
| -rw-r--r-- | src/emu/x64run670f.c | 6 |
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; } |