Bug 1254500 - IonMonkey: MIPS: Implement ma_ctz. r=arai

---
 js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp | 11 +++++++++++
 js/src/jit/mips-shared/MacroAssembler-mips-shared.h   |  2 ++
 2 files changed, 13 insertions(+)
This commit is contained in:
Heiher 2016-03-21 13:49:00 +08:00
Родитель b8598e36ab
Коммит ede2938094
2 изменённых файлов: 13 добавлений и 0 удалений

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

@ -184,6 +184,17 @@ MacroAssemblerMIPSShared::ma_xor(Register rd, Register rs, Imm32 imm)
} }
} }
void
MacroAssemblerMIPSShared::ma_ctz(Register rd, Register rs)
{
ma_negu(ScratchRegister, rs);
as_and(rd, ScratchRegister, rs);
as_clz(rd, rd);
ma_negu(SecondScratchReg, rd);
ma_addu(SecondScratchReg, Imm32(0x1f));
as_movn(rd, SecondScratchReg, ScratchRegister);
}
// Arithmetic-based ops. // Arithmetic-based ops.
// Add. // Add.

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

@ -99,6 +99,8 @@ class MacroAssemblerMIPSShared : public Assembler
void ma_xor(Register rd, Imm32 imm); void ma_xor(Register rd, Imm32 imm);
void ma_xor(Register rd, Register rs, Imm32 imm); void ma_xor(Register rd, Register rs, Imm32 imm);
void ma_ctz(Register rd, Register rs);
// load // load
void ma_load(Register dest, const BaseIndex& src, LoadStoreSize size = SizeWord, void ma_load(Register dest, const BaseIndex& src, LoadStoreSize size = SizeWord,
LoadStoreExtension extension = SignExtend); LoadStoreExtension extension = SignExtend);