зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
9f9ce55cd4
Коммит
1778e15d34
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче