mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-25 23:29:55 -06:00
some tiny A64 optimisations
This commit is contained in:
@ -1607,7 +1607,21 @@ void ARM64XEmitter::BICS(ARM64Reg Rd, ARM64Reg Rn, ARM64Reg Rm, ArithOption Shif
|
||||
|
||||
void ARM64XEmitter::MOV(ARM64Reg Rd, ARM64Reg Rm, ArithOption Shift)
|
||||
{
|
||||
ORR(Rd, Is64Bit(Rd) ? ZR : WZR, Rm, Shift);
|
||||
if (Shift.GetType() == ArithOption::TYPE_SHIFTEDREG)
|
||||
{
|
||||
switch (Shift.GetShiftType())
|
||||
{
|
||||
case ST_LSL: LSL(Rd, Rm, Shift.GetShiftAmount()); break;
|
||||
case ST_LSR: LSR(Rd, Rm, Shift.GetShiftAmount()); break;
|
||||
case ST_ASR: ASR(Rd, Rm, Shift.GetShiftAmount()); break;
|
||||
case ST_ROR: ROR(Rd, Rm, Shift.GetShiftAmount()); break;
|
||||
default: ASSERT_MSG(DYNA_REC, false, "Invalid shift type"); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ORR(Rd, Is64Bit(Rd) ? ZR : WZR, Rm, Shift);
|
||||
}
|
||||
}
|
||||
|
||||
void ARM64XEmitter::MOV(ARM64Reg Rd, ARM64Reg Rm)
|
||||
|
@ -469,6 +469,8 @@ public:
|
||||
}
|
||||
TypeSpecifier GetType() const { return m_type; }
|
||||
ARM64Reg GetReg() const { return m_destReg; }
|
||||
ShiftType GetShiftType() const { return m_shifttype; }
|
||||
u32 GetShiftAmount() const { return m_shift; }
|
||||
u32 GetData() const
|
||||
{
|
||||
switch (m_type)
|
||||
|
Reference in New Issue
Block a user