diff --git a/src/emu/cpu/i386/i386ops.h b/src/emu/cpu/i386/i386ops.h index 00a6528cd06..60996c6cd8b 100644 --- a/src/emu/cpu/i386/i386ops.h +++ b/src/emu/cpu/i386/i386ops.h @@ -525,6 +525,7 @@ static const X86_OPCODE x86_opcode_table[] = { 0x7E, OP_3BYTEF3|OP_SSE, SSEOP(movq_r128_r128m64), SSEOP(movq_r128_r128m64), }, { 0x7F, OP_3BYTEF3|OP_SSE, SSEOP(movdqu_rm128_r128), SSEOP(movdqu_rm128_r128), }, { 0xB8, OP_3BYTEF3|OP_PENTIUM, PENTIUMOP(popcnt_r16_rm16), PENTIUMOP(popcnt_r32_rm32), }, + { 0xBC, OP_3BYTEF3|OP_PENTIUM, PENTIUMOP(tzcnt_r16_rm16), PENTIUMOP(tzcnt_r32_rm32), }, { 0xC2, OP_3BYTEF3|OP_SSE, SSEOP(cmpss_r128_r128m32_i8), SSEOP(cmpss_r128_r128m32_i8),}, { 0xD6, OP_3BYTEF3|OP_SSE, SSEOP(movq2dq_r128_r64), SSEOP(movq2dq_r128_r64), }, { 0xE6, OP_3BYTEF3|OP_SSE, SSEOP(cvtdq2pd_r128_r128m64), SSEOP(cvtdq2pd_r128_r128m64)} diff --git a/src/emu/cpu/i386/pentops.c b/src/emu/cpu/i386/pentops.c index 5eb3d4090ae..aac1409c7dc 100644 --- a/src/emu/cpu/i386/pentops.c +++ b/src/emu/cpu/i386/pentops.c @@ -1159,6 +1159,20 @@ static void PENTIUMOP(popcnt_r32_rm32)(i386_state *cpustate) // Opcode f3 0f CYCLES(cpustate,1); // TODO: correct cycle count } +static void PENTIUMOP(tzcnt_r16_rm16)(i386_state *cpustate) +{ + // for CPUs that don't support TZCNT, fall back to BSF + i386_bsf_r16_rm16(cpustate); + // TODO: actually implement TZCNT +} + +static void PENTIUMOP(tzcnt_r32_rm32)(i386_state *cpustate) +{ + // for CPUs that don't support TZCNT, fall back to BSF + i386_bsf_r32_rm32(cpustate); + // TODO: actually implement TZCNT +} + INLINE INT8 SaturatedSignedWordToSignedByte(INT16 word) { if (word > 127)