diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-03-30 12:16:25 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-03-30 12:16:25 +0200 |
| commit | 94c3cec69f7a1b497e0de8c019fab684d2769394 (patch) | |
| tree | 90256b8e9d327518c55c62a3df023fa69b3ec9d1 /src | |
| parent | a9a82e581a2cff17368fc369f1d6517e4845a2e6 (diff) | |
| download | box64-94c3cec69f7a1b497e0de8c019fab684d2769394.tar.gz box64-94c3cec69f7a1b497e0de8c019fab684d2769394.zip | |
Added 66 0F 38 14/16 opcodes
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run660f.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 5d4463bd..148c99eb 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -358,6 +358,7 @@ int Run660F(x64emu_t *emu, rex_t rex) nextop = F8; GETEX(0); GETGX; + CHECK_FLAGS(emu); CONDITIONAL_SET_FLAG(!(GX->u128&EX->u128), F_ZF); CONDITIONAL_SET_FLAG(!((~GX->u128)&EX->u128), F_CF); break; @@ -676,6 +677,25 @@ int Run660F(x64emu_t *emu, rex_t rex) } break; + case 0x14: // PEXTRB EB, GX, u8 + nextop = F8; + GETEB(1); + GETGX; + tmp8u = F8; + EB->byte[0] = GX->ub[tmp8u&0x0f]; + break; + + case 0x16: // PEXTRD/Q ED, GX, u8 + nextop = F8; + GETED(1); + GETGX; + tmp8u = F8; + if(rex.w) { + ED->q[0] = GX->q[tmp8u&1]; + } else { + ED->q[0] = GX->ud[tmp8u&3]; + } + break; case 0x17: // EXTRACTPS ED, GX, u8 nextop = F8; GETED(1); |