diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-07-17 17:29:39 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-07-17 17:29:39 +0200 |
| commit | e46133c8506614fe8b4246fb6c4703c2649ba004 (patch) | |
| tree | 386fef182254f3241f2436064472c8112e254f21 /src | |
| parent | 37ef57f78f9aabcb67e0690c95811b1b03ad145e (diff) | |
| download | box64-e46133c8506614fe8b4246fb6c4703c2649ba004.tar.gz box64-e46133c8506614fe8b4246fb6c4703c2649ba004.zip | |
Added 0F F4 opcode ([ARM64_DYNAREC] too) (for #888)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_0f.c | 8 | ||||
| -rw-r--r-- | src/emu/x64run0f.c | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 19293786..00aa61be 100755 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -1914,7 +1914,13 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SQXTN_32(v0, v0); // 2*q1 in 32bits now SSHL_32(d0, d0, v0); break; - + case 0xF4: + INST_NAME("PMULUDQ Gx,Ex"); + nextop = F8; + GETGX(v0, 1); + GETEX(v1, 0, 0); + VUMULL_32(v0, v0, v1); + break; case 0xF5: INST_NAME("PMADDWD Gm, Em"); nextop = F8; diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index ffa4a471..b09dce9c 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -1682,7 +1682,12 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) GETGM; GM->q = (EM->q > 63) ? 0L : (GM->q << EM->ub[0]); break; - + case 0xF4: /* PMULUDQ Gm,Em */ + nextop = F8; + GETEM(0); + GETGM; + GM->q = (uint64_t)GM->ud[0] * (uint64_t)EM->ud[0]; + break; case 0xF5: /* PMADDWD Gm, Em */ nextop = F8; GETEM(0); |