diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-06-14 12:19:21 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-06-14 12:19:21 +0200 |
| commit | 883fc1681d214efe8c2d43089e2e38900d6d7db2 (patch) | |
| tree | 9d5a19abcebdc6bde925e453dc28bd18beab354d /src/emu | |
| parent | 6b2b672c5ec8adba9a5a184c114d678339cf6200 (diff) | |
| download | box64-883fc1681d214efe8c2d43089e2e38900d6d7db2.tar.gz box64-883fc1681d214efe8c2d43089e2e38900d6d7db2.zip | |
Added 66 0F 3A 0B opcode ([DYNAREC] too)
Diffstat (limited to 'src/emu')
| -rw-r--r-- | src/emu/x64run660f.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 3b2ad0cf..0c287acd 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -309,6 +309,31 @@ int Run660F(x64emu_t *emu, rex_t rex) case 0x3A: // these are some SSE3 opcodes opcode = F8; switch(opcode) { + case 0x0B: // ROUNDSD Gx, Ex, u8 + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; // ignoring bit 3 interupt thingy + if(tmp8u&4) + tmp8u = (emu->mxcsr>>13)&3; + else + tmp8u &= 3; + switch(tmp8u) { + case ROUND_Nearest: + GX->d[0] = floor(EX->d[0]+0.5); + break; + case ROUND_Down: + GX->d[0] = floor(EX->d[0]); + break; + case ROUND_Up: + GX->d[0] = ceil(EX->d[0]); + break; + case ROUND_Chop: + GX->d[0] = EX->d[0]; + break; + } + break; + case 0x0F: // PALIGNR GX, EX, u8 nextop = F8; GETEX(1); |