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

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

Issue 642033002: [turbofan] Eliminate redundant masking operations for word8/word16 stores. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address comment. Created 6 years, 2 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 | Annotate | Revision Log
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/graph-unittest.h" 5 #include "test/unittests/compiler/graph-unittest.h"
6 6
7 #include <ostream> // NOLINT(readability/streams) 7 #include <ostream> // NOLINT(readability/streams)
8 8
9 #include "src/compiler/node-properties-inl.h" 9 #include "src/compiler/node-properties-inl.h"
10 #include "src/compiler/simplified-operator.h" 10 #include "src/compiler/simplified-operator.h"
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 const Matcher<LoadRepresentation> rep_matcher_; 647 const Matcher<LoadRepresentation> rep_matcher_;
648 const Matcher<Node*> base_matcher_; 648 const Matcher<Node*> base_matcher_;
649 const Matcher<Node*> index_matcher_; 649 const Matcher<Node*> index_matcher_;
650 const Matcher<Node*> effect_matcher_; 650 const Matcher<Node*> effect_matcher_;
651 const Matcher<Node*> control_matcher_; 651 const Matcher<Node*> control_matcher_;
652 }; 652 };
653 653
654 654
655 class IsStoreMatcher FINAL : public NodeMatcher { 655 class IsStoreMatcher FINAL : public NodeMatcher {
656 public: 656 public:
657 IsStoreMatcher(const Matcher<MachineType>& type_matcher, 657 IsStoreMatcher(const Matcher<StoreRepresentation>& rep_matcher,
658 const Matcher<WriteBarrierKind> write_barrier_matcher,
659 const Matcher<Node*>& base_matcher, 658 const Matcher<Node*>& base_matcher,
660 const Matcher<Node*>& index_matcher, 659 const Matcher<Node*>& index_matcher,
661 const Matcher<Node*>& value_matcher, 660 const Matcher<Node*>& value_matcher,
662 const Matcher<Node*>& effect_matcher, 661 const Matcher<Node*>& effect_matcher,
663 const Matcher<Node*>& control_matcher) 662 const Matcher<Node*>& control_matcher)
664 : NodeMatcher(IrOpcode::kStore), 663 : NodeMatcher(IrOpcode::kStore),
665 type_matcher_(type_matcher), 664 rep_matcher_(rep_matcher),
666 write_barrier_matcher_(write_barrier_matcher),
667 base_matcher_(base_matcher), 665 base_matcher_(base_matcher),
668 index_matcher_(index_matcher), 666 index_matcher_(index_matcher),
669 value_matcher_(value_matcher), 667 value_matcher_(value_matcher),
670 effect_matcher_(effect_matcher), 668 effect_matcher_(effect_matcher),
671 control_matcher_(control_matcher) {} 669 control_matcher_(control_matcher) {}
672 670
673 virtual void DescribeTo(std::ostream* os) const OVERRIDE { 671 virtual void DescribeTo(std::ostream* os) const OVERRIDE {
674 NodeMatcher::DescribeTo(os); 672 NodeMatcher::DescribeTo(os);
675 *os << " whose type ("; 673 *os << " whose rep (";
676 type_matcher_.DescribeTo(os); 674 rep_matcher_.DescribeTo(os);
677 *os << "), write barrier (";
678 write_barrier_matcher_.DescribeTo(os);
679 *os << "), base ("; 675 *os << "), base (";
680 base_matcher_.DescribeTo(os); 676 base_matcher_.DescribeTo(os);
681 *os << "), index ("; 677 *os << "), index (";
682 index_matcher_.DescribeTo(os); 678 index_matcher_.DescribeTo(os);
683 *os << "), value ("; 679 *os << "), value (";
684 value_matcher_.DescribeTo(os); 680 value_matcher_.DescribeTo(os);
685 *os << "), effect ("; 681 *os << "), effect (";
686 effect_matcher_.DescribeTo(os); 682 effect_matcher_.DescribeTo(os);
687 *os << ") and control ("; 683 *os << ") and control (";
688 control_matcher_.DescribeTo(os); 684 control_matcher_.DescribeTo(os);
689 *os << ")"; 685 *os << ")";
690 } 686 }
691 687
692 virtual bool MatchAndExplain(Node* node, 688 virtual bool MatchAndExplain(Node* node,
693 MatchResultListener* listener) const OVERRIDE { 689 MatchResultListener* listener) const OVERRIDE {
694 return (NodeMatcher::MatchAndExplain(node, listener) && 690 return (NodeMatcher::MatchAndExplain(node, listener) &&
695 PrintMatchAndExplain( 691 PrintMatchAndExplain(OpParameter<StoreRepresentation>(node), "rep",
696 OpParameter<StoreRepresentation>(node).machine_type(), "type", 692 rep_matcher_, listener) &&
697 type_matcher_, listener) &&
698 PrintMatchAndExplain(
699 OpParameter<StoreRepresentation>(node).write_barrier_kind(),
700 "write barrier", write_barrier_matcher_, listener) &&
701 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", 693 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
702 base_matcher_, listener) && 694 base_matcher_, listener) &&
703 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), 695 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
704 "index", index_matcher_, listener) && 696 "index", index_matcher_, listener) &&
705 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), 697 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
706 "value", value_matcher_, listener) && 698 "value", value_matcher_, listener) &&
707 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", 699 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
708 effect_matcher_, listener) && 700 effect_matcher_, listener) &&
709 PrintMatchAndExplain(NodeProperties::GetControlInput(node), 701 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
710 "control", control_matcher_, listener)); 702 "control", control_matcher_, listener));
711 } 703 }
712 704
713 private: 705 private:
714 const Matcher<MachineType> type_matcher_; 706 const Matcher<StoreRepresentation> rep_matcher_;
715 const Matcher<WriteBarrierKind> write_barrier_matcher_;
716 const Matcher<Node*> base_matcher_; 707 const Matcher<Node*> base_matcher_;
717 const Matcher<Node*> index_matcher_; 708 const Matcher<Node*> index_matcher_;
718 const Matcher<Node*> value_matcher_; 709 const Matcher<Node*> value_matcher_;
719 const Matcher<Node*> effect_matcher_; 710 const Matcher<Node*> effect_matcher_;
720 const Matcher<Node*> control_matcher_; 711 const Matcher<Node*> control_matcher_;
721 }; 712 };
722 713
723 714
724 class IsBinopMatcher FINAL : public NodeMatcher { 715 class IsBinopMatcher FINAL : public NodeMatcher {
725 public: 716 public:
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher, 911 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher,
921 const Matcher<Node*>& base_matcher, 912 const Matcher<Node*>& base_matcher,
922 const Matcher<Node*>& index_matcher, 913 const Matcher<Node*>& index_matcher,
923 const Matcher<Node*>& effect_matcher, 914 const Matcher<Node*>& effect_matcher,
924 const Matcher<Node*>& control_matcher) { 915 const Matcher<Node*>& control_matcher) {
925 return MakeMatcher(new IsLoadMatcher(rep_matcher, base_matcher, index_matcher, 916 return MakeMatcher(new IsLoadMatcher(rep_matcher, base_matcher, index_matcher,
926 effect_matcher, control_matcher)); 917 effect_matcher, control_matcher));
927 } 918 }
928 919
929 920
930 Matcher<Node*> IsStore(const Matcher<MachineType>& type_matcher, 921 Matcher<Node*> IsStore(const Matcher<StoreRepresentation>& rep_matcher,
931 const Matcher<WriteBarrierKind>& write_barrier_matcher,
932 const Matcher<Node*>& base_matcher, 922 const Matcher<Node*>& base_matcher,
933 const Matcher<Node*>& index_matcher, 923 const Matcher<Node*>& index_matcher,
934 const Matcher<Node*>& value_matcher, 924 const Matcher<Node*>& value_matcher,
935 const Matcher<Node*>& effect_matcher, 925 const Matcher<Node*>& effect_matcher,
936 const Matcher<Node*>& control_matcher) { 926 const Matcher<Node*>& control_matcher) {
937 return MakeMatcher(new IsStoreMatcher( 927 return MakeMatcher(new IsStoreMatcher(rep_matcher, base_matcher,
938 type_matcher, write_barrier_matcher, base_matcher, index_matcher, 928 index_matcher, value_matcher,
939 value_matcher, effect_matcher, control_matcher)); 929 effect_matcher, control_matcher));
940 } 930 }
941 931
942 932
943 #define IS_BINOP_MATCHER(Name) \ 933 #define IS_BINOP_MATCHER(Name) \
944 Matcher<Node*> Is##Name(const Matcher<Node*>& lhs_matcher, \ 934 Matcher<Node*> Is##Name(const Matcher<Node*>& lhs_matcher, \
945 const Matcher<Node*>& rhs_matcher) { \ 935 const Matcher<Node*>& rhs_matcher) { \
946 return MakeMatcher( \ 936 return MakeMatcher( \
947 new IsBinopMatcher(IrOpcode::k##Name, lhs_matcher, rhs_matcher)); \ 937 new IsBinopMatcher(IrOpcode::k##Name, lhs_matcher, rhs_matcher)); \
948 } 938 }
949 IS_BINOP_MATCHER(NumberLessThan) 939 IS_BINOP_MATCHER(NumberLessThan)
(...skipping 25 matching lines...) Expand all
975 IS_UNOP_MATCHER(ChangeUint32ToUint64) 965 IS_UNOP_MATCHER(ChangeUint32ToUint64)
976 IS_UNOP_MATCHER(TruncateFloat64ToFloat32) 966 IS_UNOP_MATCHER(TruncateFloat64ToFloat32)
977 IS_UNOP_MATCHER(TruncateFloat64ToInt32) 967 IS_UNOP_MATCHER(TruncateFloat64ToInt32)
978 IS_UNOP_MATCHER(TruncateInt64ToInt32) 968 IS_UNOP_MATCHER(TruncateInt64ToInt32)
979 IS_UNOP_MATCHER(Float64Sqrt) 969 IS_UNOP_MATCHER(Float64Sqrt)
980 #undef IS_UNOP_MATCHER 970 #undef IS_UNOP_MATCHER
981 971
982 } // namespace compiler 972 } // namespace compiler
983 } // namespace internal 973 } // namespace internal
984 } // namespace v8 974 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/graph-unittest.h ('k') | test/unittests/compiler/machine-operator-reducer-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698