Reviewers: danno, jbramley, Paul Neave, dusmil.imgtec, akos.palfi.imgtec,
Description:
MIPS: [turbofan] Fix implementation of Float64Min.
Port d783b763629526a1ec57a9f14caa61d0166efac7
Original commit message:
ARM64's `fmin` and `fmax` instructions don't have the same behaviour as
TurboFan's Float(32|64)(Min|Max) functions.
BUG=4206
LOG=N
Please review this at https://codereview.chromium.org/1204903004/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+10, -48 lines):
M src/compiler/mips/instruction-selector-mips.cc
M src/compiler/mips64/instruction-selector-mips64.cc
Index: src/compiler/mips/instruction-selector-mips.cc
diff --git a/src/compiler/mips/instruction-selector-mips.cc
b/src/compiler/mips/instruction-selector-mips.cc
index
ce40753995db0a93dded1fd3b1c8e03b1b6a4f84..8ecc25e9e084951baa2c6d1626e18a894a5cd67d
100644
--- a/src/compiler/mips/instruction-selector-mips.cc
+++ b/src/compiler/mips/instruction-selector-mips.cc
@@ -452,28 +452,16 @@ void InstructionSelector::VisitFloat64Mod(Node* node)
{
}
-void InstructionSelector::VisitFloat32Max(Node* node) {
- DCHECK(kArchVariant == kMips32r6);
- VisitRRR(this, kMipsMaxS, node);
-}
+void InstructionSelector::VisitFloat32Max(Node* node) { UNREACHABLE(); }
-void InstructionSelector::VisitFloat64Max(Node* node) {
- DCHECK(kArchVariant == kMips32r6);
- VisitRRR(this, kMipsMaxD, node);
-}
+void InstructionSelector::VisitFloat64Max(Node* node) { UNREACHABLE(); }
-void InstructionSelector::VisitFloat32Min(Node* node) {
- DCHECK(kArchVariant == kMips32r6);
- VisitRRR(this, kMipsMinS, node);
-}
+void InstructionSelector::VisitFloat32Min(Node* node) { UNREACHABLE(); }
-void InstructionSelector::VisitFloat64Min(Node* node) {
- DCHECK(kArchVariant == kMips32r6);
- VisitRRR(this, kMipsMinD, node);
-}
+void InstructionSelector::VisitFloat64Min(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitFloat32Abs(Node* node) {
@@ -1095,12 +1083,6 @@ void
InstructionSelector::VisitFloat64InsertHighWord32(Node* node) {
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags;
- if (IsMipsArchVariant(kMips32r6)) {
- flags |= MachineOperatorBuilder::kFloat32Max |
- MachineOperatorBuilder::kFloat32Min |
- MachineOperatorBuilder::kFloat64Max |
- MachineOperatorBuilder::kFloat64Min;
- }
if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) &&
IsFp64Mode()) {
flags |= MachineOperatorBuilder::kFloat64RoundDown |
Index: src/compiler/mips64/instruction-selector-mips64.cc
diff --git a/src/compiler/mips64/instruction-selector-mips64.cc
b/src/compiler/mips64/instruction-selector-mips64.cc
index
48185a676ffb495c5104f86ff9998be100b74046..4127c312f21f8e777b4d0f1b4e1503a6d0c3a68e
100644
--- a/src/compiler/mips64/instruction-selector-mips64.cc
+++ b/src/compiler/mips64/instruction-selector-mips64.cc
@@ -601,28 +601,16 @@ void InstructionSelector::VisitFloat64Mod(Node* node)
{
}
-void InstructionSelector::VisitFloat32Max(Node* node) {
- DCHECK(kArchVariant == kMips64r6);
- VisitRRR(this, kMips64MaxS, node);
-}
+void InstructionSelector::VisitFloat32Max(Node* node) { UNREACHABLE(); }
-void InstructionSelector::VisitFloat64Max(Node* node) {
- DCHECK(kArchVariant == kMips64r6);
- VisitRRR(this, kMips64MaxD, node);
-}
+void InstructionSelector::VisitFloat64Max(Node* node) { UNREACHABLE(); }
-void InstructionSelector::VisitFloat32Min(Node* node) {
- DCHECK(kArchVariant == kMips64r6);
- VisitRRR(this, kMips64MinS, node);
-}
+void InstructionSelector::VisitFloat32Min(Node* node) { UNREACHABLE(); }
-void InstructionSelector::VisitFloat64Min(Node* node) {
- DCHECK(kArchVariant == kMips64r6);
- VisitRRR(this, kMips64MinD, node);
-}
+void InstructionSelector::VisitFloat64Min(Node* node) { UNREACHABLE(); }
void InstructionSelector::VisitFloat32Abs(Node* node) {
@@ -1307,16 +1295,8 @@ void
InstructionSelector::VisitFloat64InsertHighWord32(Node* node) {
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
- MachineOperatorBuilder::Flags flags =
- MachineOperatorBuilder::kFloat64RoundDown |
- MachineOperatorBuilder::kFloat64RoundTruncate;
- if (kArchVariant == kMips64r6) {
- flags |= MachineOperatorBuilder::kFloat32Max |
- MachineOperatorBuilder::kFloat32Min |
- MachineOperatorBuilder::kFloat64Max |
- MachineOperatorBuilder::kFloat64Min;
- }
- return flags;
+ return MachineOperatorBuilder::kFloat64RoundDown |
+ MachineOperatorBuilder::kFloat64RoundTruncate;
}
} // namespace compiler
--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.