From 9ec7930eb1618cb7ebbdd769681ffe4e6c3e0d4d Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Mon, 17 Feb 2025 21:14:10 +0800 Subject: [INTERP] Added 66 0F 19 NOP opcode ([DYNAREC] too) (#2375) --- src/dynarec/arm64/dynarec_arm64_660f.c | 1 + src/dynarec/la64/dynarec_la64_660f.c | 3 ++- src/dynarec/rv64/dynarec_rv64_660f.c | 1 + src/dynarec/rv64/dynarec_rv64_660f_vector.c | 1 + src/emu/x64run660f.c | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index 2306d1f3..a1fa87ec 100644 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -168,6 +168,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n SMWRITE2(); break; + case 0x19: case 0x1F: INST_NAME("NOP (multibyte)"); nextop = F8; diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c index 0c19b1c5..abe0a4fb 100644 --- a/src/dynarec/la64/dynarec_la64_660f.c +++ b/src/dynarec/la64/dynarec_la64_660f.c @@ -172,6 +172,7 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int VSTELM_D(v0, ed, 0, 1); SMWRITE2(); break; + case 0x19: case 0x1F: INST_NAME("NOP (multibyte)"); nextop = F8; @@ -508,7 +509,7 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int GETEX(q1, 0, 0); GETGX_empty(q0); VSEQ_D(q0, q0, q1); - break; + break; case 0x2B: INST_NAME("PACKUSDW Gx, Ex"); // SSE4 opcode! nextop = F8; diff --git a/src/dynarec/rv64/dynarec_rv64_660f.c b/src/dynarec/rv64/dynarec_rv64_660f.c index 98c00e29..14aca05f 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f.c +++ b/src/dynarec/rv64/dynarec_rv64_660f.c @@ -146,6 +146,7 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int LD(x3, gback, gdoffset + 8); SD(x3, wback, fixedaddress); break; + case 0x19: case 0x1F: INST_NAME("NOP (multibyte)"); nextop = F8; diff --git a/src/dynarec/rv64/dynarec_rv64_660f_vector.c b/src/dynarec/rv64/dynarec_rv64_660f_vector.c index 41960c73..038f6f3f 100644 --- a/src/dynarec/rv64/dynarec_rv64_660f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_660f_vector.c @@ -190,6 +190,7 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i SD(x5, ed, fixedaddress); SMWRITE2(); break; + case 0x19: case 0x1F: return 0; case 0x28: diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 372d4a64..7d4a36a0 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -174,6 +174,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) ED->q[0] = GX->q[1]; break; + case 0x19: case 0x1F: /* NOP (multi-byte) */ nextop = F8; FAKEED(0); -- cgit 1.4.1