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
|
||||
{
|
||||
if (!arg.IsSimpleReg(regOp))
|
||||
if (!arg.IsSimpleReg())
|
||||
{
|
||||
MOVSD(regOp, arg);
|
||||
}
|
||||
else if (regOp != arg.GetSimpleReg())
|
||||
{
|
||||
MOVAPD(regOp, arg);
|
||||
}
|
||||
UNPCKLPD(regOp, R(regOp));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue