[ARM] Add ASR/ASRS and UMULLS emitters.
This commit is contained in:
parent
7a41acd8ff
commit
9bded1382c
|
@ -612,6 +612,8 @@ void ARMXEmitter::LSLS(ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedData
|
||||||
void ARMXEmitter::LSL (ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(1, false, 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::LSLS(ARMReg dest, ARMReg src, ARMReg op2) { WriteShiftedDataOp(1, true, dest, src, op2);}
|
||||||
void ARMXEmitter::LSR (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(3, false, dest, src, op2);}
|
void ARMXEmitter::LSR (ARMReg dest, ARMReg src, Operand2 op2) { WriteShiftedDataOp(3, 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::MUL (ARMReg dest, ARMReg src, ARMReg op2)
|
void ARMXEmitter::MUL (ARMReg dest, ARMReg src, ARMReg op2)
|
||||||
{
|
{
|
||||||
Write32(condition | (dest << 16) | (src << 8) | (9 << 4) | op2);
|
Write32(condition | (dest << 16) | (src << 8) | (9 << 4) | op2);
|
||||||
|
@ -630,6 +632,11 @@ void ARMXEmitter::UMULL(ARMReg destLo, ARMReg destHi, ARMReg rm, ARMReg rn)
|
||||||
Write4OpMultiply(0x8, destLo, destHi, rn, rm);
|
Write4OpMultiply(0x8, destLo, destHi, rn, rm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ARMXEmitter::UMULLS(ARMReg destLo, ARMReg destHi, ARMReg rm, ARMReg rn)
|
||||||
|
{
|
||||||
|
Write4OpMultiply(0x9, destLo, destHi, rn, rm);
|
||||||
|
}
|
||||||
|
|
||||||
void ARMXEmitter::SMULL(ARMReg destLo, ARMReg destHi, ARMReg rm, ARMReg rn)
|
void ARMXEmitter::SMULL(ARMReg destLo, ARMReg destHi, ARMReg rm, ARMReg rn)
|
||||||
{
|
{
|
||||||
Write4OpMultiply(0xC, destLo, destHi, rn, rm);
|
Write4OpMultiply(0xC, destLo, destHi, rn, rm);
|
||||||
|
|
|
@ -454,6 +454,8 @@ public:
|
||||||
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 LSLS(ARMReg dest, ARMReg src, ARMReg op2);
|
||||||
void LSR (ARMReg dest, ARMReg src, Operand2 op2);
|
void LSR (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
|
void ASR (ARMReg dest, ARMReg src, Operand2 op2);
|
||||||
|
void ASRS(ARMReg dest, ARMReg src, Operand2 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);
|
||||||
|
@ -485,6 +487,7 @@ public:
|
||||||
void MULS(ARMReg dest, ARMReg src, ARMReg op2);
|
void MULS(ARMReg dest, ARMReg src, ARMReg op2);
|
||||||
|
|
||||||
void UMULL(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
void UMULL(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
||||||
|
void UMULLS(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
||||||
void SMULL(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
void SMULL(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
||||||
|
|
||||||
void UMLAL(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
void UMLAL(ARMReg destLo, ARMReg destHi, ARMReg rn, ARMReg rm);
|
||||||
|
|
Loading…
Reference in New Issue