about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-04-28 23:05:45 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-04-28 23:05:45 +0200
commita9a338ff428c0a30ffbc0cb0a26a96ed7e4aa9a0 (patch)
tree49bc571f57dd4e6d5f4bb14c114fd5254d89172b /src
parent06a21d490bdbf3760c3bdb3641926b0837309e06 (diff)
downloadbox64-a9a338ff428c0a30ffbc0cb0a26a96ed7e4aa9a0.tar.gz
box64-a9a338ff428c0a30ffbc0cb0a26a96ed7e4aa9a0.zip
[INTERPRETER] Fixed pcmp[ei]strm opcodes
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run660f.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c
index 17b796fe..3cee04c9 100644
--- a/src/emu/x64run660f.c
+++ b/src/emu/x64run660f.c
@@ -1127,12 +1127,12 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
                 tmp32u = sse42_compare_string_explicit_len(emu, EX, R_EDX, GX, R_EAX, tmp8u);

                 if(tmp8u&0b1000000) {

                     switch(tmp8u&1) {

-                        case 0: for(int i=0; i<16; ++i) GX->ub[i] = ((tmp32u>>i)&1)?0xff:0x00; break;

-                        case 1: for(int i=0; i<8; ++i) GX->uw[i] = ((tmp32u>>i)&1)?0xffff:0x0000; break;

+                        case 0: for(int i=0; i<16; ++i) emu->xmm[0].ub[i] = ((tmp32u>>i)&1)?0xff:0x00; break;

+                        case 1: for(int i=0; i<8; ++i) emu->xmm[0].uw[i] = ((tmp32u>>i)&1)?0xffff:0x0000; break;

                     }

                 } else {

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

-                    GX->uw[0] = tmp32u;

+                    emu->xmm[0].q[1] = emu->xmm[0].q[0] = 0;

+                    emu->xmm[0].uw[0] = tmp32u;

                 }

                 break;

             case 0x61:  /* PCMPESTRI */

@@ -1156,12 +1156,12 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
                 tmp32u = sse42_compare_string_implicit_len(emu, EX, GX, tmp8u);

                 if(tmp8u&0b1000000) {

                     switch(tmp8u&1) {

-                        case 0: for(int i=0; i<16; ++i) GX->ub[i] = ((tmp32u>>i)&1)?0xff:0x00; break;

-                        case 1: for(int i=0; i<8; ++i) GX->uw[i] = ((tmp32u>>i)&1)?0xffff:0x0000; break;

+                        case 0: for(int i=0; i<16; ++i) emu->xmm[0].ub[i] = ((tmp32u>>i)&1)?0xff:0x00; break;

+                        case 1: for(int i=0; i<8; ++i) emu->xmm[0].uw[i] = ((tmp32u>>i)&1)?0xffff:0x0000; break;

                     }

                 } else {

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

-                    GX->uw[0] = tmp32u;

+                    emu->xmm[0].q[1] = emu->xmm[0].q[0] = 0;

+                    emu->xmm[0].uw[0] = tmp32u;

                 }

                 break;

             case 0x63:  /* PCMPISTRI */