From b05c449dd0460deb4d2007cd24cb03c82db2ebaf Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Fri, 9 Jul 2021 21:31:50 +0200 Subject: Added F3 0F B8 opcode (for #33) --- src/emu/x64runf30f.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/emu') diff --git a/src/emu/x64runf30f.c b/src/emu/x64runf30f.c index a85a85e7..a5e02d59 100644 --- a/src/emu/x64runf30f.c +++ b/src/emu/x64runf30f.c @@ -238,6 +238,24 @@ int RunF30F(x64emu_t *emu, rex_t rex) memcpy(EX, GX, 16); // unaligned... break; + case 0xB8: /* POPCNT Gd,Ed */ + nextop = F8; + GETED(0); + GETGD; + if(rex.w) + GD->q[0] = __builtin_popcountl(ED->q[0]); + else + GD->q[0] = __builtin_popcount(ED->dword[0]); + RESET_FLAGS(emu); + CLEAR_FLAG(F_OF); + CLEAR_FLAG(F_SF); + CLEAR_FLAG(F_ZF); + CLEAR_FLAG(F_AF); + CLEAR_FLAG(F_CF); + CLEAR_FLAG(F_PF); + CONDITIONAL_SET_FLAG(GD->q[0]==0, F_ZF); + break; + case 0xBC: /* TZCNT Ed,Gd */ CHECK_FLAGS(emu); nextop = F8; -- cgit 1.4.1