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 6454d126c5480b0469c15fc9691528ec7d1259d9..e142b787b81cb860ef11a19ed3015aa3563a6230 100644 |
--- a/src/compiler/mips/instruction-selector-mips.cc |
+++ b/src/compiler/mips/instruction-selector-mips.cc |
@@ -136,6 +136,22 @@ static void VisitRR(InstructionSelector* selector, ArchOpcode opcode, |
g.UseRegister(node->InputAt(0))); |
} |
+static void VisitRRI(InstructionSelector* selector, ArchOpcode opcode, |
+ Node* node) { |
+ MipsOperandGenerator g(selector); |
+ int32_t imm = OpParameter<int32_t>(node); |
+ selector->Emit(opcode, g.DefineAsRegister(node), |
+ g.UseRegister(node->InputAt(0)), g.UseImmediate(imm)); |
+} |
+ |
+static void VisitRRIR(InstructionSelector* selector, ArchOpcode opcode, |
+ Node* node) { |
+ MipsOperandGenerator g(selector); |
+ int32_t imm = OpParameter<int32_t>(node); |
+ selector->Emit(opcode, g.DefineAsRegister(node), |
+ g.UseRegister(node->InputAt(0)), g.UseImmediate(imm), |
+ g.UseRegister(node->InputAt(1))); |
+} |
static void VisitRRO(InstructionSelector* selector, ArchOpcode opcode, |
Node* node) { |
@@ -1899,6 +1915,46 @@ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) { |
UNREACHABLE(); |
} |
+void InstructionSelector::VisitI32x4Splat(Node* node) { |
+ VisitRR(this, kMipsI32x4Splat, node); |
+} |
+ |
+void InstructionSelector::VisitI32x4ExtractLane(Node* node) { |
+ VisitRRI(this, kMipsI32x4ExtractLane, node); |
+} |
+ |
+void InstructionSelector::VisitI32x4ReplaceLane(Node* node) { |
+ VisitRRIR(this, kMipsI32x4ReplaceLane, node); |
+} |
+ |
+void InstructionSelector::VisitI32x4Add(Node* node) { |
+ VisitRRR(this, kMipsI32x4Add, node); |
+} |
+ |
+void InstructionSelector::VisitI32x4Sub(Node* node) { |
+ VisitRRR(this, kMipsI32x4Sub, node); |
+} |
+ |
+void InstructionSelector::VisitS128Zero(Node* node) { |
+ MipsOperandGenerator g(this); |
+ Emit(kMipsS128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
+void InstructionSelector::VisitS1x4Zero(Node* node) { |
+ MipsOperandGenerator g(this); |
+ Emit(kMipsS128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
+void InstructionSelector::VisitS1x8Zero(Node* node) { |
+ MipsOperandGenerator g(this); |
+ Emit(kMipsS128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
+void InstructionSelector::VisitS1x16Zero(Node* node) { |
+ MipsOperandGenerator g(this); |
+ Emit(kMipsS128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
// static |
MachineOperatorBuilder::Flags |
InstructionSelector::SupportedMachineOperatorFlags() { |