[INTERP] Added 66 F3 0F BC opcode

This commit is contained in:
ptitSeb 2025-04-27 14:15:29 +02:00
parent be63129179
commit 950371427d

View File

@ -55,6 +55,39 @@ uintptr_t Run66F30F(x64emu_t *emu, rex_t rex, uintptr_t addr)
switch(opcode) {
case 0xBC: /* TZCNT Ed,Gd */
CHECK_FLAGS(emu);
nextop = F8;
GETEW(0);
GETGW;
if(rex.w) {
tmp64u = ED->q[0];
if(tmp64u) {
tmp8u = 0;
while(!(tmp64u&(1LL<<tmp8u))) ++tmp8u;
GD->q[0] = tmp8u;
CONDITIONAL_SET_FLAG(tmp8u==0, F_ZF);
CLEAR_FLAG(F_CF);
} else {
CLEAR_FLAG(F_ZF);
SET_FLAG(F_CF);
GD->q[0] = 64;
}
} else {
tmp32u = ED->word[0];
if(tmp32u) {
tmp8u = 0;
while(!(tmp32u&(1<<tmp8u))) ++tmp8u;
GD->word[0] = tmp8u;
CONDITIONAL_SET_FLAG(tmp8u==0, F_ZF);
CLEAR_FLAG(F_CF);
} else {
CLEAR_FLAG(F_ZF);
SET_FLAG(F_CF);
GD->word[0] = 16;
}
}
break;
case 0xBD: /* LZCNT Ed,Gd */
CHECK_FLAGS(emu);
nextop = F8;