Index: src/compiler/mips/code-generator-mips.cc |
diff --git a/src/compiler/mips/code-generator-mips.cc b/src/compiler/mips/code-generator-mips.cc |
index 9401e20556bc927d858705f3b77fb9beab80096e..1ed85ac06935b50eb658fe24905db5591e04f8dc 100644 |
--- a/src/compiler/mips/code-generator-mips.cc |
+++ b/src/compiler/mips/code-generator-mips.cc |
@@ -1258,6 +1258,20 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
case kMipsFloat64InsertHighWord32: |
__ FmoveHigh(i.OutputDoubleRegister(), i.InputRegister(1)); |
break; |
+ case kMipsFloat64SilenceNaN: { |
+ FPURegister value = i.InputDoubleRegister(0); |
+ FPURegister result = i.OutputDoubleRegister(); |
+ Register scratch0 = i.TempRegister(0); |
+ Label is_nan, not_nan; |
+ __ BranchF(NULL, &is_nan, eq, value, value); |
+ __ Branch(¬_nan); |
+ __ bind(&is_nan); |
+ __ LoadRoot(scratch0, Heap::kNanValueRootIndex); |
+ __ ldc1(result, FieldMemOperand(scratch0, HeapNumber::kValueOffset)); |
+ __ bind(¬_nan); |
+ break; |
+ } |
+ |
// ... more basic instructions ... |
case kMipsLbu: |