about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-07-05 23:01:09 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-07-05 23:01:09 +0200
commita2aa5fc650f7e2d4e9400f76832b80689366f4af (patch)
tree5f1b27548b84613c1b1d383ba40b83d5b7cc4f60 /src/emu
parent26d4f21fa7b180e8e33d7d87f82919da5a57224e (diff)
downloadbox64-a2aa5fc650f7e2d4e9400f76832b80689366f4af.tar.gz
box64-a2aa5fc650f7e2d4e9400f76832b80689366f4af.zip
Added 66 0F 38 08/09/0A opcodes ([DYNAREC] too) (for #32 / Zoom)
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/x64run660f.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c
index f3679015..00a684e3 100644
--- a/src/emu/x64run660f.c
+++ b/src/emu/x64run660f.c
@@ -248,6 +248,27 @@ int Run660F(x64emu_t *emu, rex_t rex)
                 }

                 break;

 

+            case 0x08:  /* PSIGNB Gx, Ex */

+                nextop = F8;

+                GETEX(0);

+                GETGX;

+                for (int i=0; i<16; ++i)

+                    GX->sb[i] *= (EX->sb[i]<0)?-1:((EX->sb[i]>0)?1:0);

+            break;

+            case 0x09:  /* PSIGNW Gx, Ex */

+                nextop = F8;

+                GETEX(0);

+                GETGX;

+                for (int i=0; i<8; ++i)

+                    GX->sw[i] *= (EX->sw[i]<0)?-1:((EX->sw[i]>0)?1:0);

+            break;

+            case 0x0A:  /* PSIGND Gx, Ex */

+                nextop = F8;

+                GETEX(0);

+                GETGX;

+                for (int i=0; i<4; ++i)

+                    GX->sd[i] *= (EX->sd[i]<0)?-1:((EX->sd[i]>0)?1:0);

+            break;

             case 0x0B:  /* PMULHRSW Gx, Ex */

                 nextop = F8;

                 GETEX(0);