Index: src/compiler/int64-lowering.cc |
diff --git a/src/compiler/int64-lowering.cc b/src/compiler/int64-lowering.cc |
index 2c32b962c3fc00d4af846adf6c9ae13f4137b8e2..064c86c679a766157fe16bbbc0743fe565055fd6 100644 |
--- a/src/compiler/int64-lowering.cc |
+++ b/src/compiler/int64-lowering.cc |
@@ -292,6 +292,25 @@ void Int64Lowering::LowerNode(Node* node) { |
// kExprI64ShrU: |
// kExprI64ShrS: |
// kExprI64Eq: |
+ case IrOpcode::kWord64Equal: { |
+ DCHECK(node->InputCount() == 2); |
+ Node* left = node->InputAt(0); |
+ Node* right = node->InputAt(1); |
+ |
+ // TODO(wasm): Use explicit comparisons and && here? |
+ Node* replacement = graph()->NewNode( |
+ machine()->Word32Equal(), |
+ graph()->NewNode( |
+ machine()->Word32Or(), |
+ graph()->NewNode(machine()->Word32Xor(), GetReplacementLow(left), |
+ GetReplacementLow(right)), |
+ graph()->NewNode(machine()->Word32Xor(), GetReplacementHigh(left), |
+ GetReplacementHigh(right))), |
+ graph()->NewNode(common()->Int32Constant(0))); |
+ |
+ ReplaceNode(node, replacement, nullptr); |
+ break; |
+ } |
// kExprI64Ne: |
// kExprI64LtS: |
// kExprI64LeS: |