| Index: test/compiler-unittests/change-lowering-unittest.cc
|
| diff --git a/test/compiler-unittests/change-lowering-unittest.cc b/test/compiler-unittests/change-lowering-unittest.cc
|
| index 303c1dc957c9f97175654acb1c26a4f066a8ae15..ce89622e2cc1eb424bb8477991fbcf8d1fa3637d 100644
|
| --- a/test/compiler-unittests/change-lowering-unittest.cc
|
| +++ b/test/compiler-unittests/change-lowering-unittest.cc
|
| @@ -289,6 +289,31 @@ TARGET_TEST_F(ChangeLowering32Test, ChangeTaggedToInt32) {
|
| }
|
|
|
|
|
| +TARGET_TEST_F(ChangeLowering32Test, ChangeTaggedToUint32) {
|
| + STATIC_ASSERT(kSmiTag == 0);
|
| + STATIC_ASSERT(kSmiTagSize == 1);
|
| +
|
| + Node* val = Parameter(0);
|
| + Node* node = graph()->NewNode(simplified()->ChangeTaggedToUint32(), val);
|
| + Reduction reduction = Reduce(node);
|
| + ASSERT_TRUE(reduction.Changed());
|
| +
|
| + Node* phi = reduction.replacement();
|
| + Capture<Node*> branch, if_true;
|
| + EXPECT_THAT(
|
| + phi,
|
| + IsPhi(IsTruncateFloat64ToInt32(IsLoad(
|
| + kMachFloat64, val, IsInt32Constant(HeapNumberValueOffset()),
|
| + IsControlEffect(CaptureEq(&if_true)))),
|
| + IsWord32Sar(val, IsInt32Constant(SmiShiftAmount())),
|
| + IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))),
|
| + IsIfFalse(AllOf(
|
| + CaptureEq(&branch),
|
| + IsBranch(IsWord32And(val, IsInt32Constant(kSmiTagMask)),
|
| + graph()->start()))))));
|
| +}
|
| +
|
| +
|
| TARGET_TEST_F(ChangeLowering32Test, ChangeUint32ToTagged) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
| @@ -399,6 +424,32 @@ TARGET_TEST_F(ChangeLowering64Test, ChangeTaggedToInt32) {
|
| }
|
|
|
|
|
| +TARGET_TEST_F(ChangeLowering64Test, ChangeTaggedToUint32) {
|
| + STATIC_ASSERT(kSmiTag == 0);
|
| + STATIC_ASSERT(kSmiTagSize == 1);
|
| +
|
| + Node* val = Parameter(0);
|
| + Node* node = graph()->NewNode(simplified()->ChangeTaggedToUint32(), val);
|
| + Reduction reduction = Reduce(node);
|
| + ASSERT_TRUE(reduction.Changed());
|
| +
|
| + Node* phi = reduction.replacement();
|
| + Capture<Node*> branch, if_true;
|
| + EXPECT_THAT(
|
| + phi,
|
| + IsPhi(IsTruncateFloat64ToInt32(IsLoad(
|
| + kMachFloat64, val, IsInt32Constant(HeapNumberValueOffset()),
|
| + IsControlEffect(CaptureEq(&if_true)))),
|
| + IsTruncateInt64ToInt32(
|
| + IsWord64Sar(val, IsInt32Constant(SmiShiftAmount()))),
|
| + IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))),
|
| + IsIfFalse(AllOf(
|
| + CaptureEq(&branch),
|
| + IsBranch(IsWord64And(val, IsInt32Constant(kSmiTagMask)),
|
| + graph()->start()))))));
|
| +}
|
| +
|
| +
|
| TARGET_TEST_F(ChangeLowering64Test, ChangeUint32ToTagged) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
|
|