mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
Bug 1229057
- Part 10: Move MacroAssembler::mul32 into generic macro assembler. r=sstangl
--HG-- extra : rebase_source : 12a6771d89bb0d212164ab6ba25833e412121753
This commit is contained in:
parent
7c3d6d6c52
commit
486d8c3228
@ -765,6 +765,8 @@ class MacroAssembler : public MacroAssemblerSpecific
|
||||
|
||||
inline void subDouble(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH;
|
||||
|
||||
inline void mul32(Register src1, Register src2, Register dest, Label* onOver, Label* onZero) DEFINED_ON(arm64);
|
||||
|
||||
// ===============================================================
|
||||
// Shift functions
|
||||
|
||||
|
@ -308,6 +308,21 @@ MacroAssembler::subDouble(FloatRegister src, FloatRegister dest)
|
||||
fsub(ARMFPRegister(dest, 64), ARMFPRegister(dest, 64), ARMFPRegister(src, 64));
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssembler::mul32(Register src1, Register src2, Register dest, Label* onOver, Label* onZero)
|
||||
{
|
||||
Smull(ARMRegister(dest, 64), ARMRegister(src1, 32), ARMRegister(src2, 32));
|
||||
if (onOver) {
|
||||
Cmp(ARMRegister(dest, 64), Operand(ARMRegister(dest, 32), vixl::SXTW));
|
||||
B(onOver, NotEqual);
|
||||
}
|
||||
if (onZero)
|
||||
Cbz(ARMRegister(dest, 32), onZero);
|
||||
|
||||
// Clear upper 32 bits.
|
||||
Mov(ARMRegister(dest, 32), ARMRegister(dest, 32));
|
||||
}
|
||||
|
||||
// ===============================================================
|
||||
// Shift functions
|
||||
|
||||
|
@ -1341,19 +1341,6 @@ class MacroAssemblerCompat : public vixl::MacroAssembler
|
||||
Subs(ARMRegister(dest, 32), ARMRegister(dest, 32), Operand(ARMRegister(src, 32)));
|
||||
}
|
||||
|
||||
void mul32(Register src1, Register src2, Register dest, Label* onOver, Label* onZero) {
|
||||
Smull(ARMRegister(dest, 64), ARMRegister(src1, 32), ARMRegister(src2, 32));
|
||||
if (onOver) {
|
||||
Cmp(ARMRegister(dest, 64), Operand(ARMRegister(dest, 32), vixl::SXTW));
|
||||
B(onOver, NotEqual);
|
||||
}
|
||||
if (onZero)
|
||||
Cbz(ARMRegister(dest, 32), onZero);
|
||||
|
||||
// Clear upper 32 bits.
|
||||
Mov(ARMRegister(dest, 32), ARMRegister(dest, 32));
|
||||
}
|
||||
|
||||
void ret() {
|
||||
pop(lr);
|
||||
abiret();
|
||||
|
Loading…
Reference in New Issue
Block a user