Index: src/mips64/macro-assembler-mips64.h |
diff --git a/src/mips64/macro-assembler-mips64.h b/src/mips64/macro-assembler-mips64.h |
index 884a0019d7f3c7abcd6045273f57afc45acf32cd..fbfa9f5db9c6a59c3182c241d58ea0f1ea9efe4b 100644 |
--- a/src/mips64/macro-assembler-mips64.h |
+++ b/src/mips64/macro-assembler-mips64.h |
@@ -265,8 +265,8 @@ class MacroAssembler: public Assembler { |
void Call(Label* target); |
- void Move(Register dst, Handle<Object> handle) { li(dst, handle); } |
- void Move(Register dst, Smi* smi) { li(dst, Operand(smi)); } |
+ inline void Move(Register dst, Handle<Object> handle) { li(dst, handle); } |
+ inline void Move(Register dst, Smi* smi) { li(dst, Operand(smi)); } |
inline void Move(Register dst, Register src) { |
if (!dst.is(src)) { |
@@ -274,17 +274,29 @@ class MacroAssembler: public Assembler { |
} |
} |
- inline void Move(FPURegister dst, FPURegister src) { |
+ inline void Move_d(FPURegister dst, FPURegister src) { |
if (!dst.is(src)) { |
mov_d(dst, src); |
} |
} |
+ inline void Move_s(FPURegister dst, FPURegister src) { |
+ if (!dst.is(src)) { |
+ mov_s(dst, src); |
+ } |
+ } |
+ |
+ inline void Move(FPURegister dst, FPURegister src) { Move_d(dst, src); } |
+ |
inline void Move(Register dst_low, Register dst_high, FPURegister src) { |
mfc1(dst_low, src); |
mfhc1(dst_high, src); |
} |
+ inline void Move(Register dst, FPURegister src) { dmfc1(dst, src); } |
+ |
+ inline void Move(FPURegister dst, Register src) { dmtc1(src, dst); } |
+ |
inline void FmoveHigh(Register dst_high, FPURegister src) { |
mfhc1(dst_high, src); |
} |
@@ -313,6 +325,17 @@ 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. |