about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-03-30 12:16:25 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-03-30 12:16:25 +0200
commit94c3cec69f7a1b497e0de8c019fab684d2769394 (patch)
tree90256b8e9d327518c55c62a3df023fa69b3ec9d1 /src
parenta9a82e581a2cff17368fc369f1d6517e4845a2e6 (diff)
downloadbox64-94c3cec69f7a1b497e0de8c019fab684d2769394.tar.gz
box64-94c3cec69f7a1b497e0de8c019fab684d2769394.zip
Added 66 0F 38 14/16 opcodes
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run660f.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c
index 5d4463bd..148c99eb 100644
--- a/src/emu/x64run660f.c
+++ b/src/emu/x64run660f.c
@@ -358,6 +358,7 @@ int Run660F(x64emu_t *emu, rex_t rex)
                 nextop = F8;

                 GETEX(0);

                 GETGX;

+                CHECK_FLAGS(emu);

                 CONDITIONAL_SET_FLAG(!(GX->u128&EX->u128), F_ZF);

                 CONDITIONAL_SET_FLAG(!((~GX->u128)&EX->u128), F_CF);

                 break;

@@ -676,6 +677,25 @@ int Run660F(x64emu_t *emu, rex_t rex)
                 }

                 break;

 

+            case 0x14:      // PEXTRB EB, GX, u8

+                nextop = F8;

+                GETEB(1);

+                GETGX;

+                tmp8u = F8;

+                EB->byte[0] = GX->ub[tmp8u&0x0f];

+                break;

+

+            case 0x16:      // PEXTRD/Q ED, GX, u8

+                nextop = F8;

+                GETED(1);

+                GETGX;

+                tmp8u = F8;

+                if(rex.w) {

+                    ED->q[0] = GX->q[tmp8u&1];

+                } else {

+                    ED->q[0] = GX->ud[tmp8u&3];

+                }

+                break;

             case 0x17:      // EXTRACTPS ED, GX, u8

                 nextop = F8;

                 GETED(1);