diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-04-28 23:05:45 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-04-28 23:05:45 +0200 |
| commit | a9a338ff428c0a30ffbc0cb0a26a96ed7e4aa9a0 (patch) | |
| tree | 49bc571f57dd4e6d5f4bb14c114fd5254d89172b /src | |
| parent | 06a21d490bdbf3760c3bdb3641926b0837309e06 (diff) | |
| download | box64-a9a338ff428c0a30ffbc0cb0a26a96ed7e4aa9a0.tar.gz box64-a9a338ff428c0a30ffbc0cb0a26a96ed7e4aa9a0.zip | |
[INTERPRETER] Fixed pcmp[ei]strm opcodes
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run660f.c | 16 |
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 */ |