mirror of
https://github.com/dolphin-emu/dolphin
synced 2025-10-05 16:03:02 +02:00
dcbz: Fix AVX path
This commit is contained in:
@@ -3036,7 +3036,7 @@ void XEmitter::VPXOR(X64Reg regOp1, X64Reg regOp2, const OpArg& arg)
|
||||
|
||||
void XEmitter::VMOVAPS(const OpArg& arg, X64Reg regOp)
|
||||
{
|
||||
WriteAVXOp(0x00, 0x29, X64Reg::INVALID_REG, regOp, arg);
|
||||
WriteAVXOp(0x00, 0x29, regOp, X64Reg::INVALID_REG, arg);
|
||||
}
|
||||
|
||||
void XEmitter::VZEROUPPER()
|
||||
|
@@ -474,9 +474,18 @@ void Jit64::dcbz(UGeckoInstruction inst)
|
||||
FixupBranch slow = J_CC(CC_Z, Jump::Near);
|
||||
|
||||
// Fast path: compute full address, then zero out 32 bytes of memory.
|
||||
XORPS(XMM0, R(XMM0));
|
||||
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 0), XMM0);
|
||||
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 16), XMM0);
|
||||
if (cpu_info.bAVX)
|
||||
{
|
||||
VXORPS(XMM0, XMM0, R(XMM0));
|
||||
VMOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 0), YMM0);
|
||||
VZEROUPPER();
|
||||
}
|
||||
else
|
||||
{
|
||||
XORPS(XMM0, R(XMM0));
|
||||
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 0), XMM0);
|
||||
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 16), XMM0);
|
||||
}
|
||||
|
||||
// Slow path: call the general-case code.
|
||||
SwitchToFarCode();
|
||||
|
Reference in New Issue
Block a user