| Index: src/compiler/mips64/code-generator-mips64.cc
|
| diff --git a/src/compiler/mips64/code-generator-mips64.cc b/src/compiler/mips64/code-generator-mips64.cc
|
| index c95522b4a98b7d6e71a8e5671e25e1e8f11ccd9b..505742e58281007e6dbe6a3915dda099b51bbd90 100644
|
| --- a/src/compiler/mips64/code-generator-mips64.cc
|
| +++ b/src/compiler/mips64/code-generator-mips64.cc
|
| @@ -437,7 +437,6 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| __ ld(kScratchReg, FieldMemOperand(func, JSFunction::kContextOffset));
|
| __ Assert(eq, kWrongFunctionContext, cp, Operand(kScratchReg));
|
| }
|
| -
|
| __ ld(at, FieldMemOperand(func, JSFunction::kCodeEntryOffset));
|
| __ Call(at);
|
| RecordCallPosition(instr);
|
| @@ -450,7 +449,6 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| __ ld(kScratchReg, FieldMemOperand(func, JSFunction::kContextOffset));
|
| __ Assert(eq, kWrongFunctionContext, cp, Operand(kScratchReg));
|
| }
|
| -
|
| AssembleDeconstructActivationRecord();
|
| __ ld(at, FieldMemOperand(func, JSFunction::kCodeEntryOffset));
|
| __ Jump(at);
|
| @@ -550,8 +548,6 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| case kMips64DmodU:
|
| __ Dmodu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1));
|
| break;
|
| - __ And(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1));
|
| - break;
|
| case kMips64And:
|
| __ And(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1));
|
| break;
|
| @@ -772,14 +768,12 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| ASSEMBLE_ROUND_DOUBLE_TO_DOUBLE(ceil_l_d, Ceil);
|
| break;
|
| }
|
| - case kMips64CvtSD: {
|
| + case kMips64CvtSD:
|
| __ cvt_s_d(i.OutputSingleRegister(), i.InputDoubleRegister(0));
|
| break;
|
| - }
|
| - case kMips64CvtDS: {
|
| + case kMips64CvtDS:
|
| __ cvt_d_s(i.OutputDoubleRegister(), i.InputSingleRegister(0));
|
| break;
|
| - }
|
| case kMips64CvtDW: {
|
| FPURegister scratch = kScratchDoubleReg;
|
| __ mtc1(i.InputRegister(0), scratch);
|
| @@ -865,14 +859,23 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand());
|
| break;
|
| case kMips64Push:
|
| - __ Push(i.InputRegister(0));
|
| + if (instr->InputAt(0)->IsDoubleRegister()) {
|
| + __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize));
|
| + __ Subu(sp, sp, Operand(kDoubleSize));
|
| + } else {
|
| + __ Push(i.InputRegister(0));
|
| + }
|
| break;
|
| case kMips64StackClaim: {
|
| __ Dsubu(sp, sp, Operand(i.InputInt32(0)));
|
| break;
|
| }
|
| case kMips64StoreToStackSlot: {
|
| - __ sd(i.InputRegister(0), MemOperand(sp, i.InputInt32(1)));
|
| + if (instr->InputAt(0)->IsDoubleRegister()) {
|
| + __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, i.InputInt32(1)));
|
| + } else {
|
| + __ sd(i.InputRegister(0), MemOperand(sp, i.InputInt32(1)));
|
| + }
|
| break;
|
| }
|
| case kMips64StoreWriteBarrier: {
|
| @@ -924,7 +927,7 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| ASSEMBLE_CHECKED_STORE_FLOAT(Double, sdc1);
|
| break;
|
| }
|
| -}
|
| +} // NOLINT(readability/fn_size)
|
|
|
|
|
| #define UNSUPPORTED_COND(opcode, condition) \
|
|
|