Bug 1229057 - Part 10: Move MacroAssembler::mul32 into generic macro assembler. r=sstangl

--HG--
extra : rebase_source : 12a6771d89bb0d212164ab6ba25833e412121753
This commit is contained in:
Tooru Fujisawa 2015-12-01 17:03:23 +09:00
parent 7c3d6d6c52
commit 486d8c3228
3 changed files with 17 additions and 13 deletions

View File

@ -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

View File

@ -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

View File

@ -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();