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 e8f8c53273ea42a1e391d21053edf7bd2a53361d..bb808da1a5a005d883dc427151149e5e48ac7ba8 100644 |
--- a/src/compiler/mips64/instruction-selector-mips64.cc |
+++ b/src/compiler/mips64/instruction-selector-mips64.cc |
@@ -141,6 +141,22 @@ static void VisitRR(InstructionSelector* selector, ArchOpcode opcode, |
g.UseRegister(node->InputAt(0))); |
} |
+static void VisitRRI(InstructionSelector* selector, ArchOpcode opcode, |
+ Node* node) { |
+ Mips64OperandGenerator 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) { |
+ Mips64OperandGenerator 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 VisitRRR(InstructionSelector* selector, ArchOpcode opcode, |
Node* node) { |
@@ -2642,6 +2658,46 @@ void InstructionSelector::VisitAtomicCompareExchange(Node* node) { |
UNIMPLEMENTED(); |
} |
+void InstructionSelector::VisitInt32x4Splat(Node* node) { |
+ VisitRR(this, kMips64Int32x4Splat, node); |
+} |
+ |
+void InstructionSelector::VisitInt32x4ExtractLane(Node* node) { |
+ VisitRRI(this, kMips64Int32x4ExtractLane, node); |
+} |
+ |
+void InstructionSelector::VisitInt32x4ReplaceLane(Node* node) { |
+ VisitRRIR(this, kMips64Int32x4ReplaceLane, node); |
+} |
+ |
+void InstructionSelector::VisitInt32x4Add(Node* node) { |
+ VisitRRR(this, kMips64Int32x4Add, node); |
+} |
+ |
+void InstructionSelector::VisitInt32x4Sub(Node* node) { |
+ VisitRRR(this, kMips64Int32x4Sub, node); |
+} |
+ |
+void InstructionSelector::VisitSimd128Zero(Node* node) { |
+ Mips64OperandGenerator g(this); |
+ Emit(kMips64Simd128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
+void InstructionSelector::VisitSimd1x4Zero(Node* node) { |
+ Mips64OperandGenerator g(this); |
+ Emit(kMips64Simd128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
+void InstructionSelector::VisitSimd1x8Zero(Node* node) { |
+ Mips64OperandGenerator g(this); |
+ Emit(kMips64Simd128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
+void InstructionSelector::VisitSimd1x16Zero(Node* node) { |
+ Mips64OperandGenerator g(this); |
+ Emit(kMips64Simd128Zero, g.DefineSameAsFirst(node)); |
+} |
+ |
// static |
MachineOperatorBuilder::Flags |
InstructionSelector::SupportedMachineOperatorFlags() { |