x64Emitter: Prefer MOVAPS to MOVSD
* The high half of regOp is immediately overwritten so the value in it is irrelevant. * MOVSD produces an unnecessary dependency on the high half of regOp. * MOVAPS is implemented as a register rename on modern microarchitectures.
This commit is contained in:
parent
2d4dd8cdc1
commit
1baa8ee970
|
@ -2429,8 +2429,14 @@ void XEmitter::MOVDDUP(X64Reg regOp, const OpArg& arg)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!arg.IsSimpleReg(regOp))
|
if (!arg.IsSimpleReg())
|
||||||
|
{
|
||||||
MOVSD(regOp, arg);
|
MOVSD(regOp, arg);
|
||||||
|
}
|
||||||
|
else if (regOp != arg.GetSimpleReg())
|
||||||
|
{
|
||||||
|
MOVAPD(regOp, arg);
|
||||||
|
}
|
||||||
UNPCKLPD(regOp, R(regOp));
|
UNPCKLPD(regOp, R(regOp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue