Reviewers: titzer, danno, paul.l..., akos.palfi.imgtec, balazs.kilvady,

Description:
MIPS: Fix loading Float64 constants in turbofan.

TEST=ctest/test-run-machops/RunFloat64SubImm1,
     RunFloat64SubImm2, RunFloat64MulImm, RunFloat64Compare

BUG=

Please review this at https://codereview.chromium.org/646923003/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+4, -5 lines):
  M src/compiler/mips/code-generator-mips.cc
  M src/mips/code-stubs-mips.cc
  M src/mips/macro-assembler-mips.h
  M src/mips/macro-assembler-mips.cc


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 19d1b024e01cc9b2ecaac2dd9902dd25ec6fdc2f..321f756d45c23281691243495b3358ecec4f0b38 100644
--- a/src/compiler/mips/code-generator-mips.cc
+++ b/src/compiler/mips/code-generator-mips.cc
@@ -831,7 +831,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
       DoubleRegister dst = destination->IsDoubleRegister()
                                ? g.ToDoubleRegister(destination)
                                : kScratchDoubleReg;
-      __ Move(dst, src.ToFloat64());
+      __ Move(dst, src.ToFloat64(), true);
       if (destination->IsDoubleStackSlot()) {
         __ sdc1(dst, g.ToMemOperand(destination));
       }
Index: src/mips/code-stubs-mips.cc
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
index 9dd8bdc07f0ee6b33d07c6e4ab83a4fa8f4257e9..91b796ac73451349c267facad3e176ff9445d3ac 100644
--- a/src/mips/code-stubs-mips.cc
+++ b/src/mips/code-stubs-mips.cc
@@ -1252,7 +1252,7 @@ void JSEntryStub::Generate(MacroAssembler* masm) {
   // Save callee-saved FPU registers.
   __ MultiPushFPU(kCalleeSavedFPU);
   // Set up the reserved register for 0.0.
-  __ Move(kDoubleRegZero, 0.0);
+  __ Move(kDoubleRegZero, 0.0, true);


   // Load argv in s0 register.
Index: src/mips/macro-assembler-mips.cc
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc index 6f16f1d4c0f28c890cb8092782d215ddc8f7d638..275daf24ca079e0aacf06e7b140776b188c2b7e8 100644
--- a/src/mips/macro-assembler-mips.cc
+++ b/src/mips/macro-assembler-mips.cc
@@ -1525,12 +1525,11 @@ void MacroAssembler::BranchF(Label* target,
 }


-void MacroAssembler::Move(FPURegister dst, double imm) {
+void MacroAssembler::Move(FPURegister dst, double imm, bool force_load) {
   static const DoubleRepresentation minus_zero(-0.0);
   static const DoubleRepresentation zero(0.0);
   DoubleRepresentation value_rep(imm);
   // Handle special values first.
-  bool force_load = dst.is(kDoubleRegZero);
   if (value_rep == zero && !force_load) {
     mov_d(dst, kDoubleRegZero);
   } else if (value_rep == minus_zero && !force_load) {
Index: src/mips/macro-assembler-mips.h
diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h index 62d3aa81d497ad4362b83458ddb6a2fdfd8bf10a..33ae44d8196e73d8f6089840cb0e4ab620fcd782 100644
--- a/src/mips/macro-assembler-mips.h
+++ b/src/mips/macro-assembler-mips.h
@@ -251,7 +251,7 @@ class MacroAssembler: public Assembler {
   }

   // Conditional move.
-  void Move(FPURegister dst, double imm);
+  void Move(FPURegister dst, double imm, bool force_load = false);
   void Movz(Register rd, Register rs, Register rt);
   void Movn(Register rd, Register rs, Register rt);
   void Movt(Register rd, Register rs, uint16_t cc = 0);


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to