about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-06-14 12:19:21 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-06-14 12:19:21 +0200
commit883fc1681d214efe8c2d43089e2e38900d6d7db2 (patch)
tree9d5a19abcebdc6bde925e453dc28bd18beab354d /src/emu
parent6b2b672c5ec8adba9a5a184c114d678339cf6200 (diff)
downloadbox64-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.c25
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);