output_alias.cpp 1.16 KB
Newer Older
Paul's avatar
Paul committed
1
2
#include <migraphx/program.hpp>
#include <migraphx/instruction.hpp>
Paul's avatar
Paul committed
3
4
5
#include <test.hpp>
#include <basic_ops.hpp>

Paul's avatar
Paul committed
6
TEST_CASE(simple_alias)
Paul's avatar
Paul committed
7
{
Paul's avatar
Paul committed
8
    migraphx::program p;
Paul's avatar
Paul committed
9
    auto l  = p.add_literal(1);
Paul's avatar
Paul committed
10
    auto p1 = p.add_instruction(pass_op{}, l);
Paul's avatar
Paul committed
11
12
    EXPECT(bool{migraphx::instruction::get_output_alias(l) == l});
    EXPECT(bool{migraphx::instruction::get_output_alias(p1) == l});
Paul's avatar
Paul committed
13
14
}

Paul's avatar
Paul committed
15
TEST_CASE(cascade_alias)
Paul's avatar
Paul committed
16
{
Paul's avatar
Paul committed
17
    migraphx::program p;
Paul's avatar
Paul committed
18
    auto l  = p.add_literal(1);
Paul's avatar
Paul committed
19
20
21
    auto p1 = p.add_instruction(pass_op{}, l);
    auto p2 = p.add_instruction(pass_op{}, p1);
    auto p3 = p.add_instruction(pass_op{}, p2);
Paul's avatar
Paul committed
22
23
24
25
    EXPECT(bool{migraphx::instruction::get_output_alias(l) == l});
    EXPECT(bool{migraphx::instruction::get_output_alias(p1) == l});
    EXPECT(bool{migraphx::instruction::get_output_alias(p2) == l});
    EXPECT(bool{migraphx::instruction::get_output_alias(p3) == l});
Paul's avatar
Paul committed
26
27
}

Paul's avatar
Paul committed
28
TEST_CASE(no_alias)
Paul's avatar
Paul committed
29
{
Paul's avatar
Paul committed
30
    migraphx::program p;
Paul's avatar
Paul committed
31
32
    auto x   = p.add_literal(1);
    auto y   = p.add_literal(2);
Paul's avatar
Paul committed
33
    auto sum = p.add_instruction(sum_op{}, x, y);
Paul's avatar
Paul committed
34
    EXPECT(bool{migraphx::instruction::get_output_alias(sum) == sum});
Paul's avatar
Paul committed
35
36
}

Paul's avatar
Paul committed
37
int main(int argc, const char* argv[]) { test::run(argc, argv); }