mirror of
https://github.com/dolphin-emu/dolphin
synced 2025-10-06 00:13:03 +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)
|
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()
|
void XEmitter::VZEROUPPER()
|
||||||
|
@@ -474,9 +474,18 @@ void Jit64::dcbz(UGeckoInstruction inst)
|
|||||||
FixupBranch slow = J_CC(CC_Z, Jump::Near);
|
FixupBranch slow = J_CC(CC_Z, Jump::Near);
|
||||||
|
|
||||||
// Fast path: compute full address, then zero out 32 bytes of memory.
|
// Fast path: compute full address, then zero out 32 bytes of memory.
|
||||||
XORPS(XMM0, R(XMM0));
|
if (cpu_info.bAVX)
|
||||||
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 0), XMM0);
|
{
|
||||||
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 16), XMM0);
|
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.
|
// Slow path: call the general-case code.
|
||||||
SwitchToFarCode();
|
SwitchToFarCode();
|
||||||
|
Reference in New Issue
Block a user