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:
JosJuice 2024-03-23 14:30:00 +01:00
parent 3948ac9513
commit 9f0a7c9875
2 changed files with 3 additions and 5 deletions

View File

@ -351,7 +351,7 @@ protected:
void UpdateRoundingMode();
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(bool carry);
void ComputeCarry();

View File

@ -37,12 +37,10 @@ void JitArm64::ComputeRC0(ARM64Reg reg)
SXTW(gpr.CR(0), reg);
}
void JitArm64::ComputeRC0(u64 imm)
void JitArm64::ComputeRC0(u32 imm)
{
gpr.BindCRToRegister(0, false);
MOVI2R(gpr.CR(0), imm);
if (imm & 0x80000000)
SXTW(gpr.CR(0), EncodeRegTo32(gpr.CR(0)));
MOVI2R(gpr.CR(0), s64(s32(imm)));
}
void JitArm64::ComputeCarry(ARM64Reg reg)