Jit_FloatingPoint: fsign

This commit is contained in:
MerryMage 2018-10-15 21:01:56 +01:00
parent 537eeb7ebf
commit d62ca40496

View File

@ -380,29 +380,28 @@ void Jit64::fsign(UGeckoInstruction inst)
int b = inst.FB; int b = inst.FB;
bool packed = inst.OPCD == 4; bool packed = inst.OPCD == 4;
fpr.Lock(b, d); RCOpArg src = fpr.Use(b, RCMode::Read);
OpArg src = fpr.R(b); RCX64Reg Rd = fpr.Bind(d, RCMode::Write);
fpr.BindToRegister(d, false); RegCache::Realize(src, Rd);
switch (inst.SUBOP10) switch (inst.SUBOP10)
{ {
case 40: // neg case 40: // neg
avx_op(&XEmitter::VXORPD, &XEmitter::XORPD, fpr.RX(d), src, avx_op(&XEmitter::VXORPD, &XEmitter::XORPD, Rd, src, MConst(packed ? psSignBits2 : psSignBits),
MConst(packed ? psSignBits2 : psSignBits), packed); packed);
break; break;
case 136: // nabs case 136: // nabs
avx_op(&XEmitter::VORPD, &XEmitter::ORPD, fpr.RX(d), src, avx_op(&XEmitter::VORPD, &XEmitter::ORPD, Rd, src, MConst(packed ? psSignBits2 : psSignBits),
MConst(packed ? psSignBits2 : psSignBits), packed); packed);
break; break;
case 264: // abs case 264: // abs
avx_op(&XEmitter::VANDPD, &XEmitter::ANDPD, fpr.RX(d), src, avx_op(&XEmitter::VANDPD, &XEmitter::ANDPD, Rd, src, MConst(packed ? psAbsMask2 : psAbsMask),
MConst(packed ? psAbsMask2 : psAbsMask), packed); packed);
break; break;
default: default:
PanicAlert("fsign bleh"); PanicAlert("fsign bleh");
break; break;
} }
fpr.UnlockAll();
} }
void Jit64::fselx(UGeckoInstruction inst) void Jit64::fselx(UGeckoInstruction inst)