diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-02-11 18:48:05 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-02-11 18:48:05 +0100 |
| commit | 7224281cd60543de7e800bff74c892995125b8b1 (patch) | |
| tree | bde879fd5f9fa0798972dda6daa441be6a497560 /src | |
| parent | e0dfef846199c4470dc0bdf26214ec8d30a0d2ce (diff) | |
| download | box64-7224281cd60543de7e800bff74c892995125b8b1.tar.gz box64-7224281cd60543de7e800bff74c892995125b8b1.zip | |
Added 0F 3A 0F opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run0f.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index e934c6c2..508b3484 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -311,6 +311,33 @@ int Run0F(x64emu_t *emu, rex_t rex) } break; + case 0x3A: + opcode = F8; + switch(opcode) { + case 0xF: /* palignr */ + nextop = F8; + GETEM(1); + GETGM; + tmp8u = F8; + if (tmp8u >= 16) { + GM->q = 0; + } else if (tmp8u > 8) { + tmp8u -= 8; + GM->q >>= tmp8u*8; + } else if (tmp8u == 8 || tmp8u == 0) { + + } else { + GM->q <<= (8-tmp8u)*8; + GM->q |= (EM->q >> tmp8u*8); + } + break; + + default: + return 1; + } + break; + + GOCOND(0x40 , nextop = F8; GETED(0); |