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.