Implement and use MOVZX(64, 32,...)

Probably better to keep that same-register-MOV assert useful. Also,
explicit type extension documents whats happening.

Internally, this boils down to the original MOV, but without the assert.
This commit is contained in:
Pierre 2012-08-25 01:00:13 +02:00
parent 701b5916ab
commit 6b5b8ab5be
2 changed files with 5 additions and 1 deletions

View File

@ -768,6 +768,10 @@ void XEmitter::MOVZX(int dbits, int sbits, X64Reg dest, OpArg src)
Write8(0x0F);
Write8(0xB7);
}
else if (sbits == 32 && dbits == 64)
{
Write8(0x8B);
}
else
{
Crash();

View File

@ -1977,7 +1977,7 @@ void Jit64::slwx(UGeckoInstruction inst)
}
else
{
MOV(32, gpr.R(a), gpr.R(a));
MOVZX(64, 32, gpr.R(a).GetSimpleReg(), gpr.R(a));
}
gpr.UnlockAll();
gpr.UnlockAllX();