about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-04-12 14:29:19 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-04-12 14:29:19 +0200
commit0ce7390ac1fa5221f47b954ae954586de7df13ab (patch)
tree9823ae0ae33614d51c32860ae478239dd86bbea0 /src
parent00f5eb53388905076bf19722b76b2ca62035fb53 (diff)
downloadbox64-0ce7390ac1fa5221f47b954ae954586de7df13ab.tar.gz
box64-0ce7390ac1fa5221f47b954ae954586de7df13ab.zip
Added 64 F3 0F 11/59 opcodes
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run64.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/emu/x64run64.c b/src/emu/x64run64.c
index 676d6204..f11344f2 100644
--- a/src/emu/x64run64.c
+++ b/src/emu/x64run64.c
@@ -108,14 +108,20 @@ int Run64(x64emu_t *emu, rex_t rex)
             opcode = F8;

             switch(opcode) {

 

-                case 0x11:  /* MOVSD Ex, Gx */

+                case 0x11:

                     switch(rep) {

-                        case 1:

+                        case 1: /* MOVSD Ex, Gx */

                             nextop = F8;

                             GETEX_OFFS(0, tlsdata);

                             GETGX;

                             EX->q[0] = GX->q[0];

                             break;

+                        case 2: /* MOVSS FS:Ex, Gx */

+                            nextop = F8;

+                            GETEX_OFFS(0, tlsdata);

+                            GETGX;

+                            EX->ud[0] = GX->ud[0];

+                            break;

                         default:

                             return 1;

                     }

@@ -134,6 +140,20 @@ int Run64(x64emu_t *emu, rex_t rex)
                             return 1;

                     }

                     break;

+                

+                case 0x59:

+                    switch(rep) {

+                        case 2: /* MULSS Gx, Ex */

+                            nextop = F8;

+                            GETEX_OFFS(0, tlsdata);

+                            GETGX;

+                            GX->f[0] *= EX->f[0];

+                            break;

+

+                        default:

+                            return 1;

+                    }

+                    break;

 

                 default:

                     return 1;