about summary refs log tree commit diff stats
path: root/src/emu/x64run660f.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/x64run660f.c')
-rw-r--r--src/emu/x64run660f.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c
index 3d1939ca..660ac028 100644
--- a/src/emu/x64run660f.c
+++ b/src/emu/x64run660f.c
@@ -123,6 +123,15 @@ int Run660F(x64emu_t *emu, rex_t rex)
         CLEAR_FLAG(F_OF); CLEAR_FLAG(F_AF); CLEAR_FLAG(F_SF);

         break;

 

+    GOCOND(0x40

+        , nextop = F8;

+        CHECK_FLAGS(emu);

+        GETEW(0);

+        GETGW;

+        , if(rex.w) GW->q[0] = EW->q[0]; else GW->word[0] = EW->word[0];

+        ,

+    )                               /* 0x40 -> 0x4F CMOVxx Gw,Ew */ // conditional move, no sign

+

     case 0x54:                      /* ANDPD Gx, Ex */

         nextop = F8;

         GETEX(0);

@@ -377,6 +386,16 @@ int Run660F(x64emu_t *emu, rex_t rex)
         EX->q[1] = GX->q[1];

         break;

 

+    case 0xBE:                      /* MOVSX Gw,Eb */

+        nextop = F8;

+        GETEB(0);

+        GETGW;

+        if(rex.w)

+            GW->sq[0] = EB->sbyte[0];

+        else

+            GW->sword[0] = EB->sbyte[0];

+        break;

+

     case 0xD6:                      /* MOVQ Ex,Gx */

         nextop = F8;

         GETEX(0);