about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-02-11 18:48:05 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-02-11 18:48:05 +0100
commit7224281cd60543de7e800bff74c892995125b8b1 (patch)
treebde879fd5f9fa0798972dda6daa441be6a497560 /src
parente0dfef846199c4470dc0bdf26214ec8d30a0d2ce (diff)
downloadbox64-7224281cd60543de7e800bff74c892995125b8b1.tar.gz
box64-7224281cd60543de7e800bff74c892995125b8b1.zip
Added 0F 3A 0F opcode
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run0f.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c
index e934c6c2..508b3484 100644
--- a/src/emu/x64run0f.c
+++ b/src/emu/x64run0f.c
@@ -311,6 +311,33 @@ int Run0F(x64emu_t *emu, rex_t rex)
             }

             break;

 

+        case 0x3A:

+            opcode = F8;

+            switch(opcode) {

+                case 0xF:  /* palignr */

+                    nextop = F8;

+                    GETEM(1);

+                    GETGM;

+                    tmp8u = F8;

+                    if (tmp8u >= 16) {

+                        GM->q = 0;

+                    } else if (tmp8u > 8) {

+                        tmp8u -= 8;

+                        GM->q >>= tmp8u*8;

+                    } else if (tmp8u == 8 || tmp8u == 0) {

+

+                    } else {

+                        GM->q <<= (8-tmp8u)*8;

+                        GM->q |= (EM->q >> tmp8u*8);

+                    }

+                    break;

+

+                default:

+                    return 1;

+            }

+            break;

+

+

         GOCOND(0x40

             , nextop = F8;

             GETED(0);