Home | History | Annotate | Download | only in compiler

Lines Matching refs:node

5 #include "test/unittests/compiler/node-test-utils.h"
12 #include "src/compiler/node-properties.h"
50 class NodeMatcher : public MatcherInterface<Node*> {
55 *os << "is a " << IrOpcode::Mnemonic(opcode_) << " node";
58 bool MatchAndExplain(Node* node,
60 if (node == NULL) {
64 if (node->opcode() != opcode_) {
65 *listener << "whose opcode is " << IrOpcode::Mnemonic(node->opcode())
79 IsBranchMatcher(const Matcher<Node*>& value_matcher,
80 const Matcher<Node*>& control_matcher)
94 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
95 return (NodeMatcher::MatchAndExplain(node, listener) &&
96 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
98 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
103 const Matcher<Node*> value_matcher_;
104 const Matcher<Node*> control_matcher_;
110 IsSwitchMatcher(const Matcher<Node*>& value_matcher,
111 const Matcher<Node*>& control_matcher)
125 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
126 return (NodeMatcher::MatchAndExplain(node, listener) &&
127 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
129 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
134 const Matcher<Node*> value_matcher_;
135 const Matcher<Node*> control_matcher_;
142 const Matcher<Node*>& control_matcher)
156 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
157 return (NodeMatcher::MatchAndExplain(node, listener) &&
158 PrintMatchAndExplain(OpParameter<int32_t>(node->op()), "value",
160 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
166 const Matcher<Node*> control_matcher_;
173 const Matcher<Node*>& control_matcher)
183 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
184 return (NodeMatcher::MatchAndExplain(node, listener) &&
185 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
190 const Matcher<Node*> control_matcher_;
197 const Matcher<Node*>& control0_matcher,
198 const Matcher<Node*>& control1_matcher)
212 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
213 return (NodeMatcher::MatchAndExplain(node, listener) &&
214 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 0),
216 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 1),
221 const Matcher<Node*> control0_matcher_;
222 const Matcher<Node*> control1_matcher_;
229 const Matcher<Node*>& control0_matcher,
230 const Matcher<Node*>& control1_matcher,
231 const Matcher<Node*>& control2_matcher)
248 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
249 return (NodeMatcher::MatchAndExplain(node, listener) &&
250 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 0),
252 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 1),
254 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 2),
259 const Matcher<Node*> control0_matcher_;
260 const Matcher<Node*> control1_matcher_;
261 const Matcher<Node*> control2_matcher_;
267 explicit IsBeginRegionMatcher(const Matcher<Node*>& effect_matcher)
277 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
278 return (NodeMatcher::MatchAndExplain(node, listener) &&
279 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
284 const Matcher<Node*> effect_matcher_;
290 IsFinishRegionMatcher(const Matcher<Node*>& value_matcher,
291 const Matcher<Node*>& effect_matcher)
305 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
306 return (NodeMatcher::MatchAndExplain(node, listener) &&
307 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
309 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
314 const Matcher<Node*> value_matcher_;
315 const Matcher<Node*> effect_matcher_;
321 IsReturnMatcher(const Matcher<Node*>& value_matcher,
322 const Matcher<Node*>& effect_matcher,
323 const Matcher<Node*>& control_matcher)
340 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
341 return (NodeMatcher::MatchAndExplain(node, listener) &&
342 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
344 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
346 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
351 const Matcher<Node*> value_matcher_;
352 const Matcher<Node*> effect_matcher_;
353 const Matcher<Node*> control_matcher_;
359 IsTerminateMatcher(const Matcher<Node*>& effect_matcher,
360 const Matcher<Node*>& control_matcher)
374 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
375 return (NodeMatcher::MatchAndExplain(node, listener) &&
376 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
378 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
383 const Matcher<Node*> effect_matcher_;
384 const Matcher<Node*> control_matcher_;
401 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
402 return (NodeMatcher::MatchAndExplain(node, listener) &&
403 PrintMatchAndExplain(OpParameter<T>(node), "value", value_matcher_,
415 const Matcher<Node*>& value0_matcher,
416 const Matcher<Node*>& value1_matcher,
417 const Matcher<Node*>& value2_matcher)
437 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
439 NodeMatcher::MatchAndExplain(node, listener) &&
440 PrintMatchAndExplain(SelectParametersOf(node->op()).representation(),
442 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "value0",
444 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "value1",
446 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), "value2",
452 const Matcher<Node*> value0_matcher_;
453 const Matcher<Node*> value1_matcher_;
454 const Matcher<Node*> value2_matcher_;
461 const Matcher<Node*>& value0_matcher,
462 const Matcher<Node*>& value1_matcher,
463 const Matcher<Node*>& control_matcher)
483 bool MatchAndExplain(Node* node
484 return (NodeMatcher::MatchAndExplain(node, listener) &&
485 PrintMatchAndExplain(PhiRepresentationOf(node->op()),
487 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
489 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
491 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
497 const Matcher<Node*> value0_matcher_;
498 const Matcher<Node*> value1_matcher_;
499 const Matcher<Node*> control_matcher_;
506 const Matcher<Node*>& value0_matcher,
507 const Matcher<Node*>& value1_matcher,
508 const Matcher<Node*>& value2_matcher,
509 const Matcher<Node*>& control_matcher)
532 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
533 return (NodeMatcher::MatchAndExplain(node, listener) &&
534 PrintMatchAndExplain(PhiRepresentationOf(node->op()),
536 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
538 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
540 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
542 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
548 const Matcher<Node*> value0_matcher_;
549 const Matcher<Node*> value1_matcher_;
550 const Matcher<Node*> value2_matcher_;
551 const Matcher<Node*> control_matcher_;
557 IsEffectPhiMatcher(const Matcher<Node*>& effect0_matcher,
558 const Matcher<Node*>& effect1_matcher,
559 const Matcher<Node*>& control_matcher)
576 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
577 return (NodeMatcher::MatchAndExplain(node, listener) &&
578 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 0),
580 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 1),
582 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
587 const Matcher<Node*> effect0_matcher_;
588 const Matcher<Node*> effect1_matcher_;
589 const Matcher<Node*> control_matcher_;
595 IsEffectSetMatcher(const Matcher<Node*>& effect0_matcher,
596 const Matcher<Node*>& effect1_matcher)
610 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
611 if (!NodeMatcher::MatchAndExplain(node, listener)) return false;
613 Node* effect0 = NodeProperties::GetEffectInput(node, 0);
614 Node* effect1 = NodeProperties::GetEffectInput(node, 1);
631 const Matcher<Node*> effect0_matcher_;
632 const Matcher<Node*> effect1_matcher_;
639 const Matcher<Node*>& base_matcher)
653 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
654 return (NodeMatcher::MatchAndExplain(node, listener) &&
655 PrintMatchAndExplain(OpParameter<size_t>(node), "index",
657 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
663 const Matcher<Node*> base_matcher_;
670 const std::vector<Matcher<Node*>>& value_matchers,
671 const Matcher<Node*>& effect_matcher,
672 const Matcher<Node*>& control_matcher)
696 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
697 if (!NodeMatcher::MatchAndExplain(node, listener) ||
698 !PrintMatchAndExplain(OpParameter<const CallDescriptor*>(node),
706 NodeProperties::GetValueInput(node, static_cast<int>(i)),
711 Node* effect_node = nullptr;
712 Node* control_node = nullptr;
713 if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) {
714 effect_node = NodeProperties::GetEffectInput(node);
716 if (NodeProperties::FirstControlIndex(node) < node->InputCount()) {
717 control_node = NodeProperties::GetControlInput(node);
727 const std::vector<Matcher<Node*>> value_matchers_;
728 const Matcher<Node*> effect_matcher_;
729 const Matcher<Node*> control_matcher_;
736 const std::vector<Matcher<Node*>>& value_matchers,
737 const Matcher<Node*>& effect_matcher,
738 const Matcher<Node*>& control_matcher)
762 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
763 if (!NodeMatcher::MatchAndExplain(node, listener) ||
764 !PrintMatchAndExplain(OpParameter<CallDescriptor const*>(node),
772 NodeProperties::GetValueInput(node, static_cast<int>(i)),
777 Node* effect_node = nullptr;
778 Node* control_node = nullptr;
779 if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) {
780 effect_node = NodeProperties::GetEffectInput(node);
782 if (NodeProperties::FirstControlIndex(node) < node->InputCount()) {
783 control_node = NodeProperties::GetControlInput(node);
793 const std::vector<Matcher<Node*>> value_matchers_;
794 const Matcher<Node*> effect_matcher_;
795 const Matcher<Node*> control_matcher_;
802 const Matcher<Node*>& lhs_matcher,
803 const Matcher<Node*>& rhs_matcher)
809 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
810 return (NodeMatcher::MatchAndExplain(node, listener) &&
812 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs",
814 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs",
820 const Matcher<Node*> lhs_matcher_;
821 const Matcher<Node*> rhs_matcher_;
827 IsAllocateMatcher(const Matcher<Node*>& size_matcher,
828 const Matcher<Node*>& effect_matcher,
829 const Matcher<Node*>& control_matcher)
835 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
836 return (NodeMatcher::MatchAndExplain(node, listener) &&
837 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "size",
839 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
841 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
846 const Matcher<Node*> size_matcher_;
847 const Matcher<Node*> effect_matcher_;
848 const Matcher<Node*> control_matcher_;
855 const Matcher<Node*>& base_matcher,
856 const Matcher<Node*>& effect_matcher,
857 const Matcher<Node*>& control_matcher)
877 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
878 return (NodeMatcher::MatchAndExplain(node, listener) &&
879 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access",
881 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
883 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
885 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
891 const Matcher<Node*> base_matcher_;
892 const Matcher<Node*> effect_matcher_;
893 const Matcher<Node*> control_matcher_;
900 const Matcher<Node*>& base_matcher,
901 const Matcher<Node*>& value_matcher,
902 const Matcher<Node*>& effect_matcher,
903 const Matcher<Node*>& control_matcher)
926 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
927 return (NodeMatcher::MatchAndExplain(node, listener) &&
928 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access",
930 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
932 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
934 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
936 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
942 const Matcher<Node*> base_matcher_;
943 const Matcher<Node*> value_matcher_;
944 const Matcher<Node*> effect_matcher_;
945 const Matcher<Node*> control_matcher_;
952 const Matcher<Node*>& buffer_matcher,
953 const Matcher<Node*>& offset_matcher,
954 const Matcher<Node*>& length_matcher,
955 const Matcher<Node*>& effect_matcher,
956 const Matcher<Node*>& control_matcher)
982 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
983 return (NodeMatcher::MatchAndExplain(node, listener) &&
984 PrintMatchAndExplain(BufferAccessOf(node->op()), "access",
986 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
988 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
990 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
992 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
994 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1000 const Matcher<Node*> buffer_matcher_;
1001 const Matcher<Node*> offset_matcher_;
1002 const Matcher<Node*> length_matcher_;
1003 const Matcher<Node*> effect_matcher_;
1004 const Matcher<Node*> control_matcher_;
1011 const Matcher<Node*>& buffer_matcher,
1012 const Matcher<Node*>& offset_matcher,
1013 const Matcher<Node*>& length_matcher,
1014 const Matcher<Node*>& value_matcher,
1015 const Matcher<Node*>& effect_matcher,
1016 const Matcher<Node*>& control_matcher)
1045 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1046 return (NodeMatcher::MatchAndExplain(node, listener) &&
1047 PrintMatchAndExplain(BufferAccessOf(node->op()), "access",
1049 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
1051 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
1053 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
1055 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3),
1057 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1059 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1065 const Matcher<Node*> buffer_matcher_;
1066 const Matcher<Node*> offset_matcher_;
1067 const Matcher<Node*> length_matcher_;
1068 const Matcher<Node*> value_matcher_;
1069 const Matcher<Node*> effect_matcher_;
1070 const Matcher<Node*> control_matcher_;
1077 const Matcher<Node*>& base_matcher,
1078 const Matcher<Node*>& index_matcher,
1079 const Matcher<Node*>& effect_matcher,
1080 const Matcher<Node*>& control_matcher)
1103 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1104 return (NodeMatcher::MatchAndExplain(node, listener) &&
1105 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access",
1107 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
1109 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
1111 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1113 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1119 const Matcher<Node*> base_matcher_;
1120 const Matcher<Node*> index_matcher_;
1121 const Matcher<Node*> effect_matcher_;
1122 const Matcher<Node*> control_matcher_;
1129 const Matcher<Node*>& base_matcher,
1130 const Matcher<Node*>& index_matcher,
1131 const Matcher<Node*>& value_matcher,
1132 const Matcher<Node*>& effect_matcher,
1133 const Matcher<Node*>& control_matcher)
1159 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1160 return (NodeMatcher::MatchAndExplain(node, listener) &&
1161 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access",
1163 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
1165 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
1167 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
1169 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1171 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1177 const Matcher<Node*> base_matcher_;
1178 const Matcher<Node*> index_matcher_;
1179 const Matcher<Node*> value_matcher_;
1180 const Matcher<Node*> effect_matcher_;
1181 const Matcher<Node*> control_matcher_;
1188 const Matcher<Node*>& base_matcher,
1189 const Matcher<Node*>& index_matcher,
1190 const Matcher<Node*>& effect_matcher,
1191 const Matcher<Node*>& control_matcher)
1214 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1215 Node* effect_node = nullptr;
1216 Node* control_node = nullptr;
1217 if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) {
1218 effect_node = NodeProperties::GetEffectInput(node);
1220 if (NodeProperties::FirstControlIndex(node) < node->InputCount()) {
1221 control_node = NodeProperties::GetControlInput(node);
1223 return (NodeMatcher::MatchAndExplain(node, listener) &&
1224 PrintMatchAndExplain(OpParameter<LoadRepresentation>(node), "rep",
1226 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
1228 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
1238 const Matcher<Node*> base_matcher_;
1239 const Matcher<Node*> index_matcher_;
1240 const Matcher<Node*> effect_matcher_;
1241 const Matcher<Node*> control_matcher_;
1248 const Matcher<Node*>& base_matcher,
1249 const Matcher<Node*>& index_matcher,
1250 const Matcher<Node*>& value_matcher,
1251 const Matcher<Node*>& effect_matcher,
1252 const Matcher<Node*>& control_matcher)
1278 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1279 Node* effect_node = nullptr;
1280 Node* control_node = nullptr;
1281 if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) {
1282 effect_node = NodeProperties::GetEffectInput(node);
1284 if (NodeProperties::FirstControlIndex(node) < node->InputCount()) {
1285 control_node = NodeProperties::GetControlInput(node);
1287 return (NodeMatcher::MatchAndExplain(node, listener) &&
1288 PrintMatchAndExplain(OpParameter<StoreRepresentation>(node), "rep",
1290 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
1292 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
1294 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
1304 const Matcher<Node*> base_matcher_;
1305 const Matcher<Node*> index_matcher_;
1306 const Matcher<Node*> value_matcher_;
1307 const Matcher<Node*> effect_matcher_;
1308 const Matcher<Node*> control_matcher_;
1314 Node*>& base_matcher,
1315 const Matcher<Node*>& context_matcher,
1316 const Matcher<Node*>& effect_matcher,
1317 const Matcher<Node*>& control_matcher)
1337 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1338 return (NodeMatcher::MatchAndExplain(node, listener) &&
1339 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
1341 PrintMatchAndExplain(NodeProperties::GetContextInput(node),
1343 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
1345 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
1350 const Matcher<Node*> base_matcher_;
1351 const Matcher<Node*> context_matcher_;
1352 const Matcher<Node*> effect_matcher_;
1353 const Matcher<Node*> control_matcher_;
1360 const Matcher<Node*>& context_matcher)
1374 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1375 return (NodeMatcher::MatchAndExplain(node, listener) &&
1376 PrintMatchAndExplain(OpParameter<ContextAccess>(node), "access",
1378 PrintMatchAndExplain(NodeProperties::GetContextInput(node),
1384 const Matcher<Node*> context_matcher_;
1390 IsBinopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& lhs_matcher,
1391 const Matcher<Node*>& rhs_matcher)
1405 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1406 return (NodeMatcher::MatchAndExplain(node, listener) &&
1407 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs",
1409 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs",
1414 const Matcher<Node*> lhs_matcher_;
1415 const Matcher<Node*> rhs_matcher_;
1421 IsUnopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& input_matcher)
1431 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1432 return (NodeMatcher::MatchAndExplain(node, listener) &&
1433 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0),
1438 const Matcher<Node*> input_matcher_;
1448 *os << "is a Parameter node with index(";
1453 bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
1454 return (NodeMatcher::MatchAndExplain(node, listener) &&
1455 PrintMatchAndExplain(ParameterIndexOf(node->op()), "index",
1466 Matcher<Node*> IsDead() {
1471 Matcher<Node*> IsEnd(const Matcher<Node*>& control0_matcher) {
1476 Matcher<Node*> IsEnd(const Matcher<Node*>& control0_matcher,
1477 const Matcher<Node*>& control1_matcher) {
1483 Matcher<Node*> IsEnd(const Matcher<Node*>& control0_matcher,
1484 const Matcher<Node*>& control1_matcher,
1485 const Matcher<Node*>& control2_matcher) {
1491 Matcher<Node*> IsBranch(const Matcher<Node*>& value_matcher,
1492 const Matcher<Node*>& control_matcher) {
1497 Matcher<Node*> IsMerge(const Matcher<Node*>& control0_matcher,
1498 const Matcher<Node*>& control1_matcher) {
1504 Matcher<Node*> IsMerge(const Matcher<Node*>& control0_matcher,
1505 const Matcher<Node*>& control1_matcher,
1506 const Matcher<Node*>& control2_matcher) {
1512 Matcher<Node*> IsLoop(const Matcher<Node*>& control0_matcher,
1513 const Matcher<Node*>& control1_matcher) {
1519 Matcher<Node*> IsLoop(const Matcher<Node*>& control0_matcher,
1520 const Matcher<Node*>& control1_matcher,
1521 const Matcher<Node*>& control2_matcher) {
1527 Matcher<Node*> IsIfTrue(const Matcher<Node*>& control_matcher) {
1532 Matcher<Node*> IsIfFalse(const Matcher<Node*>& control_matcher) {
1538 Matcher<Node*> IsIfSuccess(const Matcher<Node*>& control_matcher) {
1544 Matcher<Node*> IsSwitch(const Matcher<Node*>& value_matcher,
1545 const Matcher<Node*>& control_matcher) {
1550 Matcher<Node*> IsIfValue(const Matcher<int32_t>& value_matcher,
1551 const Matcher<Node*>& control_matcher) {
1556 Matcher<Node*> IsIfDefault(const Matcher<Node*>& control_matcher) {
1562 Matcher<Node*> IsBeginRegion(const Matcher<Node*>& effect_matcher) {
1567 Matcher<Node*> IsFinishRegion(const Matcher<Node*>& value_matcher,
1568 const Matcher<Node*>& effect_matcher) {
1573 Matcher<Node*> IsReturn(const Matcher<Node*>& value_matcher,
1574 const Matcher<Node*>& effect_matcher,
1575 const Matcher<Node*>& control_matcher) {
1581 Matcher<Node*> IsTerminate(const Matcher<Node*>& effect_matcher,
1582 const Matcher<Node*>& control_matcher) {
1587 Matcher<Node*> IsExternalConstant(
1594 Matcher<Node*> IsHeapConstant(Handle<HeapObject> value) {
1600 Matcher<Node*> IsInt32Constant(const Matcher<int32_t>& value_matcher) {
1606 Matcher<Node*> IsInt64Constant(const Matcher<int64_t>& value_matcher) {
1612 Matcher<Node*> IsFloat32Constant(const Matcher<float>& value_matcher) {
1618 Matcher<Node*> IsFloat64Constant(const Matcher<double>& value_matcher) {
1624 Matcher<Node*> IsNumberConstant(const Matcher<double>& value_matcher) {
1630 Matcher<Node*> IsSelect(const Matcher<MachineRepresentation>& type_matcher,
1631 const Matcher<Node*>& value0_matcher,
1632 const Matcher<Node*>& value1_matcher,
1633 const Matcher<Node*>& value2_matcher) {
1639 Matcher<Node*> IsPhi(const Matcher<MachineRepresentation>& type_matcher,
1640 const Matcher<Node*>& value0_matcher,
1641 const Matcher<Node*>& value1_matcher,
1642 const Matcher<Node*>& merge_matcher) {
1648 Matcher<Node*> IsPhi(const Matcher<MachineRepresentation>& type_matcher,
1649 const Matcher<Node*>& value0_matcher,
1650 const Matcher<Node*>& value1_matcher,
1651 const Matcher<Node*>& value2_matcher,
1652 const Matcher<Node*>& merge_matcher) {
1659 Matcher<Node*> IsEffectPhi(const Matcher<Node*>& effect0_matcher,
1660 const Matcher<Node*>& effect1_matcher,
1661 const Matcher<Node*>& merge_matcher) {
1667 Matcher<Node*> IsEffectSet(const Matcher<Node*>& effect0_matcher,
1668 const Matcher<Node*>& effect1_matcher) {
1673 Matcher<Node*> IsProjection(const Matcher<size_t>& index_matcher,
1674 const Matcher<Node*>& base_matcher) {
1679 Matcher<Node*> IsCall(const Matcher<const CallDescriptor*>& descriptor_matcher,
1680 const Matcher<Node*>& value0_matcher,
1681 const Matcher<Node*>& value1_matcher,
1682 const Matcher<Node*>& effect_matcher,
1683 const Matcher<Node*>& control_matcher) {
1684 std::vector<Matcher<Node*>> value_matchers;
1692 Matcher<Node*> IsCall(const Matcher<const CallDescriptor*>& descriptor_matcher,
1693 const Matcher<Node*>& value0_matcher,
1694 const Matcher<Node*>& value1_matcher,
1695 const Matcher<Node*>& value2_matcher,
1696 const Matcher<Node*>& effect_matcher,
1697 const Matcher<Node*>& control_matcher) {
1698 std::vector<Matcher<Node*>> value_matchers;
1707 Matcher<Node*> IsCall(const Matcher<const CallDescriptor*>& descriptor_matcher,
1708 const Matcher<Node*>& value0_matcher,
1709 const Matcher<Node*>& value1_matcher,
1710 const Matcher<Node*>& value2_matcher,
1711 const Matcher<Node*>& value3_matcher,
1712 const Matcher<Node*>& effect_matcher,
1713 const Matcher<Node*>& control_matcher) {
1714 std::vector<Matcher<Node*>> value_matchers;
1724 Matcher<Node*> IsCall(const Matcher<const CallDescriptor*>& descriptor_matcher,
1725 const Matcher<Node*>& value0_matcher,
1726 const Matcher<Node*>& value1_matcher,
1727 const Matcher<Node*>& value2_matcher,
1728 const Matcher<Node*>& value3_matcher,
1729 const Matcher<Node*>& value4_matcher,
1730 const Matcher<Node*>& effect_matcher,
1731 const Matcher<Node*>& control_matcher) {
1732 std::vector<Matcher<Node*>> value_matchers;
1743 Matcher<Node*> IsCall(const Matcher<const CallDescriptor*>& descriptor_matcher,
1744 const Matcher<Node*>& value0_matcher,
1745 const Matcher<Node*>& value1_matcher,
1746 const Matcher<Node*>& value2_matcher,
1747 const Matcher<Node*>& value3_matcher,
1748 const Matcher<Node*>& value4_matcher,
1749 const Matcher<Node*>& value5_matcher,
1750 const Matcher<Node*>& effect_matcher,
1751 const Matcher<Node*>& control_matcher) {
1752 Node*>> value_matchers;
1764 Matcher<Node*> IsCall(
1766 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1767 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& value3_matcher,
1768 const Matcher<Node*>& value4_matcher, const Matcher<Node*>& value5_matcher,
1769 const Matcher<Node*>& value6_matcher, const Matcher<Node*>& effect_matcher,
1770 const Matcher<Node*>& control_matcher) {
1771 std::vector<Matcher<Node*>> value_matchers;
1784 Matcher<Node*> IsTailCall(
1786 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1787 const Matcher<Node*>& effect_matcher,
1788 const Matcher<Node*>& control_matcher) {
1789 std::vector<Matcher<Node*>> value_matchers;
1797 Matcher<Node*> IsTailCall(
1799 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1800 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& effect_matcher,
1801 const Matcher<Node*>& control_matcher) {
1802 std::vector<Matcher<Node*>> value_matchers;
1811 Matcher<Node*> IsTailCall(
1813 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1814 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& value3_matcher,
1815 const Matcher<Node*>& effect_matcher,
1816 const Matcher<Node*>& control_matcher) {
1817 std::vector<Matcher<Node*>> value_matchers;
1827 Matcher<Node*> IsTailCall(
1829 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1830 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& value3_matcher,
1831 const Matcher<Node*>& value4_matcher, const Matcher<Node*>& effect_matcher,
1832 const Matcher<Node*>& control_matcher) {
1833 std::vector<Matcher<Node*>> value_matchers;
1844 Matcher<Node*> IsTailCall(
1846 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1847 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& value3_matcher,
1848 const Matcher<Node*>& value4_matcher, const Matcher<Node*>& value5_matcher,
1849 const Matcher<Node*>& effect_matcher,
1850 const Matcher<Node*>& control_matcher) {
1851 std::vector<Matcher<Node*>> value_matchers;
1863 Matcher<Node*> IsTailCall(
1865 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1866 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& value3_matcher,
1867 const Matcher<Node*>& value4_matcher, const Matcher<Node*>& value5_matcher,
1868 const Matcher<Node*>& value6_matcher, const Matcher<Node*>& effect_matcher,
1869 const Matcher<Node*>& control_matcher) {
1870 std::vector<Matcher<Node*>> value_matchers;
1883 Matcher<Node*> IsTailCall(
1885 const Matcher<Node*>& value0_matcher, const Matcher<Node*>& value1_matcher,
1886 const Matcher<Node*>& value2_matcher, const Matcher<Node*>& value3_matcher,
1887 const Matcher<Node*>& value4_matcher, const Matcher<Node*>& value5_matcher,
1888 const Matcher<Node*>& value6_matcher, const Matcher<Node*>& value7_matcher,
1889 const Matcher<Node*>& effect_matcher,
1890 const Matcher<Node*>& control_matcher) {
1891 std::vector<Matcher<Node*>> value_matchers;
1905 Matcher<Node*> IsReferenceEqual(const Matcher<Type*>& type_matcher,
1906 const Matcher<Node*>& lhs_matcher,
1907 const Matcher<Node*>& rhs_matcher) {
1913 Matcher<Node*> IsAllocate(const Matcher<Node*>& size_matcher,
1914 const Matcher<Node*>& effect_matcher,
1915 const Matcher<Node*>& control_matcher) {
1921 Matcher<Node*> IsLoadField(const Matcher<FieldAccess>& access_matcher,
1922 const Matcher<Node*>& base_matcher,
1923 const Matcher<Node*>& effect_matcher,
1924 const Matcher<Node*>& control_matcher) {
1930 Matcher<Node*> IsStoreField(const Matcher<FieldAccess>& access_matcher,
1931 const Matcher<Node*>& base_matcher,
1932 const Matcher<Node*>& value_matcher,
1933 const Matcher<Node*>& effect_matcher,
1934 const Matcher<Node*>& control_matcher) {
1941 Matcher<Node*> IsLoadBuffer(const Matcher<BufferAccess>& access_matcher,
1942 const Matcher<Node*>& buffer_matcher,
1943 const Matcher<Node*>& offset_matcher,
1944 const Matcher<Node*>& length_matcher,
1945 const Matcher<Node*>& effect_matcher,
1946 const Matcher<Node*>& control_matcher) {
1953 Matcher<Node*> IsStoreBuffer(const Matcher<BufferAccess>& access_matcher,
1954 const Matcher<Node*>& buffer_matcher,
1955 const Matcher<Node*>& offset_matcher,
1956 const Matcher<Node*>& length_matcher,
1957 const Matcher<Node*>& value_matcher,
1958 const Matcher<Node*>& effect_matcher,
1959 const Matcher<Node*>& control_matcher) {
1966 Matcher<Node*> IsLoadElement(const Matcher<ElementAccess>& access_matcher,
1967 const Matcher<Node*>& base_matcher,
1968 const Matcher<Node*>& index_matcher,
1969 const Matcher<Node*>& effect_matcher,
1970 const Matcher<Node*>& control_matcher) {
1977 Matcher<Node*> IsStoreElement(const Matcher<ElementAccess>& access_matcher,
1978 const Matcher<Node*>& base_matcher,
1979 const Matcher<Node*>& index_matcher,
1980 const Matcher<Node*>& value_matcher,
1981 const Matcher<Node*>& effect_matcher,
1982 const Matcher<Node*>& control_matcher) {
1989 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher,
1990 const Matcher<Node*>& base_matcher,
1991 const Matcher<Node*>& index_matcher,
1992 const Matcher<Node*>& effect_matcher,
1993 const Matcher<Node*>& control_matcher) {
1999 Matcher<Node*> IsStore(const Matcher<StoreRepresentation>& rep_matcher,
2000 const Matcher<Node*>& base_matcher,
2001 const Matcher<Node*>& index_matcher,
2002 const Matcher<Node*>& value_matcher,
2003 const Matcher<Node*>& effect_matcher,
2004 const Matcher<Node*>& control_matcher) {
2011 Matcher<Node*> IsToNumber(const Matcher<Node*>& base_matcher,
2012 const Matcher<Node*>& context_matcher,
2013 const Matcher<Node*>& effect_matcher,
2014 const Matcher<Node*>& control_matcher) {
2020 Matcher<Node*> IsLoadContext(const Matcher<ContextAccess>& access_matcher,
2021 const Matcher<Node*>& context_matcher) {
2026 Matcher<Node*> IsParameter(const Matcher<int> index_matcher) {
2031 Matcher<Node*> IsLoadFramePointer() {
2037 Matcher<Node*> Is##Name(const Matcher<Node*>& lhs_matcher, \
2038 const Matcher<Node*>& rhs_matcher) { \
2086 Matcher<Node*> Is##Name(const Matcher<Node*>& input_matcher) { \