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 void
LIRGeneratorMIPSShared::visitExtendInt32ToInt64(MExtendInt32ToInt64* ins) 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())); 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 void
CodeGeneratorMIPS64::setReturnDoubleRegs(LiveRegisterSet* regs) CodeGeneratorMIPS64::setReturnDoubleRegs(LiveRegisterSet* regs)
{ {

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

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