Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 45e5cb7ef125a82a29af46cc6a7a9817d58599eb..e3f77794ce89845849ea5f8590ca51c3f9a7000d 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -1998,6 +1998,49 @@ void MacroAssembler::Mfhc1(Register rt, FPURegister fs) { |
} |
} |
+void MacroAssembler::Madd_s(FPURegister fd, FPURegister fr, FPURegister fs, |
+ FPURegister ft, FPURegister scratch) { |
+ if (IsMipsArchVariant(kMips32r2)) { |
+ madd_s(fd, fr, fs, ft); |
+ } else { |
+ DCHECK(!fr.is(scratch) && !fs.is(scratch) && !ft.is(scratch)); |
+ mul_s(scratch, fs, ft); |
+ add_s(fd, fr, scratch); |
+ } |
+} |
+ |
+void MacroAssembler::Madd_d(FPURegister fd, FPURegister fr, FPURegister fs, |
+ FPURegister ft, FPURegister scratch) { |
+ if (IsMipsArchVariant(kMips32r2)) { |
+ madd_d(fd, fr, fs, ft); |
+ } else { |
+ DCHECK(!fr.is(scratch) && !fs.is(scratch) && !ft.is(scratch)); |
+ mul_d(scratch, fs, ft); |
+ add_d(fd, fr, scratch); |
+ } |
+} |
+ |
+void MacroAssembler::Msub_s(FPURegister fd, FPURegister fr, FPURegister fs, |
+ FPURegister ft, FPURegister scratch) { |
+ if (IsMipsArchVariant(kMips32r2)) { |
+ msub_s(fd, fr, fs, ft); |
+ } else { |
+ DCHECK(!fr.is(scratch) && !fs.is(scratch) && !ft.is(scratch)); |
+ mul_s(scratch, fs, ft); |
+ sub_s(fd, scratch, fr); |
+ } |
+} |
+ |
+void MacroAssembler::Msub_d(FPURegister fd, FPURegister fr, FPURegister fs, |
+ FPURegister ft, FPURegister scratch) { |
+ if (IsMipsArchVariant(kMips32r2)) { |
+ msub_d(fd, fr, fs, ft); |
+ } else { |
+ DCHECK(!fr.is(scratch) && !fs.is(scratch) && !ft.is(scratch)); |
+ mul_d(scratch, fs, ft); |
+ sub_d(fd, scratch, fr); |
+ } |
+} |
void MacroAssembler::BranchFCommon(SecondaryField sizeField, Label* target, |
Label* nan, Condition cond, FPURegister cmp1, |