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
6812d12c
Commit
6812d12c
authored
Jul 06, 2018
by
Paul
Browse files
Add test for passes
parent
f0c512bc
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
101 additions
and
0 deletions
+101
-0
src/include/migraph/iterator_for.hpp
src/include/migraph/iterator_for.hpp
+29
-0
test/eval_test.cpp
test/eval_test.cpp
+72
-0
No files found.
src/include/migraph/iterator_for.hpp
0 → 100644
View file @
6812d12c
#ifndef MIGRAPH_GUARD_RTGLIB_ITERATOR_FOR_HPP
#define MIGRAPH_GUARD_RTGLIB_ITERATOR_FOR_HPP
namespace
migraph
{
template
<
class
T
>
struct
iterator_for_range
{
T
*
base
;
using
base_iterator
=
decltype
(
base
->
begin
());
struct
iterator
{
base_iterator
i
;
base_iterator
operator
*
()
{
return
i
;
}
base_iterator
operator
++
()
{
return
++
i
;
}
bool
operator
!=
(
const
iterator
&
rhs
)
{
return
i
!=
rhs
.
i
;
}
};
iterator
begin
()
{
return
{
base
->
begin
()};
}
iterator
end
()
{
return
{
base
->
end
()};
}
};
template
<
class
T
>
iterator_for_range
<
T
>
iterator_for
(
T
&
x
)
{
return
{
&
x
};
}
}
// namespace migraph
#endif
test/eval_test.cpp
View file @
6812d12c
...
...
@@ -2,6 +2,8 @@
#include <migraph/program.hpp>
#include <migraph/argument.hpp>
#include <migraph/shape.hpp>
#include <migraph/iterator_for.hpp>
#include <migraph/instruction.hpp>
#include <sstream>
#include "test.hpp"
...
...
@@ -72,6 +74,49 @@ struct id_target
migraph
::
context
get_context
()
const
{
return
{};
}
};
struct
reverse_pass
{
std
::
string
name
()
const
{
return
"reverse_pass"
;
}
void
apply
(
migraph
::
program
&
p
)
const
{
for
(
auto
ins
:
migraph
::
iterator_for
(
p
))
{
if
(
ins
->
op
.
name
()
==
"sum"
)
{
p
.
replace_instruction
(
ins
,
minus_op
{},
ins
->
arguments
);
}
else
if
(
ins
->
op
.
name
()
==
"minus"
)
{
p
.
replace_instruction
(
ins
,
sum_op
{},
ins
->
arguments
);
}
}
}
};
struct
reverse_target
{
std
::
string
name
()
const
{
return
"reverse"
;
}
std
::
vector
<
migraph
::
pass
>
get_passes
(
migraph
::
context
&
)
const
{
return
{
reverse_pass
{}
};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
struct
double_reverse_target
{
std
::
string
name
()
const
{
return
"double_reverse"
;
}
std
::
vector
<
migraph
::
pass
>
get_passes
(
migraph
::
context
&
)
const
{
return
{
reverse_pass
{},
reverse_pass
{}
};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
void
literal_test1
()
{
migraph
::
program
p
;
...
...
@@ -170,6 +215,32 @@ void target_test()
EXPECT
(
result
!=
migraph
::
literal
{
4
});
}
void
reverse_target_test
()
{
migraph
::
program
p
;
auto
one
=
p
.
add_literal
(
1
);
auto
two
=
p
.
add_literal
(
2
);
p
.
add_instruction
(
sum_op
{},
two
,
one
);
p
.
compile
(
reverse_target
{});
auto
result
=
p
.
eval
({});
EXPECT
(
result
==
migraph
::
literal
{
1
});
EXPECT
(
result
!=
migraph
::
literal
{
4
});
}
void
double_reverse_target_test
()
{
migraph
::
program
p
;
auto
one
=
p
.
add_literal
(
1
);
auto
two
=
p
.
add_literal
(
2
);
p
.
add_instruction
(
sum_op
{},
two
,
one
);
p
.
compile
(
double_reverse_target
{});
auto
result
=
p
.
eval
({});
EXPECT
(
result
==
migraph
::
literal
{
3
});
EXPECT
(
result
!=
migraph
::
literal
{
4
});
}
int
main
()
{
literal_test1
();
...
...
@@ -179,4 +250,5 @@ int main()
replace_test
();
insert_replace_test
();
target_test
();
reverse_target_test
();
}
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