Bug 1290812 - Part 11: Implement the 64bit variant of ExtendInt32toInt64 on mips64. r=h4writer

---
 js/src/jit/mips-shared/Lowering-mips-shared.cpp |  2 +-
 js/src/jit/mips64/CodeGenerator-mips64.cpp      | 12 ++++++++++++
 js/src/jit/mips64/CodeGenerator-mips64.h        |  1 +
 3 files changed, 14 insertions(+), 1 deletion(-)
This commit is contained in:
Heiher 2016-10-10 17:08:02 +08:00
Родитель 9f9ce55cd4
Коммит 1778e15d34
3 изменённых файлов: 14 добавлений и 1 удалений

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

@ -678,5 +678,5 @@ LIRGeneratorMIPSShared::visitCopySign(MCopySign* ins)
void
LIRGeneratorMIPSShared::visitExtendInt32ToInt64(MExtendInt32ToInt64* ins)
{
MOZ_CRASH("NYI");
defineInt64(new(alloc()) LExtendInt32ToInt64(useRegisterAtStart(ins->input())), ins);
}

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

@ -476,6 +476,18 @@ CodeGeneratorMIPS64::visitAsmReinterpretToI64(LAsmReinterpretToI64* lir)
masm.as_dmfc1(ToRegister(lir->output()), ToFloatRegister(lir->input()));
}
void
CodeGeneratorMIPS64::visitExtendInt32ToInt64(LExtendInt32ToInt64* lir)
{
const LAllocation* input = lir->getOperand(0);
Register output = ToRegister(lir->output());
if (lir->mir()->isUnsigned())
masm.ma_dext(output, ToRegister(input), Imm32(0), Imm32(32));
else
masm.ma_sll(output, ToRegister(input), Imm32(0));
}
void
CodeGeneratorMIPS64::setReturnDoubleRegs(LiveRegisterSet* regs)
{

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

@ -52,6 +52,7 @@ class CodeGeneratorMIPS64 : public CodeGeneratorMIPSShared
void visitAsmSelectI64(LAsmSelectI64* ins);
void visitAsmReinterpretFromI64(LAsmReinterpretFromI64* lir);
void visitAsmReinterpretToI64(LAsmReinterpretToI64* lir);
void visitExtendInt32ToInt64(LExtendInt32ToInt64* lir);
// Out of line visitors.
void visitOutOfLineBailout(OutOfLineBailout* ool);