mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-03 11:32:43 +01:00
JitArm64: Add function for setting constant overflow
This commit is contained in:
parent
be8e3fc5ae
commit
ff965f1937
@ -362,6 +362,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();
|
||||
|
@ -43,6 +43,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…
x
Reference in New Issue
Block a user