diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-04-11 15:38:09 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-04-11 15:38:09 +0200 |
| commit | af6fb49e482c64fc6a717321148e60ad488318b3 (patch) | |
| tree | 14862af90214da266186b9df91e419af88675d6f /src | |
| parent | c593988bc101fa836478396212f4f01d8b98c565 (diff) | |
| download | box64-af6fb49e482c64fc6a717321148e60ad488318b3.tar.gz box64-af6fb49e482c64fc6a717321148e60ad488318b3.zip | |
Added F2 0F F0 ocpode ([DYNAREC] too)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_f20f.c | 15 | ||||
| -rw-r--r-- | src/emu/x64runf20f.c | 9 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_arm64_f20f.c b/src/dynarec/dynarec_arm64_f20f.c index b51318ef..51717ed2 100755 --- a/src/dynarec/dynarec_arm64_f20f.c +++ b/src/dynarec/dynarec_arm64_f20f.c @@ -296,6 +296,21 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n VMOVQDfrom(v0, 0, x2); break; + case 0xF0: + INST_NAME("LDDQU Gx,Ex"); + nextop = F8; + GETG; + if(MODREG) { + v1 = sse_get_reg(dyn, ninst, x1, (nextop&7)+(rex.b<<3)); + v0 = sse_get_reg_empty(dyn, ninst, x1, gd); + VMOVQ(v0, v1); + } else { + v0 = sse_get_reg_empty(dyn, ninst, x1, gd); + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<4, 7, rex, 0, 0); + VLDR128_U12(v0, ed, fixedaddress); + } + break; + default: DEFAULT; } diff --git a/src/emu/x64runf20f.c b/src/emu/x64runf20f.c index 44e77a1b..2d64969a 100644 --- a/src/emu/x64runf20f.c +++ b/src/emu/x64runf20f.c @@ -260,7 +260,14 @@ int RunF20F(x64emu_t *emu, rex_t rex) GX->q[1] = 0; break; - default: + case 0xF0: /* LDDQU Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + memcpy(GX, EX, 16); + break; + + default: return 1; } return 0; |