Bug 1290812 - Part 42: Implement the 64bit variant of AsmReinterpretFrom/To on mips32. r=bbouvier

---
 js/src/jit/mips32/CodeGenerator-mips32.cpp | 24 ++++++++++++++++++++++++
 js/src/jit/mips32/CodeGenerator-mips32.h   |  2 ++
 2 files changed, 26 insertions(+)
This commit is contained in:
Shi Dan 2016-10-10 17:08:43 +08:00
Родитель a031e3fbf4
Коммит bc28f90635
2 изменённых файлов: 26 добавлений и 0 удалений

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

@ -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)
{

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

@ -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);