| Index: test/unittests/compiler/node-test-utils.cc
|
| diff --git a/test/unittests/compiler/node-test-utils.cc b/test/unittests/compiler/node-test-utils.cc
|
| index 6f00c37961132aee30f7f7af1ef5dcced64d6dda..a7308f9995361c75312103512a1e4b7cf2496f7e 100644
|
| --- a/test/unittests/compiler/node-test-utils.cc
|
| +++ b/test/unittests/compiler/node-test-utils.cc
|
| @@ -208,6 +208,52 @@ class IsConstantMatcher FINAL : public NodeMatcher {
|
| };
|
|
|
|
|
| +class IsSelectMatcher FINAL : public NodeMatcher {
|
| + public:
|
| + IsSelectMatcher(const Matcher<MachineType>& type_matcher,
|
| + const Matcher<Node*>& value0_matcher,
|
| + const Matcher<Node*>& value1_matcher,
|
| + const Matcher<Node*>& value2_matcher)
|
| + : NodeMatcher(IrOpcode::kSelect),
|
| + type_matcher_(type_matcher),
|
| + value0_matcher_(value0_matcher),
|
| + value1_matcher_(value1_matcher),
|
| + value2_matcher_(value2_matcher) {}
|
| +
|
| + virtual void DescribeTo(std::ostream* os) const OVERRIDE {
|
| + NodeMatcher::DescribeTo(os);
|
| + *os << " whose type (";
|
| + type_matcher_.DescribeTo(os);
|
| + *os << "), value0 (";
|
| + value0_matcher_.DescribeTo(os);
|
| + *os << "), value1 (";
|
| + value1_matcher_.DescribeTo(os);
|
| + *os << ") and value2 (";
|
| + value2_matcher_.DescribeTo(os);
|
| + *os << ")";
|
| + }
|
| +
|
| + virtual bool MatchAndExplain(Node* node,
|
| + MatchResultListener* listener) const OVERRIDE {
|
| + return (NodeMatcher::MatchAndExplain(node, listener) &&
|
| + PrintMatchAndExplain(OpParameter<MachineType>(node), "type",
|
| + type_matcher_, listener) &&
|
| + PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
|
| + "value0", value0_matcher_, listener) &&
|
| + PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
|
| + "value1", value1_matcher_, listener) &&
|
| + PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
|
| + "value2", value2_matcher_, listener));
|
| + }
|
| +
|
| + private:
|
| + const Matcher<MachineType> type_matcher_;
|
| + const Matcher<Node*> value0_matcher_;
|
| + const Matcher<Node*> value1_matcher_;
|
| + const Matcher<Node*> value2_matcher_;
|
| +};
|
| +
|
| +
|
| class IsPhiMatcher FINAL : public NodeMatcher {
|
| public:
|
| IsPhiMatcher(const Matcher<MachineType>& type_matcher,
|
| @@ -765,6 +811,15 @@ Matcher<Node*> IsNumberConstant(const Matcher<double>& value_matcher) {
|
| }
|
|
|
|
|
| +Matcher<Node*> IsSelect(const Matcher<MachineType>& type_matcher,
|
| + const Matcher<Node*>& value0_matcher,
|
| + const Matcher<Node*>& value1_matcher,
|
| + const Matcher<Node*>& value2_matcher) {
|
| + return MakeMatcher(new IsSelectMatcher(type_matcher, value0_matcher,
|
| + value1_matcher, value2_matcher));
|
| +}
|
| +
|
| +
|
| Matcher<Node*> IsPhi(const Matcher<MachineType>& type_matcher,
|
| const Matcher<Node*>& value0_matcher,
|
| const Matcher<Node*>& value1_matcher,
|
| @@ -857,6 +912,7 @@ Matcher<Node*> IsStore(const Matcher<StoreRepresentation>& rep_matcher,
|
| IS_BINOP_MATCHER(NumberEqual)
|
| IS_BINOP_MATCHER(NumberLessThan)
|
| IS_BINOP_MATCHER(NumberSubtract)
|
| +IS_BINOP_MATCHER(NumberMultiply)
|
| IS_BINOP_MATCHER(Word32And)
|
| IS_BINOP_MATCHER(Word32Sar)
|
| IS_BINOP_MATCHER(Word32Shl)
|
|
|