| Index: src/mips/macro-assembler-mips.cc | 
| diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc | 
| index dba1fae9759f0e323e72a23a443192cca9d9f6f9..95a0064f62715cbc55c0d3e01473297bfbec56ba 100644 | 
| --- a/src/mips/macro-assembler-mips.cc | 
| +++ b/src/mips/macro-assembler-mips.cc | 
| @@ -1915,8 +1915,6 @@ void MacroAssembler::Ins(Register rt, | 
| } | 
|  | 
| void MacroAssembler::Neg_s(FPURegister fd, FPURegister fs) { | 
| -  Register scratch1 = t8; | 
| -  Register scratch2 = t9; | 
| if (IsMipsArchVariant(kMips32r2)) { | 
| Label is_nan, done; | 
| Register scratch1 = t8; | 
| @@ -1926,7 +1924,6 @@ void MacroAssembler::Neg_s(FPURegister fd, FPURegister fs) { | 
| // For NaN input, neg_s will return the same NaN value, | 
| // while the sign has to be changed separately. | 
| neg_s(fd, fs);  // In delay slot. | 
| - | 
| bind(&is_nan); | 
| mfc1(scratch1, fs); | 
| And(scratch2, scratch1, Operand(~kBinary32SignMask)); | 
| @@ -1936,26 +1933,21 @@ void MacroAssembler::Neg_s(FPURegister fd, FPURegister fs) { | 
| mtc1(scratch2, fd); | 
| bind(&done); | 
| } else { | 
| -    mfc1(scratch1, fs); | 
| -    And(scratch2, scratch1, Operand(~kBinary32SignMask)); | 
| -    And(scratch1, scratch1, Operand(kBinary32SignMask)); | 
| -    Xor(scratch1, scratch1, Operand(kBinary32SignMask)); | 
| -    Or(scratch2, scratch2, scratch1); | 
| -    mtc1(scratch2, fd); | 
| +    // r6 neg_s changes the sign for NaN-like operands as well. | 
| +    neg_s(fd, fs); | 
| } | 
| } | 
|  | 
| void MacroAssembler::Neg_d(FPURegister fd, FPURegister fs) { | 
| -  Register scratch1 = t8; | 
| -  Register scratch2 = t9; | 
| if (IsMipsArchVariant(kMips32r2)) { | 
| Label is_nan, done; | 
| +    Register scratch1 = t8; | 
| +    Register scratch2 = t9; | 
| BranchF64(nullptr, &is_nan, eq, fs, fs); | 
| Branch(USE_DELAY_SLOT, &done); | 
| // For NaN input, neg_d will return the same NaN value, | 
| // while the sign has to be changed separately. | 
| neg_d(fd, fs);  // In delay slot. | 
| - | 
| bind(&is_nan); | 
| Mfhc1(scratch1, fs); | 
| And(scratch2, scratch1, Operand(~HeapNumber::kSignMask)); | 
| @@ -1965,13 +1957,8 @@ void MacroAssembler::Neg_d(FPURegister fd, FPURegister fs) { | 
| Mthc1(scratch2, fd); | 
| bind(&done); | 
| } else { | 
| -    Move_d(fd, fs); | 
| -    Mfhc1(scratch1, fs); | 
| -    And(scratch2, scratch1, Operand(~HeapNumber::kSignMask)); | 
| -    And(scratch1, scratch1, Operand(HeapNumber::kSignMask)); | 
| -    Xor(scratch1, scratch1, Operand(HeapNumber::kSignMask)); | 
| -    Or(scratch2, scratch2, scratch1); | 
| -    Mthc1(scratch2, fd); | 
| +    // r6 neg_d changes the sign for NaN-like operands as well. | 
| +    neg_d(fd, fs); | 
| } | 
| } | 
|  | 
|  |