diff --git a/js/src/jit/mips32/CodeGenerator-mips32.cpp b/js/src/jit/mips32/CodeGenerator-mips32.cpp index 7dcfcdbb123b..d693e7e1801d 100644 --- a/js/src/jit/mips32/CodeGenerator-mips32.cpp +++ b/js/src/jit/mips32/CodeGenerator-mips32.cpp @@ -590,6 +590,30 @@ CodeGeneratorMIPS::visitAsmSelectI64(LAsmSelectI64* lir) } } +void +CodeGeneratorMIPS::visitAsmReinterpretFromI64(LAsmReinterpretFromI64* lir) +{ + MOZ_ASSERT(lir->mir()->type() == MIRType::Double); + MOZ_ASSERT(lir->mir()->input()->type() == MIRType::Int64); + Register64 input = ToRegister64(lir->getInt64Operand(0)); + FloatRegister output = ToFloatRegister(lir->output()); + + masm.moveToDoubleLo(input.low, output); + masm.moveToDoubleHi(input.high, output); +} + +void +CodeGeneratorMIPS::visitAsmReinterpretToI64(LAsmReinterpretToI64* lir) +{ + MOZ_ASSERT(lir->mir()->type() == MIRType::Int64); + MOZ_ASSERT(lir->mir()->input()->type() == MIRType::Double); + FloatRegister input = ToFloatRegister(lir->getOperand(0)); + Register64 output = ToOutRegister64(lir); + + masm.moveFromDoubleLo(input, output.low); + masm.moveFromDoubleHi(input, output.high); +} + void CodeGeneratorMIPS::visitExtendInt32ToInt64(LExtendInt32ToInt64* lir) { diff --git a/js/src/jit/mips32/CodeGenerator-mips32.h b/js/src/jit/mips32/CodeGenerator-mips32.h index 1ed9092725c2..1d67838d0df1 100644 --- a/js/src/jit/mips32/CodeGenerator-mips32.h +++ b/js/src/jit/mips32/CodeGenerator-mips32.h @@ -47,6 +47,8 @@ class CodeGeneratorMIPS : public CodeGeneratorMIPSShared void visitWasmLoadGlobalVarI64(LWasmLoadGlobalVarI64* ins); void visitWasmStoreGlobalVarI64(LWasmStoreGlobalVarI64* ins); void visitAsmSelectI64(LAsmSelectI64* lir); + void visitAsmReinterpretFromI64(LAsmReinterpretFromI64* lir); + void visitAsmReinterpretToI64(LAsmReinterpretToI64* lir); void visitExtendInt32ToInt64(LExtendInt32ToInt64* lir); void visitWrapInt64ToInt32(LWrapInt64ToInt32* lir); void visitClzI64(LClzI64* ins);