Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Side by Side Diff: test/unittests/compiler/change-lowering-unittest.cc

Issue 1917753002: [turbofan] Remove obsolete parts of change lowering. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/cctest/compiler/test-simplified-lowering.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/code-stubs.h" 5 #include "src/code-stubs.h"
6 #include "src/compiler/change-lowering.h" 6 #include "src/compiler/change-lowering.h"
7 #include "src/compiler/js-graph.h" 7 #include "src/compiler/js-graph.h"
8 #include "src/compiler/linkage.h" 8 #include "src/compiler/linkage.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 #include "src/compiler/simplified-operator.h" 10 #include "src/compiler/simplified-operator.h"
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 328
329 class ChangeLowering32Test : public ChangeLoweringTest { 329 class ChangeLowering32Test : public ChangeLoweringTest {
330 public: 330 public:
331 ~ChangeLowering32Test() override {} 331 ~ChangeLowering32Test() override {}
332 MachineRepresentation WordRepresentation() const final { 332 MachineRepresentation WordRepresentation() const final {
333 return MachineRepresentation::kWord32; 333 return MachineRepresentation::kWord32;
334 } 334 }
335 }; 335 };
336 336
337 337
338 TARGET_TEST_F(ChangeLowering32Test, ChangeInt32ToTagged) {
339 Node* value = Parameter(Type::Integral32());
340 Node* node = graph()->NewNode(simplified()->ChangeInt32ToTagged(), value);
341 Reduction r = Reduce(node);
342 ASSERT_TRUE(r.Changed());
343 Capture<Node*> add, branch, heap_number, if_true;
344 EXPECT_THAT(
345 r.replacement(),
346 IsPhi(MachineRepresentation::kTagged,
347 IsFinishRegion(
348 AllOf(CaptureEq(&heap_number),
349 IsAllocateHeapNumber(_, CaptureEq(&if_true))),
350 IsStore(
351 StoreRepresentation(MachineRepresentation::kFloat64,
352 kNoWriteBarrier),
353 CaptureEq(&heap_number),
354 IsIntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag),
355 IsChangeInt32ToFloat64(value), CaptureEq(&heap_number),
356 CaptureEq(&if_true))),
357 IsProjection(0, AllOf(CaptureEq(&add),
358 IsInt32AddWithOverflow(value, value))),
359 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))),
360 IsIfFalse(AllOf(CaptureEq(&branch),
361 IsBranch(IsProjection(1, CaptureEq(&add)),
362 graph()->start()))))));
363 }
364
365
366 TARGET_TEST_F(ChangeLowering32Test, ChangeTaggedToFloat64) { 338 TARGET_TEST_F(ChangeLowering32Test, ChangeTaggedToFloat64) {
367 STATIC_ASSERT(kSmiTag == 0); 339 STATIC_ASSERT(kSmiTag == 0);
368 STATIC_ASSERT(kSmiTagSize == 1); 340 STATIC_ASSERT(kSmiTagSize == 1);
369 341
370 Node* value = Parameter(Type::Number()); 342 Node* value = Parameter(Type::Number());
371 Node* node = graph()->NewNode(simplified()->ChangeTaggedToFloat64(), value); 343 Node* node = graph()->NewNode(simplified()->ChangeTaggedToFloat64(), value);
372 Reduction r = Reduce(node); 344 Reduction r = Reduce(node);
373 ASSERT_TRUE(r.Changed()); 345 ASSERT_TRUE(r.Changed());
374 Capture<Node*> branch, if_true; 346 Capture<Node*> branch, if_true;
375 EXPECT_THAT( 347 EXPECT_THAT(
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 IsChangeFloat64ToUint32(IsLoadHeapNumber(value, CaptureEq(&if_true))), 399 IsChangeFloat64ToUint32(IsLoadHeapNumber(value, CaptureEq(&if_true))),
428 IsWord32Sar(value, IsInt32Constant(kSmiTagSize + kSmiShiftSize)), 400 IsWord32Sar(value, IsInt32Constant(kSmiTagSize + kSmiShiftSize)),
429 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))), 401 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))),
430 IsIfFalse(AllOf( 402 IsIfFalse(AllOf(
431 CaptureEq(&branch), 403 CaptureEq(&branch),
432 IsBranch(IsWord32And(value, IsInt32Constant(kSmiTagMask)), 404 IsBranch(IsWord32And(value, IsInt32Constant(kSmiTagMask)),
433 graph()->start())))))); 405 graph()->start()))))));
434 } 406 }
435 407
436 408
437 TARGET_TEST_F(ChangeLowering32Test, ChangeUint32ToTagged) {
438 STATIC_ASSERT(kSmiTag == 0);
439 STATIC_ASSERT(kSmiTagSize == 1);
440
441 Node* value = Parameter(Type::Number());
442 Node* node = graph()->NewNode(simplified()->ChangeUint32ToTagged(), value);
443 Reduction r = Reduce(node);
444 ASSERT_TRUE(r.Changed());
445 Capture<Node*> branch, heap_number, if_false;
446 EXPECT_THAT(
447 r.replacement(),
448 IsPhi(
449 MachineRepresentation::kTagged,
450 IsWord32Shl(value, IsInt32Constant(kSmiTagSize + kSmiShiftSize)),
451 IsFinishRegion(
452 AllOf(CaptureEq(&heap_number),
453 IsAllocateHeapNumber(_, CaptureEq(&if_false))),
454 IsStore(
455 StoreRepresentation(MachineRepresentation::kFloat64,
456 kNoWriteBarrier),
457 CaptureEq(&heap_number),
458 IsInt32Constant(HeapNumber::kValueOffset - kHeapObjectTag),
459 IsChangeUint32ToFloat64(value), CaptureEq(&heap_number),
460 CaptureEq(&if_false))),
461 IsMerge(IsIfTrue(AllOf(
462 CaptureEq(&branch),
463 IsBranch(IsUint32LessThanOrEqual(
464 value, IsInt32Constant(Smi::kMaxValue)),
465 graph()->start()))),
466 AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch))))));
467 }
468
469
470 // ----------------------------------------------------------------------------- 409 // -----------------------------------------------------------------------------
471 // 64-bit 410 // 64-bit
472 411
473 412
474 class ChangeLowering64Test : public ChangeLoweringTest { 413 class ChangeLowering64Test : public ChangeLoweringTest {
475 public: 414 public:
476 ~ChangeLowering64Test() override {} 415 ~ChangeLowering64Test() override {}
477 MachineRepresentation WordRepresentation() const final { 416 MachineRepresentation WordRepresentation() const final {
478 return MachineRepresentation::kWord64; 417 return MachineRepresentation::kWord64;
479 } 418 }
480 }; 419 };
481 420
482 421
483 TARGET_TEST_F(ChangeLowering64Test, ChangeInt32ToTagged) {
484 Node* value = Parameter(Type::Signed32());
485 Node* node = graph()->NewNode(simplified()->ChangeInt32ToTagged(), value);
486 Reduction r = Reduce(node);
487 ASSERT_TRUE(r.Changed());
488 EXPECT_THAT(r.replacement(), IsChangeInt32ToSmi(value));
489 }
490
491
492 TARGET_TEST_F(ChangeLowering64Test, ChangeTaggedToFloat64) { 422 TARGET_TEST_F(ChangeLowering64Test, ChangeTaggedToFloat64) {
493 STATIC_ASSERT(kSmiTag == 0); 423 STATIC_ASSERT(kSmiTag == 0);
494 STATIC_ASSERT(kSmiTagSize == 1); 424 STATIC_ASSERT(kSmiTagSize == 1);
495 425
496 Node* value = Parameter(Type::Number()); 426 Node* value = Parameter(Type::Number());
497 Node* node = graph()->NewNode(simplified()->ChangeTaggedToFloat64(), value); 427 Node* node = graph()->NewNode(simplified()->ChangeTaggedToFloat64(), value);
498 Reduction r = Reduce(node); 428 Reduction r = Reduce(node);
499 ASSERT_TRUE(r.Changed()); 429 ASSERT_TRUE(r.Changed());
500 Capture<Node*> branch, if_true; 430 Capture<Node*> branch, if_true;
501 EXPECT_THAT( 431 EXPECT_THAT(
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 IsChangeFloat64ToUint32(IsLoadHeapNumber(value, CaptureEq(&if_true))), 484 IsChangeFloat64ToUint32(IsLoadHeapNumber(value, CaptureEq(&if_true))),
555 IsTruncateInt64ToInt32( 485 IsTruncateInt64ToInt32(
556 IsWord64Sar(value, IsInt64Constant(kSmiTagSize + kSmiShiftSize))), 486 IsWord64Sar(value, IsInt64Constant(kSmiTagSize + kSmiShiftSize))),
557 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))), 487 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))),
558 IsIfFalse(AllOf( 488 IsIfFalse(AllOf(
559 CaptureEq(&branch), 489 CaptureEq(&branch),
560 IsBranch(IsWord64And(value, IsInt64Constant(kSmiTagMask)), 490 IsBranch(IsWord64And(value, IsInt64Constant(kSmiTagMask)),
561 graph()->start())))))); 491 graph()->start()))))));
562 } 492 }
563 493
564
565 TARGET_TEST_F(ChangeLowering64Test, ChangeUint32ToTagged) {
566 STATIC_ASSERT(kSmiTag == 0);
567 STATIC_ASSERT(kSmiTagSize == 1);
568
569 Node* value = Parameter(Type::Number());
570 Node* node = graph()->NewNode(simplified()->ChangeUint32ToTagged(), value);
571 Reduction r = Reduce(node);
572 ASSERT_TRUE(r.Changed());
573 Capture<Node*> branch, heap_number, if_false;
574 EXPECT_THAT(
575 r.replacement(),
576 IsPhi(
577 MachineRepresentation::kTagged,
578 IsWord64Shl(IsChangeUint32ToUint64(value),
579 IsInt64Constant(kSmiTagSize + kSmiShiftSize)),
580 IsFinishRegion(
581 AllOf(CaptureEq(&heap_number),
582 IsAllocateHeapNumber(_, CaptureEq(&if_false))),
583 IsStore(
584 StoreRepresentation(MachineRepresentation::kFloat64,
585 kNoWriteBarrier),
586 CaptureEq(&heap_number),
587 IsInt64Constant(HeapNumber::kValueOffset - kHeapObjectTag),
588 IsChangeUint32ToFloat64(value), CaptureEq(&heap_number),
589 CaptureEq(&if_false))),
590 IsMerge(IsIfTrue(AllOf(
591 CaptureEq(&branch),
592 IsBranch(IsUint32LessThanOrEqual(
593 value, IsInt32Constant(Smi::kMaxValue)),
594 graph()->start()))),
595 AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch))))));
596 }
597
598 } // namespace compiler 494 } // namespace compiler
599 } // namespace internal 495 } // namespace internal
600 } // namespace v8 496 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-simplified-lowering.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698