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
463ca389
Commit
463ca389
authored
Oct 04, 2018
by
Paul
Browse files
Rename matcher namespace
parent
72b91bf6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
60 additions
and
60 deletions
+60
-60
src/include/migraph/matcher.hpp
src/include/migraph/matcher.hpp
+5
-5
test/matcher.cpp
test/matcher.cpp
+55
-55
No files found.
src/include/migraph/matcher.hpp
View file @
463ca389
...
...
@@ -10,7 +10,7 @@
namespace
migraph
{
namespace
match
ers
{
namespace
match
{
struct
matcher_context
{
...
...
@@ -172,7 +172,7 @@ basic_matcher<predicate_matcher<P>> make_basic_pred_matcher(P p)
{ \
instruction_ref match(__VA_ARGS__) const; \
}; \
const constexpr auto name = migraph::match
ers
::basic_matcher<name##_m>{{}}; \
const constexpr auto name = migraph::match::basic_matcher<name##_m>{{}}; \
inline instruction_ref name##_m::match(__VA_ARGS__) const
/// This macro takes care of the boilerplate for defining a predicate matcher
...
...
@@ -181,7 +181,7 @@ basic_matcher<predicate_matcher<P>> make_basic_pred_matcher(P p)
{ \
bool operator()(__VA_ARGS__) const; \
}; \
const constexpr auto name = migraph::match
ers
::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
struct
matcher_result
...
...
@@ -294,7 +294,7 @@ struct args_impl_ints
template
<
std
::
size_t
...
Ns
,
class
...
Ms
>
auto
args_impl
(
args_impl_ints
<
Ns
...
>
,
Ms
...
ms
)
{
return
match
ers
::
all_of
(
nargs
(
sizeof
...(
Ns
)),
arg
(
Ns
)(
ms
)...);
return
match
::
all_of
(
nargs
(
sizeof
...(
Ns
)),
arg
(
Ns
)(
ms
)...);
}
template
<
class
...
Ms
>
...
...
@@ -306,7 +306,7 @@ auto args(Ms... ms)
});
}
}
// namespace match
ers
}
// namespace match
}
// namespace migraph
...
...
test/matcher.cpp
View file @
463ca389
...
...
@@ -3,15 +3,15 @@
#include <test.hpp>
#include <basic_ops.hpp>
namespace
match
ers
=
migraph
::
match
ers
;
namespace
match
=
migraph
::
match
;
template
<
class
M
>
migraph
::
match
ers
::
matcher_result
find_match
(
migraph
::
program
&
p
,
M
&&
m
)
migraph
::
match
::
matcher_result
find_match
(
migraph
::
program
&
p
,
M
&&
m
)
{
migraph
::
match
ers
::
matcher_result
result
;
migraph
::
match
::
matcher_result
result
;
for
(
auto
ins
:
migraph
::
iterator_for
(
p
))
{
result
=
migraph
::
match
ers
::
match_instruction
(
p
,
ins
,
m
);
result
=
migraph
::
match
::
match_instruction
(
p
,
ins
,
m
);
if
(
result
.
result
!=
p
.
end
())
return
result
;
}
...
...
@@ -22,7 +22,7 @@ void match1()
{
migraph
::
program
p
;
auto
l
=
p
.
add_literal
(
1
);
auto
m
=
match
ers
::
standard_shape
();
auto
m
=
match
::
standard_shape
();
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
l
});
}
...
...
@@ -34,7 +34,7 @@ void match_name1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
);
auto
m
=
match
::
name
(
"sum"
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -46,7 +46,7 @@ void match_name2()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"min"
);
auto
m
=
match
::
name
(
"min"
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -58,7 +58,7 @@ void match_name3()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
standard_shape
());
auto
m
=
match
::
name
(
"sum"
)(
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -70,8 +70,8 @@ void match_arg1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"@literal"
)),
match
ers
::
standard_shape
());
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -84,7 +84,7 @@ void match_arg2()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
standard_shape
());
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -96,8 +96,8 @@ void match_arg3()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"@literal"
)),
match
ers
::
standard_shape
());
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
1
)(
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -110,7 +110,7 @@ void match_arg4()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"pass"
)(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
standard_shape
());
match
::
name
(
"pass"
)(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
pass
});
}
...
...
@@ -123,7 +123,7 @@ void match_arg5()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"pass"
)(
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
standard_shape
());
match
::
name
(
"pass"
)(
match
::
arg
(
1
)(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -135,7 +135,7 @@ void match_arg6()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"@literal"
)));
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -147,8 +147,8 @@ void match_arg7()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"@literal"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"@literal"
)));
auto
m
=
match
::
name
(
"sum"
)(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
)));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -160,9 +160,9 @@ void match_args1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"@literal"
),
match
ers
::
name
(
"@literal"
)),
match
ers
::
standard_shape
());
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -175,8 +175,8 @@ void match_args2()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"@literal"
),
match
ers
::
name
(
"sum"
)),
match
ers
::
standard_shape
());
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -188,8 +188,8 @@ void match_args3()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"@literal"
)),
match
ers
::
standard_shape
());
auto
m
=
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -203,8 +203,8 @@ void match_args4()
auto
sum2
=
p
.
add_instruction
(
sum_op
{},
sum1
,
two
);
p
.
add_instruction
(
pass_op
{},
sum2
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"sum"
),
match
ers
::
name
(
"@literal"
)),
match
ers
::
standard_shape
());
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"sum"
),
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum2
});
}
...
...
@@ -217,8 +217,8 @@ void match_args5()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"sum"
),
match
ers
::
name
(
"@literal"
)),
match
ers
::
standard_shape
());
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"sum"
),
match
::
name
(
"@literal"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -231,7 +231,7 @@ void match_args6()
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"pass"
)(
match
ers
::
args
(
match
ers
::
name
(
"sum"
)),
match
ers
::
standard_shape
());
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
pass
});
}
...
...
@@ -243,9 +243,9 @@ void match_args7()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"pass"
)(
match
ers
::
args
(
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"@literal"
),
match
ers
::
name
(
"@literal"
)))),
match
ers
::
standard_shape
());
auto
m
=
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
),
match
::
name
(
"@literal"
)))),
match
::
standard_shape
());
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
pass
});
}
...
...
@@ -257,8 +257,8 @@ void match_all_of1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
all_of
(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"@literal"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"@literal"
))));
auto
m
=
match
::
name
(
"sum"
)(
match
::
all_of
(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -270,8 +270,8 @@ void match_all_of2()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
all_of
(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"@literal"
))));
auto
m
=
match
::
name
(
"sum"
)(
match
::
all_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -283,8 +283,8 @@ void match_any_of1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
any_of
(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"@literal"
))));
auto
m
=
match
::
name
(
"sum"
)(
match
::
any_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -296,8 +296,8 @@ void match_any_of2()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
any_of
(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"sum"
))));
auto
m
=
match
::
name
(
"sum"
)(
match
::
any_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"sum"
))));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -309,8 +309,8 @@ void match_none_of1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
none_of
(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"sum"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"sum"
))));
auto
m
=
match
::
name
(
"sum"
)(
match
::
none_of
(
match
::
arg
(
0
)(
match
::
name
(
"sum"
)),
match
::
arg
(
1
)(
match
::
name
(
"sum"
))));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
sum
});
}
...
...
@@ -322,8 +322,8 @@ void match_none_of2()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"sum"
)(
match
ers
::
none_of
(
match
ers
::
arg
(
0
)(
match
ers
::
name
(
"@literal"
)),
match
ers
::
arg
(
1
)(
match
ers
::
name
(
"@literal"
))));
auto
m
=
match
::
name
(
"sum"
)(
match
::
none_of
(
match
::
arg
(
0
)(
match
::
name
(
"@literal"
)),
match
::
arg
(
1
)(
match
::
name
(
"@literal"
))));
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
result
==
p
.
end
()});
}
...
...
@@ -335,12 +335,12 @@ void match_bind1()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
auto
pass
=
p
.
add_instruction
(
pass_op
{},
sum
);
auto
m
=
match
ers
::
name
(
"pass"
)(
match
ers
::
args
(
match
ers
::
name
(
"sum"
)(
match
ers
::
args
(
match
ers
::
name
(
"@literal"
).
bind
(
"one"
),
match
ers
::
name
(
"@literal"
).
bind
(
"two"
)))
auto
m
=
match
::
name
(
"pass"
)(
match
::
args
(
match
::
name
(
"sum"
)(
match
::
args
(
match
::
name
(
"@literal"
).
bind
(
"one"
),
match
::
name
(
"@literal"
).
bind
(
"two"
)))
.
bind
(
"sum"
)),
match
ers
::
standard_shape
())
match
::
standard_shape
())
.
bind
(
"pass"
);
auto
r
=
find_match
(
p
,
m
);
EXPECT
(
bool
{
r
.
instructions
.
at
(
"one"
)
==
one
});
...
...
@@ -353,9 +353,9 @@ void match_bind1()
struct
match_find_sum
{
migraph
::
instruction_ref
ins
;
auto
matcher
()
const
{
return
match
ers
::
name
(
"sum"
);
}
auto
matcher
()
const
{
return
match
::
name
(
"sum"
);
}
void
apply
(
migraph
::
program
&
,
match
ers
::
matcher_result
r
)
const
void
apply
(
migraph
::
program
&
,
match
::
matcher_result
r
)
const
{
EXPECT
(
bool
{
r
.
result
==
ins
});
}
...
...
@@ -364,9 +364,9 @@ struct match_find_sum
struct
match_find_literal
{
migraph
::
instruction_ref
ins
;
auto
matcher
()
const
{
return
match
ers
::
name
(
"@literal"
);
}
auto
matcher
()
const
{
return
match
::
name
(
"@literal"
);
}
void
apply
(
migraph
::
program
&
,
match
ers
::
matcher_result
r
)
const
void
apply
(
migraph
::
program
&
,
match
::
matcher_result
r
)
const
{
EXPECT
(
bool
{
r
.
result
!=
ins
});
EXPECT
(
r
.
result
->
name
()
==
"@literal"
);
...
...
@@ -380,7 +380,7 @@ void match_finder()
auto
two
=
p
.
add_literal
(
2
);
auto
sum
=
p
.
add_instruction
(
sum_op
{},
one
,
two
);
p
.
add_instruction
(
pass_op
{},
sum
);
match
ers
::
find_matches
(
p
,
match_find_sum
{
sum
},
match_find_literal
{
sum
});
match
::
find_matches
(
p
,
match_find_sum
{
sum
},
match_find_literal
{
sum
});
}
int
main
()
...
...
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