mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-12-16 04:09:39 +00:00
JitArm64: Add function for setting constant overflow
This commit is contained in:
parent
2dead5009b
commit
e8060bd169
@ -376,6 +376,7 @@ protected:
|
||||
|
||||
void ComputeRC0(Arm64Gen::ARM64Reg reg);
|
||||
void ComputeRC0(u32 imm);
|
||||
void GenerateConstantOverflow(bool overflow);
|
||||
void ComputeCarry(Arm64Gen::ARM64Reg reg); // reg must contain 0 or 1
|
||||
void ComputeCarry(bool carry);
|
||||
void ComputeCarry();
|
||||
|
||||
@ -39,6 +39,25 @@ void JitArm64::ComputeRC0(u32 imm)
|
||||
MOVI2R(gpr.CR(0), s64(s32(imm)));
|
||||
}
|
||||
|
||||
void JitArm64::GenerateConstantOverflow(bool overflow)
|
||||
{
|
||||
ARM64Reg WA = gpr.GetReg();
|
||||
|
||||
if (overflow)
|
||||
{
|
||||
MOVI2R(WA, XER_OV_MASK | XER_SO_MASK);
|
||||
STRB(IndexType::Unsigned, WA, PPC_REG, PPCSTATE_OFF(xer_so_ov));
|
||||
}
|
||||
else
|
||||
{
|
||||
LDRB(IndexType::Unsigned, WA, PPC_REG, PPCSTATE_OFF(xer_so_ov));
|
||||
AND(WA, WA, LogicalImm(~XER_OV_MASK, GPRSize::B32));
|
||||
STRB(IndexType::Unsigned, WA, PPC_REG, PPCSTATE_OFF(xer_so_ov));
|
||||
}
|
||||
|
||||
gpr.Unlock(WA);
|
||||
}
|
||||
|
||||
void JitArm64::ComputeCarry(ARM64Reg reg)
|
||||
{
|
||||
js.carryFlag = CarryFlag::InPPCState;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user