[ARM] Clean up LSL, LSR, and ASR emitters, we don't need a separate instruction for each to support registers.
This commit is contained in:
parent
4914665429
commit
f5e1b4659a
|
@ -491,12 +491,11 @@ void ARMXEmitter::POP(const int num, ...)
|
||||||
|
|
||||||
void ARMXEmitter::WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg src, Operand2 op2)
|
void ARMXEmitter::WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg src, Operand2 op2)
|
||||||
{
|
{
|
||||||
|
if (op2.GetType() == TYPE_REG)
|
||||||
|
Write32(condition | (13 << 21) | (SetFlags << 20) | (dest << 12) | (op2.GetData() << 8) | ((op + 1) << 4) | src);
|
||||||
|
else
|
||||||
Write32(condition | (13 << 21) | (SetFlags << 20) | (dest << 12) | op2.Imm5() | (op << 4) | src);
|
Write32(condition | (13 << 21) | (SetFlags << 20) | (dest << 12) | op2.Imm5() | (op << 4) | src);
|
||||||
}
|
}
|
||||||
void ARMXEmitter::WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg src, ARMReg op2)
|
|
||||||
{
|
|
||||||
Write32(condition | (13 << 21) | (SetFlags << 20) | (dest << 12) | (op2 << 8) | (op << 4) | src);
|
|
||||||
}
|
|
||||||
|
|
||||||
// IMM, REG, IMMSREG, RSR
|
// IMM, REG, IMMSREG, RSR
|
||||||
// -1 for invalid if the instruction doesn't support that
|
// -1 for invalid if the instruction doesn't support that
|
||||||
|
@ -610,16 +609,10 @@ void ARMXEmitter::SDIV(ARMReg dest, ARMReg dividend, ARMReg divisor)
|
||||||
}
|
}
|
||||||
void ARMXEmitter::LSL (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(0, false, dest, src, op2);}
|
void ARMXEmitter::LSL (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(0, false, dest, src, op2);}
|
||||||
void ARMXEmitter::LSLS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(0, true, dest, src, op2);}
|
void ARMXEmitter::LSLS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(0, true, dest, src, op2);}
|
||||||
void ARMXEmitter::LSL (ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(1, false, dest, src, op2);}
|
|
||||||
void ARMXEmitter::LSLS(ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(1, true, dest, src, op2);}
|
|
||||||
void ARMXEmitter::LSR (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(2, false, dest, src, op2);}
|
void ARMXEmitter::LSR (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(2, false, dest, src, op2);}
|
||||||
void ARMXEmitter::LSRS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(2, true, dest, src, op2);}
|
void ARMXEmitter::LSRS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(2, true, dest, src, op2);}
|
||||||
void ARMXEmitter::LSR (ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(3, false, dest, src, op2);}
|
|
||||||
void ARMXEmitter::LSRS(ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(3, true, dest, src, op2);}
|
|
||||||
void ARMXEmitter::ASR (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(4, false, dest, src, op2);}
|
void ARMXEmitter::ASR (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(4, false, dest, src, op2);}
|
||||||
void ARMXEmitter::ASRS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(4, true, dest, src, op2);}
|
void ARMXEmitter::ASRS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(4, true, dest, src, op2);}
|
||||||
void ARMXEmitter::ASR (ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(5, false, dest, src, op2);}
|
|
||||||
void ARMXEmitter::ASRS(ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(5, true, dest, src, op2);}
|
|
||||||
|
|
||||||
void ARMXEmitter::MUL (ARMReg dest, ARMReg src, ARMReg op2)
|
void ARMXEmitter::MUL (ARMReg dest, ARMReg src, ARMReg op2)
|
||||||
{
|
{
|
||||||
|
|
|
@ -351,7 +351,6 @@ private:
|
||||||
|
|
||||||
void WriteStoreOp(u32 Op, ARMReg Rt, ARMReg Rn, Operand2 op2, bool RegAdd);
|
void WriteStoreOp(u32 Op, ARMReg Rt, ARMReg Rn, Operand2 op2, bool RegAdd);
|
||||||
void WriteRegStoreOp(u32 op, ARMReg dest, bool WriteBack, u16 RegList);
|
void WriteRegStoreOp(u32 op, ARMReg dest, bool WriteBack, u16 RegList);
|
||||||
void WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg src, Operand2 op2);
|
void WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void WriteSignedMultiply(u32 Op, u32 Op2, u32 Op3, ARMReg dest, ARMReg r1, ARMReg r2);
|
void WriteSignedMultiply(u32 Op, u32 Op2, u32 Op3, ARMReg dest, ARMReg r1, ARMReg r2);
|
||||||
|
|
||||||
|
@ -445,17 +444,11 @@ public:
|
||||||
void ADC (ARMReg dest, ARMReg src, Operand2 op2);
|
void ADC (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void ADCS(ARMReg dest, ARMReg src, Operand2 op2);
|
void ADCS(ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void LSL (ARMReg dest, ARMReg src, Operand2 op2);
|
void LSL (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void LSL (ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void LSLS(ARMReg dest, ARMReg src, Operand2 op2);
|
void LSLS(ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void LSLS(ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void LSR (ARMReg dest, ARMReg src, Operand2 op2);
|
void LSR (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void LSRS(ARMReg dest, ARMReg src, Operand2 op2);
|
void LSRS(ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void LSR (ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void LSRS(ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void ASR (ARMReg dest, ARMReg src, Operand2 op2);
|
void ASR (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void ASRS(ARMReg dest, ARMReg src, Operand2 op2);
|
void ASRS(ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void ASR (ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void ASRS(ARMReg dest, ARMReg src, ARMReg op2);
|
|
||||||
void SBC (ARMReg dest, ARMReg src, Operand2 op2);
|
void SBC (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void SBCS(ARMReg dest, ARMReg src, Operand2 op2);
|
void SBCS(ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
void RBIT(ARMReg dest, ARMReg src);
|
void RBIT(ARMReg dest, ARMReg src);
|
||||||
|
|
Loading…
Reference in New Issue