mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
drcbex64: optimize FMOV (nw)
This commit is contained in:
parent
8a9e872224
commit
bfbd0443fe
1 changed files with 18 additions and 4 deletions
|
@ -5952,15 +5952,29 @@ void drcbe_x64::op_fmov(x86code *&dst, const instruction &inst)
|
|||
// 32-bit form
|
||||
if (inst.size() == 4)
|
||||
{
|
||||
emit_movss_r128_p32(dst, dstreg, srcp); // movss dstreg,srcp
|
||||
emit_movss_p32_r128(dst, dstp, dstreg); // movss dstp,dstreg
|
||||
if (srcp.is_float_register())
|
||||
{
|
||||
emit_movss_p32_r128(dst, dstp, srcp.ireg()); // movss dstp,srcp
|
||||
}
|
||||
else
|
||||
{
|
||||
emit_movss_r128_p32(dst, dstreg, srcp); // movss dstreg,srcp
|
||||
emit_movss_p32_r128(dst, dstp, dstreg); // movss dstp,dstreg
|
||||
}
|
||||
}
|
||||
|
||||
// 64-bit form
|
||||
else if (inst.size() == 8)
|
||||
{
|
||||
emit_movsd_r128_p64(dst, dstreg, srcp); // movsd dstreg,srcp
|
||||
emit_movsd_p64_r128(dst, dstp, dstreg); // movsd dstp,dstreg
|
||||
if (srcp.is_float_register())
|
||||
{
|
||||
emit_movsd_p64_r128(dst, dstp, srcp.ireg()); // movsd dstp,srcp
|
||||
}
|
||||
else
|
||||
{
|
||||
emit_movsd_r128_p64(dst, dstreg, srcp); // movsd dstreg,srcp
|
||||
emit_movsd_p64_r128(dst, dstp, dstreg); // movsd dstp,dstreg
|
||||
}
|
||||
}
|
||||
|
||||
// resolve the jump
|
||||
|
|
Loading…
Reference in a new issue