| Index: test/unittests/compiler/js-typed-lowering-unittest.cc
 | 
| diff --git a/test/unittests/compiler/js-typed-lowering-unittest.cc b/test/unittests/compiler/js-typed-lowering-unittest.cc
 | 
| index e6cec06458b60313217237e74b8428dfe378c683..36e065f40ff4db45d15c8e93cd945f1a3c8b4e69 100644
 | 
| --- a/test/unittests/compiler/js-typed-lowering-unittest.cc
 | 
| +++ b/test/unittests/compiler/js-typed-lowering-unittest.cc
 | 
| @@ -1006,6 +1006,72 @@ TEST_F(JSTypedLoweringTest, JSInstanceOfNoSpecialization) {
 | 
|    ASSERT_EQ(instanceOf, dummy->InputAt(0));
 | 
|  }
 | 
|  
 | 
| +// -----------------------------------------------------------------------------
 | 
| +// JSBitwiseAnd
 | 
| +
 | 
| +TEST_F(JSTypedLoweringTest, JSBitwiseAndWithTypeFeedback) {
 | 
| +  BinaryOperationHints::Hint const feedback_types[] = {
 | 
| +      BinaryOperationHints::kSignedSmall,
 | 
| +      BinaryOperationHints::kNumberOrOddball};
 | 
| +  for (BinaryOperationHints::Hint feedback : feedback_types) {
 | 
| +    BinaryOperationHints const hints(feedback, feedback, feedback);
 | 
| +    Node* lhs = Parameter(Type::Number(), 2);
 | 
| +    Node* rhs = Parameter(Type::Number(), 3);
 | 
| +    Node* effect = graph()->start();
 | 
| +    Node* control = graph()->start();
 | 
| +    Reduction r = Reduce(graph()->NewNode(
 | 
| +        javascript()->BitwiseAnd(hints), lhs, rhs, UndefinedConstant(),
 | 
| +        EmptyFrameState(), EmptyFrameState(), effect, control));
 | 
| +    ASSERT_TRUE(r.Changed());
 | 
| +    EXPECT_THAT(r.replacement(), IsSpeculativeNumberBitwiseAnd(
 | 
| +                                     feedback, lhs, rhs, effect, control));
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +// -----------------------------------------------------------------------------
 | 
| +// JSBitwiseOr
 | 
| +
 | 
| +TEST_F(JSTypedLoweringTest, JSBitwiseOrWithTypeFeedback) {
 | 
| +  BinaryOperationHints::Hint const feedback_types[] = {
 | 
| +      BinaryOperationHints::kSignedSmall,
 | 
| +      BinaryOperationHints::kNumberOrOddball};
 | 
| +  for (BinaryOperationHints::Hint feedback : feedback_types) {
 | 
| +    BinaryOperationHints const hints(feedback, feedback, feedback);
 | 
| +    Node* lhs = Parameter(Type::Number(), 2);
 | 
| +    Node* rhs = Parameter(Type::Number(), 3);
 | 
| +    Node* effect = graph()->start();
 | 
| +    Node* control = graph()->start();
 | 
| +    Reduction r = Reduce(graph()->NewNode(
 | 
| +        javascript()->BitwiseOr(hints), lhs, rhs, UndefinedConstant(),
 | 
| +        EmptyFrameState(), EmptyFrameState(), effect, control));
 | 
| +    ASSERT_TRUE(r.Changed());
 | 
| +    EXPECT_THAT(r.replacement(), IsSpeculativeNumberBitwiseOr(
 | 
| +                                     feedback, lhs, rhs, effect, control));
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +// -----------------------------------------------------------------------------
 | 
| +// JSBitwiseXor
 | 
| +
 | 
| +TEST_F(JSTypedLoweringTest, JSBitwiseXorWithTypeFeedback) {
 | 
| +  BinaryOperationHints::Hint const feedback_types[] = {
 | 
| +      BinaryOperationHints::kSignedSmall,
 | 
| +      BinaryOperationHints::kNumberOrOddball};
 | 
| +  for (BinaryOperationHints::Hint feedback : feedback_types) {
 | 
| +    BinaryOperationHints const hints(feedback, feedback, feedback);
 | 
| +    Node* lhs = Parameter(Type::Number(), 2);
 | 
| +    Node* rhs = Parameter(Type::Number(), 3);
 | 
| +    Node* effect = graph()->start();
 | 
| +    Node* control = graph()->start();
 | 
| +    Reduction r = Reduce(graph()->NewNode(
 | 
| +        javascript()->BitwiseXor(hints), lhs, rhs, UndefinedConstant(),
 | 
| +        EmptyFrameState(), EmptyFrameState(), effect, control));
 | 
| +    ASSERT_TRUE(r.Changed());
 | 
| +    EXPECT_THAT(r.replacement(), IsSpeculativeNumberBitwiseXor(
 | 
| +                                     feedback, lhs, rhs, effect, control));
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  }  // namespace compiler
 | 
|  }  // namespace internal
 | 
|  }  // namespace v8
 | 
| 
 |