Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
MIGraphX
Commits
2a2b4a97
Commit
2a2b4a97
authored
Oct 04, 2018
by
Paul
Browse files
Formatting
parent
463ca389
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
59 deletions
+44
-59
src/include/migraph/matcher.hpp
src/include/migraph/matcher.hpp
+10
-10
test/matcher.cpp
test/matcher.cpp
+34
-49
No files found.
src/include/migraph/matcher.hpp
View file @
2a2b4a97
...
@@ -167,20 +167,20 @@ basic_matcher<predicate_matcher<P>> make_basic_pred_matcher(P p)
...
@@ -167,20 +167,20 @@ basic_matcher<predicate_matcher<P>> make_basic_pred_matcher(P p)
}
}
/// This macro takes care of the boilerplate for defining a matcher
/// This macro takes care of the boilerplate for defining a matcher
#define MIGRAPH_BASIC_MATCHER(name, ...)
\
#define MIGRAPH_BASIC_MATCHER(name, ...) \
struct name##_m
\
struct name##_m \
{
\
{ \
instruction_ref match(__VA_ARGS__) const;
\
instruction_ref match(__VA_ARGS__) const; \
};
\
}; \
const constexpr auto name = migraph::match::basic_matcher<name##_m>{{}}; \
const constexpr auto name = migraph::match::basic_matcher<name##_m>{{}}; \
inline instruction_ref name##_m::match(__VA_ARGS__) const
inline instruction_ref name##_m::match(__VA_ARGS__) const
/// This macro takes care of the boilerplate for defining a predicate matcher
/// This macro takes care of the boilerplate for defining a predicate matcher
#define MIGRAPH_PRED_MATCHER(name, ...)
\
#define MIGRAPH_PRED_MATCHER(name, ...) \
struct name##_m
\
struct name##_m \
{
\
{ \
bool operator()(__VA_ARGS__) const;
\
bool operator()(__VA_ARGS__) const; \
};
\
}; \
const constexpr auto name = migraph::match::basic_matcher<predicate_matcher<name##_m>>{{}}; \
const constexpr auto name = migraph::match::basic_matcher<predicate_matcher<name##_m>>{{}}; \
inline bool name##_m::operator()(__VA_ARGS__) const
inline bool name##_m::operator()(__VA_ARGS__) const
...
...
test/matcher.cpp
View file @
2a2b4a97
...
@@ -70,8 +70,7 @@ void match_arg1()
...
@@ -70,8 +70,7 @@ void match_arg1()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -83,8 +82,7 @@ void match_arg2()
...
@@ -83,8 +82,7 @@ void match_arg2()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -96,8 +94,7 @@ void match_arg3()
...
@@ -96,8 +94,7 @@ void match_arg3()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"@literal"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -109,9 +106,8 @@ void match_arg4()
...
@@ -109,9 +106,8 @@ void match_arg4()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
auto
m
=
match
::
name
(
"pass"
)(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
match
::
name
(
"pass"
)(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
pass
});
EXPECT
(
bool
{
r
.
result
==
pass
});
}
}
...
@@ -122,8 +118,7 @@ void match_arg5()
...
@@ -122,8 +118,7 @@ void match_arg5()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
auto
m
=
match
::
name
(
"pass"
)(
match
::
arg
(
1
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
match
::
name
(
"pass"
)(
match
::
arg
(
1
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -148,7 +143,7 @@ void match_arg7()
...
@@ -148,7 +143,7 @@ void match_arg7()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
)));
match
::
arg
(
1
)(
match
::
name
(
"@literal"
)));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -160,9 +155,8 @@ void match_args1()
...
@@ -160,9 +155,8 @@ void match_args1()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"@literal"
)),
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -174,9 +168,8 @@ void match_args2()
...
@@ -174,9 +168,8 @@ void match_args2()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"sum"
)),
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"sum"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -188,8 +181,7 @@ void match_args3()
...
@@ -188,8 +181,7 @@ void match_args3()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -202,9 +194,8 @@ void match_args4()
...
@@ -202,9 +194,8 @@ void match_args4()
auto
sum1
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum1
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum2
=
p
.
add_instruction
(
sum_op
{},
sum1
,
two
);
auto
sum2
=
p
.
add_instruction
(
sum_op
{},
sum1
,
two
);
p
.
add_instruction
(
pass_op
{},
sum2
);
p
.
add_instruction
(
pass_op
{},
sum2
);
auto
m
=
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"sum"
),
match
::
name
(
"@literal"
)),
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"sum"
),
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum2
});
EXPECT
(
bool
{
r
.
result
==
sum2
});
}
}
...
@@ -216,9 +207,8 @@ void match_args5()
...
@@ -216,9 +207,8 @@ void match_args5()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"sum"
),
match
::
name
(
"@literal"
)),
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"sum"
),
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -230,9 +220,8 @@ void match_args6()
...
@@ -230,9 +220,8 @@ void match_args6()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
auto
m
=
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
pass
});
EXPECT
(
bool
{
r
.
result
==
pass
});
}
}
...
@@ -244,8 +233,8 @@ void match_args7()
...
@@ -244,8 +233,8 @@ void match_args7()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)(
match
::
args
(
auto
m
=
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"@literal"
)))),
match
::
name
(
"@literal"
),
match
::
name
(
"@literal"
)))),
match
::
standard_shape
());
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
pass
});
EXPECT
(
bool
{
r
.
result
==
pass
});
}
}
...
@@ -258,7 +247,7 @@ void match_all_of1()
...
@@ -258,7 +247,7 @@ void match_all_of1()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
all_of
(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
all_of
(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -270,8 +259,8 @@ void match_all_of2()
...
@@ -270,8 +259,8 @@ void match_all_of2()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
all_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
match
::
all_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -283,8 +272,8 @@ void match_any_of1()
...
@@ -283,8 +272,8 @@ void match_any_of1()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
any_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
match
::
any_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -296,8 +285,8 @@ void match_any_of2()
...
@@ -296,8 +285,8 @@ void match_any_of2()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
any_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"sum"
))));
match
::
any_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"sum"
))));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -309,8 +298,8 @@ void match_none_of1()
...
@@ -309,8 +298,8 @@ void match_none_of1()
auto
two
=
p
.
add_literal
(
2
);
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
none_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"sum"
))));
match
::
none_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"sum"
))));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
EXPECT
(
bool
{
r
.
result
==
sum
});
}
}
...
@@ -323,7 +312,7 @@ void match_none_of2()
...
@@ -323,7 +312,7 @@ void match_none_of2()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"sum"
)(
match
::
none_of
(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
auto
m
=
match
::
name
(
"sum"
)(
match
::
none_of
(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
}
...
@@ -336,10 +325,9 @@ void match_bind1()
...
@@ -336,10 +325,9 @@ void match_bind1()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
::
name
(
"pass"
)(
auto
m
=
match
::
name
(
"pass"
)(
match
::
args
(
match
::
args
(
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
).
bind
(
"one"
),
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
).
bind
(
"one"
),
match
::
name
(
"@literal"
).
bind
(
"two"
)))
match
::
name
(
"@literal"
).
bind
(
"two"
)))
.
bind
(
"sum"
)),
.
bind
(
"sum"
)),
match
::
standard_shape
())
match
::
standard_shape
())
.
bind
(
"pass"
);
.
bind
(
"pass"
);
auto
r
=
find_match
(
p
,
m
);
auto
r
=
find_match
(
p
,
m
);
...
@@ -355,10 +343,7 @@ struct match_find_sum
...
@@ -355,10 +343,7 @@ struct match_find_sum
migraph
::
instruction_ref
ins
;
migraph
::
instruction_ref
ins
;
auto
matcher
()
const
{
return
match
::
name
(
"sum"
);
}
auto
matcher
()
const
{
return
match
::
name
(
"sum"
);
}
void
apply
(
migraph
::
program
&
,
match
::
matcher_result
r
)
const
void
apply
(
migraph
::
program
&
,
match
::
matcher_result
r
)
const
{
EXPECT
(
bool
{
r
.
result
==
ins
});
}
{
EXPECT
(
bool
{
r
.
result
==
ins
});
}
};
};
struct
match_find_literal
struct
match_find_literal
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment