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) \ |