Bug 1290812 - Part 26: Implement the 64bit variant of Sub on mips32. r=lth

---
 js/src/jit/MacroAssembler.h                   |  4 ++--
 js/src/jit/mips32/MacroAssembler-mips32-inl.h | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)
This commit is contained in:
Shi Dan 2016-10-10 17:08:22 +08:00
Родитель 010daf84bc
Коммит 5ee3f310bb
2 изменённых файлов: 21 добавлений и 2 удалений

Просмотреть файл

@ -780,8 +780,8 @@ class MacroAssembler : public MacroAssemblerSpecific
inline void subPtr(ImmWord imm, Register dest) DEFINED_ON(x64);
inline void subPtr(const Address& addr, Register dest) DEFINED_ON(mips_shared, arm, arm64, x86, x64);
inline void sub64(Register64 src, Register64 dest) DEFINED_ON(x86, x64, arm, mips64);
inline void sub64(Imm64 imm, Register64 dest) DEFINED_ON(x86, x64, arm, mips64);
inline void sub64(Register64 src, Register64 dest) DEFINED_ON(x86, x64, arm, mips32, mips64);
inline void sub64(Imm64 imm, Register64 dest) DEFINED_ON(x86, x64, arm, mips32, mips64);
inline void sub64(const Operand& src, Register64 dest) DEFINED_ON(x64, mips64);
inline void subFloat32(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH;

Просмотреть файл

@ -175,6 +175,25 @@ MacroAssembler::subPtr(Imm32 imm, Register dest)
ma_subu(dest, dest, imm);
}
void
MacroAssembler::sub64(Register64 src, Register64 dest)
{
as_sltu(ScratchRegister, dest.low, src.low);
as_subu(dest.high, dest.high, ScratchRegister);
as_subu(dest.low, dest.low, src.low);
as_subu(dest.high, dest.high, src.high);
}
void
MacroAssembler::sub64(Imm64 imm, Register64 dest)
{
ma_li(ScratchRegister, imm.low());
as_sltu(ScratchRegister, dest.low, ScratchRegister);
as_subu(dest.high, dest.high, ScratchRegister);
ma_subu(dest.low, dest.low, imm.low());
ma_subu(dest.high, dest.high, imm.hi());
}
void
MacroAssembler::mul64(Imm64 imm, const Register64& dest)
{