Index: src/compiler/arm64/instruction-selector-arm64.cc |
diff --git a/src/compiler/arm64/instruction-selector-arm64.cc b/src/compiler/arm64/instruction-selector-arm64.cc |
index 893c00508efcfce8427801c2911d79c0f0ddcddd..04c486f65f8692b855a04ae53c2fe7ee7892ba62 100644 |
--- a/src/compiler/arm64/instruction-selector-arm64.cc |
+++ b/src/compiler/arm64/instruction-selector-arm64.cc |
@@ -746,6 +746,16 @@ void InstructionSelector::VisitInt64Mul(Node* node) { |
} |
+void InstructionSelector::VisitInt32MulHigh(Node* node) { |
+ // TODO(arm64): Can we do better here? |
+ Arm64OperandGenerator g(this); |
+ InstructionOperand* const smull_operand = g.TempRegister(); |
+ Emit(kArm64Smull, smull_operand, g.UseRegister(node->InputAt(0)), |
+ g.UseRegister(node->InputAt(1))); |
+ Emit(kArm64Asr, g.DefineAsRegister(node), smull_operand, g.TempImmediate(32)); |
+} |
+ |
+ |
void InstructionSelector::VisitInt32Div(Node* node) { |
VisitRRR(this, kArm64Idiv32, node); |
} |