| Index: src/mips64/macro-assembler-mips64.h
 | 
| diff --git a/src/mips64/macro-assembler-mips64.h b/src/mips64/macro-assembler-mips64.h
 | 
| index 09289bf1332f002c92ac981669baceab799c5404..24abd28c36abba2bc9eb26cf4e391f39d0988279 100644
 | 
| --- a/src/mips64/macro-assembler-mips64.h
 | 
| +++ b/src/mips64/macro-assembler-mips64.h
 | 
| @@ -337,17 +337,6 @@ class MacroAssembler: public Assembler {
 | 
|    void Movt(Register rd, Register rs, uint16_t cc = 0);
 | 
|    void Movf(Register rd, Register rs, uint16_t cc = 0);
 | 
|  
 | 
| -  // Min, Max macros.
 | 
| -  // On pre-r6 these functions may modify at and t8 registers.
 | 
| -  void MinNaNCheck_d(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| -                     Label* nan = nullptr);
 | 
| -  void MaxNaNCheck_d(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| -                     Label* nan = nullptr);
 | 
| -  void MinNaNCheck_s(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| -                     Label* nan = nullptr);
 | 
| -  void MaxNaNCheck_s(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| -                     Label* nan = nullptr);
 | 
| -
 | 
|    void Clz(Register rd, Register rs);
 | 
|  
 | 
|    // Jump unconditionally to given label.
 | 
| @@ -1411,6 +1400,29 @@ class MacroAssembler: public Assembler {
 | 
|      Ret(ge, overflow_check, Operand(zero_reg), bd);
 | 
|    }
 | 
|  
 | 
| +  // Perform a floating-point min or max operation with the
 | 
| +  // (IEEE-754-compatible) semantics of MIPS32's Release 6 MIN.fmt/MAX.fmt.
 | 
| +  // Some cases, typically NaNs or +/-0.0, are expected to be rare and are
 | 
| +  // handled in out-of-line code. The specific behaviour depends on supported
 | 
| +  // instructions.
 | 
| +  //
 | 
| +  // These functions assume (and assert) that !src1.is(src2). It is permitted
 | 
| +  // for the result to alias either input register.
 | 
| +  void Float32Max(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| +                  Label* out_of_line);
 | 
| +  void Float32Min(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| +                  Label* out_of_line);
 | 
| +  void Float64Max(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| +                  Label* out_of_line);
 | 
| +  void Float64Min(FPURegister dst, FPURegister src1, FPURegister src2,
 | 
| +                  Label* out_of_line);
 | 
| +
 | 
| +  // Generate out-of-line cases for the macros above.
 | 
| +  void Float32MaxOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2);
 | 
| +  void Float32MinOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2);
 | 
| +  void Float64MaxOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2);
 | 
| +  void Float64MinOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2);
 | 
| +
 | 
|    // -------------------------------------------------------------------------
 | 
|    // Runtime calls.
 | 
|  
 | 
| 
 |