static bool fsel(PPCEmuAssembler& a, Instruction instr) { auto dst = a.loadRegisterWrite(a.fprps[instr.frD]); auto srcB = a.loadRegisterRead(a.fprps[instr.frB]); auto srcC = a.loadRegisterRead(a.fprps[instr.frC]); auto tmp = a.allocXmmTmp(); a.pxor(tmp, tmp); constexpr auto NLE_US = 6; a.cmpsd(tmp, a.loadRegisterRead(a.fprps[instr.frA]), NLE_US); auto tmp2 = a.allocXmmTmp(); a.movapd(tmp2, tmp); a.pand(tmp, srcB); a.pandn(tmp2, srcC); a.por(tmp2, tmp); a.movsd(dst, tmp2); return true; }