| OLD | NEW |
| 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 "src/compiler/node-properties-inl.h" | 7 #include "src/compiler/node-properties-inl.h" |
| 8 #include "src/compiler/simplified-operator.h" | 8 #include "src/compiler/simplified-operator.h" |
| 9 | 9 |
| 10 using testing::_; | 10 using testing::_; |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 } | 293 } |
| 294 | 294 |
| 295 private: | 295 private: |
| 296 const Matcher<MachineType> type_matcher_; | 296 const Matcher<MachineType> type_matcher_; |
| 297 const Matcher<Node*> value0_matcher_; | 297 const Matcher<Node*> value0_matcher_; |
| 298 const Matcher<Node*> value1_matcher_; | 298 const Matcher<Node*> value1_matcher_; |
| 299 const Matcher<Node*> control_matcher_; | 299 const Matcher<Node*> control_matcher_; |
| 300 }; | 300 }; |
| 301 | 301 |
| 302 | 302 |
| 303 class IsEffectPhiMatcher FINAL : public NodeMatcher { |
| 304 public: |
| 305 IsEffectPhiMatcher(const Matcher<Node*>& effect0_matcher, |
| 306 const Matcher<Node*>& effect1_matcher, |
| 307 const Matcher<Node*>& control_matcher) |
| 308 : NodeMatcher(IrOpcode::kEffectPhi), |
| 309 effect0_matcher_(effect0_matcher), |
| 310 effect1_matcher_(effect1_matcher), |
| 311 control_matcher_(control_matcher) {} |
| 312 |
| 313 virtual void DescribeTo(std::ostream* os) const OVERRIDE { |
| 314 NodeMatcher::DescribeTo(os); |
| 315 *os << "), effect0 ("; |
| 316 effect0_matcher_.DescribeTo(os); |
| 317 *os << "), effect1 ("; |
| 318 effect1_matcher_.DescribeTo(os); |
| 319 *os << ") and control ("; |
| 320 control_matcher_.DescribeTo(os); |
| 321 *os << ")"; |
| 322 } |
| 323 |
| 324 virtual bool MatchAndExplain(Node* node, |
| 325 MatchResultListener* listener) const OVERRIDE { |
| 326 return (NodeMatcher::MatchAndExplain(node, listener) && |
| 327 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 0), |
| 328 "effect0", effect0_matcher_, listener) && |
| 329 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 1), |
| 330 "effect1", effect1_matcher_, listener) && |
| 331 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
| 332 "control", control_matcher_, listener)); |
| 333 } |
| 334 |
| 335 private: |
| 336 const Matcher<Node*> effect0_matcher_; |
| 337 const Matcher<Node*> effect1_matcher_; |
| 338 const Matcher<Node*> control_matcher_; |
| 339 }; |
| 340 |
| 341 |
| 303 class IsProjectionMatcher FINAL : public NodeMatcher { | 342 class IsProjectionMatcher FINAL : public NodeMatcher { |
| 304 public: | 343 public: |
| 305 IsProjectionMatcher(const Matcher<size_t>& index_matcher, | 344 IsProjectionMatcher(const Matcher<size_t>& index_matcher, |
| 306 const Matcher<Node*>& base_matcher) | 345 const Matcher<Node*>& base_matcher) |
| 307 : NodeMatcher(IrOpcode::kProjection), | 346 : NodeMatcher(IrOpcode::kProjection), |
| 308 index_matcher_(index_matcher), | 347 index_matcher_(index_matcher), |
| 309 base_matcher_(base_matcher) {} | 348 base_matcher_(base_matcher) {} |
| 310 | 349 |
| 311 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 350 virtual void DescribeTo(std::ostream* os) const OVERRIDE { |
| 312 NodeMatcher::DescribeTo(os); | 351 NodeMatcher::DescribeTo(os); |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 873 | 912 |
| 874 Matcher<Node*> IsPhi(const Matcher<MachineType>& type_matcher, | 913 Matcher<Node*> IsPhi(const Matcher<MachineType>& type_matcher, |
| 875 const Matcher<Node*>& value0_matcher, | 914 const Matcher<Node*>& value0_matcher, |
| 876 const Matcher<Node*>& value1_matcher, | 915 const Matcher<Node*>& value1_matcher, |
| 877 const Matcher<Node*>& merge_matcher) { | 916 const Matcher<Node*>& merge_matcher) { |
| 878 return MakeMatcher(new IsPhiMatcher(type_matcher, value0_matcher, | 917 return MakeMatcher(new IsPhiMatcher(type_matcher, value0_matcher, |
| 879 value1_matcher, merge_matcher)); | 918 value1_matcher, merge_matcher)); |
| 880 } | 919 } |
| 881 | 920 |
| 882 | 921 |
| 922 Matcher<Node*> IsEffectPhi(const Matcher<Node*>& effect0_matcher, |
| 923 const Matcher<Node*>& effect1_matcher, |
| 924 const Matcher<Node*>& merge_matcher) { |
| 925 return MakeMatcher( |
| 926 new IsEffectPhiMatcher(effect0_matcher, effect1_matcher, merge_matcher)); |
| 927 } |
| 928 |
| 929 |
| 883 Matcher<Node*> IsProjection(const Matcher<size_t>& index_matcher, | 930 Matcher<Node*> IsProjection(const Matcher<size_t>& index_matcher, |
| 884 const Matcher<Node*>& base_matcher) { | 931 const Matcher<Node*>& base_matcher) { |
| 885 return MakeMatcher(new IsProjectionMatcher(index_matcher, base_matcher)); | 932 return MakeMatcher(new IsProjectionMatcher(index_matcher, base_matcher)); |
| 886 } | 933 } |
| 887 | 934 |
| 888 | 935 |
| 889 Matcher<Node*> IsCall(const Matcher<CallDescriptor*>& descriptor_matcher, | 936 Matcher<Node*> IsCall(const Matcher<CallDescriptor*>& descriptor_matcher, |
| 890 const Matcher<Node*>& value0_matcher, | 937 const Matcher<Node*>& value0_matcher, |
| 891 const Matcher<Node*>& value1_matcher, | 938 const Matcher<Node*>& value1_matcher, |
| 892 const Matcher<Node*>& effect_matcher, | 939 const Matcher<Node*>& effect_matcher, |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 IS_UNOP_MATCHER(Float64Sqrt) | 1060 IS_UNOP_MATCHER(Float64Sqrt) |
| 1014 IS_UNOP_MATCHER(Float64Floor) | 1061 IS_UNOP_MATCHER(Float64Floor) |
| 1015 IS_UNOP_MATCHER(Float64Ceil) | 1062 IS_UNOP_MATCHER(Float64Ceil) |
| 1016 IS_UNOP_MATCHER(Float64RoundTruncate) | 1063 IS_UNOP_MATCHER(Float64RoundTruncate) |
| 1017 IS_UNOP_MATCHER(Float64RoundTiesAway) | 1064 IS_UNOP_MATCHER(Float64RoundTiesAway) |
| 1018 #undef IS_UNOP_MATCHER | 1065 #undef IS_UNOP_MATCHER |
| 1019 | 1066 |
| 1020 } // namespace compiler | 1067 } // namespace compiler |
| 1021 } // namespace internal | 1068 } // namespace internal |
| 1022 } // namespace v8 | 1069 } // namespace v8 |
| OLD | NEW |