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 b4e811f0f8a45051fc5a5935e018893b6e504bd1..6694768702233d74c43459458282ee27e03a8943 100644 |
--- a/src/compiler/mips/instruction-selector-mips.cc |
+++ b/src/compiler/mips/instruction-selector-mips.cc |
@@ -452,16 +452,28 @@ void InstructionSelector::VisitFloat64Mod(Node* node) { |
} |
-void InstructionSelector::VisitFloat32Max(Node* node) { UNREACHABLE(); } |
+void InstructionSelector::VisitFloat32Max(Node* node) { |
+ DCHECK(kArchVariant == kMips32r6); |
+ VisitRRR(this, kMipsMaxS, node); |
+} |
-void InstructionSelector::VisitFloat64Max(Node* node) { UNREACHABLE(); } |
+void InstructionSelector::VisitFloat64Max(Node* node) { |
+ DCHECK(kArchVariant == kMips32r6); |
+ VisitRRR(this, kMipsMaxD, node); |
+} |
-void InstructionSelector::VisitFloat32Min(Node* node) { UNREACHABLE(); } |
+void InstructionSelector::VisitFloat32Min(Node* node) { |
+ DCHECK(kArchVariant == kMips32r6); |
+ VisitRRR(this, kMipsMinS, node); |
+} |
-void InstructionSelector::VisitFloat64Min(Node* node) { UNREACHABLE(); } |
+void InstructionSelector::VisitFloat64Min(Node* node) { |
+ DCHECK(kArchVariant == kMips32r6); |
+ VisitRRR(this, kMipsMinD, node); |
+} |
void InstructionSelector::VisitFloat32Abs(Node* node) { |
@@ -1059,6 +1071,12 @@ 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 | |