summaryrefslogtreecommitdiff
path: root/deps/v8/test/unittests/compiler/node-test-utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/unittests/compiler/node-test-utils.cc')
-rw-r--r--deps/v8/test/unittests/compiler/node-test-utils.cc458
1 files changed, 246 insertions, 212 deletions
diff --git a/deps/v8/test/unittests/compiler/node-test-utils.cc b/deps/v8/test/unittests/compiler/node-test-utils.cc
index 6e5d39f68d..5620b8bec1 100644
--- a/deps/v8/test/unittests/compiler/node-test-utils.cc
+++ b/deps/v8/test/unittests/compiler/node-test-utils.cc
@@ -612,49 +612,6 @@ class IsEffectPhiMatcher final : public NodeMatcher {
};
-class IsEffectSetMatcher final : public NodeMatcher {
- public:
- IsEffectSetMatcher(const Matcher<Node*>& effect0_matcher,
- const Matcher<Node*>& effect1_matcher)
- : NodeMatcher(IrOpcode::kEffectSet),
- effect0_matcher_(effect0_matcher),
- effect1_matcher_(effect1_matcher) {}
-
- void DescribeTo(std::ostream* os) const final {
- NodeMatcher::DescribeTo(os);
- *os << "), effect0 (";
- effect0_matcher_.DescribeTo(os);
- *os << ") and effect1 (";
- effect1_matcher_.DescribeTo(os);
- *os << ")";
- }
-
- bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
- if (!NodeMatcher::MatchAndExplain(node, listener)) return false;
-
- Node* effect0 = NodeProperties::GetEffectInput(node, 0);
- Node* effect1 = NodeProperties::GetEffectInput(node, 1);
-
- {
- // Try matching in the reverse order first.
- StringMatchResultListener value_listener;
- if (effect0_matcher_.MatchAndExplain(effect1, &value_listener) &&
- effect1_matcher_.MatchAndExplain(effect0, &value_listener)) {
- return true;
- }
- }
-
- return PrintMatchAndExplain(effect0, "effect0", effect0_matcher_,
- listener) &&
- PrintMatchAndExplain(effect1, "effect1", effect1_matcher_, listener);
- }
-
- private:
- const Matcher<Node*> effect0_matcher_;
- const Matcher<Node*> effect1_matcher_;
-};
-
-
class IsProjectionMatcher final : public NodeMatcher {
public:
IsProjectionMatcher(const Matcher<size_t>& index_matcher,
@@ -843,6 +800,44 @@ class IsReferenceEqualMatcher final : public NodeMatcher {
const Matcher<Node*> rhs_matcher_;
};
+class IsSpeculativeBinopMatcher final : public NodeMatcher {
+ public:
+ IsSpeculativeBinopMatcher(IrOpcode::Value opcode,
+ const Matcher<NumberOperationHint>& hint_matcher,
+ const Matcher<Node*>& lhs_matcher,
+ const Matcher<Node*>& rhs_matcher,
+ const Matcher<Node*>& effect_matcher,
+ const Matcher<Node*>& control_matcher)
+ : NodeMatcher(opcode),
+ hint_matcher_(hint_matcher),
+ lhs_matcher_(lhs_matcher),
+ rhs_matcher_(rhs_matcher),
+ effect_matcher_(effect_matcher),
+ control_matcher_(control_matcher) {}
+
+ bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
+ return (NodeMatcher::MatchAndExplain(node, listener) &&
+ // TODO(bmeurer): The type parameter is currently ignored.
+ PrintMatchAndExplain(OpParameter<NumberOperationHint>(node->op()),
+ "hints", hint_matcher_, listener) &&
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs",
+ lhs_matcher_, listener) &&
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs",
+ rhs_matcher_, listener) &&
+ PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
+ effect_matcher_, listener) &&
+ PrintMatchAndExplain(NodeProperties::GetControlInput(node),
+ "control", control_matcher_, listener));
+ }
+
+ private:
+ const Matcher<NumberOperationHint> hint_matcher_;
+ const Matcher<Type*> type_matcher_;
+ const Matcher<Node*> lhs_matcher_;
+ const Matcher<Node*> rhs_matcher_;
+ const Matcher<Node*> effect_matcher_;
+ const Matcher<Node*> control_matcher_;
+};
class IsAllocateMatcher final : public NodeMatcher {
public:
@@ -1203,132 +1198,140 @@ class IsStoreElementMatcher final : public NodeMatcher {
const Matcher<Node*> control_matcher_;
};
-
-class IsLoadMatcher final : public NodeMatcher {
- public:
- IsLoadMatcher(const Matcher<LoadRepresentation>& rep_matcher,
- const Matcher<Node*>& base_matcher,
- const Matcher<Node*>& index_matcher,
- const Matcher<Node*>& effect_matcher,
- const Matcher<Node*>& control_matcher)
- : NodeMatcher(IrOpcode::kLoad),
- rep_matcher_(rep_matcher),
- base_matcher_(base_matcher),
- index_matcher_(index_matcher),
- effect_matcher_(effect_matcher),
- control_matcher_(control_matcher) {}
-
- void DescribeTo(std::ostream* os) const final {
- NodeMatcher::DescribeTo(os);
- *os << " whose rep (";
- rep_matcher_.DescribeTo(os);
- *os << "), base (";
- base_matcher_.DescribeTo(os);
- *os << "), index (";
- index_matcher_.DescribeTo(os);
- *os << "), effect (";
- effect_matcher_.DescribeTo(os);
- *os << ") and control (";
- control_matcher_.DescribeTo(os);
- *os << ")";
- }
-
- bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
- Node* effect_node = nullptr;
- Node* control_node = nullptr;
- if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) {
- effect_node = NodeProperties::GetEffectInput(node);
- }
- if (NodeProperties::FirstControlIndex(node) < node->InputCount()) {
- control_node = NodeProperties::GetControlInput(node);
- }
- return (NodeMatcher::MatchAndExplain(node, listener) &&
- PrintMatchAndExplain(OpParameter<LoadRepresentation>(node), "rep",
- rep_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
- base_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
- "index", index_matcher_, listener) &&
- PrintMatchAndExplain(effect_node, "effect", effect_matcher_,
- listener) &&
- PrintMatchAndExplain(control_node, "control", control_matcher_,
- listener));
- }
-
- private:
- const Matcher<LoadRepresentation> rep_matcher_;
- const Matcher<Node*> base_matcher_;
- const Matcher<Node*> index_matcher_;
- const Matcher<Node*> effect_matcher_;
- const Matcher<Node*> control_matcher_;
-};
-
-
-class IsStoreMatcher final : public NodeMatcher {
- public:
- IsStoreMatcher(const Matcher<StoreRepresentation>& rep_matcher,
- const Matcher<Node*>& base_matcher,
- const Matcher<Node*>& index_matcher,
- const Matcher<Node*>& value_matcher,
- const Matcher<Node*>& effect_matcher,
- const Matcher<Node*>& control_matcher)
- : NodeMatcher(IrOpcode::kStore),
- rep_matcher_(rep_matcher),
- base_matcher_(base_matcher),
- index_matcher_(index_matcher),
- value_matcher_(value_matcher),
- effect_matcher_(effect_matcher),
- control_matcher_(control_matcher) {}
-
- void DescribeTo(std::ostream* os) const final {
- NodeMatcher::DescribeTo(os);
- *os << " whose rep (";
- rep_matcher_.DescribeTo(os);
- *os << "), base (";
- base_matcher_.DescribeTo(os);
- *os << "), index (";
- index_matcher_.DescribeTo(os);
- *os << "), value (";
- value_matcher_.DescribeTo(os);
- *os << "), effect (";
- effect_matcher_.DescribeTo(os);
- *os << ") and control (";
- control_matcher_.DescribeTo(os);
- *os << ")";
- }
-
- bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
- Node* effect_node = nullptr;
- Node* control_node = nullptr;
- if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) {
- effect_node = NodeProperties::GetEffectInput(node);
- }
- if (NodeProperties::FirstControlIndex(node) < node->InputCount()) {
- control_node = NodeProperties::GetControlInput(node);
- }
- return (NodeMatcher::MatchAndExplain(node, listener) &&
- PrintMatchAndExplain(OpParameter<StoreRepresentation>(node), "rep",
- rep_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
- base_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
- "index", index_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
- "value", value_matcher_, listener) &&
- PrintMatchAndExplain(effect_node, "effect", effect_matcher_,
- listener) &&
- PrintMatchAndExplain(control_node, "control", control_matcher_,
- listener));
- }
-
- private:
- const Matcher<StoreRepresentation> rep_matcher_;
- const Matcher<Node*> base_matcher_;
- const Matcher<Node*> index_matcher_;
- const Matcher<Node*> value_matcher_;
- const Matcher<Node*> effect_matcher_;
- const Matcher<Node*> control_matcher_;
-};
+#define LOAD_MATCHER(kLoad) \
+ class Is##kLoad##Matcher final : public NodeMatcher { \
+ public: \
+ Is##kLoad##Matcher(const Matcher<kLoad##Representation>& rep_matcher, \
+ const Matcher<Node*>& base_matcher, \
+ const Matcher<Node*>& index_matcher, \
+ const Matcher<Node*>& effect_matcher, \
+ const Matcher<Node*>& control_matcher) \
+ : NodeMatcher(IrOpcode::k##kLoad), \
+ rep_matcher_(rep_matcher), \
+ base_matcher_(base_matcher), \
+ index_matcher_(index_matcher), \
+ effect_matcher_(effect_matcher), \
+ control_matcher_(control_matcher) {} \
+ \
+ void DescribeTo(std::ostream* os) const final { \
+ NodeMatcher::DescribeTo(os); \
+ *os << " whose rep ("; \
+ rep_matcher_.DescribeTo(os); \
+ *os << "), base ("; \
+ base_matcher_.DescribeTo(os); \
+ *os << "), index ("; \
+ index_matcher_.DescribeTo(os); \
+ *os << "), effect ("; \
+ effect_matcher_.DescribeTo(os); \
+ *os << ") and control ("; \
+ control_matcher_.DescribeTo(os); \
+ *os << ")"; \
+ } \
+ \
+ bool MatchAndExplain(Node* node, \
+ MatchResultListener* listener) const final { \
+ Node* effect_node = nullptr; \
+ Node* control_node = nullptr; \
+ if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) { \
+ effect_node = NodeProperties::GetEffectInput(node); \
+ } \
+ if (NodeProperties::FirstControlIndex(node) < node->InputCount()) { \
+ control_node = NodeProperties::GetControlInput(node); \
+ } \
+ return (NodeMatcher::MatchAndExplain(node, listener) && \
+ PrintMatchAndExplain(OpParameter<kLoad##Representation>(node), \
+ "rep", rep_matcher_, listener) && \
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), \
+ "base", base_matcher_, listener) && \
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), \
+ "index", index_matcher_, listener) && \
+ PrintMatchAndExplain(effect_node, "effect", effect_matcher_, \
+ listener) && \
+ PrintMatchAndExplain(control_node, "control", control_matcher_, \
+ listener)); \
+ } \
+ \
+ private: \
+ const Matcher<kLoad##Representation> rep_matcher_; \
+ const Matcher<Node*> base_matcher_; \
+ const Matcher<Node*> index_matcher_; \
+ const Matcher<Node*> effect_matcher_; \
+ const Matcher<Node*> control_matcher_; \
+ };
+
+LOAD_MATCHER(Load)
+LOAD_MATCHER(UnalignedLoad)
+
+#define STORE_MATCHER(kStore) \
+ class Is##kStore##Matcher final : public NodeMatcher { \
+ public: \
+ Is##kStore##Matcher(const Matcher<kStore##Representation>& rep_matcher, \
+ const Matcher<Node*>& base_matcher, \
+ const Matcher<Node*>& index_matcher, \
+ const Matcher<Node*>& value_matcher, \
+ const Matcher<Node*>& effect_matcher, \
+ const Matcher<Node*>& control_matcher) \
+ : NodeMatcher(IrOpcode::k##kStore), \
+ rep_matcher_(rep_matcher), \
+ base_matcher_(base_matcher), \
+ index_matcher_(index_matcher), \
+ value_matcher_(value_matcher), \
+ effect_matcher_(effect_matcher), \
+ control_matcher_(control_matcher) {} \
+ \
+ void DescribeTo(std::ostream* os) const final { \
+ NodeMatcher::DescribeTo(os); \
+ *os << " whose rep ("; \
+ rep_matcher_.DescribeTo(os); \
+ *os << "), base ("; \
+ base_matcher_.DescribeTo(os); \
+ *os << "), index ("; \
+ index_matcher_.DescribeTo(os); \
+ *os << "), value ("; \
+ value_matcher_.DescribeTo(os); \
+ *os << "), effect ("; \
+ effect_matcher_.DescribeTo(os); \
+ *os << ") and control ("; \
+ control_matcher_.DescribeTo(os); \
+ *os << ")"; \
+ } \
+ \
+ bool MatchAndExplain(Node* node, \
+ MatchResultListener* listener) const final { \
+ Node* effect_node = nullptr; \
+ Node* control_node = nullptr; \
+ if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) { \
+ effect_node = NodeProperties::GetEffectInput(node); \
+ } \
+ if (NodeProperties::FirstControlIndex(node) < node->InputCount()) { \
+ control_node = NodeProperties::GetControlInput(node); \
+ } \
+ return (NodeMatcher::MatchAndExplain(node, listener) && \
+ PrintMatchAndExplain(OpParameter<kStore##Representation>(node), \
+ "rep", rep_matcher_, listener) && \
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), \
+ "base", base_matcher_, listener) && \
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), \
+ "index", index_matcher_, listener) && \
+ PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), \
+ "value", value_matcher_, listener) && \
+ PrintMatchAndExplain(effect_node, "effect", effect_matcher_, \
+ listener) && \
+ PrintMatchAndExplain(control_node, "control", control_matcher_, \
+ listener)); \
+ } \
+ \
+ private: \
+ const Matcher<kStore##Representation> rep_matcher_; \
+ const Matcher<Node*> base_matcher_; \
+ const Matcher<Node*> index_matcher_; \
+ const Matcher<Node*> value_matcher_; \
+ const Matcher<Node*> effect_matcher_; \
+ const Matcher<Node*> control_matcher_; \
+ };
+
+STORE_MATCHER(Store)
+STORE_MATCHER(UnalignedStore)
class IsStackSlotMatcher final : public NodeMatcher {
public:
@@ -1352,32 +1355,6 @@ class IsStackSlotMatcher final : public NodeMatcher {
const Matcher<MachineRepresentation> rep_matcher_;
};
-class IsGuardMatcher final : public NodeMatcher {
- public:
- IsGuardMatcher(const Matcher<Type*>& type_matcher,
- const Matcher<Node*>& value_matcher,
- const Matcher<Node*>& control_matcher)
- : NodeMatcher(IrOpcode::kGuard),
- type_matcher_(type_matcher),
- value_matcher_(value_matcher),
- control_matcher_(control_matcher) {}
-
- bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
- return (NodeMatcher::MatchAndExplain(node, listener) &&
- PrintMatchAndExplain(OpParameter<Type*>(node->op()), "type",
- type_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
- "value", value_matcher_, listener) &&
- PrintMatchAndExplain(NodeProperties::GetControlInput(node, 0),
- "control", control_matcher_, listener));
- }
-
- private:
- const Matcher<Type*> type_matcher_;
- const Matcher<Node*> value_matcher_;
- const Matcher<Node*> control_matcher_;
-};
-
class IsToNumberMatcher final : public NodeMatcher {
public:
IsToNumberMatcher(const Matcher<Node*>& base_matcher,
@@ -1818,12 +1795,6 @@ Matcher<Node*> IsEffectPhi(const Matcher<Node*>& effect0_matcher,
}
-Matcher<Node*> IsEffectSet(const Matcher<Node*>& effect0_matcher,
- const Matcher<Node*>& effect1_matcher) {
- return MakeMatcher(new IsEffectSetMatcher(effect0_matcher, effect1_matcher));
-}
-
-
Matcher<Node*> IsProjection(const Matcher<size_t>& index_matcher,
const Matcher<Node*>& base_matcher) {
return MakeMatcher(new IsProjectionMatcher(index_matcher, base_matcher));
@@ -2064,13 +2035,6 @@ Matcher<Node*> IsTailCall(
effect_matcher, control_matcher));
}
-Matcher<Node*> IsGuard(const Matcher<Type*>& type_matcher,
- const Matcher<Node*>& value_matcher,
- const Matcher<Node*>& control_matcher) {
- return MakeMatcher(
- new IsGuardMatcher(type_matcher, value_matcher, control_matcher));
-}
-
Matcher<Node*> IsReferenceEqual(const Matcher<Type*>& type_matcher,
const Matcher<Node*>& lhs_matcher,
const Matcher<Node*>& rhs_matcher) {
@@ -2078,6 +2042,18 @@ Matcher<Node*> IsReferenceEqual(const Matcher<Type*>& type_matcher,
new IsReferenceEqualMatcher(type_matcher, lhs_matcher, rhs_matcher));
}
+#define DEFINE_SPECULATIVE_BINOP_MATCHER(opcode) \
+ Matcher<Node*> Is##opcode(const Matcher<NumberOperationHint>& hint_matcher, \
+ const Matcher<Node*>& lhs_matcher, \
+ const Matcher<Node*>& rhs_matcher, \
+ const Matcher<Node*>& effect_matcher, \
+ const Matcher<Node*>& control_matcher) { \
+ return MakeMatcher(new IsSpeculativeBinopMatcher( \
+ IrOpcode::k##opcode, hint_matcher, lhs_matcher, rhs_matcher, \
+ effect_matcher, control_matcher)); \
+ }
+SPECULATIVE_BINOPS(DEFINE_SPECULATIVE_BINOP_MATCHER);
+#undef DEFINE_SPECULATIVE_BINOP_MATCHER
Matcher<Node*> IsAllocate(const Matcher<Node*>& size_matcher,
const Matcher<Node*>& effect_matcher,
@@ -2154,7 +2130,6 @@ Matcher<Node*> IsStoreElement(const Matcher<ElementAccess>& access_matcher,
effect_matcher, control_matcher));
}
-
Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher,
const Matcher<Node*>& base_matcher,
const Matcher<Node*>& index_matcher,
@@ -2164,6 +2139,15 @@ Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher,
effect_matcher, control_matcher));
}
+Matcher<Node*> IsUnalignedLoad(
+ const Matcher<UnalignedLoadRepresentation>& rep_matcher,
+ const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher,
+ const Matcher<Node*>& effect_matcher,
+ const Matcher<Node*>& control_matcher) {
+ return MakeMatcher(new IsUnalignedLoadMatcher(rep_matcher, base_matcher,
+ index_matcher, effect_matcher,
+ control_matcher));
+}
Matcher<Node*> IsStore(const Matcher<StoreRepresentation>& rep_matcher,
const Matcher<Node*>& base_matcher,
@@ -2176,6 +2160,16 @@ Matcher<Node*> IsStore(const Matcher<StoreRepresentation>& rep_matcher,
effect_matcher, control_matcher));
}
+Matcher<Node*> IsUnalignedStore(
+ const Matcher<UnalignedStoreRepresentation>& rep_matcher,
+ const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher,
+ const Matcher<Node*>& value_matcher, const Matcher<Node*>& effect_matcher,
+ const Matcher<Node*>& control_matcher) {
+ return MakeMatcher(new IsUnalignedStoreMatcher(
+ rep_matcher, base_matcher, index_matcher, value_matcher, effect_matcher,
+ control_matcher));
+}
+
Matcher<Node*> IsStackSlot(const Matcher<MachineRepresentation>& rep_matcher) {
return MakeMatcher(new IsStackSlotMatcher(rep_matcher));
}
@@ -2204,6 +2198,10 @@ Matcher<Node*> IsLoadFramePointer() {
return MakeMatcher(new NodeMatcher(IrOpcode::kLoadFramePointer));
}
+Matcher<Node*> IsLoadParentFramePointer() {
+ return MakeMatcher(new NodeMatcher(IrOpcode::kLoadParentFramePointer));
+}
+
#define IS_QUADOP_MATCHER(Name) \
Matcher<Node*> Is##Name( \
const Matcher<Node*>& a_matcher, const Matcher<Node*>& b_matcher, \
@@ -2242,6 +2240,10 @@ IS_BINOP_MATCHER(NumberShiftLeft)
IS_BINOP_MATCHER(NumberShiftRight)
IS_BINOP_MATCHER(NumberShiftRightLogical)
IS_BINOP_MATCHER(NumberImul)
+IS_BINOP_MATCHER(NumberAtan2)
+IS_BINOP_MATCHER(NumberMax)
+IS_BINOP_MATCHER(NumberMin)
+IS_BINOP_MATCHER(NumberPow)
IS_BINOP_MATCHER(Word32And)
IS_BINOP_MATCHER(Word32Or)
IS_BINOP_MATCHER(Word32Xor)
@@ -2256,6 +2258,7 @@ IS_BINOP_MATCHER(Word64Sar)
IS_BINOP_MATCHER(Word64Shl)
IS_BINOP_MATCHER(Word64Equal)
IS_BINOP_MATCHER(Int32AddWithOverflow)
+IS_BINOP_MATCHER(Int32SubWithOverflow)
IS_BINOP_MATCHER(Int32Add)
IS_BINOP_MATCHER(Int32Sub)
IS_BINOP_MATCHER(Int32Mul)
@@ -2266,8 +2269,6 @@ IS_BINOP_MATCHER(Uint32LessThanOrEqual)
IS_BINOP_MATCHER(Int64Add)
IS_BINOP_MATCHER(Int64Sub)
IS_BINOP_MATCHER(JSAdd)
-IS_BINOP_MATCHER(Float32Max)
-IS_BINOP_MATCHER(Float32Min)
IS_BINOP_MATCHER(Float32Equal)
IS_BINOP_MATCHER(Float32LessThan)
IS_BINOP_MATCHER(Float32LessThanOrEqual)
@@ -2284,6 +2285,7 @@ IS_BINOP_MATCHER(Float64InsertHighWord32)
return MakeMatcher(new IsUnopMatcher(IrOpcode::k##Name, input_matcher)); \
}
IS_UNOP_MATCHER(BooleanNot)
+IS_UNOP_MATCHER(TruncateFloat64ToWord32)
IS_UNOP_MATCHER(ChangeFloat64ToInt32)
IS_UNOP_MATCHER(ChangeFloat64ToUint32)
IS_UNOP_MATCHER(ChangeInt32ToFloat64)
@@ -2291,23 +2293,55 @@ IS_UNOP_MATCHER(ChangeInt32ToInt64)
IS_UNOP_MATCHER(ChangeUint32ToFloat64)
IS_UNOP_MATCHER(ChangeUint32ToUint64)
IS_UNOP_MATCHER(TruncateFloat64ToFloat32)
-IS_UNOP_MATCHER(TruncateFloat64ToInt32)
IS_UNOP_MATCHER(TruncateInt64ToInt32)
IS_UNOP_MATCHER(Float32Abs)
+IS_UNOP_MATCHER(Float32Neg)
IS_UNOP_MATCHER(Float64Abs)
+IS_UNOP_MATCHER(Float64Neg)
IS_UNOP_MATCHER(Float64Sqrt)
IS_UNOP_MATCHER(Float64RoundDown)
IS_UNOP_MATCHER(Float64RoundTruncate)
IS_UNOP_MATCHER(Float64RoundTiesAway)
IS_UNOP_MATCHER(Float64ExtractLowWord32)
IS_UNOP_MATCHER(Float64ExtractHighWord32)
+IS_UNOP_MATCHER(NumberAbs)
+IS_UNOP_MATCHER(NumberAcos)
+IS_UNOP_MATCHER(NumberAcosh)
+IS_UNOP_MATCHER(NumberAsin)
+IS_UNOP_MATCHER(NumberAsinh)
+IS_UNOP_MATCHER(NumberAtan)
+IS_UNOP_MATCHER(NumberAtanh)
+IS_UNOP_MATCHER(NumberCeil)
+IS_UNOP_MATCHER(NumberClz32)
+IS_UNOP_MATCHER(NumberCbrt)
+IS_UNOP_MATCHER(NumberCos)
+IS_UNOP_MATCHER(NumberCosh)
+IS_UNOP_MATCHER(NumberExp)
+IS_UNOP_MATCHER(NumberExpm1)
+IS_UNOP_MATCHER(NumberFloor)
+IS_UNOP_MATCHER(NumberFround)
+IS_UNOP_MATCHER(NumberLog)
+IS_UNOP_MATCHER(NumberLog1p)
+IS_UNOP_MATCHER(NumberLog10)
+IS_UNOP_MATCHER(NumberLog2)
+IS_UNOP_MATCHER(NumberRound)
+IS_UNOP_MATCHER(NumberSign)
+IS_UNOP_MATCHER(NumberSin)
+IS_UNOP_MATCHER(NumberSinh)
+IS_UNOP_MATCHER(NumberSqrt)
+IS_UNOP_MATCHER(NumberTan)
+IS_UNOP_MATCHER(NumberTanh)
+IS_UNOP_MATCHER(NumberTrunc)
IS_UNOP_MATCHER(NumberToInt32)
IS_UNOP_MATCHER(NumberToUint32)
+IS_UNOP_MATCHER(PlainPrimitiveToNumber)
IS_UNOP_MATCHER(ObjectIsReceiver)
IS_UNOP_MATCHER(ObjectIsSmi)
+IS_UNOP_MATCHER(StringFromCharCode)
IS_UNOP_MATCHER(Word32Clz)
IS_UNOP_MATCHER(Word32Ctz)
IS_UNOP_MATCHER(Word32Popcnt)
+IS_UNOP_MATCHER(Word32ReverseBytes)
#undef IS_UNOP_MATCHER
} // namespace compiler