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

Side by Side Diff: test/unittests/compiler/node-test-utils.cc

Issue 1468003002: [Interpreter] Add support for cast operators to bytecode graph builder and (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed review comments Created 5 years 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/unittests/compiler/node-test-utils.h ('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 "test/unittests/compiler/node-test-utils.h" 5 #include "test/unittests/compiler/node-test-utils.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/compiler/common-operator.h" 10 #include "src/compiler/common-operator.h"
(...skipping 1388 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 return (NodeMatcher::MatchAndExplain(node, listener) && 1399 return (NodeMatcher::MatchAndExplain(node, listener) &&
1400 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), 1400 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
1401 "input", input_matcher_, listener)); 1401 "input", input_matcher_, listener));
1402 } 1402 }
1403 1403
1404 private: 1404 private:
1405 const Matcher<Node*> input_matcher_; 1405 const Matcher<Node*> input_matcher_;
1406 }; 1406 };
1407 1407
1408 1408
1409 class IsJSBinopMatcher final : public NodeMatcher {
mythria 2015/11/30 12:34:25 I removed this part.
1410 public:
1411 IsJSBinopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& lhs_matcher,
1412 const Matcher<Node*>& rhs_matcher,
1413 const Matcher<Node*>& effect_matcher,
1414 const Matcher<Node*>& control_matcher)
1415 : NodeMatcher(opcode),
1416 lhs_matcher_(lhs_matcher),
1417 rhs_matcher_(rhs_matcher),
1418 effect_matcher_(effect_matcher),
1419 control_matcher_(control_matcher) {}
1420
1421 void DescribeTo(std::ostream* os) const final {
1422 NodeMatcher::DescribeTo(os);
1423 *os << " whose lhs (";
1424 lhs_matcher_.DescribeTo(os);
1425 *os << "), and rhs (";
1426 rhs_matcher_.DescribeTo(os);
1427 *os << "), and effect (";
1428 rhs_matcher_.DescribeTo(os);
1429 *os << "), and control (";
1430 rhs_matcher_.DescribeTo(os);
1431 *os << ")";
1432 }
1433
1434 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1435 return (NodeMatcher::MatchAndExplain(node, listener) &&
1436 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs",
1437 lhs_matcher_, listener) &&
1438 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs",
1439 rhs_matcher_, listener) &&
1440 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1441 effect_matcher_, listener) &&
1442 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1443 "control", control_matcher_, listener));
1444 }
1445
1446 private:
1447 const Matcher<Node*> lhs_matcher_;
1448 const Matcher<Node*> rhs_matcher_;
1449 const Matcher<Node*> effect_matcher_;
1450 const Matcher<Node*> control_matcher_;
1451 };
1452
1453
1454 class IsUnopWithEffectMatcher final : public NodeMatcher {
1455 public:
1456 IsUnopWithEffectMatcher(IrOpcode::Value opcode,
1457 const Matcher<Node*>& input_matcher,
1458 const Matcher<Node*>& effect_matcher)
1459 : NodeMatcher(opcode),
1460 input_matcher_(input_matcher),
1461 effect_matcher_(effect_matcher) {}
1462
1463 void DescribeTo(std::ostream* os) const final {
1464 NodeMatcher::DescribeTo(os);
1465 *os << " whose input (";
1466 input_matcher_.DescribeTo(os);
1467 *os << "), effect (";
1468 effect_matcher_.DescribeTo(os);
1469 *os << ")";
1470 }
1471
1472 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1473 return (NodeMatcher::MatchAndExplain(node, listener) &&
1474 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
1475 "input", input_matcher_, listener) &&
1476 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1477 effect_matcher_, listener));
1478 }
1479
1480 private:
1481 const Matcher<Node*> input_matcher_;
1482 const Matcher<Node*> effect_matcher_;
1483 };
1484
1485
1486 class IsUnopEffectControlMatcher final : public NodeMatcher {
1487 public:
1488 IsUnopEffectControlMatcher(IrOpcode::Value opcode,
1489 const Matcher<Node*>& input_matcher,
1490 const Matcher<Node*>& effect_matcher,
1491 const Matcher<Node*>& control_matcher)
1492 : NodeMatcher(opcode),
1493 input_matcher_(input_matcher),
1494 effect_matcher_(effect_matcher),
1495 control_matcher_(control_matcher) {}
1496
1497 void DescribeTo(std::ostream* os) const final {
1498 NodeMatcher::DescribeTo(os);
1499 *os << " whose input (";
1500 input_matcher_.DescribeTo(os);
1501 *os << "), effect (";
1502 effect_matcher_.DescribeTo(os);
1503 *os << "), control (";
1504 control_matcher_.DescribeTo(os);
1505 *os << ")";
1506 }
1507
1508 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1509 return (NodeMatcher::MatchAndExplain(node, listener) &&
1510 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
1511 "input", input_matcher_, listener) &&
1512 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1513 effect_matcher_, listener) &&
1514 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1515 "control", control_matcher_, listener));
1516 }
1517
1518 private:
1519 const Matcher<Node*> input_matcher_;
1520 const Matcher<Node*> effect_matcher_;
1521 const Matcher<Node*> control_matcher_;
1522 };
1523
1524
1409 class IsParameterMatcher final : public NodeMatcher { 1525 class IsParameterMatcher final : public NodeMatcher {
1410 public: 1526 public:
1411 explicit IsParameterMatcher(const Matcher<int>& index_matcher) 1527 explicit IsParameterMatcher(const Matcher<int>& index_matcher)
1412 : NodeMatcher(IrOpcode::kParameter), index_matcher_(index_matcher) {} 1528 : NodeMatcher(IrOpcode::kParameter), index_matcher_(index_matcher) {}
1413 1529
1414 void DescribeTo(std::ostream* os) const override { 1530 void DescribeTo(std::ostream* os) const override {
1415 *os << "is a Parameter node with index("; 1531 *os << "is a Parameter node with index(";
1416 index_matcher_.DescribeTo(os); 1532 index_matcher_.DescribeTo(os);
1417 *os << ")"; 1533 *os << ")";
1418 } 1534 }
1419 1535
1420 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final { 1536 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1421 return (NodeMatcher::MatchAndExplain(node, listener) && 1537 return (NodeMatcher::MatchAndExplain(node, listener) &&
1422 PrintMatchAndExplain(ParameterIndexOf(node->op()), "index", 1538 PrintMatchAndExplain(ParameterIndexOf(node->op()), "index",
1423 index_matcher_, listener)); 1539 index_matcher_, listener));
1424 } 1540 }
1425 1541
1426 private: 1542 private:
1427 const Matcher<int> index_matcher_; 1543 const Matcher<int> index_matcher_;
1428 }; 1544 };
1429 1545
mythria 2015/11/30 12:34:25 Part of rebase
1430 1546
1431 class IsJSDeletePropertyMatcher final : public NodeMatcher { 1547 class IsJSDeletePropertyMatcher final : public NodeMatcher {
1432 public: 1548 public:
1433 IsJSDeletePropertyMatcher(const Matcher<Node*>& object_value_matcher, 1549 IsJSDeletePropertyMatcher(const Matcher<Node*>& object_value_matcher,
1434 const Matcher<Node*>& key_matcher, 1550 const Matcher<Node*>& key_matcher,
1435 const Matcher<Node*>& effect_matcher, 1551 const Matcher<Node*>& effect_matcher,
1436 const Matcher<Node*>& control_matcher) 1552 const Matcher<Node*>& control_matcher)
1437 : NodeMatcher(IrOpcode::kJSDeleteProperty), 1553 : NodeMatcher(IrOpcode::kJSDeleteProperty),
1438 object_value_matcher_(object_value_matcher), 1554 object_value_matcher_(object_value_matcher),
1439 key_matcher_(key_matcher), 1555 key_matcher_(key_matcher),
(...skipping 984 matching lines...) Expand 10 before | Expand all | Expand 10 after
2424 Matcher<Node*> IsParameter(const Matcher<int> index_matcher) { 2540 Matcher<Node*> IsParameter(const Matcher<int> index_matcher) {
2425 return MakeMatcher(new IsParameterMatcher(index_matcher)); 2541 return MakeMatcher(new IsParameterMatcher(index_matcher));
2426 } 2542 }
2427 2543
2428 2544
2429 Matcher<Node*> IsLoadFramePointer() { 2545 Matcher<Node*> IsLoadFramePointer() {
2430 return MakeMatcher(new NodeMatcher(IrOpcode::kLoadFramePointer)); 2546 return MakeMatcher(new NodeMatcher(IrOpcode::kLoadFramePointer));
2431 } 2547 }
2432 2548
2433 2549
2434 Matcher<Node*> IsJSDeleteProperty(const Matcher<Node*>& object_value_matcher, 2550 Matcher<Node*> IsJSDeleteProperty(const Matcher<Node*>& object_value_matcher,
mythria 2015/11/30 12:34:25 Part of rebase
2435 const Matcher<Node*>& key_matcher, 2551 const Matcher<Node*>& key_matcher,
2436 const Matcher<Node*>& effect_matcher, 2552 const Matcher<Node*>& effect_matcher,
2437 const Matcher<Node*>& control_matcher) { 2553 const Matcher<Node*>& control_matcher) {
2438 return MakeMatcher(new IsJSDeletePropertyMatcher( 2554 return MakeMatcher(new IsJSDeletePropertyMatcher(
2439 object_value_matcher, key_matcher, effect_matcher, control_matcher)); 2555 object_value_matcher, key_matcher, effect_matcher, control_matcher));
2440 } 2556 }
2441 2557
2442 2558
2443 Matcher<Node*> IsJSLoadNamed(const Handle<Name> name, 2559 Matcher<Node*> IsJSLoadNamed(const Handle<Name> name,
2444 const Matcher<Node*>& object_value_matcher, 2560 const Matcher<Node*>& object_value_matcher,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
2528 2644
2529 Matcher<Node*> IsJSCallRuntime(std::vector<Matcher<Node*>> value_matchers, 2645 Matcher<Node*> IsJSCallRuntime(std::vector<Matcher<Node*>> value_matchers,
2530 const Matcher<Node*>& effect_matcher, 2646 const Matcher<Node*>& effect_matcher,
2531 const Matcher<Node*>& control_matcher) { 2647 const Matcher<Node*>& control_matcher) {
2532 return MakeMatcher(new IsJSCallMatcher(IrOpcode::kJSCallRuntime, 2648 return MakeMatcher(new IsJSCallMatcher(IrOpcode::kJSCallRuntime,
2533 value_matchers, effect_matcher, 2649 value_matchers, effect_matcher,
2534 control_matcher)); 2650 control_matcher));
2535 } 2651 }
2536 2652
2537 2653
2654 Matcher<Node*> IsJSBinaryOperation(IrOpcode::Value opcode,
mythria 2015/11/30 12:34:25 I removed this
2655 const Matcher<Node*>& lhs_matcher,
2656 const Matcher<Node*>& rhs_matcher,
2657 const Matcher<Node*>& effect_matcher,
2658 const Matcher<Node*>& control_matcher) {
2659 return MakeMatcher(new IsJSBinopMatcher(opcode, lhs_matcher, rhs_matcher,
2660 effect_matcher, control_matcher));
2661 }
2662
2663
2538 #define IS_BINOP_MATCHER(Name) \ 2664 #define IS_BINOP_MATCHER(Name) \
2539 Matcher<Node*> Is##Name(const Matcher<Node*>& lhs_matcher, \ 2665 Matcher<Node*> Is##Name(const Matcher<Node*>& lhs_matcher, \
2540 const Matcher<Node*>& rhs_matcher) { \ 2666 const Matcher<Node*>& rhs_matcher) { \
2541 return MakeMatcher( \ 2667 return MakeMatcher( \
2542 new IsBinopMatcher(IrOpcode::k##Name, lhs_matcher, rhs_matcher)); \ 2668 new IsBinopMatcher(IrOpcode::k##Name, lhs_matcher, rhs_matcher)); \
2543 } 2669 }
2544 IS_BINOP_MATCHER(NumberEqual) 2670 IS_BINOP_MATCHER(NumberEqual)
2545 IS_BINOP_MATCHER(NumberLessThan) 2671 IS_BINOP_MATCHER(NumberLessThan)
2546 IS_BINOP_MATCHER(NumberSubtract) 2672 IS_BINOP_MATCHER(NumberSubtract)
2547 IS_BINOP_MATCHER(NumberMultiply) 2673 IS_BINOP_MATCHER(NumberMultiply)
2548 IS_BINOP_MATCHER(NumberShiftLeft) 2674 IS_BINOP_MATCHER(NumberShiftLeft)
2549 IS_BINOP_MATCHER(NumberShiftRight) 2675 IS_BINOP_MATCHER(NumberShiftRight)
2550 IS_BINOP_MATCHER(NumberShiftRightLogical) 2676 IS_BINOP_MATCHER(NumberShiftRightLogical)
2551 IS_BINOP_MATCHER(Word32And) 2677 IS_BINOP_MATCHER(Word32And)
2552 IS_BINOP_MATCHER(Word32Or) 2678 IS_BINOP_MATCHER(Word32Or)
2553 IS_BINOP_MATCHER(Word32Sar) 2679 IS_BINOP_MATCHER(Word32Sar)
2554 IS_BINOP_MATCHER(Word32Shl) 2680 IS_BINOP_MATCHER(Word32Shl)
2555 IS_BINOP_MATCHER(Word32Shr) 2681 IS_BINOP_MATCHER(Word32Shr)
2556 IS_BINOP_MATCHER(Word32Ror) 2682 IS_BINOP_MATCHER(Word32Ror)
2557 IS_BINOP_MATCHER(Word32Equal) 2683 IS_BINOP_MATCHER(Word32Equal)
2558 IS_BINOP_MATCHER(Word64And) 2684 IS_BINOP_MATCHER(Word64And)
2559 IS_BINOP_MATCHER(Word64Or) 2685 IS_BINOP_MATCHER(Word64Or)
2560 IS_BINOP_MATCHER(Word64Sar) 2686 IS_BINOP_MATCHER(Word64Sar)
2561 IS_BINOP_MATCHER(Word64Shl) 2687 IS_BINOP_MATCHER(Word64Shl)
2562 IS_BINOP_MATCHER(Word64Shr) 2688 IS_BINOP_MATCHER(Word64Shr)
mythria 2015/11/30 12:34:25 Part of rebase
2563 IS_BINOP_MATCHER(Word64Equal) 2689 IS_BINOP_MATCHER(Word64Equal)
2564 IS_BINOP_MATCHER(Int32AddWithOverflow) 2690 IS_BINOP_MATCHER(Int32AddWithOverflow)
2565 IS_BINOP_MATCHER(Int32Add) 2691 IS_BINOP_MATCHER(Int32Add)
2566 IS_BINOP_MATCHER(Int32Sub) 2692 IS_BINOP_MATCHER(Int32Sub)
2567 IS_BINOP_MATCHER(Int32Mul) 2693 IS_BINOP_MATCHER(Int32Mul)
2568 IS_BINOP_MATCHER(Int32MulHigh) 2694 IS_BINOP_MATCHER(Int32MulHigh)
2569 IS_BINOP_MATCHER(Int32LessThan) 2695 IS_BINOP_MATCHER(Int32LessThan)
2570 IS_BINOP_MATCHER(Uint32LessThan) 2696 IS_BINOP_MATCHER(Uint32LessThan)
2571 IS_BINOP_MATCHER(Uint32LessThanOrEqual) 2697 IS_BINOP_MATCHER(Uint32LessThanOrEqual)
2572 IS_BINOP_MATCHER(Int64Add) 2698 IS_BINOP_MATCHER(Int64Add)
2573 IS_BINOP_MATCHER(Int64Sub) 2699 IS_BINOP_MATCHER(Int64Sub)
2574 IS_BINOP_MATCHER(Int64Mul) 2700 IS_BINOP_MATCHER(Int64Mul)
2575 IS_BINOP_MATCHER(JSAdd)
2576 IS_BINOP_MATCHER(Float32Max) 2701 IS_BINOP_MATCHER(Float32Max)
2577 IS_BINOP_MATCHER(Float32Min) 2702 IS_BINOP_MATCHER(Float32Min)
2578 IS_BINOP_MATCHER(Float32Equal) 2703 IS_BINOP_MATCHER(Float32Equal)
2579 IS_BINOP_MATCHER(Float32LessThan) 2704 IS_BINOP_MATCHER(Float32LessThan)
2580 IS_BINOP_MATCHER(Float32LessThanOrEqual) 2705 IS_BINOP_MATCHER(Float32LessThanOrEqual)
2581 IS_BINOP_MATCHER(Float64Max) 2706 IS_BINOP_MATCHER(Float64Max)
2582 IS_BINOP_MATCHER(Float64Min) 2707 IS_BINOP_MATCHER(Float64Min)
2583 IS_BINOP_MATCHER(Float64Sub) 2708 IS_BINOP_MATCHER(Float64Sub)
2584 IS_BINOP_MATCHER(Float64InsertLowWord32) 2709 IS_BINOP_MATCHER(Float64InsertLowWord32)
2585 IS_BINOP_MATCHER(Float64InsertHighWord32) 2710 IS_BINOP_MATCHER(Float64InsertHighWord32)
(...skipping 20 matching lines...) Expand all
2606 IS_UNOP_MATCHER(Float64Sqrt) 2731 IS_UNOP_MATCHER(Float64Sqrt)
2607 IS_UNOP_MATCHER(Float64RoundDown) 2732 IS_UNOP_MATCHER(Float64RoundDown)
2608 IS_UNOP_MATCHER(Float64RoundTruncate) 2733 IS_UNOP_MATCHER(Float64RoundTruncate)
2609 IS_UNOP_MATCHER(Float64RoundTiesAway) 2734 IS_UNOP_MATCHER(Float64RoundTiesAway)
2610 IS_UNOP_MATCHER(Float64ExtractLowWord32) 2735 IS_UNOP_MATCHER(Float64ExtractLowWord32)
2611 IS_UNOP_MATCHER(Float64ExtractHighWord32) 2736 IS_UNOP_MATCHER(Float64ExtractHighWord32)
2612 IS_UNOP_MATCHER(NumberToInt32) 2737 IS_UNOP_MATCHER(NumberToInt32)
2613 IS_UNOP_MATCHER(NumberToUint32) 2738 IS_UNOP_MATCHER(NumberToUint32)
2614 IS_UNOP_MATCHER(ObjectIsSmi) 2739 IS_UNOP_MATCHER(ObjectIsSmi)
2615 IS_UNOP_MATCHER(Word32Clz) 2740 IS_UNOP_MATCHER(Word32Clz)
2616 IS_UNOP_MATCHER(JSUnaryNot)
2617 IS_UNOP_MATCHER(JSTypeOf)
2618 #undef IS_UNOP_MATCHER 2741 #undef IS_UNOP_MATCHER
2619 2742
2743
mythria 2015/11/30 12:34:25 I removed this.
2744 #define IS_UNOP_EFFECT_MATCHER(Name) \
2745 Matcher<Node*> Is##Name(const Matcher<Node*>& input_matcher, \
2746 const Matcher<Node*>& effect_matcher) { \
2747 return MakeMatcher(new IsUnopWithEffectMatcher( \
2748 IrOpcode::k##Name, input_matcher, effect_matcher)); \
2749 }
2750 IS_UNOP_EFFECT_MATCHER(JSUnaryNot)
2751 IS_UNOP_EFFECT_MATCHER(JSTypeOf)
2752 IS_UNOP_EFFECT_MATCHER(JSToBoolean)
2753 #undef IS_UNOP_EFFECT_MATCHER
2754
2755
2756 #define IS_UNOP_EFFECT_CONTROL_MATCHER(Name) \
2757 Matcher<Node*> Is##Name(const Matcher<Node*>& input_matcher, \
2758 const Matcher<Node*>& effect_matcher, \
2759 const Matcher<Node*>& control_matcher) { \
2760 return MakeMatcher(new IsUnopEffectControlMatcher( \
2761 IrOpcode::k##Name, input_matcher, effect_matcher, control_matcher)); \
2762 }
2763 IS_UNOP_EFFECT_CONTROL_MATCHER(JSToName)
2764 IS_UNOP_EFFECT_CONTROL_MATCHER(JSToObject)
2765 #undef IS_UNOP_EFFECT_CONTROL_MATCHER
2766
2620 } // namespace compiler 2767 } // namespace compiler
2621 } // namespace internal 2768 } // namespace internal
2622 } // namespace v8 2769 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/node-test-utils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698