JitArm64: Skip SXTW in ComputeRC0(u64)
MOVI2R can set the upper bits to ones for free by using MOVN instead of MOVZ.
This commit is contained in:
parent
3948ac9513
commit
9f0a7c9875
|
@ -351,7 +351,7 @@ protected:
|
||||||
void UpdateRoundingMode();
|
void UpdateRoundingMode();
|
||||||
|
|
||||||
void ComputeRC0(Arm64Gen::ARM64Reg reg);
|
void ComputeRC0(Arm64Gen::ARM64Reg reg);
|
||||||
void ComputeRC0(u64 imm);
|
void ComputeRC0(u32 imm);
|
||||||
void ComputeCarry(Arm64Gen::ARM64Reg reg); // reg must contain 0 or 1
|
void ComputeCarry(Arm64Gen::ARM64Reg reg); // reg must contain 0 or 1
|
||||||
void ComputeCarry(bool carry);
|
void ComputeCarry(bool carry);
|
||||||
void ComputeCarry();
|
void ComputeCarry();
|
||||||
|
|
|
@ -37,12 +37,10 @@ void JitArm64::ComputeRC0(ARM64Reg reg)
|
||||||
SXTW(gpr.CR(0), reg);
|
SXTW(gpr.CR(0), reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JitArm64::ComputeRC0(u64 imm)
|
void JitArm64::ComputeRC0(u32 imm)
|
||||||
{
|
{
|
||||||
gpr.BindCRToRegister(0, false);
|
gpr.BindCRToRegister(0, false);
|
||||||
MOVI2R(gpr.CR(0), imm);
|
MOVI2R(gpr.CR(0), s64(s32(imm)));
|
||||||
if (imm & 0x80000000)
|
|
||||||
SXTW(gpr.CR(0), EncodeRegTo32(gpr.CR(0)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JitArm64::ComputeCarry(ARM64Reg reg)
|
void JitArm64::ComputeCarry(ARM64Reg reg)
|
||||||
|
|
Loading…
Reference in New Issue