diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 12:14:30 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 12:14:30 +0200 |
| commit | c765943fdff2d1ad60d0817b67fafccc1190fa57 (patch) | |
| tree | 58f6d54ae83f96b0b530fcaf4719909aee364a14 /src | |
| parent | 91898d1512eff8dc284e3bc8477675040a34b140 (diff) | |
| download | box64-c765943fdff2d1ad60d0817b67fafccc1190fa57.tar.gz box64-c765943fdff2d1ad60d0817b67fafccc1190fa57.zip | |
Added 66 0F 3A 42 opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run660f.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 2c5e503b..b6f6a7e6 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -972,6 +972,27 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) GX->f[i] = (tmp8u&(1<<i))?tmpf:0.0f; break; + case 0x42: /* MPSADBW Gx, Ex, Ib */ + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; + { + int src = tmp8u&3; + int dst = (tmp8u>>2)&1; + int b[11]; + for (int i=0; i<11; ++i) + b[i] = GX->ub[dst*4+i]; + for(int i=0; i<8; ++i) { + int tmp = abs(b[i+0]-EX->ub[src*4+0]); + tmp += abs(b[i+1]-EX->ub[src*4+1]); + tmp += abs(b[i+2]-EX->ub[src*4+2]); + tmp += abs(b[i+3]-EX->ub[src*4+3]); + GX->uw[i] = tmp; + } + } + break; + case 0x44: /* PCLMULQDQ Gx, Ex, Ib */ nextop = F8; GETEX(1); |